1 |
12 |
jlechner |
/* { 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 |
|
|
}
|