2013-09-17 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.dg / vmx / 5-11.c
blob7d9b3975f5b524238c09ca787a397ece781e794b
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)
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));
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)
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));
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)
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));
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)
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));
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)
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));
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)
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));
261 void fu32(vector unsigned int a, vector unsigned int b,
262 vector unsigned int c, vector unsigned int d)
266 void fu16(vector unsigned short a, vector unsigned short b,
267 vector unsigned short c, vector unsigned short d)
271 void fu8(vector unsigned char a, vector unsigned char b,
272 vector unsigned char c, vector unsigned char d)
276 void fs32(vector signed int a, vector signed int b,
277 vector signed int c, vector signed int d)
281 void fs16(vector signed short a, vector signed short b,
282 vector signed short c, vector signed short d)
286 void fs8(vector signed char a, vector signed char b,
287 vector signed char c, vector signed char d)