1 /* { dg-do compile } */
2 #include <altivec.h>
3 extern void fu32(vector unsigned int, vector unsigned int,
4 vector unsigned int, vector unsigned int);
5 void fxu32(vector unsigned int u32a, vector unsigned int u32b,
6 vector unsigned int u32c, vector unsigned int u32d)
7 {
8 fu32 (u32a,
9 u32b,
10 u32c,
11 vec_avg(u32d, u32d));
12 fu32 (vec_or (u32a, u32a),
13 vec_and (u32b, u32b),
14 vec_max (u32c, u32c),
15 vec_min (u32d, u32d));
16 fu32 (vec_sld (u32a, u32a, 0),
17 vec_sld (u32b, u32b, 0),
18 vec_sld (u32c, u32c, 0),
19 vec_sld (u32d, u32d, 0));
20 fu32 (((vector unsigned int){0,0,0,0}),
21 ((vector unsigned int){0,0,0,0}),
22 ((vector unsigned int){0,0,0,0}),
23 ((vector unsigned int){0,0,0,0}));
24 fu32 (vec_xor(u32a, u32a),
25 vec_andc(u32b, u32b),
26 vec_sub(u32c, u32c),
27 vec_subs(u32d, u32d));
28 fu32 (vec_splat_u32(0),
29 vec_splat_u32(0),
30 vec_splat_u32(0),
31 vec_splat_u32(0));
32 fu32 (((vector unsigned int){0xffffffff,0xffffffff,0xffffffff,0xffffffff}),
33 ((vector unsigned int){0xffffffff,0xffffffff,0xffffffff,0xffffffff}),
34 ((vector unsigned int){0xffffffff,0xffffffff,0xffffffff,0xffffffff}),
35 ((vector unsigned int){0xffffffff,0xffffffff,0xffffffff,0xffffffff}));
36 fu32 (vec_splat_u32(-1),
37 vec_splat_u32(-1),
38 vec_splat_u32(-1),
39 vec_splat_u32(-1));
40 fu32 ((vector unsigned int)vec_cmpeq(u32a, u32a),
41 (vector unsigned int)vec_cmpeq(u32b, u32b),
42 (vector unsigned int)vec_cmpeq(u32c, u32c),
43 (vector unsigned int)vec_cmpeq(u32d, u32d));
44 }
45
46 extern void fu16(vector unsigned short, vector unsigned short,
47 vector unsigned short, vector unsigned short);
48 void fxu16(vector unsigned short u16a, vector unsigned short u16b,
49 vector unsigned short u16c, vector unsigned short u16d)
50 {
51 fu16 (u16a,
52 u16b,
53 u16c,
54 vec_avg(u16d, u16d));
55 fu16 (vec_or (u16a, u16a),
56 vec_and (u16b, u16b),
57 vec_max (u16c, u16c),
58 vec_min (u16d, u16d));
59 fu16 (vec_sld (u16a, u16a, 0),
60 vec_sld (u16b, u16b, 0),
61 vec_sld (u16c, u16c, 0),
62 vec_sld (u16d, u16d, 0));
63 fu16 (((vector unsigned short){0,0,0,0,0,0,0,0}),
64 ((vector unsigned short){0,0,0,0,0,0,0,0}),
65 ((vector unsigned short){0,0,0,0,0,0,0,0}),
66 ((vector unsigned short){0,0,0,0,0,0,0,0}));
67 fu16 (vec_xor(u16a, u16a),
68 vec_andc(u16b, u16b),
69 vec_sub(u16c, u16c),
70 vec_subs(u16d, u16d));
71 fu16 (vec_splat_u16(0),
72 vec_splat_u16(0),
73 vec_splat_u16(0),
74 vec_splat_u16(0));
75 fu16 (((vector unsigned short){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}),
76 ((vector unsigned short){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}),
77 ((vector unsigned short){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}),
78 ((vector unsigned short){0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff}));
79 fu16 (vec_splat_u16(-1),
80 vec_splat_u16(-1),
81 vec_splat_u16(-1),
82 vec_splat_u16(-1));
83 fu16 ((vector unsigned short)vec_cmpeq(u16a, u16a),
84 (vector unsigned short)vec_cmpeq(u16b, u16b),
85 (vector unsigned short)vec_cmpeq(u16c, u16c),
86 (vector unsigned short)vec_cmpeq(u16d, u16d));
87 }
88
89 extern void fu8(vector unsigned char, vector unsigned char,
90 vector unsigned char, vector unsigned char);
91 void fxu8(vector unsigned char u8a, vector unsigned char u8b,
92 vector unsigned char u8c, vector unsigned char u8d)
93 {
94 fu8 (u8a,
95 u8b,
96 u8c,
97 vec_avg(u8d, u8d));
98 fu8 (vec_or (u8a, u8a),
99 vec_and (u8b, u8b),
100 vec_max (u8c, u8c),
101 vec_min (u8d, u8d));
102 fu8 (vec_sld (u8a, u8a, 0),
103 vec_sld (u8b, u8b, 0),
104 vec_sld (u8c, u8c, 0),
105 vec_sld (u8d, u8d, 0));
106 fu8 (((vector unsigned char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}),
107 ((vector unsigned char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}),
108 ((vector unsigned char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}),
109 ((vector unsigned char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}));
110 fu8 (vec_xor(u8a, u8a),
111 vec_andc(u8b, u8b),
112 vec_sub(u8c, u8c),
113 vec_subs(u8d, u8d));
114 fu8 (vec_splat_u8(0),
115 vec_splat_u8(0),
116 vec_splat_u8(0),
117 vec_splat_u8(0));
118 fu8 (((vector unsigned char){0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}),
119 ((vector unsigned char){0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}),
120 ((vector unsigned char){0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}),
121 ((vector unsigned char){0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}));
122 fu8 (vec_splat_u8(-1),
123 vec_splat_u8(-1),
124 vec_splat_u8(-1),
125 vec_splat_u8(-1));
126 fu8 ((vector unsigned char)vec_cmpeq(u8a, u8a),
127 (vector unsigned char)vec_cmpeq(u8b, u8b),
128 (vector unsigned char)vec_cmpeq(u8c, u8c),
129 (vector unsigned char)vec_cmpeq(u8d, u8d));
130 }
131
132 extern void fs32(vector signed int, vector signed int,
133 vector signed int, vector signed int);
134 void fxs32(vector signed int s32a, vector signed int s32b,
135 vector signed int s32c, vector signed int s32d)
136 {
137 fs32 (s32a,
138 s32b,
139 s32c,
140 vec_avg(s32d, s32d));
141 fs32 (vec_or (s32a, s32a),
142 vec_and (s32b, s32b),
143 vec_max (s32c, s32c),
144 vec_min (s32d, s32d));
145 fs32 (vec_sld (s32a, s32a, 0),
146 vec_sld (s32b, s32b, 0),
147 vec_sld (s32c, s32c, 0),
148 vec_sld (s32d, s32d, 0));
149 fs32 (((vector signed int){0,0,0,0}),
150 ((vector signed int){0,0,0,0}),
151 ((vector signed int){0,0,0,0}),
152 ((vector signed int){0,0,0,0}));
153 fs32 (vec_xor(s32a, s32a),
154 vec_andc(s32b, s32b),
155 vec_sub(s32c, s32c),
156 vec_subs(s32d, s32d));
157 fs32 (vec_splat_s32(0),
158 vec_splat_s32(0),
159 vec_splat_s32(0),
160 vec_splat_s32(0));
161 fs32 (((vector signed int){-1,-1,-1,-1}),
162 ((vector signed int){-1,-1,-1,-1}),
163 ((vector signed int){-1,-1,-1,-1}),
164 ((vector signed int){-1,-1,-1,-1}));
165 fs32 (vec_splat_s32(-1),
166 vec_splat_s32(-1),
167 vec_splat_s32(-1),
168 vec_splat_s32(-1));
169 fs32 ((vector signed int)vec_cmpeq(s32a, s32a),
170 (vector signed int)vec_cmpeq(s32b, s32b),
171 (vector signed int)vec_cmpeq(s32c, s32c),
172 (vector signed int)vec_cmpeq(s32d, s32d));
173 }
174
175 extern void fs16(vector signed short, vector signed short,
176 vector signed short, vector signed short);
177 void fxs16(vector signed short s16a, vector signed short s16b,
178 vector signed short s16c, vector signed short s16d)
179 {
180 fs16 (s16a,
181 s16b,
182 s16c,
183 vec_avg(s16d, s16d));
184 fs16 (vec_or (s16a, s16a),
185 vec_and (s16b, s16b),
186 vec_max (s16c, s16c),
187 vec_min (s16d, s16d));
188 fs16 (vec_sld (s16a, s16a, 0),
189 vec_sld (s16b, s16b, 0),
190 vec_sld (s16c, s16c, 0),
191 vec_sld (s16d, s16d, 0));
192 fs16 (((vector signed short){0,0,0,0,0,0,0,0}),
193 ((vector signed short){0,0,0,0,0,0,0,0}),
194 ((vector signed short){0,0,0,0,0,0,0,0}),
195 ((vector signed short){0,0,0,0,0,0,0,0}));
196 fs16 (vec_xor(s16a, s16a),
197 vec_andc(s16b, s16b),
198 vec_sub(s16c, s16c),
199 vec_subs(s16d, s16d));
200 fs16 (vec_splat_s16(0),
201 vec_splat_s16(0),
202 vec_splat_s16(0),
203 vec_splat_s16(0));
204 fs16 (((vector signed short){-1,-1,-1,-1,-1,-1,-1,-1}),
205 ((vector signed short){-1,-1,-1,-1,-1,-1,-1,-1}),
206 ((vector signed short){-1,-1,-1,-1,-1,-1,-1,-1}),
207 ((vector signed short){-1,-1,-1,-1,-1,-1,-1,-1}));
208 fs16 (vec_splat_s16(-1),
209 vec_splat_s16(-1),
210 vec_splat_s16(-1),
211 vec_splat_s16(-1));
212 fs16 ((vector signed short)vec_cmpeq(s16a, s16a),
213 (vector signed short)vec_cmpeq(s16b, s16b),
214 (vector signed short)vec_cmpeq(s16c, s16c),
215 (vector signed short)vec_cmpeq(s16d, s16d));
216 }
217
218 extern void fs8(vector signed char, vector signed char,
219 vector signed char, vector signed char);
220 void fxs8(vector signed char s8a, vector signed char s8b,
221 vector signed char s8c, vector signed char s8d)
222 {
223 fs8 (s8a,
224 s8b,
225 s8c,
226 vec_avg(s8d, s8d));
227 fs8 (vec_or (s8a, s8a),
228 vec_and (s8b, s8b),
229 vec_max (s8c, s8c),
230 vec_min (s8d, s8d));
231 fs8 (vec_sld (s8a, s8a, 0),
232 vec_sld (s8b, s8b, 0),
233 vec_sld (s8c, s8c, 0),
234 vec_sld (s8d, s8d, 0));
235 fs8 (((vector signed char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}),
236 ((vector signed char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}),
237 ((vector signed char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}),
238 ((vector signed char){0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}));
239 fs8 (vec_xor(s8a, s8a),
240 vec_andc(s8b, s8b),
241 vec_sub(s8c, s8c),
242 vec_subs(s8d, s8d));
243 fs8 (vec_splat_s8(0),
244 vec_splat_s8(0),
245 vec_splat_s8(0),
246 vec_splat_s8(0));
247 fs8 (((vector signed char){-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}),
248 ((vector signed char){-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}),
249 ((vector signed char){-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}),
250 ((vector signed char){-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}));
251 fs8 (vec_splat_s8(-1),
252 vec_splat_s8(-1),
253 vec_splat_s8(-1),
254 vec_splat_s8(-1));
255 fs8 ((vector signed char)vec_cmpeq(s8a, s8a),
256 (vector signed char)vec_cmpeq(s8b, s8b),
257 (vector signed char)vec_cmpeq(s8c, s8c),
258 (vector signed char)vec_cmpeq(s8d, s8d));
259 }
260
261 void fu32(vector unsigned int a, vector unsigned int b,
262 vector unsigned int c, vector unsigned int d)
263 {
264 }
265
266 void fu16(vector unsigned short a, vector unsigned short b,
267 vector unsigned short c, vector unsigned short d)
268 {
269 }
270
271 void fu8(vector unsigned char a, vector unsigned char b,
272 vector unsigned char c, vector unsigned char d)
273 {
274 }
275
276 void fs32(vector signed int a, vector signed int b,
277 vector signed int c, vector signed int d)
278 {
279 }
280
281 void fs16(vector signed short a, vector signed short b,
282 vector signed short c, vector signed short d)
283 {
284 }
285
286 void fs8(vector signed char a, vector signed char b,
287 vector signed char c, vector signed char d)
288 {
289 }