1 /*===---- altivec.h - Standard header for type generic math ---------------===*\
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 \*===----------------------------------------------------------------------===*/
22
23 #ifndef __ALTIVEC_H
24 #define __ALTIVEC_H
25
26 #ifndef __ALTIVEC__
27 #error "AltiVec support not enabled"
28 #endif
29
30 /* Constants for mapping CR6 bits to predicate result. */
31
32 #define __CR6_EQ 0
33 #define __CR6_EQ_REV 1
34 #define __CR6_LT 2
35 #define __CR6_LT_REV 3
36
37 #define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
38
39 static __inline__ vector signed char __ATTRS_o_ai vec_perm(
40 vector signed char __a, vector signed char __b, vector unsigned char __c);
41
42 static __inline__ vector unsigned char __ATTRS_o_ai
43 vec_perm(vector unsigned char __a, vector unsigned char __b,
44 vector unsigned char __c);
45
46 static __inline__ vector bool char __ATTRS_o_ai
47 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c);
48
49 static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
50 vector signed short __b,
51 vector unsigned char __c);
52
53 static __inline__ vector unsigned short __ATTRS_o_ai
54 vec_perm(vector unsigned short __a, vector unsigned short __b,
55 vector unsigned char __c);
56
57 static __inline__ vector bool short __ATTRS_o_ai vec_perm(
58 vector bool short __a, vector bool short __b, vector unsigned char __c);
59
60 static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
61 vector pixel __b,
62 vector unsigned char __c);
63
64 static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
65 vector signed int __b,
66 vector unsigned char __c);
67
68 static __inline__ vector unsigned int __ATTRS_o_ai vec_perm(
69 vector unsigned int __a, vector unsigned int __b, vector unsigned char __c);
70
71 static __inline__ vector bool int __ATTRS_o_ai
72 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c);
73
74 static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
75 vector float __b,
76 vector unsigned char __c);
77
78 #ifdef __VSX__
79 static __inline__ vector long long __ATTRS_o_ai
80 vec_perm(vector signed long long __a, vector signed long long __b,
81 vector unsigned char __c);
82
83 static __inline__ vector unsigned long long __ATTRS_o_ai
84 vec_perm(vector unsigned long long __a, vector unsigned long long __b,
85 vector unsigned char __c);
86
87 static __inline__ vector bool long long __ATTRS_o_ai
88 vec_perm(vector bool long long __a, vector bool long long __b,
89 vector unsigned char __c);
90
91 static __inline__ vector double __ATTRS_o_ai vec_perm(vector double __a,
92 vector double __b,
93 vector unsigned char __c);
94 #endif
95
96 static __inline__ vector unsigned char __ATTRS_o_ai
97 vec_xor(vector unsigned char __a, vector unsigned char __b);
98
99 /* vec_abs */
100
101 #define __builtin_altivec_abs_v16qi vec_abs
102 #define __builtin_altivec_abs_v8hi vec_abs
103 #define __builtin_altivec_abs_v4si vec_abs
104
105 static __inline__ vector signed char __ATTRS_o_ai
vec_abs(vector signed char __a)106 vec_abs(vector signed char __a) {
107 return __builtin_altivec_vmaxsb(__a, -__a);
108 }
109
110 static __inline__ vector signed short __ATTRS_o_ai
vec_abs(vector signed short __a)111 vec_abs(vector signed short __a) {
112 return __builtin_altivec_vmaxsh(__a, -__a);
113 }
114
115 static __inline__ vector signed int __ATTRS_o_ai
vec_abs(vector signed int __a)116 vec_abs(vector signed int __a) {
117 return __builtin_altivec_vmaxsw(__a, -__a);
118 }
119
120 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
121 static __inline__ vector signed long long __ATTRS_o_ai
vec_abs(vector signed long long __a)122 vec_abs(vector signed long long __a) {
123 return __builtin_altivec_vmaxsd(__a, -__a);
124 }
125 #endif
126
vec_abs(vector float __a)127 static __inline__ vector float __ATTRS_o_ai vec_abs(vector float __a) {
128 #ifdef __VSX__
129 return __builtin_vsx_xvabssp(__a);
130 #else
131 vector unsigned int __res =
132 (vector unsigned int)__a & (vector unsigned int)(0x7FFFFFFF);
133 return (vector float)__res;
134 #endif
135 }
136
137 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
vec_abs(vector double __a)138 static __inline__ vector double __ATTRS_o_ai vec_abs(vector double __a) {
139 return __builtin_vsx_xvabsdp(__a);
140 }
141 #endif
142
143 /* vec_abss */
144 #define __builtin_altivec_abss_v16qi vec_abss
145 #define __builtin_altivec_abss_v8hi vec_abss
146 #define __builtin_altivec_abss_v4si vec_abss
147
148 static __inline__ vector signed char __ATTRS_o_ai
vec_abss(vector signed char __a)149 vec_abss(vector signed char __a) {
150 return __builtin_altivec_vmaxsb(
151 __a, __builtin_altivec_vsubsbs((vector signed char)(0), __a));
152 }
153
154 static __inline__ vector signed short __ATTRS_o_ai
vec_abss(vector signed short __a)155 vec_abss(vector signed short __a) {
156 return __builtin_altivec_vmaxsh(
157 __a, __builtin_altivec_vsubshs((vector signed short)(0), __a));
158 }
159
160 static __inline__ vector signed int __ATTRS_o_ai
vec_abss(vector signed int __a)161 vec_abss(vector signed int __a) {
162 return __builtin_altivec_vmaxsw(
163 __a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
164 }
165
166 /* vec_add */
167
168 static __inline__ vector signed char __ATTRS_o_ai
vec_add(vector signed char __a,vector signed char __b)169 vec_add(vector signed char __a, vector signed char __b) {
170 return __a + __b;
171 }
172
173 static __inline__ vector signed char __ATTRS_o_ai
vec_add(vector bool char __a,vector signed char __b)174 vec_add(vector bool char __a, vector signed char __b) {
175 return (vector signed char)__a + __b;
176 }
177
178 static __inline__ vector signed char __ATTRS_o_ai
vec_add(vector signed char __a,vector bool char __b)179 vec_add(vector signed char __a, vector bool char __b) {
180 return __a + (vector signed char)__b;
181 }
182
183 static __inline__ vector unsigned char __ATTRS_o_ai
vec_add(vector unsigned char __a,vector unsigned char __b)184 vec_add(vector unsigned char __a, vector unsigned char __b) {
185 return __a + __b;
186 }
187
188 static __inline__ vector unsigned char __ATTRS_o_ai
vec_add(vector bool char __a,vector unsigned char __b)189 vec_add(vector bool char __a, vector unsigned char __b) {
190 return (vector unsigned char)__a + __b;
191 }
192
193 static __inline__ vector unsigned char __ATTRS_o_ai
vec_add(vector unsigned char __a,vector bool char __b)194 vec_add(vector unsigned char __a, vector bool char __b) {
195 return __a + (vector unsigned char)__b;
196 }
197
vec_add(vector short __a,vector short __b)198 static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
199 vector short __b) {
200 return __a + __b;
201 }
202
vec_add(vector bool short __a,vector short __b)203 static __inline__ vector short __ATTRS_o_ai vec_add(vector bool short __a,
204 vector short __b) {
205 return (vector short)__a + __b;
206 }
207
vec_add(vector short __a,vector bool short __b)208 static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
209 vector bool short __b) {
210 return __a + (vector short)__b;
211 }
212
213 static __inline__ vector unsigned short __ATTRS_o_ai
vec_add(vector unsigned short __a,vector unsigned short __b)214 vec_add(vector unsigned short __a, vector unsigned short __b) {
215 return __a + __b;
216 }
217
218 static __inline__ vector unsigned short __ATTRS_o_ai
vec_add(vector bool short __a,vector unsigned short __b)219 vec_add(vector bool short __a, vector unsigned short __b) {
220 return (vector unsigned short)__a + __b;
221 }
222
223 static __inline__ vector unsigned short __ATTRS_o_ai
vec_add(vector unsigned short __a,vector bool short __b)224 vec_add(vector unsigned short __a, vector bool short __b) {
225 return __a + (vector unsigned short)__b;
226 }
227
vec_add(vector int __a,vector int __b)228 static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
229 vector int __b) {
230 return __a + __b;
231 }
232
vec_add(vector bool int __a,vector int __b)233 static __inline__ vector int __ATTRS_o_ai vec_add(vector bool int __a,
234 vector int __b) {
235 return (vector int)__a + __b;
236 }
237
vec_add(vector int __a,vector bool int __b)238 static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
239 vector bool int __b) {
240 return __a + (vector int)__b;
241 }
242
243 static __inline__ vector unsigned int __ATTRS_o_ai
vec_add(vector unsigned int __a,vector unsigned int __b)244 vec_add(vector unsigned int __a, vector unsigned int __b) {
245 return __a + __b;
246 }
247
248 static __inline__ vector unsigned int __ATTRS_o_ai
vec_add(vector bool int __a,vector unsigned int __b)249 vec_add(vector bool int __a, vector unsigned int __b) {
250 return (vector unsigned int)__a + __b;
251 }
252
253 static __inline__ vector unsigned int __ATTRS_o_ai
vec_add(vector unsigned int __a,vector bool int __b)254 vec_add(vector unsigned int __a, vector bool int __b) {
255 return __a + (vector unsigned int)__b;
256 }
257
258 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
259 static __inline__ vector signed long long __ATTRS_o_ai
vec_add(vector signed long long __a,vector signed long long __b)260 vec_add(vector signed long long __a, vector signed long long __b) {
261 return __a + __b;
262 }
263
264 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_add(vector unsigned long long __a,vector unsigned long long __b)265 vec_add(vector unsigned long long __a, vector unsigned long long __b) {
266 return __a + __b;
267 }
268
269 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_add(vector signed __int128 __a,vector signed __int128 __b)270 vec_add(vector signed __int128 __a, vector signed __int128 __b) {
271 return __a + __b;
272 }
273
274 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_add(vector unsigned __int128 __a,vector unsigned __int128 __b)275 vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) {
276 return __a + __b;
277 }
278 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
279
vec_add(vector float __a,vector float __b)280 static __inline__ vector float __ATTRS_o_ai vec_add(vector float __a,
281 vector float __b) {
282 return __a + __b;
283 }
284
285 #ifdef __VSX__
vec_add(vector double __a,vector double __b)286 static __inline__ vector double __ATTRS_o_ai vec_add(vector double __a,
287 vector double __b) {
288 return __a + __b;
289 }
290 #endif // __VSX__
291
292 /* vec_adde */
293
294 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
295 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_adde(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)296 vec_adde(vector signed __int128 __a, vector signed __int128 __b,
297 vector signed __int128 __c) {
298 return __builtin_altivec_vaddeuqm(__a, __b, __c);
299 }
300
301 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_adde(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)302 vec_adde(vector unsigned __int128 __a, vector unsigned __int128 __b,
303 vector unsigned __int128 __c) {
304 return __builtin_altivec_vaddeuqm(__a, __b, __c);
305 }
306 #endif
307
308 /* vec_addec */
309
310 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
311 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_addec(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)312 vec_addec(vector signed __int128 __a, vector signed __int128 __b,
313 vector signed __int128 __c) {
314 return __builtin_altivec_vaddecuq(__a, __b, __c);
315 }
316
317 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_addec(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)318 vec_addec(vector unsigned __int128 __a, vector unsigned __int128 __b,
319 vector unsigned __int128 __c) {
320 return __builtin_altivec_vaddecuq(__a, __b, __c);
321 }
322 #endif
323
324 /* vec_vaddubm */
325
326 #define __builtin_altivec_vaddubm vec_vaddubm
327
328 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddubm(vector signed char __a,vector signed char __b)329 vec_vaddubm(vector signed char __a, vector signed char __b) {
330 return __a + __b;
331 }
332
333 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddubm(vector bool char __a,vector signed char __b)334 vec_vaddubm(vector bool char __a, vector signed char __b) {
335 return (vector signed char)__a + __b;
336 }
337
338 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddubm(vector signed char __a,vector bool char __b)339 vec_vaddubm(vector signed char __a, vector bool char __b) {
340 return __a + (vector signed char)__b;
341 }
342
343 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubm(vector unsigned char __a,vector unsigned char __b)344 vec_vaddubm(vector unsigned char __a, vector unsigned char __b) {
345 return __a + __b;
346 }
347
348 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubm(vector bool char __a,vector unsigned char __b)349 vec_vaddubm(vector bool char __a, vector unsigned char __b) {
350 return (vector unsigned char)__a + __b;
351 }
352
353 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubm(vector unsigned char __a,vector bool char __b)354 vec_vaddubm(vector unsigned char __a, vector bool char __b) {
355 return __a + (vector unsigned char)__b;
356 }
357
358 /* vec_vadduhm */
359
360 #define __builtin_altivec_vadduhm vec_vadduhm
361
vec_vadduhm(vector short __a,vector short __b)362 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
363 vector short __b) {
364 return __a + __b;
365 }
366
vec_vadduhm(vector bool short __a,vector short __b)367 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector bool short __a,
368 vector short __b) {
369 return (vector short)__a + __b;
370 }
371
vec_vadduhm(vector short __a,vector bool short __b)372 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
373 vector bool short __b) {
374 return __a + (vector short)__b;
375 }
376
377 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhm(vector unsigned short __a,vector unsigned short __b)378 vec_vadduhm(vector unsigned short __a, vector unsigned short __b) {
379 return __a + __b;
380 }
381
382 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhm(vector bool short __a,vector unsigned short __b)383 vec_vadduhm(vector bool short __a, vector unsigned short __b) {
384 return (vector unsigned short)__a + __b;
385 }
386
387 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhm(vector unsigned short __a,vector bool short __b)388 vec_vadduhm(vector unsigned short __a, vector bool short __b) {
389 return __a + (vector unsigned short)__b;
390 }
391
392 /* vec_vadduwm */
393
394 #define __builtin_altivec_vadduwm vec_vadduwm
395
vec_vadduwm(vector int __a,vector int __b)396 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
397 vector int __b) {
398 return __a + __b;
399 }
400
vec_vadduwm(vector bool int __a,vector int __b)401 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector bool int __a,
402 vector int __b) {
403 return (vector int)__a + __b;
404 }
405
vec_vadduwm(vector int __a,vector bool int __b)406 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
407 vector bool int __b) {
408 return __a + (vector int)__b;
409 }
410
411 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduwm(vector unsigned int __a,vector unsigned int __b)412 vec_vadduwm(vector unsigned int __a, vector unsigned int __b) {
413 return __a + __b;
414 }
415
416 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduwm(vector bool int __a,vector unsigned int __b)417 vec_vadduwm(vector bool int __a, vector unsigned int __b) {
418 return (vector unsigned int)__a + __b;
419 }
420
421 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduwm(vector unsigned int __a,vector bool int __b)422 vec_vadduwm(vector unsigned int __a, vector bool int __b) {
423 return __a + (vector unsigned int)__b;
424 }
425
426 /* vec_vaddfp */
427
428 #define __builtin_altivec_vaddfp vec_vaddfp
429
430 static __inline__ vector float __attribute__((__always_inline__))
vec_vaddfp(vector float __a,vector float __b)431 vec_vaddfp(vector float __a, vector float __b) {
432 return __a + __b;
433 }
434
435 /* vec_addc */
436
437 static __inline__ vector signed int __ATTRS_o_ai
vec_addc(vector signed int __a,vector signed int __b)438 vec_addc(vector signed int __a, vector signed int __b) {
439 return (vector signed int)__builtin_altivec_vaddcuw((vector unsigned int)__a,
440 (vector unsigned int)__b);
441 }
442
443 static __inline__ vector unsigned int __ATTRS_o_ai
vec_addc(vector unsigned int __a,vector unsigned int __b)444 vec_addc(vector unsigned int __a, vector unsigned int __b) {
445 return __builtin_altivec_vaddcuw(__a, __b);
446 }
447
448 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
449 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_addc(vector signed __int128 __a,vector signed __int128 __b)450 vec_addc(vector signed __int128 __a, vector signed __int128 __b) {
451 return (vector signed __int128)__builtin_altivec_vaddcuq(
452 (vector unsigned __int128)__a, (vector unsigned __int128)__b);
453 }
454
455 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_addc(vector unsigned __int128 __a,vector unsigned __int128 __b)456 vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
457 return __builtin_altivec_vaddcuq(__a, __b);
458 }
459 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
460
461 /* vec_vaddcuw */
462
463 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vaddcuw(vector unsigned int __a,vector unsigned int __b)464 vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) {
465 return __builtin_altivec_vaddcuw(__a, __b);
466 }
467
468 /* vec_adds */
469
470 static __inline__ vector signed char __ATTRS_o_ai
vec_adds(vector signed char __a,vector signed char __b)471 vec_adds(vector signed char __a, vector signed char __b) {
472 return __builtin_altivec_vaddsbs(__a, __b);
473 }
474
475 static __inline__ vector signed char __ATTRS_o_ai
vec_adds(vector bool char __a,vector signed char __b)476 vec_adds(vector bool char __a, vector signed char __b) {
477 return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
478 }
479
480 static __inline__ vector signed char __ATTRS_o_ai
vec_adds(vector signed char __a,vector bool char __b)481 vec_adds(vector signed char __a, vector bool char __b) {
482 return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
483 }
484
485 static __inline__ vector unsigned char __ATTRS_o_ai
vec_adds(vector unsigned char __a,vector unsigned char __b)486 vec_adds(vector unsigned char __a, vector unsigned char __b) {
487 return __builtin_altivec_vaddubs(__a, __b);
488 }
489
490 static __inline__ vector unsigned char __ATTRS_o_ai
vec_adds(vector bool char __a,vector unsigned char __b)491 vec_adds(vector bool char __a, vector unsigned char __b) {
492 return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
493 }
494
495 static __inline__ vector unsigned char __ATTRS_o_ai
vec_adds(vector unsigned char __a,vector bool char __b)496 vec_adds(vector unsigned char __a, vector bool char __b) {
497 return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
498 }
499
vec_adds(vector short __a,vector short __b)500 static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
501 vector short __b) {
502 return __builtin_altivec_vaddshs(__a, __b);
503 }
504
vec_adds(vector bool short __a,vector short __b)505 static __inline__ vector short __ATTRS_o_ai vec_adds(vector bool short __a,
506 vector short __b) {
507 return __builtin_altivec_vaddshs((vector short)__a, __b);
508 }
509
vec_adds(vector short __a,vector bool short __b)510 static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
511 vector bool short __b) {
512 return __builtin_altivec_vaddshs(__a, (vector short)__b);
513 }
514
515 static __inline__ vector unsigned short __ATTRS_o_ai
vec_adds(vector unsigned short __a,vector unsigned short __b)516 vec_adds(vector unsigned short __a, vector unsigned short __b) {
517 return __builtin_altivec_vadduhs(__a, __b);
518 }
519
520 static __inline__ vector unsigned short __ATTRS_o_ai
vec_adds(vector bool short __a,vector unsigned short __b)521 vec_adds(vector bool short __a, vector unsigned short __b) {
522 return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
523 }
524
525 static __inline__ vector unsigned short __ATTRS_o_ai
vec_adds(vector unsigned short __a,vector bool short __b)526 vec_adds(vector unsigned short __a, vector bool short __b) {
527 return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
528 }
529
vec_adds(vector int __a,vector int __b)530 static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
531 vector int __b) {
532 return __builtin_altivec_vaddsws(__a, __b);
533 }
534
vec_adds(vector bool int __a,vector int __b)535 static __inline__ vector int __ATTRS_o_ai vec_adds(vector bool int __a,
536 vector int __b) {
537 return __builtin_altivec_vaddsws((vector int)__a, __b);
538 }
539
vec_adds(vector int __a,vector bool int __b)540 static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
541 vector bool int __b) {
542 return __builtin_altivec_vaddsws(__a, (vector int)__b);
543 }
544
545 static __inline__ vector unsigned int __ATTRS_o_ai
vec_adds(vector unsigned int __a,vector unsigned int __b)546 vec_adds(vector unsigned int __a, vector unsigned int __b) {
547 return __builtin_altivec_vadduws(__a, __b);
548 }
549
550 static __inline__ vector unsigned int __ATTRS_o_ai
vec_adds(vector bool int __a,vector unsigned int __b)551 vec_adds(vector bool int __a, vector unsigned int __b) {
552 return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
553 }
554
555 static __inline__ vector unsigned int __ATTRS_o_ai
vec_adds(vector unsigned int __a,vector bool int __b)556 vec_adds(vector unsigned int __a, vector bool int __b) {
557 return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
558 }
559
560 /* vec_vaddsbs */
561
562 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddsbs(vector signed char __a,vector signed char __b)563 vec_vaddsbs(vector signed char __a, vector signed char __b) {
564 return __builtin_altivec_vaddsbs(__a, __b);
565 }
566
567 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddsbs(vector bool char __a,vector signed char __b)568 vec_vaddsbs(vector bool char __a, vector signed char __b) {
569 return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
570 }
571
572 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddsbs(vector signed char __a,vector bool char __b)573 vec_vaddsbs(vector signed char __a, vector bool char __b) {
574 return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
575 }
576
577 /* vec_vaddubs */
578
579 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubs(vector unsigned char __a,vector unsigned char __b)580 vec_vaddubs(vector unsigned char __a, vector unsigned char __b) {
581 return __builtin_altivec_vaddubs(__a, __b);
582 }
583
584 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubs(vector bool char __a,vector unsigned char __b)585 vec_vaddubs(vector bool char __a, vector unsigned char __b) {
586 return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
587 }
588
589 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubs(vector unsigned char __a,vector bool char __b)590 vec_vaddubs(vector unsigned char __a, vector bool char __b) {
591 return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
592 }
593
594 /* vec_vaddshs */
595
vec_vaddshs(vector short __a,vector short __b)596 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
597 vector short __b) {
598 return __builtin_altivec_vaddshs(__a, __b);
599 }
600
vec_vaddshs(vector bool short __a,vector short __b)601 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector bool short __a,
602 vector short __b) {
603 return __builtin_altivec_vaddshs((vector short)__a, __b);
604 }
605
vec_vaddshs(vector short __a,vector bool short __b)606 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
607 vector bool short __b) {
608 return __builtin_altivec_vaddshs(__a, (vector short)__b);
609 }
610
611 /* vec_vadduhs */
612
613 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhs(vector unsigned short __a,vector unsigned short __b)614 vec_vadduhs(vector unsigned short __a, vector unsigned short __b) {
615 return __builtin_altivec_vadduhs(__a, __b);
616 }
617
618 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhs(vector bool short __a,vector unsigned short __b)619 vec_vadduhs(vector bool short __a, vector unsigned short __b) {
620 return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
621 }
622
623 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhs(vector unsigned short __a,vector bool short __b)624 vec_vadduhs(vector unsigned short __a, vector bool short __b) {
625 return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
626 }
627
628 /* vec_vaddsws */
629
vec_vaddsws(vector int __a,vector int __b)630 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
631 vector int __b) {
632 return __builtin_altivec_vaddsws(__a, __b);
633 }
634
vec_vaddsws(vector bool int __a,vector int __b)635 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector bool int __a,
636 vector int __b) {
637 return __builtin_altivec_vaddsws((vector int)__a, __b);
638 }
639
vec_vaddsws(vector int __a,vector bool int __b)640 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
641 vector bool int __b) {
642 return __builtin_altivec_vaddsws(__a, (vector int)__b);
643 }
644
645 /* vec_vadduws */
646
647 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduws(vector unsigned int __a,vector unsigned int __b)648 vec_vadduws(vector unsigned int __a, vector unsigned int __b) {
649 return __builtin_altivec_vadduws(__a, __b);
650 }
651
652 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduws(vector bool int __a,vector unsigned int __b)653 vec_vadduws(vector bool int __a, vector unsigned int __b) {
654 return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
655 }
656
657 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduws(vector unsigned int __a,vector bool int __b)658 vec_vadduws(vector unsigned int __a, vector bool int __b) {
659 return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
660 }
661
662 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
663 /* vec_vadduqm */
664
665 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vadduqm(vector signed __int128 __a,vector signed __int128 __b)666 vec_vadduqm(vector signed __int128 __a, vector signed __int128 __b) {
667 return __a + __b;
668 }
669
670 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vadduqm(vector unsigned __int128 __a,vector unsigned __int128 __b)671 vec_vadduqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
672 return __a + __b;
673 }
674
675 /* vec_vaddeuqm */
676
677 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vaddeuqm(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)678 vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b,
679 vector signed __int128 __c) {
680 return __builtin_altivec_vaddeuqm(__a, __b, __c);
681 }
682
683 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vaddeuqm(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)684 vec_vaddeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
685 vector unsigned __int128 __c) {
686 return __builtin_altivec_vaddeuqm(__a, __b, __c);
687 }
688
689 /* vec_vaddcuq */
690
691 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vaddcuq(vector signed __int128 __a,vector signed __int128 __b)692 vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) {
693 return __builtin_altivec_vaddcuq(__a, __b);
694 }
695
696 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vaddcuq(vector unsigned __int128 __a,vector unsigned __int128 __b)697 vec_vaddcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
698 return __builtin_altivec_vaddcuq(__a, __b);
699 }
700
701 /* vec_vaddecuq */
702
703 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vaddecuq(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)704 vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b,
705 vector signed __int128 __c) {
706 return __builtin_altivec_vaddecuq(__a, __b, __c);
707 }
708
709 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vaddecuq(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)710 vec_vaddecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
711 vector unsigned __int128 __c) {
712 return __builtin_altivec_vaddecuq(__a, __b, __c);
713 }
714 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
715
716 /* vec_and */
717
718 #define __builtin_altivec_vand vec_and
719
720 static __inline__ vector signed char __ATTRS_o_ai
vec_and(vector signed char __a,vector signed char __b)721 vec_and(vector signed char __a, vector signed char __b) {
722 return __a & __b;
723 }
724
725 static __inline__ vector signed char __ATTRS_o_ai
vec_and(vector bool char __a,vector signed char __b)726 vec_and(vector bool char __a, vector signed char __b) {
727 return (vector signed char)__a & __b;
728 }
729
730 static __inline__ vector signed char __ATTRS_o_ai
vec_and(vector signed char __a,vector bool char __b)731 vec_and(vector signed char __a, vector bool char __b) {
732 return __a & (vector signed char)__b;
733 }
734
735 static __inline__ vector unsigned char __ATTRS_o_ai
vec_and(vector unsigned char __a,vector unsigned char __b)736 vec_and(vector unsigned char __a, vector unsigned char __b) {
737 return __a & __b;
738 }
739
740 static __inline__ vector unsigned char __ATTRS_o_ai
vec_and(vector bool char __a,vector unsigned char __b)741 vec_and(vector bool char __a, vector unsigned char __b) {
742 return (vector unsigned char)__a & __b;
743 }
744
745 static __inline__ vector unsigned char __ATTRS_o_ai
vec_and(vector unsigned char __a,vector bool char __b)746 vec_and(vector unsigned char __a, vector bool char __b) {
747 return __a & (vector unsigned char)__b;
748 }
749
vec_and(vector bool char __a,vector bool char __b)750 static __inline__ vector bool char __ATTRS_o_ai vec_and(vector bool char __a,
751 vector bool char __b) {
752 return __a & __b;
753 }
754
vec_and(vector short __a,vector short __b)755 static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
756 vector short __b) {
757 return __a & __b;
758 }
759
vec_and(vector bool short __a,vector short __b)760 static __inline__ vector short __ATTRS_o_ai vec_and(vector bool short __a,
761 vector short __b) {
762 return (vector short)__a & __b;
763 }
764
vec_and(vector short __a,vector bool short __b)765 static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
766 vector bool short __b) {
767 return __a & (vector short)__b;
768 }
769
770 static __inline__ vector unsigned short __ATTRS_o_ai
vec_and(vector unsigned short __a,vector unsigned short __b)771 vec_and(vector unsigned short __a, vector unsigned short __b) {
772 return __a & __b;
773 }
774
775 static __inline__ vector unsigned short __ATTRS_o_ai
vec_and(vector bool short __a,vector unsigned short __b)776 vec_and(vector bool short __a, vector unsigned short __b) {
777 return (vector unsigned short)__a & __b;
778 }
779
780 static __inline__ vector unsigned short __ATTRS_o_ai
vec_and(vector unsigned short __a,vector bool short __b)781 vec_and(vector unsigned short __a, vector bool short __b) {
782 return __a & (vector unsigned short)__b;
783 }
784
785 static __inline__ vector bool short __ATTRS_o_ai
vec_and(vector bool short __a,vector bool short __b)786 vec_and(vector bool short __a, vector bool short __b) {
787 return __a & __b;
788 }
789
vec_and(vector int __a,vector int __b)790 static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
791 vector int __b) {
792 return __a & __b;
793 }
794
vec_and(vector bool int __a,vector int __b)795 static __inline__ vector int __ATTRS_o_ai vec_and(vector bool int __a,
796 vector int __b) {
797 return (vector int)__a & __b;
798 }
799
vec_and(vector int __a,vector bool int __b)800 static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
801 vector bool int __b) {
802 return __a & (vector int)__b;
803 }
804
805 static __inline__ vector unsigned int __ATTRS_o_ai
vec_and(vector unsigned int __a,vector unsigned int __b)806 vec_and(vector unsigned int __a, vector unsigned int __b) {
807 return __a & __b;
808 }
809
810 static __inline__ vector unsigned int __ATTRS_o_ai
vec_and(vector bool int __a,vector unsigned int __b)811 vec_and(vector bool int __a, vector unsigned int __b) {
812 return (vector unsigned int)__a & __b;
813 }
814
815 static __inline__ vector unsigned int __ATTRS_o_ai
vec_and(vector unsigned int __a,vector bool int __b)816 vec_and(vector unsigned int __a, vector bool int __b) {
817 return __a & (vector unsigned int)__b;
818 }
819
vec_and(vector bool int __a,vector bool int __b)820 static __inline__ vector bool int __ATTRS_o_ai vec_and(vector bool int __a,
821 vector bool int __b) {
822 return __a & __b;
823 }
824
vec_and(vector float __a,vector float __b)825 static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
826 vector float __b) {
827 vector unsigned int __res =
828 (vector unsigned int)__a & (vector unsigned int)__b;
829 return (vector float)__res;
830 }
831
vec_and(vector bool int __a,vector float __b)832 static __inline__ vector float __ATTRS_o_ai vec_and(vector bool int __a,
833 vector float __b) {
834 vector unsigned int __res =
835 (vector unsigned int)__a & (vector unsigned int)__b;
836 return (vector float)__res;
837 }
838
vec_and(vector float __a,vector bool int __b)839 static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
840 vector bool int __b) {
841 vector unsigned int __res =
842 (vector unsigned int)__a & (vector unsigned int)__b;
843 return (vector float)__res;
844 }
845
846 #ifdef __VSX__
vec_and(vector bool long long __a,vector double __b)847 static __inline__ vector double __ATTRS_o_ai vec_and(vector bool long long __a,
848 vector double __b) {
849 vector unsigned long long __res =
850 (vector unsigned long long)__a & (vector unsigned long long)__b;
851 return (vector double)__res;
852 }
853
854 static __inline__ vector double __ATTRS_o_ai
vec_and(vector double __a,vector bool long long __b)855 vec_and(vector double __a, vector bool long long __b) {
856 vector unsigned long long __res =
857 (vector unsigned long long)__a & (vector unsigned long long)__b;
858 return (vector double)__res;
859 }
860
vec_and(vector double __a,vector double __b)861 static __inline__ vector double __ATTRS_o_ai vec_and(vector double __a,
862 vector double __b) {
863 vector unsigned long long __res =
864 (vector unsigned long long)__a & (vector unsigned long long)__b;
865 return (vector double)__res;
866 }
867
868 static __inline__ vector signed long long __ATTRS_o_ai
vec_and(vector signed long long __a,vector signed long long __b)869 vec_and(vector signed long long __a, vector signed long long __b) {
870 return __a & __b;
871 }
872
873 static __inline__ vector signed long long __ATTRS_o_ai
vec_and(vector bool long long __a,vector signed long long __b)874 vec_and(vector bool long long __a, vector signed long long __b) {
875 return (vector signed long long)__a & __b;
876 }
877
878 static __inline__ vector signed long long __ATTRS_o_ai
vec_and(vector signed long long __a,vector bool long long __b)879 vec_and(vector signed long long __a, vector bool long long __b) {
880 return __a & (vector signed long long)__b;
881 }
882
883 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_and(vector unsigned long long __a,vector unsigned long long __b)884 vec_and(vector unsigned long long __a, vector unsigned long long __b) {
885 return __a & __b;
886 }
887
888 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_and(vector bool long long __a,vector unsigned long long __b)889 vec_and(vector bool long long __a, vector unsigned long long __b) {
890 return (vector unsigned long long)__a & __b;
891 }
892
893 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_and(vector unsigned long long __a,vector bool long long __b)894 vec_and(vector unsigned long long __a, vector bool long long __b) {
895 return __a & (vector unsigned long long)__b;
896 }
897
898 static __inline__ vector bool long long __ATTRS_o_ai
vec_and(vector bool long long __a,vector bool long long __b)899 vec_and(vector bool long long __a, vector bool long long __b) {
900 return __a & __b;
901 }
902 #endif
903
904 /* vec_vand */
905
906 static __inline__ vector signed char __ATTRS_o_ai
vec_vand(vector signed char __a,vector signed char __b)907 vec_vand(vector signed char __a, vector signed char __b) {
908 return __a & __b;
909 }
910
911 static __inline__ vector signed char __ATTRS_o_ai
vec_vand(vector bool char __a,vector signed char __b)912 vec_vand(vector bool char __a, vector signed char __b) {
913 return (vector signed char)__a & __b;
914 }
915
916 static __inline__ vector signed char __ATTRS_o_ai
vec_vand(vector signed char __a,vector bool char __b)917 vec_vand(vector signed char __a, vector bool char __b) {
918 return __a & (vector signed char)__b;
919 }
920
921 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vand(vector unsigned char __a,vector unsigned char __b)922 vec_vand(vector unsigned char __a, vector unsigned char __b) {
923 return __a & __b;
924 }
925
926 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vand(vector bool char __a,vector unsigned char __b)927 vec_vand(vector bool char __a, vector unsigned char __b) {
928 return (vector unsigned char)__a & __b;
929 }
930
931 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vand(vector unsigned char __a,vector bool char __b)932 vec_vand(vector unsigned char __a, vector bool char __b) {
933 return __a & (vector unsigned char)__b;
934 }
935
vec_vand(vector bool char __a,vector bool char __b)936 static __inline__ vector bool char __ATTRS_o_ai vec_vand(vector bool char __a,
937 vector bool char __b) {
938 return __a & __b;
939 }
940
vec_vand(vector short __a,vector short __b)941 static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
942 vector short __b) {
943 return __a & __b;
944 }
945
vec_vand(vector bool short __a,vector short __b)946 static __inline__ vector short __ATTRS_o_ai vec_vand(vector bool short __a,
947 vector short __b) {
948 return (vector short)__a & __b;
949 }
950
vec_vand(vector short __a,vector bool short __b)951 static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
952 vector bool short __b) {
953 return __a & (vector short)__b;
954 }
955
956 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vand(vector unsigned short __a,vector unsigned short __b)957 vec_vand(vector unsigned short __a, vector unsigned short __b) {
958 return __a & __b;
959 }
960
961 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vand(vector bool short __a,vector unsigned short __b)962 vec_vand(vector bool short __a, vector unsigned short __b) {
963 return (vector unsigned short)__a & __b;
964 }
965
966 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vand(vector unsigned short __a,vector bool short __b)967 vec_vand(vector unsigned short __a, vector bool short __b) {
968 return __a & (vector unsigned short)__b;
969 }
970
971 static __inline__ vector bool short __ATTRS_o_ai
vec_vand(vector bool short __a,vector bool short __b)972 vec_vand(vector bool short __a, vector bool short __b) {
973 return __a & __b;
974 }
975
vec_vand(vector int __a,vector int __b)976 static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
977 vector int __b) {
978 return __a & __b;
979 }
980
vec_vand(vector bool int __a,vector int __b)981 static __inline__ vector int __ATTRS_o_ai vec_vand(vector bool int __a,
982 vector int __b) {
983 return (vector int)__a & __b;
984 }
985
vec_vand(vector int __a,vector bool int __b)986 static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
987 vector bool int __b) {
988 return __a & (vector int)__b;
989 }
990
991 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vand(vector unsigned int __a,vector unsigned int __b)992 vec_vand(vector unsigned int __a, vector unsigned int __b) {
993 return __a & __b;
994 }
995
996 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vand(vector bool int __a,vector unsigned int __b)997 vec_vand(vector bool int __a, vector unsigned int __b) {
998 return (vector unsigned int)__a & __b;
999 }
1000
1001 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vand(vector unsigned int __a,vector bool int __b)1002 vec_vand(vector unsigned int __a, vector bool int __b) {
1003 return __a & (vector unsigned int)__b;
1004 }
1005
vec_vand(vector bool int __a,vector bool int __b)1006 static __inline__ vector bool int __ATTRS_o_ai vec_vand(vector bool int __a,
1007 vector bool int __b) {
1008 return __a & __b;
1009 }
1010
vec_vand(vector float __a,vector float __b)1011 static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1012 vector float __b) {
1013 vector unsigned int __res =
1014 (vector unsigned int)__a & (vector unsigned int)__b;
1015 return (vector float)__res;
1016 }
1017
vec_vand(vector bool int __a,vector float __b)1018 static __inline__ vector float __ATTRS_o_ai vec_vand(vector bool int __a,
1019 vector float __b) {
1020 vector unsigned int __res =
1021 (vector unsigned int)__a & (vector unsigned int)__b;
1022 return (vector float)__res;
1023 }
1024
vec_vand(vector float __a,vector bool int __b)1025 static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1026 vector bool int __b) {
1027 vector unsigned int __res =
1028 (vector unsigned int)__a & (vector unsigned int)__b;
1029 return (vector float)__res;
1030 }
1031
1032 #ifdef __VSX__
1033 static __inline__ vector signed long long __ATTRS_o_ai
vec_vand(vector signed long long __a,vector signed long long __b)1034 vec_vand(vector signed long long __a, vector signed long long __b) {
1035 return __a & __b;
1036 }
1037
1038 static __inline__ vector signed long long __ATTRS_o_ai
vec_vand(vector bool long long __a,vector signed long long __b)1039 vec_vand(vector bool long long __a, vector signed long long __b) {
1040 return (vector signed long long)__a & __b;
1041 }
1042
1043 static __inline__ vector signed long long __ATTRS_o_ai
vec_vand(vector signed long long __a,vector bool long long __b)1044 vec_vand(vector signed long long __a, vector bool long long __b) {
1045 return __a & (vector signed long long)__b;
1046 }
1047
1048 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vand(vector unsigned long long __a,vector unsigned long long __b)1049 vec_vand(vector unsigned long long __a, vector unsigned long long __b) {
1050 return __a & __b;
1051 }
1052
1053 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vand(vector bool long long __a,vector unsigned long long __b)1054 vec_vand(vector bool long long __a, vector unsigned long long __b) {
1055 return (vector unsigned long long)__a & __b;
1056 }
1057
1058 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vand(vector unsigned long long __a,vector bool long long __b)1059 vec_vand(vector unsigned long long __a, vector bool long long __b) {
1060 return __a & (vector unsigned long long)__b;
1061 }
1062
1063 static __inline__ vector bool long long __ATTRS_o_ai
vec_vand(vector bool long long __a,vector bool long long __b)1064 vec_vand(vector bool long long __a, vector bool long long __b) {
1065 return __a & __b;
1066 }
1067 #endif
1068
1069 /* vec_andc */
1070
1071 #define __builtin_altivec_vandc vec_andc
1072
1073 static __inline__ vector signed char __ATTRS_o_ai
vec_andc(vector signed char __a,vector signed char __b)1074 vec_andc(vector signed char __a, vector signed char __b) {
1075 return __a & ~__b;
1076 }
1077
1078 static __inline__ vector signed char __ATTRS_o_ai
vec_andc(vector bool char __a,vector signed char __b)1079 vec_andc(vector bool char __a, vector signed char __b) {
1080 return (vector signed char)__a & ~__b;
1081 }
1082
1083 static __inline__ vector signed char __ATTRS_o_ai
vec_andc(vector signed char __a,vector bool char __b)1084 vec_andc(vector signed char __a, vector bool char __b) {
1085 return __a & ~(vector signed char)__b;
1086 }
1087
1088 static __inline__ vector unsigned char __ATTRS_o_ai
vec_andc(vector unsigned char __a,vector unsigned char __b)1089 vec_andc(vector unsigned char __a, vector unsigned char __b) {
1090 return __a & ~__b;
1091 }
1092
1093 static __inline__ vector unsigned char __ATTRS_o_ai
vec_andc(vector bool char __a,vector unsigned char __b)1094 vec_andc(vector bool char __a, vector unsigned char __b) {
1095 return (vector unsigned char)__a & ~__b;
1096 }
1097
1098 static __inline__ vector unsigned char __ATTRS_o_ai
vec_andc(vector unsigned char __a,vector bool char __b)1099 vec_andc(vector unsigned char __a, vector bool char __b) {
1100 return __a & ~(vector unsigned char)__b;
1101 }
1102
vec_andc(vector bool char __a,vector bool char __b)1103 static __inline__ vector bool char __ATTRS_o_ai vec_andc(vector bool char __a,
1104 vector bool char __b) {
1105 return __a & ~__b;
1106 }
1107
vec_andc(vector short __a,vector short __b)1108 static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1109 vector short __b) {
1110 return __a & ~__b;
1111 }
1112
vec_andc(vector bool short __a,vector short __b)1113 static __inline__ vector short __ATTRS_o_ai vec_andc(vector bool short __a,
1114 vector short __b) {
1115 return (vector short)__a & ~__b;
1116 }
1117
vec_andc(vector short __a,vector bool short __b)1118 static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1119 vector bool short __b) {
1120 return __a & ~(vector short)__b;
1121 }
1122
1123 static __inline__ vector unsigned short __ATTRS_o_ai
vec_andc(vector unsigned short __a,vector unsigned short __b)1124 vec_andc(vector unsigned short __a, vector unsigned short __b) {
1125 return __a & ~__b;
1126 }
1127
1128 static __inline__ vector unsigned short __ATTRS_o_ai
vec_andc(vector bool short __a,vector unsigned short __b)1129 vec_andc(vector bool short __a, vector unsigned short __b) {
1130 return (vector unsigned short)__a & ~__b;
1131 }
1132
1133 static __inline__ vector unsigned short __ATTRS_o_ai
vec_andc(vector unsigned short __a,vector bool short __b)1134 vec_andc(vector unsigned short __a, vector bool short __b) {
1135 return __a & ~(vector unsigned short)__b;
1136 }
1137
1138 static __inline__ vector bool short __ATTRS_o_ai
vec_andc(vector bool short __a,vector bool short __b)1139 vec_andc(vector bool short __a, vector bool short __b) {
1140 return __a & ~__b;
1141 }
1142
vec_andc(vector int __a,vector int __b)1143 static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1144 vector int __b) {
1145 return __a & ~__b;
1146 }
1147
vec_andc(vector bool int __a,vector int __b)1148 static __inline__ vector int __ATTRS_o_ai vec_andc(vector bool int __a,
1149 vector int __b) {
1150 return (vector int)__a & ~__b;
1151 }
1152
vec_andc(vector int __a,vector bool int __b)1153 static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1154 vector bool int __b) {
1155 return __a & ~(vector int)__b;
1156 }
1157
1158 static __inline__ vector unsigned int __ATTRS_o_ai
vec_andc(vector unsigned int __a,vector unsigned int __b)1159 vec_andc(vector unsigned int __a, vector unsigned int __b) {
1160 return __a & ~__b;
1161 }
1162
1163 static __inline__ vector unsigned int __ATTRS_o_ai
vec_andc(vector bool int __a,vector unsigned int __b)1164 vec_andc(vector bool int __a, vector unsigned int __b) {
1165 return (vector unsigned int)__a & ~__b;
1166 }
1167
1168 static __inline__ vector unsigned int __ATTRS_o_ai
vec_andc(vector unsigned int __a,vector bool int __b)1169 vec_andc(vector unsigned int __a, vector bool int __b) {
1170 return __a & ~(vector unsigned int)__b;
1171 }
1172
vec_andc(vector bool int __a,vector bool int __b)1173 static __inline__ vector bool int __ATTRS_o_ai vec_andc(vector bool int __a,
1174 vector bool int __b) {
1175 return __a & ~__b;
1176 }
1177
vec_andc(vector float __a,vector float __b)1178 static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1179 vector float __b) {
1180 vector unsigned int __res =
1181 (vector unsigned int)__a & ~(vector unsigned int)__b;
1182 return (vector float)__res;
1183 }
1184
vec_andc(vector bool int __a,vector float __b)1185 static __inline__ vector float __ATTRS_o_ai vec_andc(vector bool int __a,
1186 vector float __b) {
1187 vector unsigned int __res =
1188 (vector unsigned int)__a & ~(vector unsigned int)__b;
1189 return (vector float)__res;
1190 }
1191
vec_andc(vector float __a,vector bool int __b)1192 static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1193 vector bool int __b) {
1194 vector unsigned int __res =
1195 (vector unsigned int)__a & ~(vector unsigned int)__b;
1196 return (vector float)__res;
1197 }
1198
1199 #ifdef __VSX__
vec_andc(vector bool long long __a,vector double __b)1200 static __inline__ vector double __ATTRS_o_ai vec_andc(vector bool long long __a,
1201 vector double __b) {
1202 vector unsigned long long __res =
1203 (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1204 return (vector double)__res;
1205 }
1206
1207 static __inline__ vector double __ATTRS_o_ai
vec_andc(vector double __a,vector bool long long __b)1208 vec_andc(vector double __a, vector bool long long __b) {
1209 vector unsigned long long __res =
1210 (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1211 return (vector double)__res;
1212 }
1213
vec_andc(vector double __a,vector double __b)1214 static __inline__ vector double __ATTRS_o_ai vec_andc(vector double __a,
1215 vector double __b) {
1216 vector unsigned long long __res =
1217 (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1218 return (vector double)__res;
1219 }
1220
1221 static __inline__ vector signed long long __ATTRS_o_ai
vec_andc(vector signed long long __a,vector signed long long __b)1222 vec_andc(vector signed long long __a, vector signed long long __b) {
1223 return __a & ~__b;
1224 }
1225
1226 static __inline__ vector signed long long __ATTRS_o_ai
vec_andc(vector bool long long __a,vector signed long long __b)1227 vec_andc(vector bool long long __a, vector signed long long __b) {
1228 return (vector signed long long)__a & ~__b;
1229 }
1230
1231 static __inline__ vector signed long long __ATTRS_o_ai
vec_andc(vector signed long long __a,vector bool long long __b)1232 vec_andc(vector signed long long __a, vector bool long long __b) {
1233 return __a & ~(vector signed long long)__b;
1234 }
1235
1236 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_andc(vector unsigned long long __a,vector unsigned long long __b)1237 vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
1238 return __a & ~__b;
1239 }
1240
1241 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_andc(vector bool long long __a,vector unsigned long long __b)1242 vec_andc(vector bool long long __a, vector unsigned long long __b) {
1243 return (vector unsigned long long)__a & ~__b;
1244 }
1245
1246 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_andc(vector unsigned long long __a,vector bool long long __b)1247 vec_andc(vector unsigned long long __a, vector bool long long __b) {
1248 return __a & ~(vector unsigned long long)__b;
1249 }
1250
1251 static __inline__ vector bool long long __ATTRS_o_ai
vec_andc(vector bool long long __a,vector bool long long __b)1252 vec_andc(vector bool long long __a, vector bool long long __b) {
1253 return __a & ~__b;
1254 }
1255 #endif
1256
1257 /* vec_vandc */
1258
1259 static __inline__ vector signed char __ATTRS_o_ai
vec_vandc(vector signed char __a,vector signed char __b)1260 vec_vandc(vector signed char __a, vector signed char __b) {
1261 return __a & ~__b;
1262 }
1263
1264 static __inline__ vector signed char __ATTRS_o_ai
vec_vandc(vector bool char __a,vector signed char __b)1265 vec_vandc(vector bool char __a, vector signed char __b) {
1266 return (vector signed char)__a & ~__b;
1267 }
1268
1269 static __inline__ vector signed char __ATTRS_o_ai
vec_vandc(vector signed char __a,vector bool char __b)1270 vec_vandc(vector signed char __a, vector bool char __b) {
1271 return __a & ~(vector signed char)__b;
1272 }
1273
1274 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vandc(vector unsigned char __a,vector unsigned char __b)1275 vec_vandc(vector unsigned char __a, vector unsigned char __b) {
1276 return __a & ~__b;
1277 }
1278
1279 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vandc(vector bool char __a,vector unsigned char __b)1280 vec_vandc(vector bool char __a, vector unsigned char __b) {
1281 return (vector unsigned char)__a & ~__b;
1282 }
1283
1284 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vandc(vector unsigned char __a,vector bool char __b)1285 vec_vandc(vector unsigned char __a, vector bool char __b) {
1286 return __a & ~(vector unsigned char)__b;
1287 }
1288
1289 static __inline__ vector bool char __ATTRS_o_ai
vec_vandc(vector bool char __a,vector bool char __b)1290 vec_vandc(vector bool char __a, vector bool char __b) {
1291 return __a & ~__b;
1292 }
1293
vec_vandc(vector short __a,vector short __b)1294 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1295 vector short __b) {
1296 return __a & ~__b;
1297 }
1298
vec_vandc(vector bool short __a,vector short __b)1299 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector bool short __a,
1300 vector short __b) {
1301 return (vector short)__a & ~__b;
1302 }
1303
vec_vandc(vector short __a,vector bool short __b)1304 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1305 vector bool short __b) {
1306 return __a & ~(vector short)__b;
1307 }
1308
1309 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vandc(vector unsigned short __a,vector unsigned short __b)1310 vec_vandc(vector unsigned short __a, vector unsigned short __b) {
1311 return __a & ~__b;
1312 }
1313
1314 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vandc(vector bool short __a,vector unsigned short __b)1315 vec_vandc(vector bool short __a, vector unsigned short __b) {
1316 return (vector unsigned short)__a & ~__b;
1317 }
1318
1319 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vandc(vector unsigned short __a,vector bool short __b)1320 vec_vandc(vector unsigned short __a, vector bool short __b) {
1321 return __a & ~(vector unsigned short)__b;
1322 }
1323
1324 static __inline__ vector bool short __ATTRS_o_ai
vec_vandc(vector bool short __a,vector bool short __b)1325 vec_vandc(vector bool short __a, vector bool short __b) {
1326 return __a & ~__b;
1327 }
1328
vec_vandc(vector int __a,vector int __b)1329 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1330 vector int __b) {
1331 return __a & ~__b;
1332 }
1333
vec_vandc(vector bool int __a,vector int __b)1334 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector bool int __a,
1335 vector int __b) {
1336 return (vector int)__a & ~__b;
1337 }
1338
vec_vandc(vector int __a,vector bool int __b)1339 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1340 vector bool int __b) {
1341 return __a & ~(vector int)__b;
1342 }
1343
1344 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vandc(vector unsigned int __a,vector unsigned int __b)1345 vec_vandc(vector unsigned int __a, vector unsigned int __b) {
1346 return __a & ~__b;
1347 }
1348
1349 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vandc(vector bool int __a,vector unsigned int __b)1350 vec_vandc(vector bool int __a, vector unsigned int __b) {
1351 return (vector unsigned int)__a & ~__b;
1352 }
1353
1354 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vandc(vector unsigned int __a,vector bool int __b)1355 vec_vandc(vector unsigned int __a, vector bool int __b) {
1356 return __a & ~(vector unsigned int)__b;
1357 }
1358
vec_vandc(vector bool int __a,vector bool int __b)1359 static __inline__ vector bool int __ATTRS_o_ai vec_vandc(vector bool int __a,
1360 vector bool int __b) {
1361 return __a & ~__b;
1362 }
1363
vec_vandc(vector float __a,vector float __b)1364 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1365 vector float __b) {
1366 vector unsigned int __res =
1367 (vector unsigned int)__a & ~(vector unsigned int)__b;
1368 return (vector float)__res;
1369 }
1370
vec_vandc(vector bool int __a,vector float __b)1371 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector bool int __a,
1372 vector float __b) {
1373 vector unsigned int __res =
1374 (vector unsigned int)__a & ~(vector unsigned int)__b;
1375 return (vector float)__res;
1376 }
1377
vec_vandc(vector float __a,vector bool int __b)1378 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1379 vector bool int __b) {
1380 vector unsigned int __res =
1381 (vector unsigned int)__a & ~(vector unsigned int)__b;
1382 return (vector float)__res;
1383 }
1384
1385 #ifdef __VSX__
1386 static __inline__ vector signed long long __ATTRS_o_ai
vec_vandc(vector signed long long __a,vector signed long long __b)1387 vec_vandc(vector signed long long __a, vector signed long long __b) {
1388 return __a & ~__b;
1389 }
1390
1391 static __inline__ vector signed long long __ATTRS_o_ai
vec_vandc(vector bool long long __a,vector signed long long __b)1392 vec_vandc(vector bool long long __a, vector signed long long __b) {
1393 return (vector signed long long)__a & ~__b;
1394 }
1395
1396 static __inline__ vector signed long long __ATTRS_o_ai
vec_vandc(vector signed long long __a,vector bool long long __b)1397 vec_vandc(vector signed long long __a, vector bool long long __b) {
1398 return __a & ~(vector signed long long)__b;
1399 }
1400
1401 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vandc(vector unsigned long long __a,vector unsigned long long __b)1402 vec_vandc(vector unsigned long long __a, vector unsigned long long __b) {
1403 return __a & ~__b;
1404 }
1405
1406 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vandc(vector bool long long __a,vector unsigned long long __b)1407 vec_vandc(vector bool long long __a, vector unsigned long long __b) {
1408 return (vector unsigned long long)__a & ~__b;
1409 }
1410
1411 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vandc(vector unsigned long long __a,vector bool long long __b)1412 vec_vandc(vector unsigned long long __a, vector bool long long __b) {
1413 return __a & ~(vector unsigned long long)__b;
1414 }
1415
1416 static __inline__ vector bool long long __ATTRS_o_ai
vec_vandc(vector bool long long __a,vector bool long long __b)1417 vec_vandc(vector bool long long __a, vector bool long long __b) {
1418 return __a & ~__b;
1419 }
1420 #endif
1421
1422 /* vec_avg */
1423
1424 static __inline__ vector signed char __ATTRS_o_ai
vec_avg(vector signed char __a,vector signed char __b)1425 vec_avg(vector signed char __a, vector signed char __b) {
1426 return __builtin_altivec_vavgsb(__a, __b);
1427 }
1428
1429 static __inline__ vector unsigned char __ATTRS_o_ai
vec_avg(vector unsigned char __a,vector unsigned char __b)1430 vec_avg(vector unsigned char __a, vector unsigned char __b) {
1431 return __builtin_altivec_vavgub(__a, __b);
1432 }
1433
vec_avg(vector short __a,vector short __b)1434 static __inline__ vector short __ATTRS_o_ai vec_avg(vector short __a,
1435 vector short __b) {
1436 return __builtin_altivec_vavgsh(__a, __b);
1437 }
1438
1439 static __inline__ vector unsigned short __ATTRS_o_ai
vec_avg(vector unsigned short __a,vector unsigned short __b)1440 vec_avg(vector unsigned short __a, vector unsigned short __b) {
1441 return __builtin_altivec_vavguh(__a, __b);
1442 }
1443
vec_avg(vector int __a,vector int __b)1444 static __inline__ vector int __ATTRS_o_ai vec_avg(vector int __a,
1445 vector int __b) {
1446 return __builtin_altivec_vavgsw(__a, __b);
1447 }
1448
1449 static __inline__ vector unsigned int __ATTRS_o_ai
vec_avg(vector unsigned int __a,vector unsigned int __b)1450 vec_avg(vector unsigned int __a, vector unsigned int __b) {
1451 return __builtin_altivec_vavguw(__a, __b);
1452 }
1453
1454 /* vec_vavgsb */
1455
1456 static __inline__ vector signed char __attribute__((__always_inline__))
vec_vavgsb(vector signed char __a,vector signed char __b)1457 vec_vavgsb(vector signed char __a, vector signed char __b) {
1458 return __builtin_altivec_vavgsb(__a, __b);
1459 }
1460
1461 /* vec_vavgub */
1462
1463 static __inline__ vector unsigned char __attribute__((__always_inline__))
vec_vavgub(vector unsigned char __a,vector unsigned char __b)1464 vec_vavgub(vector unsigned char __a, vector unsigned char __b) {
1465 return __builtin_altivec_vavgub(__a, __b);
1466 }
1467
1468 /* vec_vavgsh */
1469
1470 static __inline__ vector short __attribute__((__always_inline__))
vec_vavgsh(vector short __a,vector short __b)1471 vec_vavgsh(vector short __a, vector short __b) {
1472 return __builtin_altivec_vavgsh(__a, __b);
1473 }
1474
1475 /* vec_vavguh */
1476
1477 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vavguh(vector unsigned short __a,vector unsigned short __b)1478 vec_vavguh(vector unsigned short __a, vector unsigned short __b) {
1479 return __builtin_altivec_vavguh(__a, __b);
1480 }
1481
1482 /* vec_vavgsw */
1483
1484 static __inline__ vector int __attribute__((__always_inline__))
vec_vavgsw(vector int __a,vector int __b)1485 vec_vavgsw(vector int __a, vector int __b) {
1486 return __builtin_altivec_vavgsw(__a, __b);
1487 }
1488
1489 /* vec_vavguw */
1490
1491 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vavguw(vector unsigned int __a,vector unsigned int __b)1492 vec_vavguw(vector unsigned int __a, vector unsigned int __b) {
1493 return __builtin_altivec_vavguw(__a, __b);
1494 }
1495
1496 /* vec_ceil */
1497
vec_ceil(vector float __a)1498 static __inline__ vector float __ATTRS_o_ai vec_ceil(vector float __a) {
1499 #ifdef __VSX__
1500 return __builtin_vsx_xvrspip(__a);
1501 #else
1502 return __builtin_altivec_vrfip(__a);
1503 #endif
1504 }
1505
1506 #ifdef __VSX__
vec_ceil(vector double __a)1507 static __inline__ vector double __ATTRS_o_ai vec_ceil(vector double __a) {
1508 return __builtin_vsx_xvrdpip(__a);
1509 }
1510 #endif
1511
1512 /* vec_vrfip */
1513
1514 static __inline__ vector float __attribute__((__always_inline__))
vec_vrfip(vector float __a)1515 vec_vrfip(vector float __a) {
1516 return __builtin_altivec_vrfip(__a);
1517 }
1518
1519 /* vec_cmpb */
1520
1521 static __inline__ vector int __attribute__((__always_inline__))
vec_cmpb(vector float __a,vector float __b)1522 vec_cmpb(vector float __a, vector float __b) {
1523 return __builtin_altivec_vcmpbfp(__a, __b);
1524 }
1525
1526 /* vec_vcmpbfp */
1527
1528 static __inline__ vector int __attribute__((__always_inline__))
vec_vcmpbfp(vector float __a,vector float __b)1529 vec_vcmpbfp(vector float __a, vector float __b) {
1530 return __builtin_altivec_vcmpbfp(__a, __b);
1531 }
1532
1533 /* vec_cmpeq */
1534
1535 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpeq(vector signed char __a,vector signed char __b)1536 vec_cmpeq(vector signed char __a, vector signed char __b) {
1537 return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1538 (vector char)__b);
1539 }
1540
1541 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpeq(vector unsigned char __a,vector unsigned char __b)1542 vec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
1543 return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1544 (vector char)__b);
1545 }
1546
vec_cmpeq(vector short __a,vector short __b)1547 static __inline__ vector bool short __ATTRS_o_ai vec_cmpeq(vector short __a,
1548 vector short __b) {
1549 return (vector bool short)__builtin_altivec_vcmpequh(__a, __b);
1550 }
1551
1552 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpeq(vector unsigned short __a,vector unsigned short __b)1553 vec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
1554 return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
1555 (vector short)__b);
1556 }
1557
vec_cmpeq(vector int __a,vector int __b)1558 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector int __a,
1559 vector int __b) {
1560 return (vector bool int)__builtin_altivec_vcmpequw(__a, __b);
1561 }
1562
1563 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpeq(vector unsigned int __a,vector unsigned int __b)1564 vec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
1565 return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
1566 (vector int)__b);
1567 }
1568
1569 #ifdef __POWER8_VECTOR__
1570 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector signed long long __a,vector signed long long __b)1571 vec_cmpeq(vector signed long long __a, vector signed long long __b) {
1572 return (vector bool long long)__builtin_altivec_vcmpequd(__a, __b);
1573 }
1574
1575 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector unsigned long long __a,vector unsigned long long __b)1576 vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
1577 return (vector bool long long)__builtin_altivec_vcmpequd(
1578 (vector long long)__a, (vector long long)__b);
1579 }
1580 #endif
1581
vec_cmpeq(vector float __a,vector float __b)1582 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector float __a,
1583 vector float __b) {
1584 #ifdef __VSX__
1585 return (vector bool int)__builtin_vsx_xvcmpeqsp(__a, __b);
1586 #else
1587 return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b);
1588 #endif
1589 }
1590
1591 #ifdef __VSX__
1592 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector double __a,vector double __b)1593 vec_cmpeq(vector double __a, vector double __b) {
1594 return (vector bool long long)__builtin_vsx_xvcmpeqdp(__a, __b);
1595 }
1596 #endif
1597
1598 /* vec_cmpgt */
1599
1600 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpgt(vector signed char __a,vector signed char __b)1601 vec_cmpgt(vector signed char __a, vector signed char __b) {
1602 return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1603 }
1604
1605 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpgt(vector unsigned char __a,vector unsigned char __b)1606 vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
1607 return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1608 }
1609
vec_cmpgt(vector short __a,vector short __b)1610 static __inline__ vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a,
1611 vector short __b) {
1612 return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1613 }
1614
1615 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpgt(vector unsigned short __a,vector unsigned short __b)1616 vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
1617 return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1618 }
1619
vec_cmpgt(vector int __a,vector int __b)1620 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a,
1621 vector int __b) {
1622 return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1623 }
1624
1625 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpgt(vector unsigned int __a,vector unsigned int __b)1626 vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
1627 return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1628 }
1629
1630 #ifdef __POWER8_VECTOR__
1631 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpgt(vector signed long long __a,vector signed long long __b)1632 vec_cmpgt(vector signed long long __a, vector signed long long __b) {
1633 return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b);
1634 }
1635
1636 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpgt(vector unsigned long long __a,vector unsigned long long __b)1637 vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
1638 return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b);
1639 }
1640 #endif
1641
vec_cmpgt(vector float __a,vector float __b)1642 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a,
1643 vector float __b) {
1644 #ifdef __VSX__
1645 return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b);
1646 #else
1647 return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1648 #endif
1649 }
1650
1651 #ifdef __VSX__
1652 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpgt(vector double __a,vector double __b)1653 vec_cmpgt(vector double __a, vector double __b) {
1654 return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b);
1655 }
1656 #endif
1657
1658 /* vec_cmpge */
1659
1660 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpge(vector signed char __a,vector signed char __b)1661 vec_cmpge(vector signed char __a, vector signed char __b) {
1662 return ~(vec_cmpgt(__b, __a));
1663 }
1664
1665 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpge(vector unsigned char __a,vector unsigned char __b)1666 vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
1667 return ~(vec_cmpgt(__b, __a));
1668 }
1669
1670 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpge(vector signed short __a,vector signed short __b)1671 vec_cmpge(vector signed short __a, vector signed short __b) {
1672 return ~(vec_cmpgt(__b, __a));
1673 }
1674
1675 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpge(vector unsigned short __a,vector unsigned short __b)1676 vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
1677 return ~(vec_cmpgt(__b, __a));
1678 }
1679
1680 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpge(vector signed int __a,vector signed int __b)1681 vec_cmpge(vector signed int __a, vector signed int __b) {
1682 return ~(vec_cmpgt(__b, __a));
1683 }
1684
1685 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpge(vector unsigned int __a,vector unsigned int __b)1686 vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
1687 return ~(vec_cmpgt(__b, __a));
1688 }
1689
vec_cmpge(vector float __a,vector float __b)1690 static __inline__ vector bool int __ATTRS_o_ai vec_cmpge(vector float __a,
1691 vector float __b) {
1692 #ifdef __VSX__
1693 return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b);
1694 #else
1695 return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
1696 #endif
1697 }
1698
1699 #ifdef __VSX__
1700 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpge(vector double __a,vector double __b)1701 vec_cmpge(vector double __a, vector double __b) {
1702 return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b);
1703 }
1704 #endif
1705
1706 #ifdef __POWER8_VECTOR__
1707 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpge(vector signed long long __a,vector signed long long __b)1708 vec_cmpge(vector signed long long __a, vector signed long long __b) {
1709 return ~(vec_cmpgt(__b, __a));
1710 }
1711
1712 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpge(vector unsigned long long __a,vector unsigned long long __b)1713 vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
1714 return ~(vec_cmpgt(__b, __a));
1715 }
1716 #endif
1717
1718 /* vec_vcmpgefp */
1719
1720 static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgefp(vector float __a,vector float __b)1721 vec_vcmpgefp(vector float __a, vector float __b) {
1722 return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
1723 }
1724
1725 /* vec_vcmpgtsb */
1726
1727 static __inline__ vector bool char __attribute__((__always_inline__))
vec_vcmpgtsb(vector signed char __a,vector signed char __b)1728 vec_vcmpgtsb(vector signed char __a, vector signed char __b) {
1729 return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1730 }
1731
1732 /* vec_vcmpgtub */
1733
1734 static __inline__ vector bool char __attribute__((__always_inline__))
vec_vcmpgtub(vector unsigned char __a,vector unsigned char __b)1735 vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) {
1736 return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1737 }
1738
1739 /* vec_vcmpgtsh */
1740
1741 static __inline__ vector bool short __attribute__((__always_inline__))
vec_vcmpgtsh(vector short __a,vector short __b)1742 vec_vcmpgtsh(vector short __a, vector short __b) {
1743 return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1744 }
1745
1746 /* vec_vcmpgtuh */
1747
1748 static __inline__ vector bool short __attribute__((__always_inline__))
vec_vcmpgtuh(vector unsigned short __a,vector unsigned short __b)1749 vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) {
1750 return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1751 }
1752
1753 /* vec_vcmpgtsw */
1754
1755 static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgtsw(vector int __a,vector int __b)1756 vec_vcmpgtsw(vector int __a, vector int __b) {
1757 return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1758 }
1759
1760 /* vec_vcmpgtuw */
1761
1762 static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgtuw(vector unsigned int __a,vector unsigned int __b)1763 vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) {
1764 return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1765 }
1766
1767 /* vec_vcmpgtfp */
1768
1769 static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgtfp(vector float __a,vector float __b)1770 vec_vcmpgtfp(vector float __a, vector float __b) {
1771 return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1772 }
1773
1774 /* vec_cmple */
1775
1776 static __inline__ vector bool char __ATTRS_o_ai
vec_cmple(vector signed char __a,vector signed char __b)1777 vec_cmple(vector signed char __a, vector signed char __b) {
1778 return vec_cmpge(__b, __a);
1779 }
1780
1781 static __inline__ vector bool char __ATTRS_o_ai
vec_cmple(vector unsigned char __a,vector unsigned char __b)1782 vec_cmple(vector unsigned char __a, vector unsigned char __b) {
1783 return vec_cmpge(__b, __a);
1784 }
1785
1786 static __inline__ vector bool short __ATTRS_o_ai
vec_cmple(vector signed short __a,vector signed short __b)1787 vec_cmple(vector signed short __a, vector signed short __b) {
1788 return vec_cmpge(__b, __a);
1789 }
1790
1791 static __inline__ vector bool short __ATTRS_o_ai
vec_cmple(vector unsigned short __a,vector unsigned short __b)1792 vec_cmple(vector unsigned short __a, vector unsigned short __b) {
1793 return vec_cmpge(__b, __a);
1794 }
1795
1796 static __inline__ vector bool int __ATTRS_o_ai
vec_cmple(vector signed int __a,vector signed int __b)1797 vec_cmple(vector signed int __a, vector signed int __b) {
1798 return vec_cmpge(__b, __a);
1799 }
1800
1801 static __inline__ vector bool int __ATTRS_o_ai
vec_cmple(vector unsigned int __a,vector unsigned int __b)1802 vec_cmple(vector unsigned int __a, vector unsigned int __b) {
1803 return vec_cmpge(__b, __a);
1804 }
1805
vec_cmple(vector float __a,vector float __b)1806 static __inline__ vector bool int __ATTRS_o_ai vec_cmple(vector float __a,
1807 vector float __b) {
1808 return vec_cmpge(__b, __a);
1809 }
1810
1811 #ifdef __VSX__
1812 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmple(vector double __a,vector double __b)1813 vec_cmple(vector double __a, vector double __b) {
1814 return vec_cmpge(__b, __a);
1815 }
1816 #endif
1817
1818 #ifdef __POWER8_VECTOR__
1819 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmple(vector signed long long __a,vector signed long long __b)1820 vec_cmple(vector signed long long __a, vector signed long long __b) {
1821 return vec_cmpge(__b, __a);
1822 }
1823
1824 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmple(vector unsigned long long __a,vector unsigned long long __b)1825 vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
1826 return vec_cmpge(__b, __a);
1827 }
1828 #endif
1829
1830 /* vec_cmplt */
1831
1832 static __inline__ vector bool char __ATTRS_o_ai
vec_cmplt(vector signed char __a,vector signed char __b)1833 vec_cmplt(vector signed char __a, vector signed char __b) {
1834 return vec_cmpgt(__b, __a);
1835 }
1836
1837 static __inline__ vector bool char __ATTRS_o_ai
vec_cmplt(vector unsigned char __a,vector unsigned char __b)1838 vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
1839 return vec_cmpgt(__b, __a);
1840 }
1841
vec_cmplt(vector short __a,vector short __b)1842 static __inline__ vector bool short __ATTRS_o_ai vec_cmplt(vector short __a,
1843 vector short __b) {
1844 return vec_cmpgt(__b, __a);
1845 }
1846
1847 static __inline__ vector bool short __ATTRS_o_ai
vec_cmplt(vector unsigned short __a,vector unsigned short __b)1848 vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
1849 return vec_cmpgt(__b, __a);
1850 }
1851
vec_cmplt(vector int __a,vector int __b)1852 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector int __a,
1853 vector int __b) {
1854 return vec_cmpgt(__b, __a);
1855 }
1856
1857 static __inline__ vector bool int __ATTRS_o_ai
vec_cmplt(vector unsigned int __a,vector unsigned int __b)1858 vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
1859 return vec_cmpgt(__b, __a);
1860 }
1861
vec_cmplt(vector float __a,vector float __b)1862 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector float __a,
1863 vector float __b) {
1864 return vec_cmpgt(__b, __a);
1865 }
1866
1867 #ifdef __VSX__
1868 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmplt(vector double __a,vector double __b)1869 vec_cmplt(vector double __a, vector double __b) {
1870 return vec_cmpgt(__b, __a);
1871 }
1872 #endif
1873
1874 #ifdef __POWER8_VECTOR__
1875 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmplt(vector signed long long __a,vector signed long long __b)1876 vec_cmplt(vector signed long long __a, vector signed long long __b) {
1877 return vec_cmpgt(__b, __a);
1878 }
1879
1880 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmplt(vector unsigned long long __a,vector unsigned long long __b)1881 vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
1882 return vec_cmpgt(__b, __a);
1883 }
1884
1885 /* vec_cntlz */
1886
1887 static __inline__ vector signed char __ATTRS_o_ai
vec_cntlz(vector signed char __a)1888 vec_cntlz(vector signed char __a) {
1889 return __builtin_altivec_vclzb(__a);
1890 }
1891 static __inline__ vector unsigned char __ATTRS_o_ai
vec_cntlz(vector unsigned char __a)1892 vec_cntlz(vector unsigned char __a) {
1893 return __builtin_altivec_vclzb(__a);
1894 }
1895 static __inline__ vector signed short __ATTRS_o_ai
vec_cntlz(vector signed short __a)1896 vec_cntlz(vector signed short __a) {
1897 return __builtin_altivec_vclzh(__a);
1898 }
1899 static __inline__ vector unsigned short __ATTRS_o_ai
vec_cntlz(vector unsigned short __a)1900 vec_cntlz(vector unsigned short __a) {
1901 return __builtin_altivec_vclzh(__a);
1902 }
1903 static __inline__ vector signed int __ATTRS_o_ai
vec_cntlz(vector signed int __a)1904 vec_cntlz(vector signed int __a) {
1905 return __builtin_altivec_vclzw(__a);
1906 }
1907 static __inline__ vector unsigned int __ATTRS_o_ai
vec_cntlz(vector unsigned int __a)1908 vec_cntlz(vector unsigned int __a) {
1909 return __builtin_altivec_vclzw(__a);
1910 }
1911 static __inline__ vector signed long long __ATTRS_o_ai
vec_cntlz(vector signed long long __a)1912 vec_cntlz(vector signed long long __a) {
1913 return __builtin_altivec_vclzd(__a);
1914 }
1915 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_cntlz(vector unsigned long long __a)1916 vec_cntlz(vector unsigned long long __a) {
1917 return __builtin_altivec_vclzd(__a);
1918 }
1919 #endif
1920
1921 /* vec_cpsgn */
1922
1923 #ifdef __VSX__
vec_cpsgn(vector float __a,vector float __b)1924 static __inline__ vector float __ATTRS_o_ai vec_cpsgn(vector float __a,
1925 vector float __b) {
1926 return __builtin_vsx_xvcpsgnsp(__a, __b);
1927 }
1928
vec_cpsgn(vector double __a,vector double __b)1929 static __inline__ vector double __ATTRS_o_ai vec_cpsgn(vector double __a,
1930 vector double __b) {
1931 return __builtin_vsx_xvcpsgndp(__a, __b);
1932 }
1933 #endif
1934
1935 /* vec_ctf */
1936
vec_ctf(vector int __a,int __b)1937 static __inline__ vector float __ATTRS_o_ai vec_ctf(vector int __a, int __b) {
1938 return __builtin_altivec_vcfsx(__a, __b);
1939 }
1940
vec_ctf(vector unsigned int __a,int __b)1941 static __inline__ vector float __ATTRS_o_ai vec_ctf(vector unsigned int __a,
1942 int __b) {
1943 return __builtin_altivec_vcfux((vector int)__a, __b);
1944 }
1945
1946 #ifdef __VSX__
1947 static __inline__ vector double __ATTRS_o_ai
vec_ctf(vector unsigned long long __a,int __b)1948 vec_ctf(vector unsigned long long __a, int __b) {
1949 vector double __ret = __builtin_convertvector(__a, vector double);
1950 __ret *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
1951 return __ret;
1952 }
1953
1954 static __inline__ vector double __ATTRS_o_ai
vec_ctf(vector signed long long __a,int __b)1955 vec_ctf(vector signed long long __a, int __b) {
1956 vector double __ret = __builtin_convertvector(__a, vector double);
1957 __ret *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
1958 return __ret;
1959 }
1960 #endif
1961
1962 /* vec_vcfsx */
1963
1964 static __inline__ vector float __attribute__((__always_inline__))
vec_vcfsx(vector int __a,int __b)1965 vec_vcfsx(vector int __a, int __b) {
1966 return __builtin_altivec_vcfsx(__a, __b);
1967 }
1968
1969 /* vec_vcfux */
1970
1971 static __inline__ vector float __attribute__((__always_inline__))
vec_vcfux(vector unsigned int __a,int __b)1972 vec_vcfux(vector unsigned int __a, int __b) {
1973 return __builtin_altivec_vcfux((vector int)__a, __b);
1974 }
1975
1976 /* vec_cts */
1977
vec_cts(vector float __a,int __b)1978 static __inline__ vector int __ATTRS_o_ai vec_cts(vector float __a, int __b) {
1979 return __builtin_altivec_vctsxs(__a, __b);
1980 }
1981
1982 #ifdef __VSX__
1983 static __inline__ vector signed long long __ATTRS_o_ai
vec_cts(vector double __a,int __b)1984 vec_cts(vector double __a, int __b) {
1985 __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
1986 return __builtin_convertvector(__a, vector signed long long);
1987 }
1988 #endif
1989
1990 /* vec_vctsxs */
1991
1992 static __inline__ vector int __attribute__((__always_inline__))
vec_vctsxs(vector float __a,int __b)1993 vec_vctsxs(vector float __a, int __b) {
1994 return __builtin_altivec_vctsxs(__a, __b);
1995 }
1996
1997 /* vec_ctu */
1998
vec_ctu(vector float __a,int __b)1999 static __inline__ vector unsigned int __ATTRS_o_ai vec_ctu(vector float __a,
2000 int __b) {
2001 return __builtin_altivec_vctuxs(__a, __b);
2002 }
2003
2004 #ifdef __VSX__
2005 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_ctu(vector double __a,int __b)2006 vec_ctu(vector double __a, int __b) {
2007 __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
2008 return __builtin_convertvector(__a, vector unsigned long long);
2009 }
2010 #endif
2011
2012 /* vec_vctuxs */
2013
2014 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vctuxs(vector float __a,int __b)2015 vec_vctuxs(vector float __a, int __b) {
2016 return __builtin_altivec_vctuxs(__a, __b);
2017 }
2018
2019 /* vec_double */
2020
2021 #ifdef __VSX__
2022 static __inline__ vector double __ATTRS_o_ai
vec_double(vector signed long long __a)2023 vec_double(vector signed long long __a) {
2024 vector double __ret = {__a[0], __a[1]};
2025 return __ret;
2026 }
2027
2028 static __inline__ vector double __ATTRS_o_ai
vec_double(vector unsigned long long __a)2029 vec_double(vector unsigned long long __a) {
2030 vector double __ret = {__a[0], __a[1]};
2031 return __ret;
2032 }
2033 #endif
2034
2035 /* vec_div */
2036
2037 /* Integer vector divides (vectors are scalarized, elements divided
2038 and the vectors reassembled).
2039 */
2040 static __inline__ vector signed char __ATTRS_o_ai
vec_div(vector signed char __a,vector signed char __b)2041 vec_div(vector signed char __a, vector signed char __b) {
2042 return __a / __b;
2043 }
2044
2045 static __inline__ vector unsigned char __ATTRS_o_ai
vec_div(vector unsigned char __a,vector unsigned char __b)2046 vec_div(vector unsigned char __a, vector unsigned char __b) {
2047 return __a / __b;
2048 }
2049
2050 static __inline__ vector signed short __ATTRS_o_ai
vec_div(vector signed short __a,vector signed short __b)2051 vec_div(vector signed short __a, vector signed short __b) {
2052 return __a / __b;
2053 }
2054
2055 static __inline__ vector unsigned short __ATTRS_o_ai
vec_div(vector unsigned short __a,vector unsigned short __b)2056 vec_div(vector unsigned short __a, vector unsigned short __b) {
2057 return __a / __b;
2058 }
2059
2060 static __inline__ vector signed int __ATTRS_o_ai
vec_div(vector signed int __a,vector signed int __b)2061 vec_div(vector signed int __a, vector signed int __b) {
2062 return __a / __b;
2063 }
2064
2065 static __inline__ vector unsigned int __ATTRS_o_ai
vec_div(vector unsigned int __a,vector unsigned int __b)2066 vec_div(vector unsigned int __a, vector unsigned int __b) {
2067 return __a / __b;
2068 }
2069
2070 #ifdef __VSX__
2071 static __inline__ vector signed long long __ATTRS_o_ai
vec_div(vector signed long long __a,vector signed long long __b)2072 vec_div(vector signed long long __a, vector signed long long __b) {
2073 return __a / __b;
2074 }
2075
2076 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_div(vector unsigned long long __a,vector unsigned long long __b)2077 vec_div(vector unsigned long long __a, vector unsigned long long __b) {
2078 return __a / __b;
2079 }
2080
vec_div(vector float __a,vector float __b)2081 static __inline__ vector float __ATTRS_o_ai vec_div(vector float __a,
2082 vector float __b) {
2083 return __a / __b;
2084 }
2085
vec_div(vector double __a,vector double __b)2086 static __inline__ vector double __ATTRS_o_ai vec_div(vector double __a,
2087 vector double __b) {
2088 return __a / __b;
2089 }
2090 #endif
2091
2092 /* vec_dss */
2093
vec_dss(int __a)2094 static __inline__ void __attribute__((__always_inline__)) vec_dss(int __a) {
2095 __builtin_altivec_dss(__a);
2096 }
2097
2098 /* vec_dssall */
2099
vec_dssall(void)2100 static __inline__ void __attribute__((__always_inline__)) vec_dssall(void) {
2101 __builtin_altivec_dssall();
2102 }
2103
2104 /* vec_dst */
2105 #define vec_dst(__PTR, __CW, __STR) \
2106 __extension__( \
2107 { __builtin_altivec_dst((const void *)(__PTR), (__CW), (__STR)); })
2108
2109 /* vec_dstst */
2110 #define vec_dstst(__PTR, __CW, __STR) \
2111 __extension__( \
2112 { __builtin_altivec_dstst((const void *)(__PTR), (__CW), (__STR)); })
2113
2114 /* vec_dststt */
2115 #define vec_dststt(__PTR, __CW, __STR) \
2116 __extension__( \
2117 { __builtin_altivec_dststt((const void *)(__PTR), (__CW), (__STR)); })
2118
2119 /* vec_dstt */
2120 #define vec_dstt(__PTR, __CW, __STR) \
2121 __extension__( \
2122 { __builtin_altivec_dstt((const void *)(__PTR), (__CW), (__STR)); })
2123
2124 /* vec_eqv */
2125
2126 #ifdef __POWER8_VECTOR__
2127 static __inline__ vector signed char __ATTRS_o_ai
vec_eqv(vector signed char __a,vector signed char __b)2128 vec_eqv(vector signed char __a, vector signed char __b) {
2129 return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
2130 (vector unsigned int)__b);
2131 }
2132
2133 static __inline__ vector unsigned char __ATTRS_o_ai
vec_eqv(vector unsigned char __a,vector unsigned char __b)2134 vec_eqv(vector unsigned char __a, vector unsigned char __b) {
2135 return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
2136 (vector unsigned int)__b);
2137 }
2138
vec_eqv(vector bool char __a,vector bool char __b)2139 static __inline__ vector bool char __ATTRS_o_ai vec_eqv(vector bool char __a,
2140 vector bool char __b) {
2141 return (vector bool char)__builtin_vsx_xxleqv((vector unsigned int)__a,
2142 (vector unsigned int)__b);
2143 }
2144
2145 static __inline__ vector signed short __ATTRS_o_ai
vec_eqv(vector signed short __a,vector signed short __b)2146 vec_eqv(vector signed short __a, vector signed short __b) {
2147 return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2148 (vector unsigned int)__b);
2149 }
2150
2151 static __inline__ vector unsigned short __ATTRS_o_ai
vec_eqv(vector unsigned short __a,vector unsigned short __b)2152 vec_eqv(vector unsigned short __a, vector unsigned short __b) {
2153 return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2154 (vector unsigned int)__b);
2155 }
2156
2157 static __inline__ vector bool short __ATTRS_o_ai
vec_eqv(vector bool short __a,vector bool short __b)2158 vec_eqv(vector bool short __a, vector bool short __b) {
2159 return (vector bool short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2160 (vector unsigned int)__b);
2161 }
2162
2163 static __inline__ vector signed int __ATTRS_o_ai
vec_eqv(vector signed int __a,vector signed int __b)2164 vec_eqv(vector signed int __a, vector signed int __b) {
2165 return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
2166 (vector unsigned int)__b);
2167 }
2168
2169 static __inline__ vector unsigned int __ATTRS_o_ai
vec_eqv(vector unsigned int __a,vector unsigned int __b)2170 vec_eqv(vector unsigned int __a, vector unsigned int __b) {
2171 return __builtin_vsx_xxleqv(__a, __b);
2172 }
2173
vec_eqv(vector bool int __a,vector bool int __b)2174 static __inline__ vector bool int __ATTRS_o_ai vec_eqv(vector bool int __a,
2175 vector bool int __b) {
2176 return (vector bool int)__builtin_vsx_xxleqv((vector unsigned int)__a,
2177 (vector unsigned int)__b);
2178 }
2179
2180 static __inline__ vector signed long long __ATTRS_o_ai
vec_eqv(vector signed long long __a,vector signed long long __b)2181 vec_eqv(vector signed long long __a, vector signed long long __b) {
2182 return (vector signed long long)__builtin_vsx_xxleqv(
2183 (vector unsigned int)__a, (vector unsigned int)__b);
2184 }
2185
2186 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_eqv(vector unsigned long long __a,vector unsigned long long __b)2187 vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
2188 return (vector unsigned long long)__builtin_vsx_xxleqv(
2189 (vector unsigned int)__a, (vector unsigned int)__b);
2190 }
2191
2192 static __inline__ vector bool long long __ATTRS_o_ai
vec_eqv(vector bool long long __a,vector bool long long __b)2193 vec_eqv(vector bool long long __a, vector bool long long __b) {
2194 return (vector bool long long)__builtin_vsx_xxleqv((vector unsigned int)__a,
2195 (vector unsigned int)__b);
2196 }
2197
vec_eqv(vector float __a,vector float __b)2198 static __inline__ vector float __ATTRS_o_ai vec_eqv(vector float __a,
2199 vector float __b) {
2200 return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
2201 (vector unsigned int)__b);
2202 }
2203
vec_eqv(vector double __a,vector double __b)2204 static __inline__ vector double __ATTRS_o_ai vec_eqv(vector double __a,
2205 vector double __b) {
2206 return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
2207 (vector unsigned int)__b);
2208 }
2209 #endif
2210
2211 /* vec_expte */
2212
2213 static __inline__ vector float __attribute__((__always_inline__))
vec_expte(vector float __a)2214 vec_expte(vector float __a) {
2215 return __builtin_altivec_vexptefp(__a);
2216 }
2217
2218 /* vec_vexptefp */
2219
2220 static __inline__ vector float __attribute__((__always_inline__))
vec_vexptefp(vector float __a)2221 vec_vexptefp(vector float __a) {
2222 return __builtin_altivec_vexptefp(__a);
2223 }
2224
2225 /* vec_floor */
2226
vec_floor(vector float __a)2227 static __inline__ vector float __ATTRS_o_ai vec_floor(vector float __a) {
2228 #ifdef __VSX__
2229 return __builtin_vsx_xvrspim(__a);
2230 #else
2231 return __builtin_altivec_vrfim(__a);
2232 #endif
2233 }
2234
2235 #ifdef __VSX__
vec_floor(vector double __a)2236 static __inline__ vector double __ATTRS_o_ai vec_floor(vector double __a) {
2237 return __builtin_vsx_xvrdpim(__a);
2238 }
2239 #endif
2240
2241 /* vec_vrfim */
2242
2243 static __inline__ vector float __attribute__((__always_inline__))
vec_vrfim(vector float __a)2244 vec_vrfim(vector float __a) {
2245 return __builtin_altivec_vrfim(__a);
2246 }
2247
2248 /* vec_ld */
2249
2250 static __inline__ vector signed char __ATTRS_o_ai
vec_ld(int __a,const vector signed char * __b)2251 vec_ld(int __a, const vector signed char *__b) {
2252 return (vector signed char)__builtin_altivec_lvx(__a, __b);
2253 }
2254
2255 static __inline__ vector signed char __ATTRS_o_ai
vec_ld(int __a,const signed char * __b)2256 vec_ld(int __a, const signed char *__b) {
2257 return (vector signed char)__builtin_altivec_lvx(__a, __b);
2258 }
2259
2260 static __inline__ vector unsigned char __ATTRS_o_ai
vec_ld(int __a,const vector unsigned char * __b)2261 vec_ld(int __a, const vector unsigned char *__b) {
2262 return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2263 }
2264
2265 static __inline__ vector unsigned char __ATTRS_o_ai
vec_ld(int __a,const unsigned char * __b)2266 vec_ld(int __a, const unsigned char *__b) {
2267 return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2268 }
2269
2270 static __inline__ vector bool char __ATTRS_o_ai
vec_ld(int __a,const vector bool char * __b)2271 vec_ld(int __a, const vector bool char *__b) {
2272 return (vector bool char)__builtin_altivec_lvx(__a, __b);
2273 }
2274
vec_ld(int __a,const vector short * __b)2275 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a,
2276 const vector short *__b) {
2277 return (vector short)__builtin_altivec_lvx(__a, __b);
2278 }
2279
vec_ld(int __a,const short * __b)2280 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) {
2281 return (vector short)__builtin_altivec_lvx(__a, __b);
2282 }
2283
2284 static __inline__ vector unsigned short __ATTRS_o_ai
vec_ld(int __a,const vector unsigned short * __b)2285 vec_ld(int __a, const vector unsigned short *__b) {
2286 return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2287 }
2288
2289 static __inline__ vector unsigned short __ATTRS_o_ai
vec_ld(int __a,const unsigned short * __b)2290 vec_ld(int __a, const unsigned short *__b) {
2291 return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2292 }
2293
2294 static __inline__ vector bool short __ATTRS_o_ai
vec_ld(int __a,const vector bool short * __b)2295 vec_ld(int __a, const vector bool short *__b) {
2296 return (vector bool short)__builtin_altivec_lvx(__a, __b);
2297 }
2298
vec_ld(int __a,const vector pixel * __b)2299 static __inline__ vector pixel __ATTRS_o_ai vec_ld(int __a,
2300 const vector pixel *__b) {
2301 return (vector pixel)__builtin_altivec_lvx(__a, __b);
2302 }
2303
vec_ld(int __a,const vector int * __b)2304 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a,
2305 const vector int *__b) {
2306 return (vector int)__builtin_altivec_lvx(__a, __b);
2307 }
2308
vec_ld(int __a,const int * __b)2309 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) {
2310 return (vector int)__builtin_altivec_lvx(__a, __b);
2311 }
2312
2313 static __inline__ vector unsigned int __ATTRS_o_ai
vec_ld(int __a,const vector unsigned int * __b)2314 vec_ld(int __a, const vector unsigned int *__b) {
2315 return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2316 }
2317
2318 static __inline__ vector unsigned int __ATTRS_o_ai
vec_ld(int __a,const unsigned int * __b)2319 vec_ld(int __a, const unsigned int *__b) {
2320 return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2321 }
2322
2323 static __inline__ vector bool int __ATTRS_o_ai
vec_ld(int __a,const vector bool int * __b)2324 vec_ld(int __a, const vector bool int *__b) {
2325 return (vector bool int)__builtin_altivec_lvx(__a, __b);
2326 }
2327
vec_ld(int __a,const vector float * __b)2328 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a,
2329 const vector float *__b) {
2330 return (vector float)__builtin_altivec_lvx(__a, __b);
2331 }
2332
vec_ld(int __a,const float * __b)2333 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) {
2334 return (vector float)__builtin_altivec_lvx(__a, __b);
2335 }
2336
2337 /* vec_lvx */
2338
2339 static __inline__ vector signed char __ATTRS_o_ai
vec_lvx(int __a,const vector signed char * __b)2340 vec_lvx(int __a, const vector signed char *__b) {
2341 return (vector signed char)__builtin_altivec_lvx(__a, __b);
2342 }
2343
2344 static __inline__ vector signed char __ATTRS_o_ai
vec_lvx(int __a,const signed char * __b)2345 vec_lvx(int __a, const signed char *__b) {
2346 return (vector signed char)__builtin_altivec_lvx(__a, __b);
2347 }
2348
2349 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvx(int __a,const vector unsigned char * __b)2350 vec_lvx(int __a, const vector unsigned char *__b) {
2351 return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2352 }
2353
2354 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvx(int __a,const unsigned char * __b)2355 vec_lvx(int __a, const unsigned char *__b) {
2356 return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2357 }
2358
2359 static __inline__ vector bool char __ATTRS_o_ai
vec_lvx(int __a,const vector bool char * __b)2360 vec_lvx(int __a, const vector bool char *__b) {
2361 return (vector bool char)__builtin_altivec_lvx(__a, __b);
2362 }
2363
vec_lvx(int __a,const vector short * __b)2364 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a,
2365 const vector short *__b) {
2366 return (vector short)__builtin_altivec_lvx(__a, __b);
2367 }
2368
vec_lvx(int __a,const short * __b)2369 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) {
2370 return (vector short)__builtin_altivec_lvx(__a, __b);
2371 }
2372
2373 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvx(int __a,const vector unsigned short * __b)2374 vec_lvx(int __a, const vector unsigned short *__b) {
2375 return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2376 }
2377
2378 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvx(int __a,const unsigned short * __b)2379 vec_lvx(int __a, const unsigned short *__b) {
2380 return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2381 }
2382
2383 static __inline__ vector bool short __ATTRS_o_ai
vec_lvx(int __a,const vector bool short * __b)2384 vec_lvx(int __a, const vector bool short *__b) {
2385 return (vector bool short)__builtin_altivec_lvx(__a, __b);
2386 }
2387
vec_lvx(int __a,const vector pixel * __b)2388 static __inline__ vector pixel __ATTRS_o_ai vec_lvx(int __a,
2389 const vector pixel *__b) {
2390 return (vector pixel)__builtin_altivec_lvx(__a, __b);
2391 }
2392
vec_lvx(int __a,const vector int * __b)2393 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a,
2394 const vector int *__b) {
2395 return (vector int)__builtin_altivec_lvx(__a, __b);
2396 }
2397
vec_lvx(int __a,const int * __b)2398 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) {
2399 return (vector int)__builtin_altivec_lvx(__a, __b);
2400 }
2401
2402 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvx(int __a,const vector unsigned int * __b)2403 vec_lvx(int __a, const vector unsigned int *__b) {
2404 return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2405 }
2406
2407 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvx(int __a,const unsigned int * __b)2408 vec_lvx(int __a, const unsigned int *__b) {
2409 return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2410 }
2411
2412 static __inline__ vector bool int __ATTRS_o_ai
vec_lvx(int __a,const vector bool int * __b)2413 vec_lvx(int __a, const vector bool int *__b) {
2414 return (vector bool int)__builtin_altivec_lvx(__a, __b);
2415 }
2416
vec_lvx(int __a,const vector float * __b)2417 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a,
2418 const vector float *__b) {
2419 return (vector float)__builtin_altivec_lvx(__a, __b);
2420 }
2421
vec_lvx(int __a,const float * __b)2422 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) {
2423 return (vector float)__builtin_altivec_lvx(__a, __b);
2424 }
2425
2426 /* vec_lde */
2427
2428 static __inline__ vector signed char __ATTRS_o_ai
vec_lde(int __a,const signed char * __b)2429 vec_lde(int __a, const signed char *__b) {
2430 return (vector signed char)__builtin_altivec_lvebx(__a, __b);
2431 }
2432
2433 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lde(int __a,const unsigned char * __b)2434 vec_lde(int __a, const unsigned char *__b) {
2435 return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
2436 }
2437
vec_lde(int __a,const short * __b)2438 static __inline__ vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) {
2439 return (vector short)__builtin_altivec_lvehx(__a, __b);
2440 }
2441
2442 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lde(int __a,const unsigned short * __b)2443 vec_lde(int __a, const unsigned short *__b) {
2444 return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
2445 }
2446
vec_lde(int __a,const int * __b)2447 static __inline__ vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) {
2448 return (vector int)__builtin_altivec_lvewx(__a, __b);
2449 }
2450
2451 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lde(int __a,const unsigned int * __b)2452 vec_lde(int __a, const unsigned int *__b) {
2453 return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
2454 }
2455
vec_lde(int __a,const float * __b)2456 static __inline__ vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) {
2457 return (vector float)__builtin_altivec_lvewx(__a, __b);
2458 }
2459
2460 /* vec_lvebx */
2461
2462 static __inline__ vector signed char __ATTRS_o_ai
vec_lvebx(int __a,const signed char * __b)2463 vec_lvebx(int __a, const signed char *__b) {
2464 return (vector signed char)__builtin_altivec_lvebx(__a, __b);
2465 }
2466
2467 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvebx(int __a,const unsigned char * __b)2468 vec_lvebx(int __a, const unsigned char *__b) {
2469 return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
2470 }
2471
2472 /* vec_lvehx */
2473
vec_lvehx(int __a,const short * __b)2474 static __inline__ vector short __ATTRS_o_ai vec_lvehx(int __a,
2475 const short *__b) {
2476 return (vector short)__builtin_altivec_lvehx(__a, __b);
2477 }
2478
2479 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvehx(int __a,const unsigned short * __b)2480 vec_lvehx(int __a, const unsigned short *__b) {
2481 return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
2482 }
2483
2484 /* vec_lvewx */
2485
vec_lvewx(int __a,const int * __b)2486 static __inline__ vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) {
2487 return (vector int)__builtin_altivec_lvewx(__a, __b);
2488 }
2489
2490 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvewx(int __a,const unsigned int * __b)2491 vec_lvewx(int __a, const unsigned int *__b) {
2492 return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
2493 }
2494
vec_lvewx(int __a,const float * __b)2495 static __inline__ vector float __ATTRS_o_ai vec_lvewx(int __a,
2496 const float *__b) {
2497 return (vector float)__builtin_altivec_lvewx(__a, __b);
2498 }
2499
2500 /* vec_ldl */
2501
2502 static __inline__ vector signed char __ATTRS_o_ai
vec_ldl(int __a,const vector signed char * __b)2503 vec_ldl(int __a, const vector signed char *__b) {
2504 return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2505 }
2506
2507 static __inline__ vector signed char __ATTRS_o_ai
vec_ldl(int __a,const signed char * __b)2508 vec_ldl(int __a, const signed char *__b) {
2509 return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2510 }
2511
2512 static __inline__ vector unsigned char __ATTRS_o_ai
vec_ldl(int __a,const vector unsigned char * __b)2513 vec_ldl(int __a, const vector unsigned char *__b) {
2514 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2515 }
2516
2517 static __inline__ vector unsigned char __ATTRS_o_ai
vec_ldl(int __a,const unsigned char * __b)2518 vec_ldl(int __a, const unsigned char *__b) {
2519 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2520 }
2521
2522 static __inline__ vector bool char __ATTRS_o_ai
vec_ldl(int __a,const vector bool char * __b)2523 vec_ldl(int __a, const vector bool char *__b) {
2524 return (vector bool char)__builtin_altivec_lvxl(__a, __b);
2525 }
2526
vec_ldl(int __a,const vector short * __b)2527 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a,
2528 const vector short *__b) {
2529 return (vector short)__builtin_altivec_lvxl(__a, __b);
2530 }
2531
vec_ldl(int __a,const short * __b)2532 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) {
2533 return (vector short)__builtin_altivec_lvxl(__a, __b);
2534 }
2535
2536 static __inline__ vector unsigned short __ATTRS_o_ai
vec_ldl(int __a,const vector unsigned short * __b)2537 vec_ldl(int __a, const vector unsigned short *__b) {
2538 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2539 }
2540
2541 static __inline__ vector unsigned short __ATTRS_o_ai
vec_ldl(int __a,const unsigned short * __b)2542 vec_ldl(int __a, const unsigned short *__b) {
2543 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2544 }
2545
2546 static __inline__ vector bool short __ATTRS_o_ai
vec_ldl(int __a,const vector bool short * __b)2547 vec_ldl(int __a, const vector bool short *__b) {
2548 return (vector bool short)__builtin_altivec_lvxl(__a, __b);
2549 }
2550
vec_ldl(int __a,const vector pixel * __b)2551 static __inline__ vector pixel __ATTRS_o_ai vec_ldl(int __a,
2552 const vector pixel *__b) {
2553 return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
2554 }
2555
vec_ldl(int __a,const vector int * __b)2556 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a,
2557 const vector int *__b) {
2558 return (vector int)__builtin_altivec_lvxl(__a, __b);
2559 }
2560
vec_ldl(int __a,const int * __b)2561 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) {
2562 return (vector int)__builtin_altivec_lvxl(__a, __b);
2563 }
2564
2565 static __inline__ vector unsigned int __ATTRS_o_ai
vec_ldl(int __a,const vector unsigned int * __b)2566 vec_ldl(int __a, const vector unsigned int *__b) {
2567 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2568 }
2569
2570 static __inline__ vector unsigned int __ATTRS_o_ai
vec_ldl(int __a,const unsigned int * __b)2571 vec_ldl(int __a, const unsigned int *__b) {
2572 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2573 }
2574
2575 static __inline__ vector bool int __ATTRS_o_ai
vec_ldl(int __a,const vector bool int * __b)2576 vec_ldl(int __a, const vector bool int *__b) {
2577 return (vector bool int)__builtin_altivec_lvxl(__a, __b);
2578 }
2579
vec_ldl(int __a,const vector float * __b)2580 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a,
2581 const vector float *__b) {
2582 return (vector float)__builtin_altivec_lvxl(__a, __b);
2583 }
2584
vec_ldl(int __a,const float * __b)2585 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) {
2586 return (vector float)__builtin_altivec_lvxl(__a, __b);
2587 }
2588
2589 /* vec_lvxl */
2590
2591 static __inline__ vector signed char __ATTRS_o_ai
vec_lvxl(int __a,const vector signed char * __b)2592 vec_lvxl(int __a, const vector signed char *__b) {
2593 return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2594 }
2595
2596 static __inline__ vector signed char __ATTRS_o_ai
vec_lvxl(int __a,const signed char * __b)2597 vec_lvxl(int __a, const signed char *__b) {
2598 return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2599 }
2600
2601 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvxl(int __a,const vector unsigned char * __b)2602 vec_lvxl(int __a, const vector unsigned char *__b) {
2603 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2604 }
2605
2606 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvxl(int __a,const unsigned char * __b)2607 vec_lvxl(int __a, const unsigned char *__b) {
2608 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2609 }
2610
2611 static __inline__ vector bool char __ATTRS_o_ai
vec_lvxl(int __a,const vector bool char * __b)2612 vec_lvxl(int __a, const vector bool char *__b) {
2613 return (vector bool char)__builtin_altivec_lvxl(__a, __b);
2614 }
2615
vec_lvxl(int __a,const vector short * __b)2616 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
2617 const vector short *__b) {
2618 return (vector short)__builtin_altivec_lvxl(__a, __b);
2619 }
2620
vec_lvxl(int __a,const short * __b)2621 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
2622 const short *__b) {
2623 return (vector short)__builtin_altivec_lvxl(__a, __b);
2624 }
2625
2626 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvxl(int __a,const vector unsigned short * __b)2627 vec_lvxl(int __a, const vector unsigned short *__b) {
2628 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2629 }
2630
2631 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvxl(int __a,const unsigned short * __b)2632 vec_lvxl(int __a, const unsigned short *__b) {
2633 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2634 }
2635
2636 static __inline__ vector bool short __ATTRS_o_ai
vec_lvxl(int __a,const vector bool short * __b)2637 vec_lvxl(int __a, const vector bool short *__b) {
2638 return (vector bool short)__builtin_altivec_lvxl(__a, __b);
2639 }
2640
vec_lvxl(int __a,const vector pixel * __b)2641 static __inline__ vector pixel __ATTRS_o_ai vec_lvxl(int __a,
2642 const vector pixel *__b) {
2643 return (vector pixel)__builtin_altivec_lvxl(__a, __b);
2644 }
2645
vec_lvxl(int __a,const vector int * __b)2646 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a,
2647 const vector int *__b) {
2648 return (vector int)__builtin_altivec_lvxl(__a, __b);
2649 }
2650
vec_lvxl(int __a,const int * __b)2651 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) {
2652 return (vector int)__builtin_altivec_lvxl(__a, __b);
2653 }
2654
2655 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvxl(int __a,const vector unsigned int * __b)2656 vec_lvxl(int __a, const vector unsigned int *__b) {
2657 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2658 }
2659
2660 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvxl(int __a,const unsigned int * __b)2661 vec_lvxl(int __a, const unsigned int *__b) {
2662 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2663 }
2664
2665 static __inline__ vector bool int __ATTRS_o_ai
vec_lvxl(int __a,const vector bool int * __b)2666 vec_lvxl(int __a, const vector bool int *__b) {
2667 return (vector bool int)__builtin_altivec_lvxl(__a, __b);
2668 }
2669
vec_lvxl(int __a,const vector float * __b)2670 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
2671 const vector float *__b) {
2672 return (vector float)__builtin_altivec_lvxl(__a, __b);
2673 }
2674
vec_lvxl(int __a,const float * __b)2675 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
2676 const float *__b) {
2677 return (vector float)__builtin_altivec_lvxl(__a, __b);
2678 }
2679
2680 /* vec_loge */
2681
2682 static __inline__ vector float __attribute__((__always_inline__))
vec_loge(vector float __a)2683 vec_loge(vector float __a) {
2684 return __builtin_altivec_vlogefp(__a);
2685 }
2686
2687 /* vec_vlogefp */
2688
2689 static __inline__ vector float __attribute__((__always_inline__))
vec_vlogefp(vector float __a)2690 vec_vlogefp(vector float __a) {
2691 return __builtin_altivec_vlogefp(__a);
2692 }
2693
2694 /* vec_lvsl */
2695
2696 #ifdef __LITTLE_ENDIAN__
2697 static __inline__ vector unsigned char __ATTRS_o_ai
2698 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const signed char * __b)2699 loads/stores"))) vec_lvsl(int __a, const signed char *__b) {
2700 vector unsigned char mask =
2701 (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2702 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2703 7, 6, 5, 4, 3, 2, 1, 0};
2704 return vec_perm(mask, mask, reverse);
2705 }
2706 #else
2707 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const signed char * __b)2708 vec_lvsl(int __a, const signed char *__b) {
2709 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2710 }
2711 #endif
2712
2713 #ifdef __LITTLE_ENDIAN__
2714 static __inline__ vector unsigned char __ATTRS_o_ai
2715 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const unsigned char * __b)2716 loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) {
2717 vector unsigned char mask =
2718 (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2719 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2720 7, 6, 5, 4, 3, 2, 1, 0};
2721 return vec_perm(mask, mask, reverse);
2722 }
2723 #else
2724 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const unsigned char * __b)2725 vec_lvsl(int __a, const unsigned char *__b) {
2726 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2727 }
2728 #endif
2729
2730 #ifdef __LITTLE_ENDIAN__
2731 static __inline__ vector unsigned char __ATTRS_o_ai
2732 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const short * __b)2733 loads/stores"))) vec_lvsl(int __a, const short *__b) {
2734 vector unsigned char mask =
2735 (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2736 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2737 7, 6, 5, 4, 3, 2, 1, 0};
2738 return vec_perm(mask, mask, reverse);
2739 }
2740 #else
vec_lvsl(int __a,const short * __b)2741 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2742 const short *__b) {
2743 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2744 }
2745 #endif
2746
2747 #ifdef __LITTLE_ENDIAN__
2748 static __inline__ vector unsigned char __ATTRS_o_ai
2749 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const unsigned short * __b)2750 loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) {
2751 vector unsigned char mask =
2752 (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2753 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2754 7, 6, 5, 4, 3, 2, 1, 0};
2755 return vec_perm(mask, mask, reverse);
2756 }
2757 #else
2758 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const unsigned short * __b)2759 vec_lvsl(int __a, const unsigned short *__b) {
2760 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2761 }
2762 #endif
2763
2764 #ifdef __LITTLE_ENDIAN__
2765 static __inline__ vector unsigned char __ATTRS_o_ai
2766 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const int * __b)2767 loads/stores"))) vec_lvsl(int __a, const int *__b) {
2768 vector unsigned char mask =
2769 (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2770 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2771 7, 6, 5, 4, 3, 2, 1, 0};
2772 return vec_perm(mask, mask, reverse);
2773 }
2774 #else
vec_lvsl(int __a,const int * __b)2775 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2776 const int *__b) {
2777 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2778 }
2779 #endif
2780
2781 #ifdef __LITTLE_ENDIAN__
2782 static __inline__ vector unsigned char __ATTRS_o_ai
2783 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const unsigned int * __b)2784 loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) {
2785 vector unsigned char mask =
2786 (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2787 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2788 7, 6, 5, 4, 3, 2, 1, 0};
2789 return vec_perm(mask, mask, reverse);
2790 }
2791 #else
2792 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const unsigned int * __b)2793 vec_lvsl(int __a, const unsigned int *__b) {
2794 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2795 }
2796 #endif
2797
2798 #ifdef __LITTLE_ENDIAN__
2799 static __inline__ vector unsigned char __ATTRS_o_ai
2800 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const float * __b)2801 loads/stores"))) vec_lvsl(int __a, const float *__b) {
2802 vector unsigned char mask =
2803 (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2804 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2805 7, 6, 5, 4, 3, 2, 1, 0};
2806 return vec_perm(mask, mask, reverse);
2807 }
2808 #else
vec_lvsl(int __a,const float * __b)2809 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2810 const float *__b) {
2811 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2812 }
2813 #endif
2814
2815 /* vec_lvsr */
2816
2817 #ifdef __LITTLE_ENDIAN__
2818 static __inline__ vector unsigned char __ATTRS_o_ai
2819 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const signed char * __b)2820 loads/stores"))) vec_lvsr(int __a, const signed char *__b) {
2821 vector unsigned char mask =
2822 (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2823 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2824 7, 6, 5, 4, 3, 2, 1, 0};
2825 return vec_perm(mask, mask, reverse);
2826 }
2827 #else
2828 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const signed char * __b)2829 vec_lvsr(int __a, const signed char *__b) {
2830 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2831 }
2832 #endif
2833
2834 #ifdef __LITTLE_ENDIAN__
2835 static __inline__ vector unsigned char __ATTRS_o_ai
2836 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const unsigned char * __b)2837 loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) {
2838 vector unsigned char mask =
2839 (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2840 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2841 7, 6, 5, 4, 3, 2, 1, 0};
2842 return vec_perm(mask, mask, reverse);
2843 }
2844 #else
2845 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const unsigned char * __b)2846 vec_lvsr(int __a, const unsigned char *__b) {
2847 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2848 }
2849 #endif
2850
2851 #ifdef __LITTLE_ENDIAN__
2852 static __inline__ vector unsigned char __ATTRS_o_ai
2853 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const short * __b)2854 loads/stores"))) vec_lvsr(int __a, const short *__b) {
2855 vector unsigned char mask =
2856 (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2857 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2858 7, 6, 5, 4, 3, 2, 1, 0};
2859 return vec_perm(mask, mask, reverse);
2860 }
2861 #else
vec_lvsr(int __a,const short * __b)2862 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2863 const short *__b) {
2864 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2865 }
2866 #endif
2867
2868 #ifdef __LITTLE_ENDIAN__
2869 static __inline__ vector unsigned char __ATTRS_o_ai
2870 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const unsigned short * __b)2871 loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) {
2872 vector unsigned char mask =
2873 (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2874 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2875 7, 6, 5, 4, 3, 2, 1, 0};
2876 return vec_perm(mask, mask, reverse);
2877 }
2878 #else
2879 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const unsigned short * __b)2880 vec_lvsr(int __a, const unsigned short *__b) {
2881 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2882 }
2883 #endif
2884
2885 #ifdef __LITTLE_ENDIAN__
2886 static __inline__ vector unsigned char __ATTRS_o_ai
2887 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const int * __b)2888 loads/stores"))) vec_lvsr(int __a, const int *__b) {
2889 vector unsigned char mask =
2890 (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2891 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2892 7, 6, 5, 4, 3, 2, 1, 0};
2893 return vec_perm(mask, mask, reverse);
2894 }
2895 #else
vec_lvsr(int __a,const int * __b)2896 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2897 const int *__b) {
2898 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2899 }
2900 #endif
2901
2902 #ifdef __LITTLE_ENDIAN__
2903 static __inline__ vector unsigned char __ATTRS_o_ai
2904 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const unsigned int * __b)2905 loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) {
2906 vector unsigned char mask =
2907 (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2908 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2909 7, 6, 5, 4, 3, 2, 1, 0};
2910 return vec_perm(mask, mask, reverse);
2911 }
2912 #else
2913 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const unsigned int * __b)2914 vec_lvsr(int __a, const unsigned int *__b) {
2915 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2916 }
2917 #endif
2918
2919 #ifdef __LITTLE_ENDIAN__
2920 static __inline__ vector unsigned char __ATTRS_o_ai
2921 __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const float * __b)2922 loads/stores"))) vec_lvsr(int __a, const float *__b) {
2923 vector unsigned char mask =
2924 (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2925 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2926 7, 6, 5, 4, 3, 2, 1, 0};
2927 return vec_perm(mask, mask, reverse);
2928 }
2929 #else
vec_lvsr(int __a,const float * __b)2930 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2931 const float *__b) {
2932 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2933 }
2934 #endif
2935
2936 /* vec_madd */
2937 static __inline__ vector signed short __ATTRS_o_ai
2938 vec_mladd(vector signed short, vector signed short, vector signed short);
2939 static __inline__ vector signed short __ATTRS_o_ai
2940 vec_mladd(vector signed short, vector unsigned short, vector unsigned short);
2941 static __inline__ vector signed short __ATTRS_o_ai
2942 vec_mladd(vector unsigned short, vector signed short, vector signed short);
2943 static __inline__ vector unsigned short __ATTRS_o_ai
2944 vec_mladd(vector unsigned short, vector unsigned short, vector unsigned short);
2945
vec_madd(vector signed short __a,vector signed short __b,vector signed short __c)2946 static __inline__ vector signed short __ATTRS_o_ai vec_madd(
2947 vector signed short __a, vector signed short __b, vector signed short __c) {
2948 return vec_mladd(__a, __b, __c);
2949 }
2950
2951 static __inline__ vector signed short __ATTRS_o_ai
vec_madd(vector signed short __a,vector unsigned short __b,vector unsigned short __c)2952 vec_madd(vector signed short __a, vector unsigned short __b,
2953 vector unsigned short __c) {
2954 return vec_mladd(__a, __b, __c);
2955 }
2956
2957 static __inline__ vector signed short __ATTRS_o_ai
vec_madd(vector unsigned short __a,vector signed short __b,vector signed short __c)2958 vec_madd(vector unsigned short __a, vector signed short __b,
2959 vector signed short __c) {
2960 return vec_mladd(__a, __b, __c);
2961 }
2962
2963 static __inline__ vector unsigned short __ATTRS_o_ai
vec_madd(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)2964 vec_madd(vector unsigned short __a, vector unsigned short __b,
2965 vector unsigned short __c) {
2966 return vec_mladd(__a, __b, __c);
2967 }
2968
vec_madd(vector float __a,vector float __b,vector float __c)2969 static __inline__ vector float __ATTRS_o_ai vec_madd(vector float __a,
2970 vector float __b,
2971 vector float __c) {
2972 #ifdef __VSX__
2973 return __builtin_vsx_xvmaddasp(__a, __b, __c);
2974 #else
2975 return __builtin_altivec_vmaddfp(__a, __b, __c);
2976 #endif
2977 }
2978
2979 #ifdef __VSX__
vec_madd(vector double __a,vector double __b,vector double __c)2980 static __inline__ vector double __ATTRS_o_ai vec_madd(vector double __a,
2981 vector double __b,
2982 vector double __c) {
2983 return __builtin_vsx_xvmaddadp(__a, __b, __c);
2984 }
2985 #endif
2986
2987 /* vec_vmaddfp */
2988
2989 static __inline__ vector float __attribute__((__always_inline__))
vec_vmaddfp(vector float __a,vector float __b,vector float __c)2990 vec_vmaddfp(vector float __a, vector float __b, vector float __c) {
2991 return __builtin_altivec_vmaddfp(__a, __b, __c);
2992 }
2993
2994 /* vec_madds */
2995
2996 static __inline__ vector signed short __attribute__((__always_inline__))
vec_madds(vector signed short __a,vector signed short __b,vector signed short __c)2997 vec_madds(vector signed short __a, vector signed short __b,
2998 vector signed short __c) {
2999 return __builtin_altivec_vmhaddshs(__a, __b, __c);
3000 }
3001
3002 /* vec_vmhaddshs */
3003 static __inline__ vector signed short __attribute__((__always_inline__))
vec_vmhaddshs(vector signed short __a,vector signed short __b,vector signed short __c)3004 vec_vmhaddshs(vector signed short __a, vector signed short __b,
3005 vector signed short __c) {
3006 return __builtin_altivec_vmhaddshs(__a, __b, __c);
3007 }
3008
3009 /* vec_msub */
3010
3011 #ifdef __VSX__
vec_msub(vector float __a,vector float __b,vector float __c)3012 static __inline__ vector float __ATTRS_o_ai vec_msub(vector float __a,
3013 vector float __b,
3014 vector float __c) {
3015 return __builtin_vsx_xvmsubasp(__a, __b, __c);
3016 }
3017
vec_msub(vector double __a,vector double __b,vector double __c)3018 static __inline__ vector double __ATTRS_o_ai vec_msub(vector double __a,
3019 vector double __b,
3020 vector double __c) {
3021 return __builtin_vsx_xvmsubadp(__a, __b, __c);
3022 }
3023 #endif
3024
3025 /* vec_max */
3026
3027 static __inline__ vector signed char __ATTRS_o_ai
vec_max(vector signed char __a,vector signed char __b)3028 vec_max(vector signed char __a, vector signed char __b) {
3029 return __builtin_altivec_vmaxsb(__a, __b);
3030 }
3031
3032 static __inline__ vector signed char __ATTRS_o_ai
vec_max(vector bool char __a,vector signed char __b)3033 vec_max(vector bool char __a, vector signed char __b) {
3034 return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
3035 }
3036
3037 static __inline__ vector signed char __ATTRS_o_ai
vec_max(vector signed char __a,vector bool char __b)3038 vec_max(vector signed char __a, vector bool char __b) {
3039 return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
3040 }
3041
3042 static __inline__ vector unsigned char __ATTRS_o_ai
vec_max(vector unsigned char __a,vector unsigned char __b)3043 vec_max(vector unsigned char __a, vector unsigned char __b) {
3044 return __builtin_altivec_vmaxub(__a, __b);
3045 }
3046
3047 static __inline__ vector unsigned char __ATTRS_o_ai
vec_max(vector bool char __a,vector unsigned char __b)3048 vec_max(vector bool char __a, vector unsigned char __b) {
3049 return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
3050 }
3051
3052 static __inline__ vector unsigned char __ATTRS_o_ai
vec_max(vector unsigned char __a,vector bool char __b)3053 vec_max(vector unsigned char __a, vector bool char __b) {
3054 return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
3055 }
3056
vec_max(vector short __a,vector short __b)3057 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
3058 vector short __b) {
3059 return __builtin_altivec_vmaxsh(__a, __b);
3060 }
3061
vec_max(vector bool short __a,vector short __b)3062 static __inline__ vector short __ATTRS_o_ai vec_max(vector bool short __a,
3063 vector short __b) {
3064 return __builtin_altivec_vmaxsh((vector short)__a, __b);
3065 }
3066
vec_max(vector short __a,vector bool short __b)3067 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
3068 vector bool short __b) {
3069 return __builtin_altivec_vmaxsh(__a, (vector short)__b);
3070 }
3071
3072 static __inline__ vector unsigned short __ATTRS_o_ai
vec_max(vector unsigned short __a,vector unsigned short __b)3073 vec_max(vector unsigned short __a, vector unsigned short __b) {
3074 return __builtin_altivec_vmaxuh(__a, __b);
3075 }
3076
3077 static __inline__ vector unsigned short __ATTRS_o_ai
vec_max(vector bool short __a,vector unsigned short __b)3078 vec_max(vector bool short __a, vector unsigned short __b) {
3079 return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
3080 }
3081
3082 static __inline__ vector unsigned short __ATTRS_o_ai
vec_max(vector unsigned short __a,vector bool short __b)3083 vec_max(vector unsigned short __a, vector bool short __b) {
3084 return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
3085 }
3086
vec_max(vector int __a,vector int __b)3087 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
3088 vector int __b) {
3089 return __builtin_altivec_vmaxsw(__a, __b);
3090 }
3091
vec_max(vector bool int __a,vector int __b)3092 static __inline__ vector int __ATTRS_o_ai vec_max(vector bool int __a,
3093 vector int __b) {
3094 return __builtin_altivec_vmaxsw((vector int)__a, __b);
3095 }
3096
vec_max(vector int __a,vector bool int __b)3097 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
3098 vector bool int __b) {
3099 return __builtin_altivec_vmaxsw(__a, (vector int)__b);
3100 }
3101
3102 static __inline__ vector unsigned int __ATTRS_o_ai
vec_max(vector unsigned int __a,vector unsigned int __b)3103 vec_max(vector unsigned int __a, vector unsigned int __b) {
3104 return __builtin_altivec_vmaxuw(__a, __b);
3105 }
3106
3107 static __inline__ vector unsigned int __ATTRS_o_ai
vec_max(vector bool int __a,vector unsigned int __b)3108 vec_max(vector bool int __a, vector unsigned int __b) {
3109 return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
3110 }
3111
3112 static __inline__ vector unsigned int __ATTRS_o_ai
vec_max(vector unsigned int __a,vector bool int __b)3113 vec_max(vector unsigned int __a, vector bool int __b) {
3114 return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
3115 }
3116
3117 #ifdef __POWER8_VECTOR__
3118 static __inline__ vector signed long long __ATTRS_o_ai
vec_max(vector signed long long __a,vector signed long long __b)3119 vec_max(vector signed long long __a, vector signed long long __b) {
3120 return __builtin_altivec_vmaxsd(__a, __b);
3121 }
3122
3123 static __inline__ vector signed long long __ATTRS_o_ai
vec_max(vector bool long long __a,vector signed long long __b)3124 vec_max(vector bool long long __a, vector signed long long __b) {
3125 return __builtin_altivec_vmaxsd((vector signed long long)__a, __b);
3126 }
3127
3128 static __inline__ vector signed long long __ATTRS_o_ai
vec_max(vector signed long long __a,vector bool long long __b)3129 vec_max(vector signed long long __a, vector bool long long __b) {
3130 return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b);
3131 }
3132
3133 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_max(vector unsigned long long __a,vector unsigned long long __b)3134 vec_max(vector unsigned long long __a, vector unsigned long long __b) {
3135 return __builtin_altivec_vmaxud(__a, __b);
3136 }
3137
3138 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_max(vector bool long long __a,vector unsigned long long __b)3139 vec_max(vector bool long long __a, vector unsigned long long __b) {
3140 return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b);
3141 }
3142
3143 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_max(vector unsigned long long __a,vector bool long long __b)3144 vec_max(vector unsigned long long __a, vector bool long long __b) {
3145 return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b);
3146 }
3147 #endif
3148
vec_max(vector float __a,vector float __b)3149 static __inline__ vector float __ATTRS_o_ai vec_max(vector float __a,
3150 vector float __b) {
3151 #ifdef __VSX__
3152 return __builtin_vsx_xvmaxsp(__a, __b);
3153 #else
3154 return __builtin_altivec_vmaxfp(__a, __b);
3155 #endif
3156 }
3157
3158 #ifdef __VSX__
vec_max(vector double __a,vector double __b)3159 static __inline__ vector double __ATTRS_o_ai vec_max(vector double __a,
3160 vector double __b) {
3161 return __builtin_vsx_xvmaxdp(__a, __b);
3162 }
3163 #endif
3164
3165 /* vec_vmaxsb */
3166
3167 static __inline__ vector signed char __ATTRS_o_ai
vec_vmaxsb(vector signed char __a,vector signed char __b)3168 vec_vmaxsb(vector signed char __a, vector signed char __b) {
3169 return __builtin_altivec_vmaxsb(__a, __b);
3170 }
3171
3172 static __inline__ vector signed char __ATTRS_o_ai
vec_vmaxsb(vector bool char __a,vector signed char __b)3173 vec_vmaxsb(vector bool char __a, vector signed char __b) {
3174 return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
3175 }
3176
3177 static __inline__ vector signed char __ATTRS_o_ai
vec_vmaxsb(vector signed char __a,vector bool char __b)3178 vec_vmaxsb(vector signed char __a, vector bool char __b) {
3179 return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
3180 }
3181
3182 /* vec_vmaxub */
3183
3184 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmaxub(vector unsigned char __a,vector unsigned char __b)3185 vec_vmaxub(vector unsigned char __a, vector unsigned char __b) {
3186 return __builtin_altivec_vmaxub(__a, __b);
3187 }
3188
3189 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmaxub(vector bool char __a,vector unsigned char __b)3190 vec_vmaxub(vector bool char __a, vector unsigned char __b) {
3191 return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
3192 }
3193
3194 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmaxub(vector unsigned char __a,vector bool char __b)3195 vec_vmaxub(vector unsigned char __a, vector bool char __b) {
3196 return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
3197 }
3198
3199 /* vec_vmaxsh */
3200
vec_vmaxsh(vector short __a,vector short __b)3201 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
3202 vector short __b) {
3203 return __builtin_altivec_vmaxsh(__a, __b);
3204 }
3205
vec_vmaxsh(vector bool short __a,vector short __b)3206 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a,
3207 vector short __b) {
3208 return __builtin_altivec_vmaxsh((vector short)__a, __b);
3209 }
3210
vec_vmaxsh(vector short __a,vector bool short __b)3211 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
3212 vector bool short __b) {
3213 return __builtin_altivec_vmaxsh(__a, (vector short)__b);
3214 }
3215
3216 /* vec_vmaxuh */
3217
3218 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmaxuh(vector unsigned short __a,vector unsigned short __b)3219 vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) {
3220 return __builtin_altivec_vmaxuh(__a, __b);
3221 }
3222
3223 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmaxuh(vector bool short __a,vector unsigned short __b)3224 vec_vmaxuh(vector bool short __a, vector unsigned short __b) {
3225 return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
3226 }
3227
3228 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmaxuh(vector unsigned short __a,vector bool short __b)3229 vec_vmaxuh(vector unsigned short __a, vector bool short __b) {
3230 return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
3231 }
3232
3233 /* vec_vmaxsw */
3234
vec_vmaxsw(vector int __a,vector int __b)3235 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
3236 vector int __b) {
3237 return __builtin_altivec_vmaxsw(__a, __b);
3238 }
3239
vec_vmaxsw(vector bool int __a,vector int __b)3240 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a,
3241 vector int __b) {
3242 return __builtin_altivec_vmaxsw((vector int)__a, __b);
3243 }
3244
vec_vmaxsw(vector int __a,vector bool int __b)3245 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
3246 vector bool int __b) {
3247 return __builtin_altivec_vmaxsw(__a, (vector int)__b);
3248 }
3249
3250 /* vec_vmaxuw */
3251
3252 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmaxuw(vector unsigned int __a,vector unsigned int __b)3253 vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) {
3254 return __builtin_altivec_vmaxuw(__a, __b);
3255 }
3256
3257 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmaxuw(vector bool int __a,vector unsigned int __b)3258 vec_vmaxuw(vector bool int __a, vector unsigned int __b) {
3259 return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
3260 }
3261
3262 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmaxuw(vector unsigned int __a,vector bool int __b)3263 vec_vmaxuw(vector unsigned int __a, vector bool int __b) {
3264 return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
3265 }
3266
3267 /* vec_vmaxfp */
3268
3269 static __inline__ vector float __attribute__((__always_inline__))
vec_vmaxfp(vector float __a,vector float __b)3270 vec_vmaxfp(vector float __a, vector float __b) {
3271 #ifdef __VSX__
3272 return __builtin_vsx_xvmaxsp(__a, __b);
3273 #else
3274 return __builtin_altivec_vmaxfp(__a, __b);
3275 #endif
3276 }
3277
3278 /* vec_mergeh */
3279
3280 static __inline__ vector signed char __ATTRS_o_ai
vec_mergeh(vector signed char __a,vector signed char __b)3281 vec_mergeh(vector signed char __a, vector signed char __b) {
3282 return vec_perm(__a, __b,
3283 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3284 0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3285 0x06, 0x16, 0x07, 0x17));
3286 }
3287
3288 static __inline__ vector unsigned char __ATTRS_o_ai
vec_mergeh(vector unsigned char __a,vector unsigned char __b)3289 vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
3290 return vec_perm(__a, __b,
3291 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3292 0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3293 0x06, 0x16, 0x07, 0x17));
3294 }
3295
3296 static __inline__ vector bool char __ATTRS_o_ai
vec_mergeh(vector bool char __a,vector bool char __b)3297 vec_mergeh(vector bool char __a, vector bool char __b) {
3298 return vec_perm(__a, __b,
3299 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3300 0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3301 0x06, 0x16, 0x07, 0x17));
3302 }
3303
vec_mergeh(vector short __a,vector short __b)3304 static __inline__ vector short __ATTRS_o_ai vec_mergeh(vector short __a,
3305 vector short __b) {
3306 return vec_perm(__a, __b,
3307 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3308 0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3309 0x06, 0x07, 0x16, 0x17));
3310 }
3311
3312 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mergeh(vector unsigned short __a,vector unsigned short __b)3313 vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
3314 return vec_perm(__a, __b,
3315 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3316 0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3317 0x06, 0x07, 0x16, 0x17));
3318 }
3319
3320 static __inline__ vector bool short __ATTRS_o_ai
vec_mergeh(vector bool short __a,vector bool short __b)3321 vec_mergeh(vector bool short __a, vector bool short __b) {
3322 return vec_perm(__a, __b,
3323 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3324 0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3325 0x06, 0x07, 0x16, 0x17));
3326 }
3327
vec_mergeh(vector pixel __a,vector pixel __b)3328 static __inline__ vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a,
3329 vector pixel __b) {
3330 return vec_perm(__a, __b,
3331 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3332 0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3333 0x06, 0x07, 0x16, 0x17));
3334 }
3335
vec_mergeh(vector int __a,vector int __b)3336 static __inline__ vector int __ATTRS_o_ai vec_mergeh(vector int __a,
3337 vector int __b) {
3338 return vec_perm(__a, __b,
3339 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3340 0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3341 0x14, 0x15, 0x16, 0x17));
3342 }
3343
3344 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergeh(vector unsigned int __a,vector unsigned int __b)3345 vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
3346 return vec_perm(__a, __b,
3347 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3348 0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3349 0x14, 0x15, 0x16, 0x17));
3350 }
3351
vec_mergeh(vector bool int __a,vector bool int __b)3352 static __inline__ vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a,
3353 vector bool int __b) {
3354 return vec_perm(__a, __b,
3355 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3356 0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3357 0x14, 0x15, 0x16, 0x17));
3358 }
3359
vec_mergeh(vector float __a,vector float __b)3360 static __inline__ vector float __ATTRS_o_ai vec_mergeh(vector float __a,
3361 vector float __b) {
3362 return vec_perm(__a, __b,
3363 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3364 0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3365 0x14, 0x15, 0x16, 0x17));
3366 }
3367
3368 #ifdef __VSX__
3369 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeh(vector signed long long __a,vector signed long long __b)3370 vec_mergeh(vector signed long long __a, vector signed long long __b) {
3371 return vec_perm(__a, __b,
3372 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3373 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3374 0x14, 0x15, 0x16, 0x17));
3375 }
3376
3377 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeh(vector signed long long __a,vector bool long long __b)3378 vec_mergeh(vector signed long long __a, vector bool long long __b) {
3379 return vec_perm(__a, (vector signed long long)__b,
3380 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3381 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3382 0x14, 0x15, 0x16, 0x17));
3383 }
3384
3385 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector signed long long __b)3386 vec_mergeh(vector bool long long __a, vector signed long long __b) {
3387 return vec_perm((vector signed long long)__a, __b,
3388 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3389 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3390 0x14, 0x15, 0x16, 0x17));
3391 }
3392
3393 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeh(vector unsigned long long __a,vector unsigned long long __b)3394 vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
3395 return vec_perm(__a, __b,
3396 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3397 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3398 0x14, 0x15, 0x16, 0x17));
3399 }
3400
3401 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeh(vector unsigned long long __a,vector bool long long __b)3402 vec_mergeh(vector unsigned long long __a, vector bool long long __b) {
3403 return vec_perm(__a, (vector unsigned long long)__b,
3404 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3405 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3406 0x14, 0x15, 0x16, 0x17));
3407 }
3408
3409 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector unsigned long long __b)3410 vec_mergeh(vector bool long long __a, vector unsigned long long __b) {
3411 return vec_perm((vector unsigned long long)__a, __b,
3412 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3413 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3414 0x14, 0x15, 0x16, 0x17));
3415 }
3416
3417 static __inline__ vector bool long long __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector bool long long __b)3418 vec_mergeh(vector bool long long __a, vector bool long long __b) {
3419 return vec_perm(__a, __b,
3420 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3421 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3422 0x14, 0x15, 0x16, 0x17));
3423 }
3424
vec_mergeh(vector double __a,vector double __b)3425 static __inline__ vector double __ATTRS_o_ai vec_mergeh(vector double __a,
3426 vector double __b) {
3427 return vec_perm(__a, __b,
3428 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3429 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3430 0x14, 0x15, 0x16, 0x17));
3431 }
3432 static __inline__ vector double __ATTRS_o_ai
vec_mergeh(vector double __a,vector bool long long __b)3433 vec_mergeh(vector double __a, vector bool long long __b) {
3434 return vec_perm(__a, (vector double)__b,
3435 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3436 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3437 0x14, 0x15, 0x16, 0x17));
3438 }
3439 static __inline__ vector double __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector double __b)3440 vec_mergeh(vector bool long long __a, vector double __b) {
3441 return vec_perm((vector double)__a, __b,
3442 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3443 0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3444 0x14, 0x15, 0x16, 0x17));
3445 }
3446 #endif
3447
3448 /* vec_vmrghb */
3449
3450 #define __builtin_altivec_vmrghb vec_vmrghb
3451
3452 static __inline__ vector signed char __ATTRS_o_ai
vec_vmrghb(vector signed char __a,vector signed char __b)3453 vec_vmrghb(vector signed char __a, vector signed char __b) {
3454 return vec_perm(__a, __b,
3455 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3456 0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3457 0x06, 0x16, 0x07, 0x17));
3458 }
3459
3460 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmrghb(vector unsigned char __a,vector unsigned char __b)3461 vec_vmrghb(vector unsigned char __a, vector unsigned char __b) {
3462 return vec_perm(__a, __b,
3463 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3464 0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3465 0x06, 0x16, 0x07, 0x17));
3466 }
3467
3468 static __inline__ vector bool char __ATTRS_o_ai
vec_vmrghb(vector bool char __a,vector bool char __b)3469 vec_vmrghb(vector bool char __a, vector bool char __b) {
3470 return vec_perm(__a, __b,
3471 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3472 0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3473 0x06, 0x16, 0x07, 0x17));
3474 }
3475
3476 /* vec_vmrghh */
3477
3478 #define __builtin_altivec_vmrghh vec_vmrghh
3479
vec_vmrghh(vector short __a,vector short __b)3480 static __inline__ vector short __ATTRS_o_ai vec_vmrghh(vector short __a,
3481 vector short __b) {
3482 return vec_perm(__a, __b,
3483 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3484 0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3485 0x06, 0x07, 0x16, 0x17));
3486 }
3487
3488 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmrghh(vector unsigned short __a,vector unsigned short __b)3489 vec_vmrghh(vector unsigned short __a, vector unsigned short __b) {
3490 return vec_perm(__a, __b,
3491 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3492 0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3493 0x06, 0x07, 0x16, 0x17));
3494 }
3495
3496 static __inline__ vector bool short __ATTRS_o_ai
vec_vmrghh(vector bool short __a,vector bool short __b)3497 vec_vmrghh(vector bool short __a, vector bool short __b) {
3498 return vec_perm(__a, __b,
3499 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3500 0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3501 0x06, 0x07, 0x16, 0x17));
3502 }
3503
vec_vmrghh(vector pixel __a,vector pixel __b)3504 static __inline__ vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a,
3505 vector pixel __b) {
3506 return vec_perm(__a, __b,
3507 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3508 0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3509 0x06, 0x07, 0x16, 0x17));
3510 }
3511
3512 /* vec_vmrghw */
3513
3514 #define __builtin_altivec_vmrghw vec_vmrghw
3515
vec_vmrghw(vector int __a,vector int __b)3516 static __inline__ vector int __ATTRS_o_ai vec_vmrghw(vector int __a,
3517 vector int __b) {
3518 return vec_perm(__a, __b,
3519 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3520 0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3521 0x14, 0x15, 0x16, 0x17));
3522 }
3523
3524 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmrghw(vector unsigned int __a,vector unsigned int __b)3525 vec_vmrghw(vector unsigned int __a, vector unsigned int __b) {
3526 return vec_perm(__a, __b,
3527 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3528 0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3529 0x14, 0x15, 0x16, 0x17));
3530 }
3531
vec_vmrghw(vector bool int __a,vector bool int __b)3532 static __inline__ vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a,
3533 vector bool int __b) {
3534 return vec_perm(__a, __b,
3535 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3536 0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3537 0x14, 0x15, 0x16, 0x17));
3538 }
3539
vec_vmrghw(vector float __a,vector float __b)3540 static __inline__ vector float __ATTRS_o_ai vec_vmrghw(vector float __a,
3541 vector float __b) {
3542 return vec_perm(__a, __b,
3543 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3544 0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3545 0x14, 0x15, 0x16, 0x17));
3546 }
3547
3548 /* vec_mergel */
3549
3550 static __inline__ vector signed char __ATTRS_o_ai
vec_mergel(vector signed char __a,vector signed char __b)3551 vec_mergel(vector signed char __a, vector signed char __b) {
3552 return vec_perm(__a, __b,
3553 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3554 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3555 0x0E, 0x1E, 0x0F, 0x1F));
3556 }
3557
3558 static __inline__ vector unsigned char __ATTRS_o_ai
vec_mergel(vector unsigned char __a,vector unsigned char __b)3559 vec_mergel(vector unsigned char __a, vector unsigned char __b) {
3560 return vec_perm(__a, __b,
3561 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3562 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3563 0x0E, 0x1E, 0x0F, 0x1F));
3564 }
3565
3566 static __inline__ vector bool char __ATTRS_o_ai
vec_mergel(vector bool char __a,vector bool char __b)3567 vec_mergel(vector bool char __a, vector bool char __b) {
3568 return vec_perm(__a, __b,
3569 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3570 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3571 0x0E, 0x1E, 0x0F, 0x1F));
3572 }
3573
vec_mergel(vector short __a,vector short __b)3574 static __inline__ vector short __ATTRS_o_ai vec_mergel(vector short __a,
3575 vector short __b) {
3576 return vec_perm(__a, __b,
3577 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3578 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3579 0x0E, 0x0F, 0x1E, 0x1F));
3580 }
3581
3582 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mergel(vector unsigned short __a,vector unsigned short __b)3583 vec_mergel(vector unsigned short __a, vector unsigned short __b) {
3584 return vec_perm(__a, __b,
3585 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3586 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3587 0x0E, 0x0F, 0x1E, 0x1F));
3588 }
3589
3590 static __inline__ vector bool short __ATTRS_o_ai
vec_mergel(vector bool short __a,vector bool short __b)3591 vec_mergel(vector bool short __a, vector bool short __b) {
3592 return vec_perm(__a, __b,
3593 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3594 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3595 0x0E, 0x0F, 0x1E, 0x1F));
3596 }
3597
vec_mergel(vector pixel __a,vector pixel __b)3598 static __inline__ vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a,
3599 vector pixel __b) {
3600 return vec_perm(__a, __b,
3601 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3602 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3603 0x0E, 0x0F, 0x1E, 0x1F));
3604 }
3605
vec_mergel(vector int __a,vector int __b)3606 static __inline__ vector int __ATTRS_o_ai vec_mergel(vector int __a,
3607 vector int __b) {
3608 return vec_perm(__a, __b,
3609 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3610 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3611 0x1C, 0x1D, 0x1E, 0x1F));
3612 }
3613
3614 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergel(vector unsigned int __a,vector unsigned int __b)3615 vec_mergel(vector unsigned int __a, vector unsigned int __b) {
3616 return vec_perm(__a, __b,
3617 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3618 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3619 0x1C, 0x1D, 0x1E, 0x1F));
3620 }
3621
vec_mergel(vector bool int __a,vector bool int __b)3622 static __inline__ vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a,
3623 vector bool int __b) {
3624 return vec_perm(__a, __b,
3625 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3626 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3627 0x1C, 0x1D, 0x1E, 0x1F));
3628 }
3629
vec_mergel(vector float __a,vector float __b)3630 static __inline__ vector float __ATTRS_o_ai vec_mergel(vector float __a,
3631 vector float __b) {
3632 return vec_perm(__a, __b,
3633 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3634 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3635 0x1C, 0x1D, 0x1E, 0x1F));
3636 }
3637
3638 #ifdef __VSX__
3639 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergel(vector signed long long __a,vector signed long long __b)3640 vec_mergel(vector signed long long __a, vector signed long long __b) {
3641 return vec_perm(__a, __b,
3642 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3643 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3644 0x1C, 0x1D, 0x1E, 0x1F));
3645 }
3646 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergel(vector signed long long __a,vector bool long long __b)3647 vec_mergel(vector signed long long __a, vector bool long long __b) {
3648 return vec_perm(__a, (vector signed long long)__b,
3649 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3650 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3651 0x1C, 0x1D, 0x1E, 0x1F));
3652 }
3653 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector signed long long __b)3654 vec_mergel(vector bool long long __a, vector signed long long __b) {
3655 return vec_perm((vector signed long long)__a, __b,
3656 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3657 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3658 0x1C, 0x1D, 0x1E, 0x1F));
3659 }
3660 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergel(vector unsigned long long __a,vector unsigned long long __b)3661 vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
3662 return vec_perm(__a, __b,
3663 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3664 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3665 0x1C, 0x1D, 0x1E, 0x1F));
3666 }
3667 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergel(vector unsigned long long __a,vector bool long long __b)3668 vec_mergel(vector unsigned long long __a, vector bool long long __b) {
3669 return vec_perm(__a, (vector unsigned long long)__b,
3670 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3671 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3672 0x1C, 0x1D, 0x1E, 0x1F));
3673 }
3674 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector unsigned long long __b)3675 vec_mergel(vector bool long long __a, vector unsigned long long __b) {
3676 return vec_perm((vector unsigned long long)__a, __b,
3677 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3678 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3679 0x1C, 0x1D, 0x1E, 0x1F));
3680 }
3681 static __inline__ vector bool long long __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector bool long long __b)3682 vec_mergel(vector bool long long __a, vector bool long long __b) {
3683 return vec_perm(__a, __b,
3684 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3685 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3686 0x1C, 0x1D, 0x1E, 0x1F));
3687 }
vec_mergel(vector double __a,vector double __b)3688 static __inline__ vector double __ATTRS_o_ai vec_mergel(vector double __a,
3689 vector double __b) {
3690 return vec_perm(__a, __b,
3691 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3692 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3693 0x1C, 0x1D, 0x1E, 0x1F));
3694 }
3695 static __inline__ vector double __ATTRS_o_ai
vec_mergel(vector double __a,vector bool long long __b)3696 vec_mergel(vector double __a, vector bool long long __b) {
3697 return vec_perm(__a, (vector double)__b,
3698 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3699 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3700 0x1C, 0x1D, 0x1E, 0x1F));
3701 }
3702 static __inline__ vector double __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector double __b)3703 vec_mergel(vector bool long long __a, vector double __b) {
3704 return vec_perm((vector double)__a, __b,
3705 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3706 0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3707 0x1C, 0x1D, 0x1E, 0x1F));
3708 }
3709 #endif
3710
3711 /* vec_vmrglb */
3712
3713 #define __builtin_altivec_vmrglb vec_vmrglb
3714
3715 static __inline__ vector signed char __ATTRS_o_ai
vec_vmrglb(vector signed char __a,vector signed char __b)3716 vec_vmrglb(vector signed char __a, vector signed char __b) {
3717 return vec_perm(__a, __b,
3718 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3719 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3720 0x0E, 0x1E, 0x0F, 0x1F));
3721 }
3722
3723 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmrglb(vector unsigned char __a,vector unsigned char __b)3724 vec_vmrglb(vector unsigned char __a, vector unsigned char __b) {
3725 return vec_perm(__a, __b,
3726 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3727 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3728 0x0E, 0x1E, 0x0F, 0x1F));
3729 }
3730
3731 static __inline__ vector bool char __ATTRS_o_ai
vec_vmrglb(vector bool char __a,vector bool char __b)3732 vec_vmrglb(vector bool char __a, vector bool char __b) {
3733 return vec_perm(__a, __b,
3734 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3735 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3736 0x0E, 0x1E, 0x0F, 0x1F));
3737 }
3738
3739 /* vec_vmrglh */
3740
3741 #define __builtin_altivec_vmrglh vec_vmrglh
3742
vec_vmrglh(vector short __a,vector short __b)3743 static __inline__ vector short __ATTRS_o_ai vec_vmrglh(vector short __a,
3744 vector short __b) {
3745 return vec_perm(__a, __b,
3746 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3747 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3748 0x0E, 0x0F, 0x1E, 0x1F));
3749 }
3750
3751 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmrglh(vector unsigned short __a,vector unsigned short __b)3752 vec_vmrglh(vector unsigned short __a, vector unsigned short __b) {
3753 return vec_perm(__a, __b,
3754 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3755 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3756 0x0E, 0x0F, 0x1E, 0x1F));
3757 }
3758
3759 static __inline__ vector bool short __ATTRS_o_ai
vec_vmrglh(vector bool short __a,vector bool short __b)3760 vec_vmrglh(vector bool short __a, vector bool short __b) {
3761 return vec_perm(__a, __b,
3762 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3763 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3764 0x0E, 0x0F, 0x1E, 0x1F));
3765 }
3766
vec_vmrglh(vector pixel __a,vector pixel __b)3767 static __inline__ vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a,
3768 vector pixel __b) {
3769 return vec_perm(__a, __b,
3770 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3771 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3772 0x0E, 0x0F, 0x1E, 0x1F));
3773 }
3774
3775 /* vec_vmrglw */
3776
3777 #define __builtin_altivec_vmrglw vec_vmrglw
3778
vec_vmrglw(vector int __a,vector int __b)3779 static __inline__ vector int __ATTRS_o_ai vec_vmrglw(vector int __a,
3780 vector int __b) {
3781 return vec_perm(__a, __b,
3782 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3783 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3784 0x1C, 0x1D, 0x1E, 0x1F));
3785 }
3786
3787 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmrglw(vector unsigned int __a,vector unsigned int __b)3788 vec_vmrglw(vector unsigned int __a, vector unsigned int __b) {
3789 return vec_perm(__a, __b,
3790 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3791 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3792 0x1C, 0x1D, 0x1E, 0x1F));
3793 }
3794
vec_vmrglw(vector bool int __a,vector bool int __b)3795 static __inline__ vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a,
3796 vector bool int __b) {
3797 return vec_perm(__a, __b,
3798 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3799 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3800 0x1C, 0x1D, 0x1E, 0x1F));
3801 }
3802
vec_vmrglw(vector float __a,vector float __b)3803 static __inline__ vector float __ATTRS_o_ai vec_vmrglw(vector float __a,
3804 vector float __b) {
3805 return vec_perm(__a, __b,
3806 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3807 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3808 0x1C, 0x1D, 0x1E, 0x1F));
3809 }
3810
3811 #ifdef __POWER8_VECTOR__
3812 /* vec_mergee */
3813
vec_mergee(vector bool int __a,vector bool int __b)3814 static __inline__ vector bool int __ATTRS_o_ai vec_mergee(vector bool int __a,
3815 vector bool int __b) {
3816 return vec_perm(__a, __b,
3817 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3818 0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
3819 0x18, 0x19, 0x1A, 0x1B));
3820 }
3821
3822 static __inline__ vector signed int __ATTRS_o_ai
vec_mergee(vector signed int __a,vector signed int __b)3823 vec_mergee(vector signed int __a, vector signed int __b) {
3824 return vec_perm(__a, __b,
3825 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3826 0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
3827 0x18, 0x19, 0x1A, 0x1B));
3828 }
3829
3830 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergee(vector unsigned int __a,vector unsigned int __b)3831 vec_mergee(vector unsigned int __a, vector unsigned int __b) {
3832 return vec_perm(__a, __b,
3833 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3834 0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
3835 0x18, 0x19, 0x1A, 0x1B));
3836 }
3837
3838 /* vec_mergeo */
3839
vec_mergeo(vector bool int __a,vector bool int __b)3840 static __inline__ vector bool int __ATTRS_o_ai vec_mergeo(vector bool int __a,
3841 vector bool int __b) {
3842 return vec_perm(__a, __b,
3843 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
3844 0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
3845 0x1C, 0x1D, 0x1E, 0x1F));
3846 }
3847
3848 static __inline__ vector signed int __ATTRS_o_ai
vec_mergeo(vector signed int __a,vector signed int __b)3849 vec_mergeo(vector signed int __a, vector signed int __b) {
3850 return vec_perm(__a, __b,
3851 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
3852 0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
3853 0x1C, 0x1D, 0x1E, 0x1F));
3854 }
3855
3856 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergeo(vector unsigned int __a,vector unsigned int __b)3857 vec_mergeo(vector unsigned int __a, vector unsigned int __b) {
3858 return vec_perm(__a, __b,
3859 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
3860 0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
3861 0x1C, 0x1D, 0x1E, 0x1F));
3862 }
3863
3864 #endif
3865
3866 /* vec_mfvscr */
3867
3868 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_mfvscr(void)3869 vec_mfvscr(void) {
3870 return __builtin_altivec_mfvscr();
3871 }
3872
3873 /* vec_min */
3874
3875 static __inline__ vector signed char __ATTRS_o_ai
vec_min(vector signed char __a,vector signed char __b)3876 vec_min(vector signed char __a, vector signed char __b) {
3877 return __builtin_altivec_vminsb(__a, __b);
3878 }
3879
3880 static __inline__ vector signed char __ATTRS_o_ai
vec_min(vector bool char __a,vector signed char __b)3881 vec_min(vector bool char __a, vector signed char __b) {
3882 return __builtin_altivec_vminsb((vector signed char)__a, __b);
3883 }
3884
3885 static __inline__ vector signed char __ATTRS_o_ai
vec_min(vector signed char __a,vector bool char __b)3886 vec_min(vector signed char __a, vector bool char __b) {
3887 return __builtin_altivec_vminsb(__a, (vector signed char)__b);
3888 }
3889
3890 static __inline__ vector unsigned char __ATTRS_o_ai
vec_min(vector unsigned char __a,vector unsigned char __b)3891 vec_min(vector unsigned char __a, vector unsigned char __b) {
3892 return __builtin_altivec_vminub(__a, __b);
3893 }
3894
3895 static __inline__ vector unsigned char __ATTRS_o_ai
vec_min(vector bool char __a,vector unsigned char __b)3896 vec_min(vector bool char __a, vector unsigned char __b) {
3897 return __builtin_altivec_vminub((vector unsigned char)__a, __b);
3898 }
3899
3900 static __inline__ vector unsigned char __ATTRS_o_ai
vec_min(vector unsigned char __a,vector bool char __b)3901 vec_min(vector unsigned char __a, vector bool char __b) {
3902 return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
3903 }
3904
vec_min(vector short __a,vector short __b)3905 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
3906 vector short __b) {
3907 return __builtin_altivec_vminsh(__a, __b);
3908 }
3909
vec_min(vector bool short __a,vector short __b)3910 static __inline__ vector short __ATTRS_o_ai vec_min(vector bool short __a,
3911 vector short __b) {
3912 return __builtin_altivec_vminsh((vector short)__a, __b);
3913 }
3914
vec_min(vector short __a,vector bool short __b)3915 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
3916 vector bool short __b) {
3917 return __builtin_altivec_vminsh(__a, (vector short)__b);
3918 }
3919
3920 static __inline__ vector unsigned short __ATTRS_o_ai
vec_min(vector unsigned short __a,vector unsigned short __b)3921 vec_min(vector unsigned short __a, vector unsigned short __b) {
3922 return __builtin_altivec_vminuh(__a, __b);
3923 }
3924
3925 static __inline__ vector unsigned short __ATTRS_o_ai
vec_min(vector bool short __a,vector unsigned short __b)3926 vec_min(vector bool short __a, vector unsigned short __b) {
3927 return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
3928 }
3929
3930 static __inline__ vector unsigned short __ATTRS_o_ai
vec_min(vector unsigned short __a,vector bool short __b)3931 vec_min(vector unsigned short __a, vector bool short __b) {
3932 return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
3933 }
3934
vec_min(vector int __a,vector int __b)3935 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
3936 vector int __b) {
3937 return __builtin_altivec_vminsw(__a, __b);
3938 }
3939
vec_min(vector bool int __a,vector int __b)3940 static __inline__ vector int __ATTRS_o_ai vec_min(vector bool int __a,
3941 vector int __b) {
3942 return __builtin_altivec_vminsw((vector int)__a, __b);
3943 }
3944
vec_min(vector int __a,vector bool int __b)3945 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
3946 vector bool int __b) {
3947 return __builtin_altivec_vminsw(__a, (vector int)__b);
3948 }
3949
3950 static __inline__ vector unsigned int __ATTRS_o_ai
vec_min(vector unsigned int __a,vector unsigned int __b)3951 vec_min(vector unsigned int __a, vector unsigned int __b) {
3952 return __builtin_altivec_vminuw(__a, __b);
3953 }
3954
3955 static __inline__ vector unsigned int __ATTRS_o_ai
vec_min(vector bool int __a,vector unsigned int __b)3956 vec_min(vector bool int __a, vector unsigned int __b) {
3957 return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
3958 }
3959
3960 static __inline__ vector unsigned int __ATTRS_o_ai
vec_min(vector unsigned int __a,vector bool int __b)3961 vec_min(vector unsigned int __a, vector bool int __b) {
3962 return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
3963 }
3964
3965 #ifdef __POWER8_VECTOR__
3966 static __inline__ vector signed long long __ATTRS_o_ai
vec_min(vector signed long long __a,vector signed long long __b)3967 vec_min(vector signed long long __a, vector signed long long __b) {
3968 return __builtin_altivec_vminsd(__a, __b);
3969 }
3970
3971 static __inline__ vector signed long long __ATTRS_o_ai
vec_min(vector bool long long __a,vector signed long long __b)3972 vec_min(vector bool long long __a, vector signed long long __b) {
3973 return __builtin_altivec_vminsd((vector signed long long)__a, __b);
3974 }
3975
3976 static __inline__ vector signed long long __ATTRS_o_ai
vec_min(vector signed long long __a,vector bool long long __b)3977 vec_min(vector signed long long __a, vector bool long long __b) {
3978 return __builtin_altivec_vminsd(__a, (vector signed long long)__b);
3979 }
3980
3981 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_min(vector unsigned long long __a,vector unsigned long long __b)3982 vec_min(vector unsigned long long __a, vector unsigned long long __b) {
3983 return __builtin_altivec_vminud(__a, __b);
3984 }
3985
3986 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_min(vector bool long long __a,vector unsigned long long __b)3987 vec_min(vector bool long long __a, vector unsigned long long __b) {
3988 return __builtin_altivec_vminud((vector unsigned long long)__a, __b);
3989 }
3990
3991 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_min(vector unsigned long long __a,vector bool long long __b)3992 vec_min(vector unsigned long long __a, vector bool long long __b) {
3993 return __builtin_altivec_vminud(__a, (vector unsigned long long)__b);
3994 }
3995 #endif
3996
vec_min(vector float __a,vector float __b)3997 static __inline__ vector float __ATTRS_o_ai vec_min(vector float __a,
3998 vector float __b) {
3999 #ifdef __VSX__
4000 return __builtin_vsx_xvminsp(__a, __b);
4001 #else
4002 return __builtin_altivec_vminfp(__a, __b);
4003 #endif
4004 }
4005
4006 #ifdef __VSX__
vec_min(vector double __a,vector double __b)4007 static __inline__ vector double __ATTRS_o_ai vec_min(vector double __a,
4008 vector double __b) {
4009 return __builtin_vsx_xvmindp(__a, __b);
4010 }
4011 #endif
4012
4013 /* vec_vminsb */
4014
4015 static __inline__ vector signed char __ATTRS_o_ai
vec_vminsb(vector signed char __a,vector signed char __b)4016 vec_vminsb(vector signed char __a, vector signed char __b) {
4017 return __builtin_altivec_vminsb(__a, __b);
4018 }
4019
4020 static __inline__ vector signed char __ATTRS_o_ai
vec_vminsb(vector bool char __a,vector signed char __b)4021 vec_vminsb(vector bool char __a, vector signed char __b) {
4022 return __builtin_altivec_vminsb((vector signed char)__a, __b);
4023 }
4024
4025 static __inline__ vector signed char __ATTRS_o_ai
vec_vminsb(vector signed char __a,vector bool char __b)4026 vec_vminsb(vector signed char __a, vector bool char __b) {
4027 return __builtin_altivec_vminsb(__a, (vector signed char)__b);
4028 }
4029
4030 /* vec_vminub */
4031
4032 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vminub(vector unsigned char __a,vector unsigned char __b)4033 vec_vminub(vector unsigned char __a, vector unsigned char __b) {
4034 return __builtin_altivec_vminub(__a, __b);
4035 }
4036
4037 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vminub(vector bool char __a,vector unsigned char __b)4038 vec_vminub(vector bool char __a, vector unsigned char __b) {
4039 return __builtin_altivec_vminub((vector unsigned char)__a, __b);
4040 }
4041
4042 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vminub(vector unsigned char __a,vector bool char __b)4043 vec_vminub(vector unsigned char __a, vector bool char __b) {
4044 return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
4045 }
4046
4047 /* vec_vminsh */
4048
vec_vminsh(vector short __a,vector short __b)4049 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
4050 vector short __b) {
4051 return __builtin_altivec_vminsh(__a, __b);
4052 }
4053
vec_vminsh(vector bool short __a,vector short __b)4054 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector bool short __a,
4055 vector short __b) {
4056 return __builtin_altivec_vminsh((vector short)__a, __b);
4057 }
4058
vec_vminsh(vector short __a,vector bool short __b)4059 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
4060 vector bool short __b) {
4061 return __builtin_altivec_vminsh(__a, (vector short)__b);
4062 }
4063
4064 /* vec_vminuh */
4065
4066 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vminuh(vector unsigned short __a,vector unsigned short __b)4067 vec_vminuh(vector unsigned short __a, vector unsigned short __b) {
4068 return __builtin_altivec_vminuh(__a, __b);
4069 }
4070
4071 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vminuh(vector bool short __a,vector unsigned short __b)4072 vec_vminuh(vector bool short __a, vector unsigned short __b) {
4073 return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
4074 }
4075
4076 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vminuh(vector unsigned short __a,vector bool short __b)4077 vec_vminuh(vector unsigned short __a, vector bool short __b) {
4078 return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
4079 }
4080
4081 /* vec_vminsw */
4082
vec_vminsw(vector int __a,vector int __b)4083 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
4084 vector int __b) {
4085 return __builtin_altivec_vminsw(__a, __b);
4086 }
4087
vec_vminsw(vector bool int __a,vector int __b)4088 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector bool int __a,
4089 vector int __b) {
4090 return __builtin_altivec_vminsw((vector int)__a, __b);
4091 }
4092
vec_vminsw(vector int __a,vector bool int __b)4093 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
4094 vector bool int __b) {
4095 return __builtin_altivec_vminsw(__a, (vector int)__b);
4096 }
4097
4098 /* vec_vminuw */
4099
4100 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vminuw(vector unsigned int __a,vector unsigned int __b)4101 vec_vminuw(vector unsigned int __a, vector unsigned int __b) {
4102 return __builtin_altivec_vminuw(__a, __b);
4103 }
4104
4105 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vminuw(vector bool int __a,vector unsigned int __b)4106 vec_vminuw(vector bool int __a, vector unsigned int __b) {
4107 return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
4108 }
4109
4110 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vminuw(vector unsigned int __a,vector bool int __b)4111 vec_vminuw(vector unsigned int __a, vector bool int __b) {
4112 return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
4113 }
4114
4115 /* vec_vminfp */
4116
4117 static __inline__ vector float __attribute__((__always_inline__))
vec_vminfp(vector float __a,vector float __b)4118 vec_vminfp(vector float __a, vector float __b) {
4119 #ifdef __VSX__
4120 return __builtin_vsx_xvminsp(__a, __b);
4121 #else
4122 return __builtin_altivec_vminfp(__a, __b);
4123 #endif
4124 }
4125
4126 /* vec_mladd */
4127
4128 #define __builtin_altivec_vmladduhm vec_mladd
4129
vec_mladd(vector short __a,vector short __b,vector short __c)4130 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector short __a,
4131 vector short __b,
4132 vector short __c) {
4133 return __a * __b + __c;
4134 }
4135
vec_mladd(vector short __a,vector unsigned short __b,vector unsigned short __c)4136 static __inline__ vector short __ATTRS_o_ai vec_mladd(
4137 vector short __a, vector unsigned short __b, vector unsigned short __c) {
4138 return __a * (vector short)__b + (vector short)__c;
4139 }
4140
vec_mladd(vector unsigned short __a,vector short __b,vector short __c)4141 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
4142 vector short __b,
4143 vector short __c) {
4144 return (vector short)__a * __b + __c;
4145 }
4146
4147 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mladd(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)4148 vec_mladd(vector unsigned short __a, vector unsigned short __b,
4149 vector unsigned short __c) {
4150 return __a * __b + __c;
4151 }
4152
4153 /* vec_vmladduhm */
4154
vec_vmladduhm(vector short __a,vector short __b,vector short __c)4155 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
4156 vector short __b,
4157 vector short __c) {
4158 return __a * __b + __c;
4159 }
4160
vec_vmladduhm(vector short __a,vector unsigned short __b,vector unsigned short __c)4161 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(
4162 vector short __a, vector unsigned short __b, vector unsigned short __c) {
4163 return __a * (vector short)__b + (vector short)__c;
4164 }
4165
4166 static __inline__ vector short __ATTRS_o_ai
vec_vmladduhm(vector unsigned short __a,vector short __b,vector short __c)4167 vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) {
4168 return (vector short)__a * __b + __c;
4169 }
4170
4171 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmladduhm(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)4172 vec_vmladduhm(vector unsigned short __a, vector unsigned short __b,
4173 vector unsigned short __c) {
4174 return __a * __b + __c;
4175 }
4176
4177 /* vec_mradds */
4178
4179 static __inline__ vector short __attribute__((__always_inline__))
vec_mradds(vector short __a,vector short __b,vector short __c)4180 vec_mradds(vector short __a, vector short __b, vector short __c) {
4181 return __builtin_altivec_vmhraddshs(__a, __b, __c);
4182 }
4183
4184 /* vec_vmhraddshs */
4185
4186 static __inline__ vector short __attribute__((__always_inline__))
vec_vmhraddshs(vector short __a,vector short __b,vector short __c)4187 vec_vmhraddshs(vector short __a, vector short __b, vector short __c) {
4188 return __builtin_altivec_vmhraddshs(__a, __b, __c);
4189 }
4190
4191 /* vec_msum */
4192
vec_msum(vector signed char __a,vector unsigned char __b,vector int __c)4193 static __inline__ vector int __ATTRS_o_ai vec_msum(vector signed char __a,
4194 vector unsigned char __b,
4195 vector int __c) {
4196 return __builtin_altivec_vmsummbm(__a, __b, __c);
4197 }
4198
4199 static __inline__ vector unsigned int __ATTRS_o_ai
vec_msum(vector unsigned char __a,vector unsigned char __b,vector unsigned int __c)4200 vec_msum(vector unsigned char __a, vector unsigned char __b,
4201 vector unsigned int __c) {
4202 return __builtin_altivec_vmsumubm(__a, __b, __c);
4203 }
4204
vec_msum(vector short __a,vector short __b,vector int __c)4205 static __inline__ vector int __ATTRS_o_ai vec_msum(vector short __a,
4206 vector short __b,
4207 vector int __c) {
4208 return __builtin_altivec_vmsumshm(__a, __b, __c);
4209 }
4210
4211 static __inline__ vector unsigned int __ATTRS_o_ai
vec_msum(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)4212 vec_msum(vector unsigned short __a, vector unsigned short __b,
4213 vector unsigned int __c) {
4214 return __builtin_altivec_vmsumuhm(__a, __b, __c);
4215 }
4216
4217 /* vec_vmsummbm */
4218
4219 static __inline__ vector int __attribute__((__always_inline__))
vec_vmsummbm(vector signed char __a,vector unsigned char __b,vector int __c)4220 vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) {
4221 return __builtin_altivec_vmsummbm(__a, __b, __c);
4222 }
4223
4224 /* vec_vmsumubm */
4225
4226 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmsumubm(vector unsigned char __a,vector unsigned char __b,vector unsigned int __c)4227 vec_vmsumubm(vector unsigned char __a, vector unsigned char __b,
4228 vector unsigned int __c) {
4229 return __builtin_altivec_vmsumubm(__a, __b, __c);
4230 }
4231
4232 /* vec_vmsumshm */
4233
4234 static __inline__ vector int __attribute__((__always_inline__))
vec_vmsumshm(vector short __a,vector short __b,vector int __c)4235 vec_vmsumshm(vector short __a, vector short __b, vector int __c) {
4236 return __builtin_altivec_vmsumshm(__a, __b, __c);
4237 }
4238
4239 /* vec_vmsumuhm */
4240
4241 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmsumuhm(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)4242 vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b,
4243 vector unsigned int __c) {
4244 return __builtin_altivec_vmsumuhm(__a, __b, __c);
4245 }
4246
4247 /* vec_msums */
4248
vec_msums(vector short __a,vector short __b,vector int __c)4249 static __inline__ vector int __ATTRS_o_ai vec_msums(vector short __a,
4250 vector short __b,
4251 vector int __c) {
4252 return __builtin_altivec_vmsumshs(__a, __b, __c);
4253 }
4254
4255 static __inline__ vector unsigned int __ATTRS_o_ai
vec_msums(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)4256 vec_msums(vector unsigned short __a, vector unsigned short __b,
4257 vector unsigned int __c) {
4258 return __builtin_altivec_vmsumuhs(__a, __b, __c);
4259 }
4260
4261 /* vec_vmsumshs */
4262
4263 static __inline__ vector int __attribute__((__always_inline__))
vec_vmsumshs(vector short __a,vector short __b,vector int __c)4264 vec_vmsumshs(vector short __a, vector short __b, vector int __c) {
4265 return __builtin_altivec_vmsumshs(__a, __b, __c);
4266 }
4267
4268 /* vec_vmsumuhs */
4269
4270 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmsumuhs(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)4271 vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b,
4272 vector unsigned int __c) {
4273 return __builtin_altivec_vmsumuhs(__a, __b, __c);
4274 }
4275
4276 /* vec_mtvscr */
4277
vec_mtvscr(vector signed char __a)4278 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector signed char __a) {
4279 __builtin_altivec_mtvscr((vector int)__a);
4280 }
4281
vec_mtvscr(vector unsigned char __a)4282 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) {
4283 __builtin_altivec_mtvscr((vector int)__a);
4284 }
4285
vec_mtvscr(vector bool char __a)4286 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool char __a) {
4287 __builtin_altivec_mtvscr((vector int)__a);
4288 }
4289
vec_mtvscr(vector short __a)4290 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector short __a) {
4291 __builtin_altivec_mtvscr((vector int)__a);
4292 }
4293
vec_mtvscr(vector unsigned short __a)4294 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) {
4295 __builtin_altivec_mtvscr((vector int)__a);
4296 }
4297
vec_mtvscr(vector bool short __a)4298 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool short __a) {
4299 __builtin_altivec_mtvscr((vector int)__a);
4300 }
4301
vec_mtvscr(vector pixel __a)4302 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector pixel __a) {
4303 __builtin_altivec_mtvscr((vector int)__a);
4304 }
4305
vec_mtvscr(vector int __a)4306 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector int __a) {
4307 __builtin_altivec_mtvscr((vector int)__a);
4308 }
4309
vec_mtvscr(vector unsigned int __a)4310 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) {
4311 __builtin_altivec_mtvscr((vector int)__a);
4312 }
4313
vec_mtvscr(vector bool int __a)4314 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool int __a) {
4315 __builtin_altivec_mtvscr((vector int)__a);
4316 }
4317
vec_mtvscr(vector float __a)4318 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector float __a) {
4319 __builtin_altivec_mtvscr((vector int)__a);
4320 }
4321
4322 /* vec_mul */
4323
4324 /* Integer vector multiplication will involve multiplication of the odd/even
4325 elements separately, then truncating the results and moving to the
4326 result vector.
4327 */
4328 static __inline__ vector signed char __ATTRS_o_ai
vec_mul(vector signed char __a,vector signed char __b)4329 vec_mul(vector signed char __a, vector signed char __b) {
4330 return __a * __b;
4331 }
4332
4333 static __inline__ vector unsigned char __ATTRS_o_ai
vec_mul(vector unsigned char __a,vector unsigned char __b)4334 vec_mul(vector unsigned char __a, vector unsigned char __b) {
4335 return __a * __b;
4336 }
4337
4338 static __inline__ vector signed short __ATTRS_o_ai
vec_mul(vector signed short __a,vector signed short __b)4339 vec_mul(vector signed short __a, vector signed short __b) {
4340 return __a * __b;
4341 }
4342
4343 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mul(vector unsigned short __a,vector unsigned short __b)4344 vec_mul(vector unsigned short __a, vector unsigned short __b) {
4345 return __a * __b;
4346 }
4347
4348 static __inline__ vector signed int __ATTRS_o_ai
vec_mul(vector signed int __a,vector signed int __b)4349 vec_mul(vector signed int __a, vector signed int __b) {
4350 return __a * __b;
4351 }
4352
4353 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mul(vector unsigned int __a,vector unsigned int __b)4354 vec_mul(vector unsigned int __a, vector unsigned int __b) {
4355 return __a * __b;
4356 }
4357
4358 #ifdef __VSX__
4359 static __inline__ vector signed long long __ATTRS_o_ai
vec_mul(vector signed long long __a,vector signed long long __b)4360 vec_mul(vector signed long long __a, vector signed long long __b) {
4361 return __a * __b;
4362 }
4363
4364 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mul(vector unsigned long long __a,vector unsigned long long __b)4365 vec_mul(vector unsigned long long __a, vector unsigned long long __b) {
4366 return __a * __b;
4367 }
4368 #endif
4369
vec_mul(vector float __a,vector float __b)4370 static __inline__ vector float __ATTRS_o_ai vec_mul(vector float __a,
4371 vector float __b) {
4372 return __a * __b;
4373 }
4374
4375 #ifdef __VSX__
vec_mul(vector double __a,vector double __b)4376 static __inline__ vector double __ATTRS_o_ai vec_mul(vector double __a,
4377 vector double __b) {
4378 return __a * __b;
4379 }
4380 #endif
4381
4382 /* The vmulos* and vmules* instructions have a big endian bias, so
4383 we must reverse the meaning of "even" and "odd" for little endian. */
4384
4385 /* vec_mule */
4386
vec_mule(vector signed char __a,vector signed char __b)4387 static __inline__ vector short __ATTRS_o_ai vec_mule(vector signed char __a,
4388 vector signed char __b) {
4389 #ifdef __LITTLE_ENDIAN__
4390 return __builtin_altivec_vmulosb(__a, __b);
4391 #else
4392 return __builtin_altivec_vmulesb(__a, __b);
4393 #endif
4394 }
4395
4396 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mule(vector unsigned char __a,vector unsigned char __b)4397 vec_mule(vector unsigned char __a, vector unsigned char __b) {
4398 #ifdef __LITTLE_ENDIAN__
4399 return __builtin_altivec_vmuloub(__a, __b);
4400 #else
4401 return __builtin_altivec_vmuleub(__a, __b);
4402 #endif
4403 }
4404
vec_mule(vector short __a,vector short __b)4405 static __inline__ vector int __ATTRS_o_ai vec_mule(vector short __a,
4406 vector short __b) {
4407 #ifdef __LITTLE_ENDIAN__
4408 return __builtin_altivec_vmulosh(__a, __b);
4409 #else
4410 return __builtin_altivec_vmulesh(__a, __b);
4411 #endif
4412 }
4413
4414 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mule(vector unsigned short __a,vector unsigned short __b)4415 vec_mule(vector unsigned short __a, vector unsigned short __b) {
4416 #ifdef __LITTLE_ENDIAN__
4417 return __builtin_altivec_vmulouh(__a, __b);
4418 #else
4419 return __builtin_altivec_vmuleuh(__a, __b);
4420 #endif
4421 }
4422
4423 #ifdef __POWER8_VECTOR__
4424 static __inline__ vector signed long long __ATTRS_o_ai
vec_mule(vector signed int __a,vector signed int __b)4425 vec_mule(vector signed int __a, vector signed int __b) {
4426 #ifdef __LITTLE_ENDIAN__
4427 return __builtin_altivec_vmulosw(__a, __b);
4428 #else
4429 return __builtin_altivec_vmulesw(__a, __b);
4430 #endif
4431 }
4432
4433 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mule(vector unsigned int __a,vector unsigned int __b)4434 vec_mule(vector unsigned int __a, vector unsigned int __b) {
4435 #ifdef __LITTLE_ENDIAN__
4436 return __builtin_altivec_vmulouw(__a, __b);
4437 #else
4438 return __builtin_altivec_vmuleuw(__a, __b);
4439 #endif
4440 }
4441 #endif
4442
4443 /* vec_vmulesb */
4444
4445 static __inline__ vector short __attribute__((__always_inline__))
vec_vmulesb(vector signed char __a,vector signed char __b)4446 vec_vmulesb(vector signed char __a, vector signed char __b) {
4447 #ifdef __LITTLE_ENDIAN__
4448 return __builtin_altivec_vmulosb(__a, __b);
4449 #else
4450 return __builtin_altivec_vmulesb(__a, __b);
4451 #endif
4452 }
4453
4454 /* vec_vmuleub */
4455
4456 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vmuleub(vector unsigned char __a,vector unsigned char __b)4457 vec_vmuleub(vector unsigned char __a, vector unsigned char __b) {
4458 #ifdef __LITTLE_ENDIAN__
4459 return __builtin_altivec_vmuloub(__a, __b);
4460 #else
4461 return __builtin_altivec_vmuleub(__a, __b);
4462 #endif
4463 }
4464
4465 /* vec_vmulesh */
4466
4467 static __inline__ vector int __attribute__((__always_inline__))
vec_vmulesh(vector short __a,vector short __b)4468 vec_vmulesh(vector short __a, vector short __b) {
4469 #ifdef __LITTLE_ENDIAN__
4470 return __builtin_altivec_vmulosh(__a, __b);
4471 #else
4472 return __builtin_altivec_vmulesh(__a, __b);
4473 #endif
4474 }
4475
4476 /* vec_vmuleuh */
4477
4478 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmuleuh(vector unsigned short __a,vector unsigned short __b)4479 vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) {
4480 #ifdef __LITTLE_ENDIAN__
4481 return __builtin_altivec_vmulouh(__a, __b);
4482 #else
4483 return __builtin_altivec_vmuleuh(__a, __b);
4484 #endif
4485 }
4486
4487 /* vec_mulo */
4488
vec_mulo(vector signed char __a,vector signed char __b)4489 static __inline__ vector short __ATTRS_o_ai vec_mulo(vector signed char __a,
4490 vector signed char __b) {
4491 #ifdef __LITTLE_ENDIAN__
4492 return __builtin_altivec_vmulesb(__a, __b);
4493 #else
4494 return __builtin_altivec_vmulosb(__a, __b);
4495 #endif
4496 }
4497
4498 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mulo(vector unsigned char __a,vector unsigned char __b)4499 vec_mulo(vector unsigned char __a, vector unsigned char __b) {
4500 #ifdef __LITTLE_ENDIAN__
4501 return __builtin_altivec_vmuleub(__a, __b);
4502 #else
4503 return __builtin_altivec_vmuloub(__a, __b);
4504 #endif
4505 }
4506
vec_mulo(vector short __a,vector short __b)4507 static __inline__ vector int __ATTRS_o_ai vec_mulo(vector short __a,
4508 vector short __b) {
4509 #ifdef __LITTLE_ENDIAN__
4510 return __builtin_altivec_vmulesh(__a, __b);
4511 #else
4512 return __builtin_altivec_vmulosh(__a, __b);
4513 #endif
4514 }
4515
4516 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mulo(vector unsigned short __a,vector unsigned short __b)4517 vec_mulo(vector unsigned short __a, vector unsigned short __b) {
4518 #ifdef __LITTLE_ENDIAN__
4519 return __builtin_altivec_vmuleuh(__a, __b);
4520 #else
4521 return __builtin_altivec_vmulouh(__a, __b);
4522 #endif
4523 }
4524
4525 #ifdef __POWER8_VECTOR__
4526 static __inline__ vector signed long long __ATTRS_o_ai
vec_mulo(vector signed int __a,vector signed int __b)4527 vec_mulo(vector signed int __a, vector signed int __b) {
4528 #ifdef __LITTLE_ENDIAN__
4529 return __builtin_altivec_vmulesw(__a, __b);
4530 #else
4531 return __builtin_altivec_vmulosw(__a, __b);
4532 #endif
4533 }
4534
4535 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mulo(vector unsigned int __a,vector unsigned int __b)4536 vec_mulo(vector unsigned int __a, vector unsigned int __b) {
4537 #ifdef __LITTLE_ENDIAN__
4538 return __builtin_altivec_vmuleuw(__a, __b);
4539 #else
4540 return __builtin_altivec_vmulouw(__a, __b);
4541 #endif
4542 }
4543 #endif
4544
4545 /* vec_vmulosb */
4546
4547 static __inline__ vector short __attribute__((__always_inline__))
vec_vmulosb(vector signed char __a,vector signed char __b)4548 vec_vmulosb(vector signed char __a, vector signed char __b) {
4549 #ifdef __LITTLE_ENDIAN__
4550 return __builtin_altivec_vmulesb(__a, __b);
4551 #else
4552 return __builtin_altivec_vmulosb(__a, __b);
4553 #endif
4554 }
4555
4556 /* vec_vmuloub */
4557
4558 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vmuloub(vector unsigned char __a,vector unsigned char __b)4559 vec_vmuloub(vector unsigned char __a, vector unsigned char __b) {
4560 #ifdef __LITTLE_ENDIAN__
4561 return __builtin_altivec_vmuleub(__a, __b);
4562 #else
4563 return __builtin_altivec_vmuloub(__a, __b);
4564 #endif
4565 }
4566
4567 /* vec_vmulosh */
4568
4569 static __inline__ vector int __attribute__((__always_inline__))
vec_vmulosh(vector short __a,vector short __b)4570 vec_vmulosh(vector short __a, vector short __b) {
4571 #ifdef __LITTLE_ENDIAN__
4572 return __builtin_altivec_vmulesh(__a, __b);
4573 #else
4574 return __builtin_altivec_vmulosh(__a, __b);
4575 #endif
4576 }
4577
4578 /* vec_vmulouh */
4579
4580 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmulouh(vector unsigned short __a,vector unsigned short __b)4581 vec_vmulouh(vector unsigned short __a, vector unsigned short __b) {
4582 #ifdef __LITTLE_ENDIAN__
4583 return __builtin_altivec_vmuleuh(__a, __b);
4584 #else
4585 return __builtin_altivec_vmulouh(__a, __b);
4586 #endif
4587 }
4588
4589 /* vec_nand */
4590
4591 #ifdef __POWER8_VECTOR__
4592 static __inline__ vector signed char __ATTRS_o_ai
vec_nand(vector signed char __a,vector signed char __b)4593 vec_nand(vector signed char __a, vector signed char __b) {
4594 return ~(__a & __b);
4595 }
4596
4597 static __inline__ vector signed char __ATTRS_o_ai
vec_nand(vector signed char __a,vector bool char __b)4598 vec_nand(vector signed char __a, vector bool char __b) {
4599 return ~(__a & __b);
4600 }
4601
4602 static __inline__ vector signed char __ATTRS_o_ai
vec_nand(vector bool char __a,vector signed char __b)4603 vec_nand(vector bool char __a, vector signed char __b) {
4604 return ~(__a & __b);
4605 }
4606
4607 static __inline__ vector unsigned char __ATTRS_o_ai
vec_nand(vector unsigned char __a,vector unsigned char __b)4608 vec_nand(vector unsigned char __a, vector unsigned char __b) {
4609 return ~(__a & __b);
4610 }
4611
4612 static __inline__ vector unsigned char __ATTRS_o_ai
vec_nand(vector unsigned char __a,vector bool char __b)4613 vec_nand(vector unsigned char __a, vector bool char __b) {
4614 return ~(__a & __b);
4615 }
4616
4617 static __inline__ vector unsigned char __ATTRS_o_ai
vec_nand(vector bool char __a,vector unsigned char __b)4618 vec_nand(vector bool char __a, vector unsigned char __b) {
4619 return ~(__a & __b);
4620 }
4621
vec_nand(vector bool char __a,vector bool char __b)4622 static __inline__ vector bool char __ATTRS_o_ai vec_nand(vector bool char __a,
4623 vector bool char __b) {
4624 return ~(__a & __b);
4625 }
4626
4627 static __inline__ vector signed short __ATTRS_o_ai
vec_nand(vector signed short __a,vector signed short __b)4628 vec_nand(vector signed short __a, vector signed short __b) {
4629 return ~(__a & __b);
4630 }
4631
4632 static __inline__ vector signed short __ATTRS_o_ai
vec_nand(vector signed short __a,vector bool short __b)4633 vec_nand(vector signed short __a, vector bool short __b) {
4634 return ~(__a & __b);
4635 }
4636
4637 static __inline__ vector signed short __ATTRS_o_ai
vec_nand(vector bool short __a,vector signed short __b)4638 vec_nand(vector bool short __a, vector signed short __b) {
4639 return ~(__a & __b);
4640 }
4641
4642 static __inline__ vector unsigned short __ATTRS_o_ai
vec_nand(vector unsigned short __a,vector unsigned short __b)4643 vec_nand(vector unsigned short __a, vector unsigned short __b) {
4644 return ~(__a & __b);
4645 }
4646
4647 static __inline__ vector unsigned short __ATTRS_o_ai
vec_nand(vector unsigned short __a,vector bool short __b)4648 vec_nand(vector unsigned short __a, vector bool short __b) {
4649 return ~(__a & __b);
4650 }
4651
4652 static __inline__ vector bool short __ATTRS_o_ai
vec_nand(vector bool short __a,vector bool short __b)4653 vec_nand(vector bool short __a, vector bool short __b) {
4654 return ~(__a & __b);
4655 }
4656
4657 static __inline__ vector signed int __ATTRS_o_ai
vec_nand(vector signed int __a,vector signed int __b)4658 vec_nand(vector signed int __a, vector signed int __b) {
4659 return ~(__a & __b);
4660 }
4661
vec_nand(vector signed int __a,vector bool int __b)4662 static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
4663 vector bool int __b) {
4664 return ~(__a & __b);
4665 }
4666
4667 static __inline__ vector signed int __ATTRS_o_ai
vec_nand(vector bool int __a,vector signed int __b)4668 vec_nand(vector bool int __a, vector signed int __b) {
4669 return ~(__a & __b);
4670 }
4671
4672 static __inline__ vector unsigned int __ATTRS_o_ai
vec_nand(vector unsigned int __a,vector unsigned int __b)4673 vec_nand(vector unsigned int __a, vector unsigned int __b) {
4674 return ~(__a & __b);
4675 }
4676
4677 static __inline__ vector unsigned int __ATTRS_o_ai
vec_nand(vector unsigned int __a,vector bool int __b)4678 vec_nand(vector unsigned int __a, vector bool int __b) {
4679 return ~(__a & __b);
4680 }
4681
4682 static __inline__ vector unsigned int __ATTRS_o_ai
vec_nand(vector bool int __a,vector unsigned int __b)4683 vec_nand(vector bool int __a, vector unsigned int __b) {
4684 return ~(__a & __b);
4685 }
4686
vec_nand(vector bool int __a,vector bool int __b)4687 static __inline__ vector bool int __ATTRS_o_ai vec_nand(vector bool int __a,
4688 vector bool int __b) {
4689 return ~(__a & __b);
4690 }
4691
4692 static __inline__ vector signed long long __ATTRS_o_ai
vec_nand(vector signed long long __a,vector signed long long __b)4693 vec_nand(vector signed long long __a, vector signed long long __b) {
4694 return ~(__a & __b);
4695 }
4696
4697 static __inline__ vector signed long long __ATTRS_o_ai
vec_nand(vector signed long long __a,vector bool long long __b)4698 vec_nand(vector signed long long __a, vector bool long long __b) {
4699 return ~(__a & __b);
4700 }
4701
4702 static __inline__ vector signed long long __ATTRS_o_ai
vec_nand(vector bool long long __a,vector signed long long __b)4703 vec_nand(vector bool long long __a, vector signed long long __b) {
4704 return ~(__a & __b);
4705 }
4706
4707 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nand(vector unsigned long long __a,vector unsigned long long __b)4708 vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
4709 return ~(__a & __b);
4710 }
4711
4712 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nand(vector unsigned long long __a,vector bool long long __b)4713 vec_nand(vector unsigned long long __a, vector bool long long __b) {
4714 return ~(__a & __b);
4715 }
4716
4717 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nand(vector bool long long __a,vector unsigned long long __b)4718 vec_nand(vector bool long long __a, vector unsigned long long __b) {
4719 return ~(__a & __b);
4720 }
4721
4722 static __inline__ vector bool long long __ATTRS_o_ai
vec_nand(vector bool long long __a,vector bool long long __b)4723 vec_nand(vector bool long long __a, vector bool long long __b) {
4724 return ~(__a & __b);
4725 }
4726
4727 #endif
4728
4729 /* vec_nmadd */
4730
4731 #ifdef __VSX__
vec_nmadd(vector float __a,vector float __b,vector float __c)4732 static __inline__ vector float __ATTRS_o_ai vec_nmadd(vector float __a,
4733 vector float __b,
4734 vector float __c) {
4735 return __builtin_vsx_xvnmaddasp(__a, __b, __c);
4736 }
4737
vec_nmadd(vector double __a,vector double __b,vector double __c)4738 static __inline__ vector double __ATTRS_o_ai vec_nmadd(vector double __a,
4739 vector double __b,
4740 vector double __c) {
4741 return __builtin_vsx_xvnmaddadp(__a, __b, __c);
4742 }
4743 #endif
4744
4745 /* vec_nmsub */
4746
vec_nmsub(vector float __a,vector float __b,vector float __c)4747 static __inline__ vector float __ATTRS_o_ai vec_nmsub(vector float __a,
4748 vector float __b,
4749 vector float __c) {
4750 #ifdef __VSX__
4751 return __builtin_vsx_xvnmsubasp(__a, __b, __c);
4752 #else
4753 return __builtin_altivec_vnmsubfp(__a, __b, __c);
4754 #endif
4755 }
4756
4757 #ifdef __VSX__
vec_nmsub(vector double __a,vector double __b,vector double __c)4758 static __inline__ vector double __ATTRS_o_ai vec_nmsub(vector double __a,
4759 vector double __b,
4760 vector double __c) {
4761 return __builtin_vsx_xvnmsubadp(__a, __b, __c);
4762 }
4763 #endif
4764
4765 /* vec_vnmsubfp */
4766
4767 static __inline__ vector float __attribute__((__always_inline__))
vec_vnmsubfp(vector float __a,vector float __b,vector float __c)4768 vec_vnmsubfp(vector float __a, vector float __b, vector float __c) {
4769 return __builtin_altivec_vnmsubfp(__a, __b, __c);
4770 }
4771
4772 /* vec_nor */
4773
4774 #define __builtin_altivec_vnor vec_nor
4775
4776 static __inline__ vector signed char __ATTRS_o_ai
vec_nor(vector signed char __a,vector signed char __b)4777 vec_nor(vector signed char __a, vector signed char __b) {
4778 return ~(__a | __b);
4779 }
4780
4781 static __inline__ vector unsigned char __ATTRS_o_ai
vec_nor(vector unsigned char __a,vector unsigned char __b)4782 vec_nor(vector unsigned char __a, vector unsigned char __b) {
4783 return ~(__a | __b);
4784 }
4785
vec_nor(vector bool char __a,vector bool char __b)4786 static __inline__ vector bool char __ATTRS_o_ai vec_nor(vector bool char __a,
4787 vector bool char __b) {
4788 return ~(__a | __b);
4789 }
4790
vec_nor(vector short __a,vector short __b)4791 static __inline__ vector short __ATTRS_o_ai vec_nor(vector short __a,
4792 vector short __b) {
4793 return ~(__a | __b);
4794 }
4795
4796 static __inline__ vector unsigned short __ATTRS_o_ai
vec_nor(vector unsigned short __a,vector unsigned short __b)4797 vec_nor(vector unsigned short __a, vector unsigned short __b) {
4798 return ~(__a | __b);
4799 }
4800
4801 static __inline__ vector bool short __ATTRS_o_ai
vec_nor(vector bool short __a,vector bool short __b)4802 vec_nor(vector bool short __a, vector bool short __b) {
4803 return ~(__a | __b);
4804 }
4805
vec_nor(vector int __a,vector int __b)4806 static __inline__ vector int __ATTRS_o_ai vec_nor(vector int __a,
4807 vector int __b) {
4808 return ~(__a | __b);
4809 }
4810
4811 static __inline__ vector unsigned int __ATTRS_o_ai
vec_nor(vector unsigned int __a,vector unsigned int __b)4812 vec_nor(vector unsigned int __a, vector unsigned int __b) {
4813 return ~(__a | __b);
4814 }
4815
vec_nor(vector bool int __a,vector bool int __b)4816 static __inline__ vector bool int __ATTRS_o_ai vec_nor(vector bool int __a,
4817 vector bool int __b) {
4818 return ~(__a | __b);
4819 }
4820
vec_nor(vector float __a,vector float __b)4821 static __inline__ vector float __ATTRS_o_ai vec_nor(vector float __a,
4822 vector float __b) {
4823 vector unsigned int __res =
4824 ~((vector unsigned int)__a | (vector unsigned int)__b);
4825 return (vector float)__res;
4826 }
4827
4828 #ifdef __VSX__
vec_nor(vector double __a,vector double __b)4829 static __inline__ vector double __ATTRS_o_ai vec_nor(vector double __a,
4830 vector double __b) {
4831 vector unsigned long long __res =
4832 ~((vector unsigned long long)__a | (vector unsigned long long)__b);
4833 return (vector double)__res;
4834 }
4835 #endif
4836
4837 /* vec_vnor */
4838
4839 static __inline__ vector signed char __ATTRS_o_ai
vec_vnor(vector signed char __a,vector signed char __b)4840 vec_vnor(vector signed char __a, vector signed char __b) {
4841 return ~(__a | __b);
4842 }
4843
4844 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vnor(vector unsigned char __a,vector unsigned char __b)4845 vec_vnor(vector unsigned char __a, vector unsigned char __b) {
4846 return ~(__a | __b);
4847 }
4848
vec_vnor(vector bool char __a,vector bool char __b)4849 static __inline__ vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a,
4850 vector bool char __b) {
4851 return ~(__a | __b);
4852 }
4853
vec_vnor(vector short __a,vector short __b)4854 static __inline__ vector short __ATTRS_o_ai vec_vnor(vector short __a,
4855 vector short __b) {
4856 return ~(__a | __b);
4857 }
4858
4859 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vnor(vector unsigned short __a,vector unsigned short __b)4860 vec_vnor(vector unsigned short __a, vector unsigned short __b) {
4861 return ~(__a | __b);
4862 }
4863
4864 static __inline__ vector bool short __ATTRS_o_ai
vec_vnor(vector bool short __a,vector bool short __b)4865 vec_vnor(vector bool short __a, vector bool short __b) {
4866 return ~(__a | __b);
4867 }
4868
vec_vnor(vector int __a,vector int __b)4869 static __inline__ vector int __ATTRS_o_ai vec_vnor(vector int __a,
4870 vector int __b) {
4871 return ~(__a | __b);
4872 }
4873
4874 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vnor(vector unsigned int __a,vector unsigned int __b)4875 vec_vnor(vector unsigned int __a, vector unsigned int __b) {
4876 return ~(__a | __b);
4877 }
4878
vec_vnor(vector bool int __a,vector bool int __b)4879 static __inline__ vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a,
4880 vector bool int __b) {
4881 return ~(__a | __b);
4882 }
4883
vec_vnor(vector float __a,vector float __b)4884 static __inline__ vector float __ATTRS_o_ai vec_vnor(vector float __a,
4885 vector float __b) {
4886 vector unsigned int __res =
4887 ~((vector unsigned int)__a | (vector unsigned int)__b);
4888 return (vector float)__res;
4889 }
4890
4891 #ifdef __VSX__
4892 static __inline__ vector signed long long __ATTRS_o_ai
vec_nor(vector signed long long __a,vector signed long long __b)4893 vec_nor(vector signed long long __a, vector signed long long __b) {
4894 return ~(__a | __b);
4895 }
4896
4897 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nor(vector unsigned long long __a,vector unsigned long long __b)4898 vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
4899 return ~(__a | __b);
4900 }
4901
4902 static __inline__ vector bool long long __ATTRS_o_ai
vec_nor(vector bool long long __a,vector bool long long __b)4903 vec_nor(vector bool long long __a, vector bool long long __b) {
4904 return ~(__a | __b);
4905 }
4906 #endif
4907
4908 /* vec_or */
4909
4910 #define __builtin_altivec_vor vec_or
4911
4912 static __inline__ vector signed char __ATTRS_o_ai
vec_or(vector signed char __a,vector signed char __b)4913 vec_or(vector signed char __a, vector signed char __b) {
4914 return __a | __b;
4915 }
4916
4917 static __inline__ vector signed char __ATTRS_o_ai
vec_or(vector bool char __a,vector signed char __b)4918 vec_or(vector bool char __a, vector signed char __b) {
4919 return (vector signed char)__a | __b;
4920 }
4921
vec_or(vector signed char __a,vector bool char __b)4922 static __inline__ vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
4923 vector bool char __b) {
4924 return __a | (vector signed char)__b;
4925 }
4926
4927 static __inline__ vector unsigned char __ATTRS_o_ai
vec_or(vector unsigned char __a,vector unsigned char __b)4928 vec_or(vector unsigned char __a, vector unsigned char __b) {
4929 return __a | __b;
4930 }
4931
4932 static __inline__ vector unsigned char __ATTRS_o_ai
vec_or(vector bool char __a,vector unsigned char __b)4933 vec_or(vector bool char __a, vector unsigned char __b) {
4934 return (vector unsigned char)__a | __b;
4935 }
4936
4937 static __inline__ vector unsigned char __ATTRS_o_ai
vec_or(vector unsigned char __a,vector bool char __b)4938 vec_or(vector unsigned char __a, vector bool char __b) {
4939 return __a | (vector unsigned char)__b;
4940 }
4941
vec_or(vector bool char __a,vector bool char __b)4942 static __inline__ vector bool char __ATTRS_o_ai vec_or(vector bool char __a,
4943 vector bool char __b) {
4944 return __a | __b;
4945 }
4946
vec_or(vector short __a,vector short __b)4947 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
4948 vector short __b) {
4949 return __a | __b;
4950 }
4951
vec_or(vector bool short __a,vector short __b)4952 static __inline__ vector short __ATTRS_o_ai vec_or(vector bool short __a,
4953 vector short __b) {
4954 return (vector short)__a | __b;
4955 }
4956
vec_or(vector short __a,vector bool short __b)4957 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
4958 vector bool short __b) {
4959 return __a | (vector short)__b;
4960 }
4961
4962 static __inline__ vector unsigned short __ATTRS_o_ai
vec_or(vector unsigned short __a,vector unsigned short __b)4963 vec_or(vector unsigned short __a, vector unsigned short __b) {
4964 return __a | __b;
4965 }
4966
4967 static __inline__ vector unsigned short __ATTRS_o_ai
vec_or(vector bool short __a,vector unsigned short __b)4968 vec_or(vector bool short __a, vector unsigned short __b) {
4969 return (vector unsigned short)__a | __b;
4970 }
4971
4972 static __inline__ vector unsigned short __ATTRS_o_ai
vec_or(vector unsigned short __a,vector bool short __b)4973 vec_or(vector unsigned short __a, vector bool short __b) {
4974 return __a | (vector unsigned short)__b;
4975 }
4976
vec_or(vector bool short __a,vector bool short __b)4977 static __inline__ vector bool short __ATTRS_o_ai vec_or(vector bool short __a,
4978 vector bool short __b) {
4979 return __a | __b;
4980 }
4981
vec_or(vector int __a,vector int __b)4982 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
4983 vector int __b) {
4984 return __a | __b;
4985 }
4986
vec_or(vector bool int __a,vector int __b)4987 static __inline__ vector int __ATTRS_o_ai vec_or(vector bool int __a,
4988 vector int __b) {
4989 return (vector int)__a | __b;
4990 }
4991
vec_or(vector int __a,vector bool int __b)4992 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
4993 vector bool int __b) {
4994 return __a | (vector int)__b;
4995 }
4996
4997 static __inline__ vector unsigned int __ATTRS_o_ai
vec_or(vector unsigned int __a,vector unsigned int __b)4998 vec_or(vector unsigned int __a, vector unsigned int __b) {
4999 return __a | __b;
5000 }
5001
5002 static __inline__ vector unsigned int __ATTRS_o_ai
vec_or(vector bool int __a,vector unsigned int __b)5003 vec_or(vector bool int __a, vector unsigned int __b) {
5004 return (vector unsigned int)__a | __b;
5005 }
5006
5007 static __inline__ vector unsigned int __ATTRS_o_ai
vec_or(vector unsigned int __a,vector bool int __b)5008 vec_or(vector unsigned int __a, vector bool int __b) {
5009 return __a | (vector unsigned int)__b;
5010 }
5011
vec_or(vector bool int __a,vector bool int __b)5012 static __inline__ vector bool int __ATTRS_o_ai vec_or(vector bool int __a,
5013 vector bool int __b) {
5014 return __a | __b;
5015 }
5016
vec_or(vector float __a,vector float __b)5017 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
5018 vector float __b) {
5019 vector unsigned int __res =
5020 (vector unsigned int)__a | (vector unsigned int)__b;
5021 return (vector float)__res;
5022 }
5023
vec_or(vector bool int __a,vector float __b)5024 static __inline__ vector float __ATTRS_o_ai vec_or(vector bool int __a,
5025 vector float __b) {
5026 vector unsigned int __res =
5027 (vector unsigned int)__a | (vector unsigned int)__b;
5028 return (vector float)__res;
5029 }
5030
vec_or(vector float __a,vector bool int __b)5031 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
5032 vector bool int __b) {
5033 vector unsigned int __res =
5034 (vector unsigned int)__a | (vector unsigned int)__b;
5035 return (vector float)__res;
5036 }
5037
5038 #ifdef __VSX__
vec_or(vector bool long long __a,vector double __b)5039 static __inline__ vector double __ATTRS_o_ai vec_or(vector bool long long __a,
5040 vector double __b) {
5041 return (vector unsigned long long)__a | (vector unsigned long long)__b;
5042 }
5043
vec_or(vector double __a,vector bool long long __b)5044 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
5045 vector bool long long __b) {
5046 return (vector unsigned long long)__a | (vector unsigned long long)__b;
5047 }
5048
vec_or(vector double __a,vector double __b)5049 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
5050 vector double __b) {
5051 vector unsigned long long __res =
5052 (vector unsigned long long)__a | (vector unsigned long long)__b;
5053 return (vector double)__res;
5054 }
5055
5056 static __inline__ vector signed long long __ATTRS_o_ai
vec_or(vector signed long long __a,vector signed long long __b)5057 vec_or(vector signed long long __a, vector signed long long __b) {
5058 return __a | __b;
5059 }
5060
5061 static __inline__ vector signed long long __ATTRS_o_ai
vec_or(vector bool long long __a,vector signed long long __b)5062 vec_or(vector bool long long __a, vector signed long long __b) {
5063 return (vector signed long long)__a | __b;
5064 }
5065
5066 static __inline__ vector signed long long __ATTRS_o_ai
vec_or(vector signed long long __a,vector bool long long __b)5067 vec_or(vector signed long long __a, vector bool long long __b) {
5068 return __a | (vector signed long long)__b;
5069 }
5070
5071 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_or(vector unsigned long long __a,vector unsigned long long __b)5072 vec_or(vector unsigned long long __a, vector unsigned long long __b) {
5073 return __a | __b;
5074 }
5075
5076 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_or(vector bool long long __a,vector unsigned long long __b)5077 vec_or(vector bool long long __a, vector unsigned long long __b) {
5078 return (vector unsigned long long)__a | __b;
5079 }
5080
5081 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_or(vector unsigned long long __a,vector bool long long __b)5082 vec_or(vector unsigned long long __a, vector bool long long __b) {
5083 return __a | (vector unsigned long long)__b;
5084 }
5085
5086 static __inline__ vector bool long long __ATTRS_o_ai
vec_or(vector bool long long __a,vector bool long long __b)5087 vec_or(vector bool long long __a, vector bool long long __b) {
5088 return __a | __b;
5089 }
5090 #endif
5091
5092 #ifdef __POWER8_VECTOR__
5093 static __inline__ vector signed char __ATTRS_o_ai
vec_orc(vector signed char __a,vector signed char __b)5094 vec_orc(vector signed char __a, vector signed char __b) {
5095 return __a | ~__b;
5096 }
5097
5098 static __inline__ vector signed char __ATTRS_o_ai
vec_orc(vector signed char __a,vector bool char __b)5099 vec_orc(vector signed char __a, vector bool char __b) {
5100 return __a | ~__b;
5101 }
5102
5103 static __inline__ vector signed char __ATTRS_o_ai
vec_orc(vector bool char __a,vector signed char __b)5104 vec_orc(vector bool char __a, vector signed char __b) {
5105 return __a | ~__b;
5106 }
5107
5108 static __inline__ vector unsigned char __ATTRS_o_ai
vec_orc(vector unsigned char __a,vector unsigned char __b)5109 vec_orc(vector unsigned char __a, vector unsigned char __b) {
5110 return __a | ~__b;
5111 }
5112
5113 static __inline__ vector unsigned char __ATTRS_o_ai
vec_orc(vector unsigned char __a,vector bool char __b)5114 vec_orc(vector unsigned char __a, vector bool char __b) {
5115 return __a | ~__b;
5116 }
5117
5118 static __inline__ vector unsigned char __ATTRS_o_ai
vec_orc(vector bool char __a,vector unsigned char __b)5119 vec_orc(vector bool char __a, vector unsigned char __b) {
5120 return __a | ~__b;
5121 }
5122
vec_orc(vector bool char __a,vector bool char __b)5123 static __inline__ vector bool char __ATTRS_o_ai vec_orc(vector bool char __a,
5124 vector bool char __b) {
5125 return __a | ~__b;
5126 }
5127
5128 static __inline__ vector signed short __ATTRS_o_ai
vec_orc(vector signed short __a,vector signed short __b)5129 vec_orc(vector signed short __a, vector signed short __b) {
5130 return __a | ~__b;
5131 }
5132
5133 static __inline__ vector signed short __ATTRS_o_ai
vec_orc(vector signed short __a,vector bool short __b)5134 vec_orc(vector signed short __a, vector bool short __b) {
5135 return __a | ~__b;
5136 }
5137
5138 static __inline__ vector signed short __ATTRS_o_ai
vec_orc(vector bool short __a,vector signed short __b)5139 vec_orc(vector bool short __a, vector signed short __b) {
5140 return __a | ~__b;
5141 }
5142
5143 static __inline__ vector unsigned short __ATTRS_o_ai
vec_orc(vector unsigned short __a,vector unsigned short __b)5144 vec_orc(vector unsigned short __a, vector unsigned short __b) {
5145 return __a | ~__b;
5146 }
5147
5148 static __inline__ vector unsigned short __ATTRS_o_ai
vec_orc(vector unsigned short __a,vector bool short __b)5149 vec_orc(vector unsigned short __a, vector bool short __b) {
5150 return __a | ~__b;
5151 }
5152
5153 static __inline__ vector unsigned short __ATTRS_o_ai
vec_orc(vector bool short __a,vector unsigned short __b)5154 vec_orc(vector bool short __a, vector unsigned short __b) {
5155 return __a | ~__b;
5156 }
5157
5158 static __inline__ vector bool short __ATTRS_o_ai
vec_orc(vector bool short __a,vector bool short __b)5159 vec_orc(vector bool short __a, vector bool short __b) {
5160 return __a | ~__b;
5161 }
5162
5163 static __inline__ vector signed int __ATTRS_o_ai
vec_orc(vector signed int __a,vector signed int __b)5164 vec_orc(vector signed int __a, vector signed int __b) {
5165 return __a | ~__b;
5166 }
5167
vec_orc(vector signed int __a,vector bool int __b)5168 static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
5169 vector bool int __b) {
5170 return __a | ~__b;
5171 }
5172
5173 static __inline__ vector signed int __ATTRS_o_ai
vec_orc(vector bool int __a,vector signed int __b)5174 vec_orc(vector bool int __a, vector signed int __b) {
5175 return __a | ~__b;
5176 }
5177
5178 static __inline__ vector unsigned int __ATTRS_o_ai
vec_orc(vector unsigned int __a,vector unsigned int __b)5179 vec_orc(vector unsigned int __a, vector unsigned int __b) {
5180 return __a | ~__b;
5181 }
5182
5183 static __inline__ vector unsigned int __ATTRS_o_ai
vec_orc(vector unsigned int __a,vector bool int __b)5184 vec_orc(vector unsigned int __a, vector bool int __b) {
5185 return __a | ~__b;
5186 }
5187
5188 static __inline__ vector unsigned int __ATTRS_o_ai
vec_orc(vector bool int __a,vector unsigned int __b)5189 vec_orc(vector bool int __a, vector unsigned int __b) {
5190 return __a | ~__b;
5191 }
5192
vec_orc(vector bool int __a,vector bool int __b)5193 static __inline__ vector bool int __ATTRS_o_ai vec_orc(vector bool int __a,
5194 vector bool int __b) {
5195 return __a | ~__b;
5196 }
5197
5198 static __inline__ vector signed long long __ATTRS_o_ai
vec_orc(vector signed long long __a,vector signed long long __b)5199 vec_orc(vector signed long long __a, vector signed long long __b) {
5200 return __a | ~__b;
5201 }
5202
5203 static __inline__ vector signed long long __ATTRS_o_ai
vec_orc(vector signed long long __a,vector bool long long __b)5204 vec_orc(vector signed long long __a, vector bool long long __b) {
5205 return __a | ~__b;
5206 }
5207
5208 static __inline__ vector signed long long __ATTRS_o_ai
vec_orc(vector bool long long __a,vector signed long long __b)5209 vec_orc(vector bool long long __a, vector signed long long __b) {
5210 return __a | ~__b;
5211 }
5212
5213 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_orc(vector unsigned long long __a,vector unsigned long long __b)5214 vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
5215 return __a | ~__b;
5216 }
5217
5218 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_orc(vector unsigned long long __a,vector bool long long __b)5219 vec_orc(vector unsigned long long __a, vector bool long long __b) {
5220 return __a | ~__b;
5221 }
5222
5223 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_orc(vector bool long long __a,vector unsigned long long __b)5224 vec_orc(vector bool long long __a, vector unsigned long long __b) {
5225 return __a | ~__b;
5226 }
5227
5228 static __inline__ vector bool long long __ATTRS_o_ai
vec_orc(vector bool long long __a,vector bool long long __b)5229 vec_orc(vector bool long long __a, vector bool long long __b) {
5230 return __a | ~__b;
5231 }
5232 #endif
5233
5234 /* vec_vor */
5235
5236 static __inline__ vector signed char __ATTRS_o_ai
vec_vor(vector signed char __a,vector signed char __b)5237 vec_vor(vector signed char __a, vector signed char __b) {
5238 return __a | __b;
5239 }
5240
5241 static __inline__ vector signed char __ATTRS_o_ai
vec_vor(vector bool char __a,vector signed char __b)5242 vec_vor(vector bool char __a, vector signed char __b) {
5243 return (vector signed char)__a | __b;
5244 }
5245
5246 static __inline__ vector signed char __ATTRS_o_ai
vec_vor(vector signed char __a,vector bool char __b)5247 vec_vor(vector signed char __a, vector bool char __b) {
5248 return __a | (vector signed char)__b;
5249 }
5250
5251 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vor(vector unsigned char __a,vector unsigned char __b)5252 vec_vor(vector unsigned char __a, vector unsigned char __b) {
5253 return __a | __b;
5254 }
5255
5256 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vor(vector bool char __a,vector unsigned char __b)5257 vec_vor(vector bool char __a, vector unsigned char __b) {
5258 return (vector unsigned char)__a | __b;
5259 }
5260
5261 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vor(vector unsigned char __a,vector bool char __b)5262 vec_vor(vector unsigned char __a, vector bool char __b) {
5263 return __a | (vector unsigned char)__b;
5264 }
5265
vec_vor(vector bool char __a,vector bool char __b)5266 static __inline__ vector bool char __ATTRS_o_ai vec_vor(vector bool char __a,
5267 vector bool char __b) {
5268 return __a | __b;
5269 }
5270
vec_vor(vector short __a,vector short __b)5271 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
5272 vector short __b) {
5273 return __a | __b;
5274 }
5275
vec_vor(vector bool short __a,vector short __b)5276 static __inline__ vector short __ATTRS_o_ai vec_vor(vector bool short __a,
5277 vector short __b) {
5278 return (vector short)__a | __b;
5279 }
5280
vec_vor(vector short __a,vector bool short __b)5281 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
5282 vector bool short __b) {
5283 return __a | (vector short)__b;
5284 }
5285
5286 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vor(vector unsigned short __a,vector unsigned short __b)5287 vec_vor(vector unsigned short __a, vector unsigned short __b) {
5288 return __a | __b;
5289 }
5290
5291 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vor(vector bool short __a,vector unsigned short __b)5292 vec_vor(vector bool short __a, vector unsigned short __b) {
5293 return (vector unsigned short)__a | __b;
5294 }
5295
5296 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vor(vector unsigned short __a,vector bool short __b)5297 vec_vor(vector unsigned short __a, vector bool short __b) {
5298 return __a | (vector unsigned short)__b;
5299 }
5300
5301 static __inline__ vector bool short __ATTRS_o_ai
vec_vor(vector bool short __a,vector bool short __b)5302 vec_vor(vector bool short __a, vector bool short __b) {
5303 return __a | __b;
5304 }
5305
vec_vor(vector int __a,vector int __b)5306 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
5307 vector int __b) {
5308 return __a | __b;
5309 }
5310
vec_vor(vector bool int __a,vector int __b)5311 static __inline__ vector int __ATTRS_o_ai vec_vor(vector bool int __a,
5312 vector int __b) {
5313 return (vector int)__a | __b;
5314 }
5315
vec_vor(vector int __a,vector bool int __b)5316 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
5317 vector bool int __b) {
5318 return __a | (vector int)__b;
5319 }
5320
5321 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vor(vector unsigned int __a,vector unsigned int __b)5322 vec_vor(vector unsigned int __a, vector unsigned int __b) {
5323 return __a | __b;
5324 }
5325
5326 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vor(vector bool int __a,vector unsigned int __b)5327 vec_vor(vector bool int __a, vector unsigned int __b) {
5328 return (vector unsigned int)__a | __b;
5329 }
5330
5331 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vor(vector unsigned int __a,vector bool int __b)5332 vec_vor(vector unsigned int __a, vector bool int __b) {
5333 return __a | (vector unsigned int)__b;
5334 }
5335
vec_vor(vector bool int __a,vector bool int __b)5336 static __inline__ vector bool int __ATTRS_o_ai vec_vor(vector bool int __a,
5337 vector bool int __b) {
5338 return __a | __b;
5339 }
5340
vec_vor(vector float __a,vector float __b)5341 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
5342 vector float __b) {
5343 vector unsigned int __res =
5344 (vector unsigned int)__a | (vector unsigned int)__b;
5345 return (vector float)__res;
5346 }
5347
vec_vor(vector bool int __a,vector float __b)5348 static __inline__ vector float __ATTRS_o_ai vec_vor(vector bool int __a,
5349 vector float __b) {
5350 vector unsigned int __res =
5351 (vector unsigned int)__a | (vector unsigned int)__b;
5352 return (vector float)__res;
5353 }
5354
vec_vor(vector float __a,vector bool int __b)5355 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
5356 vector bool int __b) {
5357 vector unsigned int __res =
5358 (vector unsigned int)__a | (vector unsigned int)__b;
5359 return (vector float)__res;
5360 }
5361
5362 #ifdef __VSX__
5363 static __inline__ vector signed long long __ATTRS_o_ai
vec_vor(vector signed long long __a,vector signed long long __b)5364 vec_vor(vector signed long long __a, vector signed long long __b) {
5365 return __a | __b;
5366 }
5367
5368 static __inline__ vector signed long long __ATTRS_o_ai
vec_vor(vector bool long long __a,vector signed long long __b)5369 vec_vor(vector bool long long __a, vector signed long long __b) {
5370 return (vector signed long long)__a | __b;
5371 }
5372
5373 static __inline__ vector signed long long __ATTRS_o_ai
vec_vor(vector signed long long __a,vector bool long long __b)5374 vec_vor(vector signed long long __a, vector bool long long __b) {
5375 return __a | (vector signed long long)__b;
5376 }
5377
5378 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vor(vector unsigned long long __a,vector unsigned long long __b)5379 vec_vor(vector unsigned long long __a, vector unsigned long long __b) {
5380 return __a | __b;
5381 }
5382
5383 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vor(vector bool long long __a,vector unsigned long long __b)5384 vec_vor(vector bool long long __a, vector unsigned long long __b) {
5385 return (vector unsigned long long)__a | __b;
5386 }
5387
5388 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vor(vector unsigned long long __a,vector bool long long __b)5389 vec_vor(vector unsigned long long __a, vector bool long long __b) {
5390 return __a | (vector unsigned long long)__b;
5391 }
5392
5393 static __inline__ vector bool long long __ATTRS_o_ai
vec_vor(vector bool long long __a,vector bool long long __b)5394 vec_vor(vector bool long long __a, vector bool long long __b) {
5395 return __a | __b;
5396 }
5397 #endif
5398
5399 /* vec_pack */
5400
5401 /* The various vector pack instructions have a big-endian bias, so for
5402 little endian we must handle reversed element numbering. */
5403
5404 static __inline__ vector signed char __ATTRS_o_ai
vec_pack(vector signed short __a,vector signed short __b)5405 vec_pack(vector signed short __a, vector signed short __b) {
5406 #ifdef __LITTLE_ENDIAN__
5407 return (vector signed char)vec_perm(
5408 __a, __b,
5409 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5410 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5411 #else
5412 return (vector signed char)vec_perm(
5413 __a, __b,
5414 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5415 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5416 #endif
5417 }
5418
5419 static __inline__ vector unsigned char __ATTRS_o_ai
vec_pack(vector unsigned short __a,vector unsigned short __b)5420 vec_pack(vector unsigned short __a, vector unsigned short __b) {
5421 #ifdef __LITTLE_ENDIAN__
5422 return (vector unsigned char)vec_perm(
5423 __a, __b,
5424 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5425 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5426 #else
5427 return (vector unsigned char)vec_perm(
5428 __a, __b,
5429 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5430 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5431 #endif
5432 }
5433
5434 static __inline__ vector bool char __ATTRS_o_ai
vec_pack(vector bool short __a,vector bool short __b)5435 vec_pack(vector bool short __a, vector bool short __b) {
5436 #ifdef __LITTLE_ENDIAN__
5437 return (vector bool char)vec_perm(
5438 __a, __b,
5439 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5440 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5441 #else
5442 return (vector bool char)vec_perm(
5443 __a, __b,
5444 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5445 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5446 #endif
5447 }
5448
vec_pack(vector int __a,vector int __b)5449 static __inline__ vector short __ATTRS_o_ai vec_pack(vector int __a,
5450 vector int __b) {
5451 #ifdef __LITTLE_ENDIAN__
5452 return (vector short)vec_perm(
5453 __a, __b,
5454 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5455 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5456 #else
5457 return (vector short)vec_perm(
5458 __a, __b,
5459 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5460 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5461 #endif
5462 }
5463
5464 static __inline__ vector unsigned short __ATTRS_o_ai
vec_pack(vector unsigned int __a,vector unsigned int __b)5465 vec_pack(vector unsigned int __a, vector unsigned int __b) {
5466 #ifdef __LITTLE_ENDIAN__
5467 return (vector unsigned short)vec_perm(
5468 __a, __b,
5469 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5470 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5471 #else
5472 return (vector unsigned short)vec_perm(
5473 __a, __b,
5474 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5475 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5476 #endif
5477 }
5478
vec_pack(vector bool int __a,vector bool int __b)5479 static __inline__ vector bool short __ATTRS_o_ai vec_pack(vector bool int __a,
5480 vector bool int __b) {
5481 #ifdef __LITTLE_ENDIAN__
5482 return (vector bool short)vec_perm(
5483 __a, __b,
5484 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5485 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5486 #else
5487 return (vector bool short)vec_perm(
5488 __a, __b,
5489 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5490 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5491 #endif
5492 }
5493
5494 #ifdef __VSX__
5495 static __inline__ vector signed int __ATTRS_o_ai
vec_pack(vector signed long long __a,vector signed long long __b)5496 vec_pack(vector signed long long __a, vector signed long long __b) {
5497 #ifdef __LITTLE_ENDIAN__
5498 return (vector signed int)vec_perm(
5499 __a, __b,
5500 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5501 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5502 #else
5503 return (vector signed int)vec_perm(
5504 __a, __b,
5505 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5506 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5507 #endif
5508 }
5509 static __inline__ vector unsigned int __ATTRS_o_ai
vec_pack(vector unsigned long long __a,vector unsigned long long __b)5510 vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
5511 #ifdef __LITTLE_ENDIAN__
5512 return (vector unsigned int)vec_perm(
5513 __a, __b,
5514 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5515 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5516 #else
5517 return (vector unsigned int)vec_perm(
5518 __a, __b,
5519 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5520 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5521 #endif
5522 }
5523
5524 static __inline__ vector bool int __ATTRS_o_ai
vec_pack(vector bool long long __a,vector bool long long __b)5525 vec_pack(vector bool long long __a, vector bool long long __b) {
5526 #ifdef __LITTLE_ENDIAN__
5527 return (vector bool int)vec_perm(
5528 __a, __b,
5529 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5530 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5531 #else
5532 return (vector bool int)vec_perm(
5533 __a, __b,
5534 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5535 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5536 #endif
5537 }
5538
5539 #endif
5540
5541 /* vec_vpkuhum */
5542
5543 #define __builtin_altivec_vpkuhum vec_vpkuhum
5544
5545 static __inline__ vector signed char __ATTRS_o_ai
vec_vpkuhum(vector signed short __a,vector signed short __b)5546 vec_vpkuhum(vector signed short __a, vector signed short __b) {
5547 #ifdef __LITTLE_ENDIAN__
5548 return (vector signed char)vec_perm(
5549 __a, __b,
5550 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5551 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5552 #else
5553 return (vector signed char)vec_perm(
5554 __a, __b,
5555 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5556 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5557 #endif
5558 }
5559
5560 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vpkuhum(vector unsigned short __a,vector unsigned short __b)5561 vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) {
5562 #ifdef __LITTLE_ENDIAN__
5563 return (vector unsigned char)vec_perm(
5564 __a, __b,
5565 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5566 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5567 #else
5568 return (vector unsigned char)vec_perm(
5569 __a, __b,
5570 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5571 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5572 #endif
5573 }
5574
5575 static __inline__ vector bool char __ATTRS_o_ai
vec_vpkuhum(vector bool short __a,vector bool short __b)5576 vec_vpkuhum(vector bool short __a, vector bool short __b) {
5577 #ifdef __LITTLE_ENDIAN__
5578 return (vector bool char)vec_perm(
5579 __a, __b,
5580 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5581 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5582 #else
5583 return (vector bool char)vec_perm(
5584 __a, __b,
5585 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5586 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5587 #endif
5588 }
5589
5590 /* vec_vpkuwum */
5591
5592 #define __builtin_altivec_vpkuwum vec_vpkuwum
5593
vec_vpkuwum(vector int __a,vector int __b)5594 static __inline__ vector short __ATTRS_o_ai vec_vpkuwum(vector int __a,
5595 vector int __b) {
5596 #ifdef __LITTLE_ENDIAN__
5597 return (vector short)vec_perm(
5598 __a, __b,
5599 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5600 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5601 #else
5602 return (vector short)vec_perm(
5603 __a, __b,
5604 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5605 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5606 #endif
5607 }
5608
5609 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vpkuwum(vector unsigned int __a,vector unsigned int __b)5610 vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) {
5611 #ifdef __LITTLE_ENDIAN__
5612 return (vector unsigned short)vec_perm(
5613 __a, __b,
5614 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5615 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5616 #else
5617 return (vector unsigned short)vec_perm(
5618 __a, __b,
5619 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5620 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5621 #endif
5622 }
5623
5624 static __inline__ vector bool short __ATTRS_o_ai
vec_vpkuwum(vector bool int __a,vector bool int __b)5625 vec_vpkuwum(vector bool int __a, vector bool int __b) {
5626 #ifdef __LITTLE_ENDIAN__
5627 return (vector bool short)vec_perm(
5628 __a, __b,
5629 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5630 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5631 #else
5632 return (vector bool short)vec_perm(
5633 __a, __b,
5634 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5635 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5636 #endif
5637 }
5638
5639 /* vec_vpkudum */
5640
5641 #ifdef __POWER8_VECTOR__
5642 #define __builtin_altivec_vpkudum vec_vpkudum
5643
vec_vpkudum(vector long long __a,vector long long __b)5644 static __inline__ vector int __ATTRS_o_ai vec_vpkudum(vector long long __a,
5645 vector long long __b) {
5646 #ifdef __LITTLE_ENDIAN__
5647 return (vector int)vec_perm(
5648 __a, __b,
5649 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5650 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5651 #else
5652 return (vector int)vec_perm(
5653 __a, __b,
5654 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5655 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5656 #endif
5657 }
5658
5659 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vpkudum(vector unsigned long long __a,vector unsigned long long __b)5660 vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) {
5661 #ifdef __LITTLE_ENDIAN__
5662 return (vector unsigned int)vec_perm(
5663 __a, __b,
5664 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5665 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5666 #else
5667 return (vector unsigned int)vec_perm(
5668 __a, __b,
5669 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5670 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5671 #endif
5672 }
5673
5674 static __inline__ vector bool int __ATTRS_o_ai
vec_vpkudum(vector bool long long __a,vector bool long long __b)5675 vec_vpkudum(vector bool long long __a, vector bool long long __b) {
5676 #ifdef __LITTLE_ENDIAN__
5677 return (vector bool int)vec_perm(
5678 (vector long long)__a, (vector long long)__b,
5679 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5680 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5681 #else
5682 return (vector bool int)vec_perm(
5683 (vector long long)__a, (vector long long)__b,
5684 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5685 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5686 #endif
5687 }
5688 #endif
5689
5690 /* vec_packpx */
5691
5692 static __inline__ vector pixel __attribute__((__always_inline__))
vec_packpx(vector unsigned int __a,vector unsigned int __b)5693 vec_packpx(vector unsigned int __a, vector unsigned int __b) {
5694 #ifdef __LITTLE_ENDIAN__
5695 return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
5696 #else
5697 return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
5698 #endif
5699 }
5700
5701 /* vec_vpkpx */
5702
5703 static __inline__ vector pixel __attribute__((__always_inline__))
vec_vpkpx(vector unsigned int __a,vector unsigned int __b)5704 vec_vpkpx(vector unsigned int __a, vector unsigned int __b) {
5705 #ifdef __LITTLE_ENDIAN__
5706 return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
5707 #else
5708 return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
5709 #endif
5710 }
5711
5712 /* vec_packs */
5713
vec_packs(vector short __a,vector short __b)5714 static __inline__ vector signed char __ATTRS_o_ai vec_packs(vector short __a,
5715 vector short __b) {
5716 #ifdef __LITTLE_ENDIAN__
5717 return __builtin_altivec_vpkshss(__b, __a);
5718 #else
5719 return __builtin_altivec_vpkshss(__a, __b);
5720 #endif
5721 }
5722
5723 static __inline__ vector unsigned char __ATTRS_o_ai
vec_packs(vector unsigned short __a,vector unsigned short __b)5724 vec_packs(vector unsigned short __a, vector unsigned short __b) {
5725 #ifdef __LITTLE_ENDIAN__
5726 return __builtin_altivec_vpkuhus(__b, __a);
5727 #else
5728 return __builtin_altivec_vpkuhus(__a, __b);
5729 #endif
5730 }
5731
vec_packs(vector int __a,vector int __b)5732 static __inline__ vector signed short __ATTRS_o_ai vec_packs(vector int __a,
5733 vector int __b) {
5734 #ifdef __LITTLE_ENDIAN__
5735 return __builtin_altivec_vpkswss(__b, __a);
5736 #else
5737 return __builtin_altivec_vpkswss(__a, __b);
5738 #endif
5739 }
5740
5741 static __inline__ vector unsigned short __ATTRS_o_ai
vec_packs(vector unsigned int __a,vector unsigned int __b)5742 vec_packs(vector unsigned int __a, vector unsigned int __b) {
5743 #ifdef __LITTLE_ENDIAN__
5744 return __builtin_altivec_vpkuwus(__b, __a);
5745 #else
5746 return __builtin_altivec_vpkuwus(__a, __b);
5747 #endif
5748 }
5749
5750 #ifdef __POWER8_VECTOR__
vec_packs(vector long long __a,vector long long __b)5751 static __inline__ vector int __ATTRS_o_ai vec_packs(vector long long __a,
5752 vector long long __b) {
5753 #ifdef __LITTLE_ENDIAN__
5754 return __builtin_altivec_vpksdss(__b, __a);
5755 #else
5756 return __builtin_altivec_vpksdss(__a, __b);
5757 #endif
5758 }
5759
5760 static __inline__ vector unsigned int __ATTRS_o_ai
vec_packs(vector unsigned long long __a,vector unsigned long long __b)5761 vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
5762 #ifdef __LITTLE_ENDIAN__
5763 return __builtin_altivec_vpkudus(__b, __a);
5764 #else
5765 return __builtin_altivec_vpkudus(__a, __b);
5766 #endif
5767 }
5768 #endif
5769
5770 /* vec_vpkshss */
5771
5772 static __inline__ vector signed char __attribute__((__always_inline__))
vec_vpkshss(vector short __a,vector short __b)5773 vec_vpkshss(vector short __a, vector short __b) {
5774 #ifdef __LITTLE_ENDIAN__
5775 return __builtin_altivec_vpkshss(__b, __a);
5776 #else
5777 return __builtin_altivec_vpkshss(__a, __b);
5778 #endif
5779 }
5780
5781 /* vec_vpksdss */
5782
5783 #ifdef __POWER8_VECTOR__
vec_vpksdss(vector long long __a,vector long long __b)5784 static __inline__ vector int __ATTRS_o_ai vec_vpksdss(vector long long __a,
5785 vector long long __b) {
5786 #ifdef __LITTLE_ENDIAN__
5787 return __builtin_altivec_vpksdss(__b, __a);
5788 #else
5789 return __builtin_altivec_vpksdss(__a, __b);
5790 #endif
5791 }
5792 #endif
5793
5794 /* vec_vpkuhus */
5795
5796 static __inline__ vector unsigned char __attribute__((__always_inline__))
vec_vpkuhus(vector unsigned short __a,vector unsigned short __b)5797 vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) {
5798 #ifdef __LITTLE_ENDIAN__
5799 return __builtin_altivec_vpkuhus(__b, __a);
5800 #else
5801 return __builtin_altivec_vpkuhus(__a, __b);
5802 #endif
5803 }
5804
5805 /* vec_vpkudus */
5806
5807 #ifdef __POWER8_VECTOR__
5808 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vpkudus(vector unsigned long long __a,vector unsigned long long __b)5809 vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) {
5810 #ifdef __LITTLE_ENDIAN__
5811 return __builtin_altivec_vpkudus(__b, __a);
5812 #else
5813 return __builtin_altivec_vpkudus(__a, __b);
5814 #endif
5815 }
5816 #endif
5817
5818 /* vec_vpkswss */
5819
5820 static __inline__ vector signed short __attribute__((__always_inline__))
vec_vpkswss(vector int __a,vector int __b)5821 vec_vpkswss(vector int __a, vector int __b) {
5822 #ifdef __LITTLE_ENDIAN__
5823 return __builtin_altivec_vpkswss(__b, __a);
5824 #else
5825 return __builtin_altivec_vpkswss(__a, __b);
5826 #endif
5827 }
5828
5829 /* vec_vpkuwus */
5830
5831 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vpkuwus(vector unsigned int __a,vector unsigned int __b)5832 vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) {
5833 #ifdef __LITTLE_ENDIAN__
5834 return __builtin_altivec_vpkuwus(__b, __a);
5835 #else
5836 return __builtin_altivec_vpkuwus(__a, __b);
5837 #endif
5838 }
5839
5840 /* vec_packsu */
5841
5842 static __inline__ vector unsigned char __ATTRS_o_ai
vec_packsu(vector short __a,vector short __b)5843 vec_packsu(vector short __a, vector short __b) {
5844 #ifdef __LITTLE_ENDIAN__
5845 return __builtin_altivec_vpkshus(__b, __a);
5846 #else
5847 return __builtin_altivec_vpkshus(__a, __b);
5848 #endif
5849 }
5850
5851 static __inline__ vector unsigned char __ATTRS_o_ai
vec_packsu(vector unsigned short __a,vector unsigned short __b)5852 vec_packsu(vector unsigned short __a, vector unsigned short __b) {
5853 #ifdef __LITTLE_ENDIAN__
5854 return __builtin_altivec_vpkuhus(__b, __a);
5855 #else
5856 return __builtin_altivec_vpkuhus(__a, __b);
5857 #endif
5858 }
5859
5860 static __inline__ vector unsigned short __ATTRS_o_ai
vec_packsu(vector int __a,vector int __b)5861 vec_packsu(vector int __a, vector int __b) {
5862 #ifdef __LITTLE_ENDIAN__
5863 return __builtin_altivec_vpkswus(__b, __a);
5864 #else
5865 return __builtin_altivec_vpkswus(__a, __b);
5866 #endif
5867 }
5868
5869 static __inline__ vector unsigned short __ATTRS_o_ai
vec_packsu(vector unsigned int __a,vector unsigned int __b)5870 vec_packsu(vector unsigned int __a, vector unsigned int __b) {
5871 #ifdef __LITTLE_ENDIAN__
5872 return __builtin_altivec_vpkuwus(__b, __a);
5873 #else
5874 return __builtin_altivec_vpkuwus(__a, __b);
5875 #endif
5876 }
5877
5878 #ifdef __POWER8_VECTOR__
5879 static __inline__ vector unsigned int __ATTRS_o_ai
vec_packsu(vector long long __a,vector long long __b)5880 vec_packsu(vector long long __a, vector long long __b) {
5881 #ifdef __LITTLE_ENDIAN__
5882 return __builtin_altivec_vpksdus(__b, __a);
5883 #else
5884 return __builtin_altivec_vpksdus(__a, __b);
5885 #endif
5886 }
5887
5888 static __inline__ vector unsigned int __ATTRS_o_ai
vec_packsu(vector unsigned long long __a,vector unsigned long long __b)5889 vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
5890 #ifdef __LITTLE_ENDIAN__
5891 return __builtin_altivec_vpkudus(__b, __a);
5892 #else
5893 return __builtin_altivec_vpkudus(__a, __b);
5894 #endif
5895 }
5896 #endif
5897
5898 /* vec_vpkshus */
5899
5900 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vpkshus(vector short __a,vector short __b)5901 vec_vpkshus(vector short __a, vector short __b) {
5902 #ifdef __LITTLE_ENDIAN__
5903 return __builtin_altivec_vpkshus(__b, __a);
5904 #else
5905 return __builtin_altivec_vpkshus(__a, __b);
5906 #endif
5907 }
5908
5909 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vpkshus(vector unsigned short __a,vector unsigned short __b)5910 vec_vpkshus(vector unsigned short __a, vector unsigned short __b) {
5911 #ifdef __LITTLE_ENDIAN__
5912 return __builtin_altivec_vpkuhus(__b, __a);
5913 #else
5914 return __builtin_altivec_vpkuhus(__a, __b);
5915 #endif
5916 }
5917
5918 /* vec_vpkswus */
5919
5920 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vpkswus(vector int __a,vector int __b)5921 vec_vpkswus(vector int __a, vector int __b) {
5922 #ifdef __LITTLE_ENDIAN__
5923 return __builtin_altivec_vpkswus(__b, __a);
5924 #else
5925 return __builtin_altivec_vpkswus(__a, __b);
5926 #endif
5927 }
5928
5929 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vpkswus(vector unsigned int __a,vector unsigned int __b)5930 vec_vpkswus(vector unsigned int __a, vector unsigned int __b) {
5931 #ifdef __LITTLE_ENDIAN__
5932 return __builtin_altivec_vpkuwus(__b, __a);
5933 #else
5934 return __builtin_altivec_vpkuwus(__a, __b);
5935 #endif
5936 }
5937
5938 /* vec_vpksdus */
5939
5940 #ifdef __POWER8_VECTOR__
5941 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vpksdus(vector long long __a,vector long long __b)5942 vec_vpksdus(vector long long __a, vector long long __b) {
5943 #ifdef __LITTLE_ENDIAN__
5944 return __builtin_altivec_vpksdus(__b, __a);
5945 #else
5946 return __builtin_altivec_vpksdus(__a, __b);
5947 #endif
5948 }
5949 #endif
5950
5951 /* vec_perm */
5952
5953 // The vperm instruction is defined architecturally with a big-endian bias.
5954 // For little endian, we swap the input operands and invert the permute
5955 // control vector. Only the rightmost 5 bits matter, so we could use
5956 // a vector of all 31s instead of all 255s to perform the inversion.
5957 // However, when the PCV is not a constant, using 255 has an advantage
5958 // in that the vec_xor can be recognized as a vec_nor (and for P8 and
5959 // later, possibly a vec_nand).
5960
vec_perm(vector signed char __a,vector signed char __b,vector unsigned char __c)5961 static __inline__ vector signed char __ATTRS_o_ai vec_perm(
5962 vector signed char __a, vector signed char __b, vector unsigned char __c) {
5963 #ifdef __LITTLE_ENDIAN__
5964 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5965 255, 255, 255, 255, 255, 255, 255, 255};
5966 __d = vec_xor(__c, __d);
5967 return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b,
5968 (vector int)__a, __d);
5969 #else
5970 return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a,
5971 (vector int)__b, __c);
5972 #endif
5973 }
5974
5975 static __inline__ vector unsigned char __ATTRS_o_ai
vec_perm(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)5976 vec_perm(vector unsigned char __a, vector unsigned char __b,
5977 vector unsigned char __c) {
5978 #ifdef __LITTLE_ENDIAN__
5979 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5980 255, 255, 255, 255, 255, 255, 255, 255};
5981 __d = vec_xor(__c, __d);
5982 return (vector unsigned char)__builtin_altivec_vperm_4si(
5983 (vector int)__b, (vector int)__a, __d);
5984 #else
5985 return (vector unsigned char)__builtin_altivec_vperm_4si(
5986 (vector int)__a, (vector int)__b, __c);
5987 #endif
5988 }
5989
5990 static __inline__ vector bool char __ATTRS_o_ai
vec_perm(vector bool char __a,vector bool char __b,vector unsigned char __c)5991 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) {
5992 #ifdef __LITTLE_ENDIAN__
5993 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5994 255, 255, 255, 255, 255, 255, 255, 255};
5995 __d = vec_xor(__c, __d);
5996 return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b,
5997 (vector int)__a, __d);
5998 #else
5999 return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a,
6000 (vector int)__b, __c);
6001 #endif
6002 }
6003
vec_perm(vector signed short __a,vector signed short __b,vector unsigned char __c)6004 static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
6005 vector signed short __b,
6006 vector unsigned char __c) {
6007 #ifdef __LITTLE_ENDIAN__
6008 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6009 255, 255, 255, 255, 255, 255, 255, 255};
6010 __d = vec_xor(__c, __d);
6011 return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b,
6012 (vector int)__a, __d);
6013 #else
6014 return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a,
6015 (vector int)__b, __c);
6016 #endif
6017 }
6018
6019 static __inline__ vector unsigned short __ATTRS_o_ai
vec_perm(vector unsigned short __a,vector unsigned short __b,vector unsigned char __c)6020 vec_perm(vector unsigned short __a, vector unsigned short __b,
6021 vector unsigned char __c) {
6022 #ifdef __LITTLE_ENDIAN__
6023 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6024 255, 255, 255, 255, 255, 255, 255, 255};
6025 __d = vec_xor(__c, __d);
6026 return (vector unsigned short)__builtin_altivec_vperm_4si(
6027 (vector int)__b, (vector int)__a, __d);
6028 #else
6029 return (vector unsigned short)__builtin_altivec_vperm_4si(
6030 (vector int)__a, (vector int)__b, __c);
6031 #endif
6032 }
6033
vec_perm(vector bool short __a,vector bool short __b,vector unsigned char __c)6034 static __inline__ vector bool short __ATTRS_o_ai vec_perm(
6035 vector bool short __a, vector bool short __b, vector unsigned char __c) {
6036 #ifdef __LITTLE_ENDIAN__
6037 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6038 255, 255, 255, 255, 255, 255, 255, 255};
6039 __d = vec_xor(__c, __d);
6040 return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b,
6041 (vector int)__a, __d);
6042 #else
6043 return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a,
6044 (vector int)__b, __c);
6045 #endif
6046 }
6047
vec_perm(vector pixel __a,vector pixel __b,vector unsigned char __c)6048 static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
6049 vector pixel __b,
6050 vector unsigned char __c) {
6051 #ifdef __LITTLE_ENDIAN__
6052 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6053 255, 255, 255, 255, 255, 255, 255, 255};
6054 __d = vec_xor(__c, __d);
6055 return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b,
6056 (vector int)__a, __d);
6057 #else
6058 return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a,
6059 (vector int)__b, __c);
6060 #endif
6061 }
6062
vec_perm(vector signed int __a,vector signed int __b,vector unsigned char __c)6063 static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
6064 vector signed int __b,
6065 vector unsigned char __c) {
6066 #ifdef __LITTLE_ENDIAN__
6067 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6068 255, 255, 255, 255, 255, 255, 255, 255};
6069 __d = vec_xor(__c, __d);
6070 return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d);
6071 #else
6072 return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c);
6073 #endif
6074 }
6075
6076 static __inline__ vector unsigned int __ATTRS_o_ai
vec_perm(vector unsigned int __a,vector unsigned int __b,vector unsigned char __c)6077 vec_perm(vector unsigned int __a, vector unsigned int __b,
6078 vector unsigned char __c) {
6079 #ifdef __LITTLE_ENDIAN__
6080 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6081 255, 255, 255, 255, 255, 255, 255, 255};
6082 __d = vec_xor(__c, __d);
6083 return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b,
6084 (vector int)__a, __d);
6085 #else
6086 return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a,
6087 (vector int)__b, __c);
6088 #endif
6089 }
6090
6091 static __inline__ vector bool int __ATTRS_o_ai
vec_perm(vector bool int __a,vector bool int __b,vector unsigned char __c)6092 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
6093 #ifdef __LITTLE_ENDIAN__
6094 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6095 255, 255, 255, 255, 255, 255, 255, 255};
6096 __d = vec_xor(__c, __d);
6097 return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b,
6098 (vector int)__a, __d);
6099 #else
6100 return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a,
6101 (vector int)__b, __c);
6102 #endif
6103 }
6104
vec_perm(vector float __a,vector float __b,vector unsigned char __c)6105 static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
6106 vector float __b,
6107 vector unsigned char __c) {
6108 #ifdef __LITTLE_ENDIAN__
6109 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6110 255, 255, 255, 255, 255, 255, 255, 255};
6111 __d = vec_xor(__c, __d);
6112 return (vector float)__builtin_altivec_vperm_4si((vector int)__b,
6113 (vector int)__a, __d);
6114 #else
6115 return (vector float)__builtin_altivec_vperm_4si((vector int)__a,
6116 (vector int)__b, __c);
6117 #endif
6118 }
6119
6120 #ifdef __VSX__
6121 static __inline__ vector long long __ATTRS_o_ai
vec_perm(vector signed long long __a,vector signed long long __b,vector unsigned char __c)6122 vec_perm(vector signed long long __a, vector signed long long __b,
6123 vector unsigned char __c) {
6124 #ifdef __LITTLE_ENDIAN__
6125 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6126 255, 255, 255, 255, 255, 255, 255, 255};
6127 __d = vec_xor(__c, __d);
6128 return (vector signed long long)__builtin_altivec_vperm_4si(
6129 (vector int)__b, (vector int)__a, __d);
6130 #else
6131 return (vector signed long long)__builtin_altivec_vperm_4si(
6132 (vector int)__a, (vector int)__b, __c);
6133 #endif
6134 }
6135
6136 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_perm(vector unsigned long long __a,vector unsigned long long __b,vector unsigned char __c)6137 vec_perm(vector unsigned long long __a, vector unsigned long long __b,
6138 vector unsigned char __c) {
6139 #ifdef __LITTLE_ENDIAN__
6140 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6141 255, 255, 255, 255, 255, 255, 255, 255};
6142 __d = vec_xor(__c, __d);
6143 return (vector unsigned long long)__builtin_altivec_vperm_4si(
6144 (vector int)__b, (vector int)__a, __d);
6145 #else
6146 return (vector unsigned long long)__builtin_altivec_vperm_4si(
6147 (vector int)__a, (vector int)__b, __c);
6148 #endif
6149 }
6150
6151 static __inline__ vector bool long long __ATTRS_o_ai
vec_perm(vector bool long long __a,vector bool long long __b,vector unsigned char __c)6152 vec_perm(vector bool long long __a, vector bool long long __b,
6153 vector unsigned char __c) {
6154 #ifdef __LITTLE_ENDIAN__
6155 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6156 255, 255, 255, 255, 255, 255, 255, 255};
6157 __d = vec_xor(__c, __d);
6158 return (vector bool long long)__builtin_altivec_vperm_4si(
6159 (vector int)__b, (vector int)__a, __d);
6160 #else
6161 return (vector bool long long)__builtin_altivec_vperm_4si(
6162 (vector int)__a, (vector int)__b, __c);
6163 #endif
6164 }
6165
6166 static __inline__ vector double __ATTRS_o_ai
vec_perm(vector double __a,vector double __b,vector unsigned char __c)6167 vec_perm(vector double __a, vector double __b, vector unsigned char __c) {
6168 #ifdef __LITTLE_ENDIAN__
6169 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6170 255, 255, 255, 255, 255, 255, 255, 255};
6171 __d = vec_xor(__c, __d);
6172 return (vector double)__builtin_altivec_vperm_4si((vector int)__b,
6173 (vector int)__a, __d);
6174 #else
6175 return (vector double)__builtin_altivec_vperm_4si((vector int)__a,
6176 (vector int)__b, __c);
6177 #endif
6178 }
6179 #endif
6180
6181 /* vec_vperm */
6182
vec_vperm(vector signed char __a,vector signed char __b,vector unsigned char __c)6183 static __inline__ vector signed char __ATTRS_o_ai vec_vperm(
6184 vector signed char __a, vector signed char __b, vector unsigned char __c) {
6185 return vec_perm(__a, __b, __c);
6186 }
6187
6188 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vperm(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6189 vec_vperm(vector unsigned char __a, vector unsigned char __b,
6190 vector unsigned char __c) {
6191 return vec_perm(__a, __b, __c);
6192 }
6193
vec_vperm(vector bool char __a,vector bool char __b,vector unsigned char __c)6194 static __inline__ vector bool char __ATTRS_o_ai vec_vperm(
6195 vector bool char __a, vector bool char __b, vector unsigned char __c) {
6196 return vec_perm(__a, __b, __c);
6197 }
6198
6199 static __inline__ vector short __ATTRS_o_ai
vec_vperm(vector short __a,vector short __b,vector unsigned char __c)6200 vec_vperm(vector short __a, vector short __b, vector unsigned char __c) {
6201 return vec_perm(__a, __b, __c);
6202 }
6203
6204 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vperm(vector unsigned short __a,vector unsigned short __b,vector unsigned char __c)6205 vec_vperm(vector unsigned short __a, vector unsigned short __b,
6206 vector unsigned char __c) {
6207 return vec_perm(__a, __b, __c);
6208 }
6209
vec_vperm(vector bool short __a,vector bool short __b,vector unsigned char __c)6210 static __inline__ vector bool short __ATTRS_o_ai vec_vperm(
6211 vector bool short __a, vector bool short __b, vector unsigned char __c) {
6212 return vec_perm(__a, __b, __c);
6213 }
6214
6215 static __inline__ vector pixel __ATTRS_o_ai
vec_vperm(vector pixel __a,vector pixel __b,vector unsigned char __c)6216 vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) {
6217 return vec_perm(__a, __b, __c);
6218 }
6219
vec_vperm(vector int __a,vector int __b,vector unsigned char __c)6220 static __inline__ vector int __ATTRS_o_ai vec_vperm(vector int __a,
6221 vector int __b,
6222 vector unsigned char __c) {
6223 return vec_perm(__a, __b, __c);
6224 }
6225
6226 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vperm(vector unsigned int __a,vector unsigned int __b,vector unsigned char __c)6227 vec_vperm(vector unsigned int __a, vector unsigned int __b,
6228 vector unsigned char __c) {
6229 return vec_perm(__a, __b, __c);
6230 }
6231
6232 static __inline__ vector bool int __ATTRS_o_ai
vec_vperm(vector bool int __a,vector bool int __b,vector unsigned char __c)6233 vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
6234 return vec_perm(__a, __b, __c);
6235 }
6236
6237 static __inline__ vector float __ATTRS_o_ai
vec_vperm(vector float __a,vector float __b,vector unsigned char __c)6238 vec_vperm(vector float __a, vector float __b, vector unsigned char __c) {
6239 return vec_perm(__a, __b, __c);
6240 }
6241
6242 #ifdef __VSX__
vec_vperm(vector long long __a,vector long long __b,vector unsigned char __c)6243 static __inline__ vector long long __ATTRS_o_ai vec_vperm(
6244 vector long long __a, vector long long __b, vector unsigned char __c) {
6245 return vec_perm(__a, __b, __c);
6246 }
6247
6248 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vperm(vector unsigned long long __a,vector unsigned long long __b,vector unsigned char __c)6249 vec_vperm(vector unsigned long long __a, vector unsigned long long __b,
6250 vector unsigned char __c) {
6251 return vec_perm(__a, __b, __c);
6252 }
6253
6254 static __inline__ vector double __ATTRS_o_ai
vec_vperm(vector double __a,vector double __b,vector unsigned char __c)6255 vec_vperm(vector double __a, vector double __b, vector unsigned char __c) {
6256 return vec_perm(__a, __b, __c);
6257 }
6258 #endif
6259
6260 /* vec_re */
6261
vec_re(vector float __a)6262 static __inline__ vector float __ATTRS_o_ai vec_re(vector float __a) {
6263 #ifdef __VSX__
6264 return __builtin_vsx_xvresp(__a);
6265 #else
6266 return __builtin_altivec_vrefp(__a);
6267 #endif
6268 }
6269
6270 #ifdef __VSX__
vec_re(vector double __a)6271 static __inline__ vector double __ATTRS_o_ai vec_re(vector double __a) {
6272 return __builtin_vsx_xvredp(__a);
6273 }
6274 #endif
6275
6276 /* vec_vrefp */
6277
6278 static __inline__ vector float __attribute__((__always_inline__))
vec_vrefp(vector float __a)6279 vec_vrefp(vector float __a) {
6280 return __builtin_altivec_vrefp(__a);
6281 }
6282
6283 /* vec_rl */
6284
6285 static __inline__ vector signed char __ATTRS_o_ai
vec_rl(vector signed char __a,vector unsigned char __b)6286 vec_rl(vector signed char __a, vector unsigned char __b) {
6287 return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
6288 }
6289
6290 static __inline__ vector unsigned char __ATTRS_o_ai
vec_rl(vector unsigned char __a,vector unsigned char __b)6291 vec_rl(vector unsigned char __a, vector unsigned char __b) {
6292 return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
6293 }
6294
vec_rl(vector short __a,vector unsigned short __b)6295 static __inline__ vector short __ATTRS_o_ai vec_rl(vector short __a,
6296 vector unsigned short __b) {
6297 return __builtin_altivec_vrlh(__a, __b);
6298 }
6299
6300 static __inline__ vector unsigned short __ATTRS_o_ai
vec_rl(vector unsigned short __a,vector unsigned short __b)6301 vec_rl(vector unsigned short __a, vector unsigned short __b) {
6302 return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
6303 }
6304
vec_rl(vector int __a,vector unsigned int __b)6305 static __inline__ vector int __ATTRS_o_ai vec_rl(vector int __a,
6306 vector unsigned int __b) {
6307 return __builtin_altivec_vrlw(__a, __b);
6308 }
6309
6310 static __inline__ vector unsigned int __ATTRS_o_ai
vec_rl(vector unsigned int __a,vector unsigned int __b)6311 vec_rl(vector unsigned int __a, vector unsigned int __b) {
6312 return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
6313 }
6314
6315 #ifdef __POWER8_VECTOR__
6316 static __inline__ vector signed long long __ATTRS_o_ai
vec_rl(vector signed long long __a,vector unsigned long long __b)6317 vec_rl(vector signed long long __a, vector unsigned long long __b) {
6318 return __builtin_altivec_vrld(__a, __b);
6319 }
6320
6321 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_rl(vector unsigned long long __a,vector unsigned long long __b)6322 vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
6323 return __builtin_altivec_vrld(__a, __b);
6324 }
6325 #endif
6326
6327 /* vec_vrlb */
6328
6329 static __inline__ vector signed char __ATTRS_o_ai
vec_vrlb(vector signed char __a,vector unsigned char __b)6330 vec_vrlb(vector signed char __a, vector unsigned char __b) {
6331 return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
6332 }
6333
6334 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vrlb(vector unsigned char __a,vector unsigned char __b)6335 vec_vrlb(vector unsigned char __a, vector unsigned char __b) {
6336 return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
6337 }
6338
6339 /* vec_vrlh */
6340
6341 static __inline__ vector short __ATTRS_o_ai
vec_vrlh(vector short __a,vector unsigned short __b)6342 vec_vrlh(vector short __a, vector unsigned short __b) {
6343 return __builtin_altivec_vrlh(__a, __b);
6344 }
6345
6346 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vrlh(vector unsigned short __a,vector unsigned short __b)6347 vec_vrlh(vector unsigned short __a, vector unsigned short __b) {
6348 return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
6349 }
6350
6351 /* vec_vrlw */
6352
vec_vrlw(vector int __a,vector unsigned int __b)6353 static __inline__ vector int __ATTRS_o_ai vec_vrlw(vector int __a,
6354 vector unsigned int __b) {
6355 return __builtin_altivec_vrlw(__a, __b);
6356 }
6357
6358 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vrlw(vector unsigned int __a,vector unsigned int __b)6359 vec_vrlw(vector unsigned int __a, vector unsigned int __b) {
6360 return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
6361 }
6362
6363 /* vec_round */
6364
vec_round(vector float __a)6365 static __inline__ vector float __ATTRS_o_ai vec_round(vector float __a) {
6366 #ifdef __VSX__
6367 return __builtin_vsx_xvrspi(__a);
6368 #else
6369 return __builtin_altivec_vrfin(__a);
6370 #endif
6371 }
6372
6373 #ifdef __VSX__
vec_round(vector double __a)6374 static __inline__ vector double __ATTRS_o_ai vec_round(vector double __a) {
6375 return __builtin_vsx_xvrdpi(__a);
6376 }
6377
6378 /* vec_rint */
6379
vec_rint(vector float __a)6380 static __inline__ vector float __ATTRS_o_ai vec_rint(vector float __a) {
6381 return __builtin_vsx_xvrspic(__a);
6382 }
6383
vec_rint(vector double __a)6384 static __inline__ vector double __ATTRS_o_ai vec_rint(vector double __a) {
6385 return __builtin_vsx_xvrdpic(__a);
6386 }
6387
6388 /* vec_nearbyint */
6389
vec_nearbyint(vector float __a)6390 static __inline__ vector float __ATTRS_o_ai vec_nearbyint(vector float __a) {
6391 return __builtin_vsx_xvrspi(__a);
6392 }
6393
vec_nearbyint(vector double __a)6394 static __inline__ vector double __ATTRS_o_ai vec_nearbyint(vector double __a) {
6395 return __builtin_vsx_xvrdpi(__a);
6396 }
6397 #endif
6398
6399 /* vec_vrfin */
6400
6401 static __inline__ vector float __attribute__((__always_inline__))
vec_vrfin(vector float __a)6402 vec_vrfin(vector float __a) {
6403 return __builtin_altivec_vrfin(__a);
6404 }
6405
6406 /* vec_sqrt */
6407
6408 #ifdef __VSX__
vec_sqrt(vector float __a)6409 static __inline__ vector float __ATTRS_o_ai vec_sqrt(vector float __a) {
6410 return __builtin_vsx_xvsqrtsp(__a);
6411 }
6412
vec_sqrt(vector double __a)6413 static __inline__ vector double __ATTRS_o_ai vec_sqrt(vector double __a) {
6414 return __builtin_vsx_xvsqrtdp(__a);
6415 }
6416 #endif
6417
6418 /* vec_rsqrte */
6419
vec_rsqrte(vector float __a)6420 static __inline__ vector float __ATTRS_o_ai vec_rsqrte(vector float __a) {
6421 #ifdef __VSX__
6422 return __builtin_vsx_xvrsqrtesp(__a);
6423 #else
6424 return __builtin_altivec_vrsqrtefp(__a);
6425 #endif
6426 }
6427
6428 #ifdef __VSX__
vec_rsqrte(vector double __a)6429 static __inline__ vector double __ATTRS_o_ai vec_rsqrte(vector double __a) {
6430 return __builtin_vsx_xvrsqrtedp(__a);
6431 }
6432 #endif
6433
6434 /* vec_vrsqrtefp */
6435
6436 static __inline__ __vector float __attribute__((__always_inline__))
vec_vrsqrtefp(vector float __a)6437 vec_vrsqrtefp(vector float __a) {
6438 return __builtin_altivec_vrsqrtefp(__a);
6439 }
6440
6441 /* vec_sel */
6442
6443 #define __builtin_altivec_vsel_4si vec_sel
6444
vec_sel(vector signed char __a,vector signed char __b,vector unsigned char __c)6445 static __inline__ vector signed char __ATTRS_o_ai vec_sel(
6446 vector signed char __a, vector signed char __b, vector unsigned char __c) {
6447 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6448 }
6449
6450 static __inline__ vector signed char __ATTRS_o_ai
vec_sel(vector signed char __a,vector signed char __b,vector bool char __c)6451 vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
6452 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6453 }
6454
6455 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sel(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6456 vec_sel(vector unsigned char __a, vector unsigned char __b,
6457 vector unsigned char __c) {
6458 return (__a & ~__c) | (__b & __c);
6459 }
6460
vec_sel(vector unsigned char __a,vector unsigned char __b,vector bool char __c)6461 static __inline__ vector unsigned char __ATTRS_o_ai vec_sel(
6462 vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
6463 return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
6464 }
6465
6466 static __inline__ vector bool char __ATTRS_o_ai
vec_sel(vector bool char __a,vector bool char __b,vector unsigned char __c)6467 vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
6468 return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
6469 }
6470
vec_sel(vector bool char __a,vector bool char __b,vector bool char __c)6471 static __inline__ vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
6472 vector bool char __b,
6473 vector bool char __c) {
6474 return (__a & ~__c) | (__b & __c);
6475 }
6476
vec_sel(vector short __a,vector short __b,vector unsigned short __c)6477 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
6478 vector short __b,
6479 vector unsigned short __c) {
6480 return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6481 }
6482
vec_sel(vector short __a,vector short __b,vector bool short __c)6483 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
6484 vector short __b,
6485 vector bool short __c) {
6486 return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6487 }
6488
6489 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sel(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)6490 vec_sel(vector unsigned short __a, vector unsigned short __b,
6491 vector unsigned short __c) {
6492 return (__a & ~__c) | (__b & __c);
6493 }
6494
6495 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sel(vector unsigned short __a,vector unsigned short __b,vector bool short __c)6496 vec_sel(vector unsigned short __a, vector unsigned short __b,
6497 vector bool short __c) {
6498 return (__a & ~(vector unsigned short)__c) |
6499 (__b & (vector unsigned short)__c);
6500 }
6501
vec_sel(vector bool short __a,vector bool short __b,vector unsigned short __c)6502 static __inline__ vector bool short __ATTRS_o_ai vec_sel(
6503 vector bool short __a, vector bool short __b, vector unsigned short __c) {
6504 return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
6505 }
6506
6507 static __inline__ vector bool short __ATTRS_o_ai
vec_sel(vector bool short __a,vector bool short __b,vector bool short __c)6508 vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
6509 return (__a & ~__c) | (__b & __c);
6510 }
6511
vec_sel(vector int __a,vector int __b,vector unsigned int __c)6512 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
6513 vector int __b,
6514 vector unsigned int __c) {
6515 return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6516 }
6517
vec_sel(vector int __a,vector int __b,vector bool int __c)6518 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
6519 vector int __b,
6520 vector bool int __c) {
6521 return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6522 }
6523
vec_sel(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)6524 static __inline__ vector unsigned int __ATTRS_o_ai vec_sel(
6525 vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
6526 return (__a & ~__c) | (__b & __c);
6527 }
6528
6529 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sel(vector unsigned int __a,vector unsigned int __b,vector bool int __c)6530 vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
6531 return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
6532 }
6533
6534 static __inline__ vector bool int __ATTRS_o_ai
vec_sel(vector bool int __a,vector bool int __b,vector unsigned int __c)6535 vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
6536 return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
6537 }
6538
vec_sel(vector bool int __a,vector bool int __b,vector bool int __c)6539 static __inline__ vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
6540 vector bool int __b,
6541 vector bool int __c) {
6542 return (__a & ~__c) | (__b & __c);
6543 }
6544
vec_sel(vector float __a,vector float __b,vector unsigned int __c)6545 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
6546 vector float __b,
6547 vector unsigned int __c) {
6548 vector int __res = ((vector int)__a & ~(vector int)__c) |
6549 ((vector int)__b & (vector int)__c);
6550 return (vector float)__res;
6551 }
6552
vec_sel(vector float __a,vector float __b,vector bool int __c)6553 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
6554 vector float __b,
6555 vector bool int __c) {
6556 vector int __res = ((vector int)__a & ~(vector int)__c) |
6557 ((vector int)__b & (vector int)__c);
6558 return (vector float)__res;
6559 }
6560
6561 #ifdef __VSX__
6562 static __inline__ vector double __ATTRS_o_ai
vec_sel(vector double __a,vector double __b,vector bool long long __c)6563 vec_sel(vector double __a, vector double __b, vector bool long long __c) {
6564 vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
6565 ((vector long long)__b & (vector long long)__c);
6566 return (vector double)__res;
6567 }
6568
6569 static __inline__ vector double __ATTRS_o_ai
vec_sel(vector double __a,vector double __b,vector unsigned long long __c)6570 vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
6571 vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
6572 ((vector long long)__b & (vector long long)__c);
6573 return (vector double)__res;
6574 }
6575 #endif
6576
6577 /* vec_vsel */
6578
vec_vsel(vector signed char __a,vector signed char __b,vector unsigned char __c)6579 static __inline__ vector signed char __ATTRS_o_ai vec_vsel(
6580 vector signed char __a, vector signed char __b, vector unsigned char __c) {
6581 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6582 }
6583
6584 static __inline__ vector signed char __ATTRS_o_ai
vec_vsel(vector signed char __a,vector signed char __b,vector bool char __c)6585 vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) {
6586 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6587 }
6588
6589 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsel(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6590 vec_vsel(vector unsigned char __a, vector unsigned char __b,
6591 vector unsigned char __c) {
6592 return (__a & ~__c) | (__b & __c);
6593 }
6594
vec_vsel(vector unsigned char __a,vector unsigned char __b,vector bool char __c)6595 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsel(
6596 vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
6597 return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
6598 }
6599
6600 static __inline__ vector bool char __ATTRS_o_ai
vec_vsel(vector bool char __a,vector bool char __b,vector unsigned char __c)6601 vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
6602 return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
6603 }
6604
vec_vsel(vector bool char __a,vector bool char __b,vector bool char __c)6605 static __inline__ vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
6606 vector bool char __b,
6607 vector bool char __c) {
6608 return (__a & ~__c) | (__b & __c);
6609 }
6610
6611 static __inline__ vector short __ATTRS_o_ai
vec_vsel(vector short __a,vector short __b,vector unsigned short __c)6612 vec_vsel(vector short __a, vector short __b, vector unsigned short __c) {
6613 return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6614 }
6615
vec_vsel(vector short __a,vector short __b,vector bool short __c)6616 static __inline__ vector short __ATTRS_o_ai vec_vsel(vector short __a,
6617 vector short __b,
6618 vector bool short __c) {
6619 return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6620 }
6621
6622 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsel(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)6623 vec_vsel(vector unsigned short __a, vector unsigned short __b,
6624 vector unsigned short __c) {
6625 return (__a & ~__c) | (__b & __c);
6626 }
6627
6628 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsel(vector unsigned short __a,vector unsigned short __b,vector bool short __c)6629 vec_vsel(vector unsigned short __a, vector unsigned short __b,
6630 vector bool short __c) {
6631 return (__a & ~(vector unsigned short)__c) |
6632 (__b & (vector unsigned short)__c);
6633 }
6634
vec_vsel(vector bool short __a,vector bool short __b,vector unsigned short __c)6635 static __inline__ vector bool short __ATTRS_o_ai vec_vsel(
6636 vector bool short __a, vector bool short __b, vector unsigned short __c) {
6637 return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
6638 }
6639
6640 static __inline__ vector bool short __ATTRS_o_ai
vec_vsel(vector bool short __a,vector bool short __b,vector bool short __c)6641 vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) {
6642 return (__a & ~__c) | (__b & __c);
6643 }
6644
vec_vsel(vector int __a,vector int __b,vector unsigned int __c)6645 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
6646 vector int __b,
6647 vector unsigned int __c) {
6648 return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6649 }
6650
vec_vsel(vector int __a,vector int __b,vector bool int __c)6651 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
6652 vector int __b,
6653 vector bool int __c) {
6654 return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6655 }
6656
vec_vsel(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)6657 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
6658 vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
6659 return (__a & ~__c) | (__b & __c);
6660 }
6661
vec_vsel(vector unsigned int __a,vector unsigned int __b,vector bool int __c)6662 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
6663 vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
6664 return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
6665 }
6666
6667 static __inline__ vector bool int __ATTRS_o_ai
vec_vsel(vector bool int __a,vector bool int __b,vector unsigned int __c)6668 vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
6669 return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
6670 }
6671
vec_vsel(vector bool int __a,vector bool int __b,vector bool int __c)6672 static __inline__ vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
6673 vector bool int __b,
6674 vector bool int __c) {
6675 return (__a & ~__c) | (__b & __c);
6676 }
6677
vec_vsel(vector float __a,vector float __b,vector unsigned int __c)6678 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
6679 vector float __b,
6680 vector unsigned int __c) {
6681 vector int __res = ((vector int)__a & ~(vector int)__c) |
6682 ((vector int)__b & (vector int)__c);
6683 return (vector float)__res;
6684 }
6685
vec_vsel(vector float __a,vector float __b,vector bool int __c)6686 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
6687 vector float __b,
6688 vector bool int __c) {
6689 vector int __res = ((vector int)__a & ~(vector int)__c) |
6690 ((vector int)__b & (vector int)__c);
6691 return (vector float)__res;
6692 }
6693
6694 /* vec_sl */
6695
6696 static __inline__ vector signed char __ATTRS_o_ai
vec_sl(vector signed char __a,vector unsigned char __b)6697 vec_sl(vector signed char __a, vector unsigned char __b) {
6698 return __a << (vector signed char)__b;
6699 }
6700
6701 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sl(vector unsigned char __a,vector unsigned char __b)6702 vec_sl(vector unsigned char __a, vector unsigned char __b) {
6703 return __a << __b;
6704 }
6705
vec_sl(vector short __a,vector unsigned short __b)6706 static __inline__ vector short __ATTRS_o_ai vec_sl(vector short __a,
6707 vector unsigned short __b) {
6708 return __a << (vector short)__b;
6709 }
6710
6711 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sl(vector unsigned short __a,vector unsigned short __b)6712 vec_sl(vector unsigned short __a, vector unsigned short __b) {
6713 return __a << __b;
6714 }
6715
vec_sl(vector int __a,vector unsigned int __b)6716 static __inline__ vector int __ATTRS_o_ai vec_sl(vector int __a,
6717 vector unsigned int __b) {
6718 return __a << (vector int)__b;
6719 }
6720
6721 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sl(vector unsigned int __a,vector unsigned int __b)6722 vec_sl(vector unsigned int __a, vector unsigned int __b) {
6723 return __a << __b;
6724 }
6725
6726 #ifdef __POWER8_VECTOR__
6727 static __inline__ vector signed long long __ATTRS_o_ai
vec_sl(vector signed long long __a,vector unsigned long long __b)6728 vec_sl(vector signed long long __a, vector unsigned long long __b) {
6729 return __a << (vector long long)__b;
6730 }
6731
6732 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sl(vector unsigned long long __a,vector unsigned long long __b)6733 vec_sl(vector unsigned long long __a, vector unsigned long long __b) {
6734 return __a << __b;
6735 }
6736 #endif
6737
6738 /* vec_vslb */
6739
6740 #define __builtin_altivec_vslb vec_vslb
6741
6742 static __inline__ vector signed char __ATTRS_o_ai
vec_vslb(vector signed char __a,vector unsigned char __b)6743 vec_vslb(vector signed char __a, vector unsigned char __b) {
6744 return vec_sl(__a, __b);
6745 }
6746
6747 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vslb(vector unsigned char __a,vector unsigned char __b)6748 vec_vslb(vector unsigned char __a, vector unsigned char __b) {
6749 return vec_sl(__a, __b);
6750 }
6751
6752 /* vec_vslh */
6753
6754 #define __builtin_altivec_vslh vec_vslh
6755
6756 static __inline__ vector short __ATTRS_o_ai
vec_vslh(vector short __a,vector unsigned short __b)6757 vec_vslh(vector short __a, vector unsigned short __b) {
6758 return vec_sl(__a, __b);
6759 }
6760
6761 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vslh(vector unsigned short __a,vector unsigned short __b)6762 vec_vslh(vector unsigned short __a, vector unsigned short __b) {
6763 return vec_sl(__a, __b);
6764 }
6765
6766 /* vec_vslw */
6767
6768 #define __builtin_altivec_vslw vec_vslw
6769
vec_vslw(vector int __a,vector unsigned int __b)6770 static __inline__ vector int __ATTRS_o_ai vec_vslw(vector int __a,
6771 vector unsigned int __b) {
6772 return vec_sl(__a, __b);
6773 }
6774
6775 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vslw(vector unsigned int __a,vector unsigned int __b)6776 vec_vslw(vector unsigned int __a, vector unsigned int __b) {
6777 return vec_sl(__a, __b);
6778 }
6779
6780 /* vec_sld */
6781
6782 #define __builtin_altivec_vsldoi_4si vec_sld
6783
vec_sld(vector signed char __a,vector signed char __b,unsigned const int __c)6784 static __inline__ vector signed char __ATTRS_o_ai vec_sld(
6785 vector signed char __a, vector signed char __b, unsigned const int __c) {
6786 unsigned char __d = __c & 0x0F;
6787 #ifdef __LITTLE_ENDIAN__
6788 return vec_perm(
6789 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6790 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6791 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6792 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6793 #else
6794 return vec_perm(
6795 __a, __b,
6796 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6797 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6798 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6799 #endif
6800 }
6801
6802 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sld(vector unsigned char __a,vector unsigned char __b,unsigned const int __c)6803 vec_sld(vector unsigned char __a, vector unsigned char __b,
6804 unsigned const int __c) {
6805 unsigned char __d = __c & 0x0F;
6806 #ifdef __LITTLE_ENDIAN__
6807 return vec_perm(
6808 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6809 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6810 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6811 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6812 #else
6813 return vec_perm(
6814 __a, __b,
6815 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6816 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6817 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6818 #endif
6819 }
6820
6821 static __inline__ vector bool char __ATTRS_o_ai
vec_sld(vector bool char __a,vector bool char __b,unsigned const int __c)6822 vec_sld(vector bool char __a, vector bool char __b, unsigned const int __c) {
6823 unsigned char __d = __c & 0x0F;
6824 #ifdef __LITTLE_ENDIAN__
6825 return vec_perm(
6826 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6827 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6828 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6829 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6830 #else
6831 return vec_perm(
6832 __a, __b,
6833 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6834 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6835 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6836 #endif
6837 }
6838
vec_sld(vector signed short __a,vector signed short __b,unsigned const int __c)6839 static __inline__ vector signed short __ATTRS_o_ai vec_sld(
6840 vector signed short __a, vector signed short __b, unsigned const int __c) {
6841 unsigned char __d = __c & 0x0F;
6842 #ifdef __LITTLE_ENDIAN__
6843 return vec_perm(
6844 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6845 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6846 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6847 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6848 #else
6849 return vec_perm(
6850 __a, __b,
6851 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6852 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6853 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6854 #endif
6855 }
6856
6857 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sld(vector unsigned short __a,vector unsigned short __b,unsigned const int __c)6858 vec_sld(vector unsigned short __a, vector unsigned short __b,
6859 unsigned const int __c) {
6860 unsigned char __d = __c & 0x0F;
6861 #ifdef __LITTLE_ENDIAN__
6862 return vec_perm(
6863 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6864 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6865 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6866 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6867 #else
6868 return vec_perm(
6869 __a, __b,
6870 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6871 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6872 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6873 #endif
6874 }
6875
6876 static __inline__ vector bool short __ATTRS_o_ai
vec_sld(vector bool short __a,vector bool short __b,unsigned const int __c)6877 vec_sld(vector bool short __a, vector bool short __b, unsigned const int __c) {
6878 unsigned char __d = __c & 0x0F;
6879 #ifdef __LITTLE_ENDIAN__
6880 return vec_perm(
6881 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6882 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6883 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6884 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6885 #else
6886 return vec_perm(
6887 __a, __b,
6888 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6889 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6890 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6891 #endif
6892 }
6893
vec_sld(vector pixel __a,vector pixel __b,unsigned const int __c)6894 static __inline__ vector pixel __ATTRS_o_ai vec_sld(vector pixel __a,
6895 vector pixel __b,
6896 unsigned const int __c) {
6897 unsigned char __d = __c & 0x0F;
6898 #ifdef __LITTLE_ENDIAN__
6899 return vec_perm(
6900 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6901 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6902 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6903 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6904 #else
6905 return vec_perm(
6906 __a, __b,
6907 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6908 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6909 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6910 #endif
6911 }
6912
6913 static __inline__ vector signed int __ATTRS_o_ai
vec_sld(vector signed int __a,vector signed int __b,unsigned const int __c)6914 vec_sld(vector signed int __a, vector signed int __b, unsigned const int __c) {
6915 unsigned char __d = __c & 0x0F;
6916 #ifdef __LITTLE_ENDIAN__
6917 return vec_perm(
6918 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6919 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6920 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6921 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6922 #else
6923 return vec_perm(
6924 __a, __b,
6925 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6926 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6927 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6928 #endif
6929 }
6930
vec_sld(vector unsigned int __a,vector unsigned int __b,unsigned const int __c)6931 static __inline__ vector unsigned int __ATTRS_o_ai vec_sld(
6932 vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
6933 unsigned char __d = __c & 0x0F;
6934 #ifdef __LITTLE_ENDIAN__
6935 return vec_perm(
6936 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6937 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6938 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6939 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6940 #else
6941 return vec_perm(
6942 __a, __b,
6943 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6944 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6945 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6946 #endif
6947 }
6948
vec_sld(vector bool int __a,vector bool int __b,unsigned const int __c)6949 static __inline__ vector bool int __ATTRS_o_ai vec_sld(vector bool int __a,
6950 vector bool int __b,
6951 unsigned const int __c) {
6952 unsigned char __d = __c & 0x0F;
6953 #ifdef __LITTLE_ENDIAN__
6954 return vec_perm(
6955 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6956 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6957 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6958 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6959 #else
6960 return vec_perm(
6961 __a, __b,
6962 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6963 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6964 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6965 #endif
6966 }
6967
vec_sld(vector float __a,vector float __b,unsigned const int __c)6968 static __inline__ vector float __ATTRS_o_ai vec_sld(vector float __a,
6969 vector float __b,
6970 unsigned const int __c) {
6971 unsigned char __d = __c & 0x0F;
6972 #ifdef __LITTLE_ENDIAN__
6973 return vec_perm(
6974 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6975 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6976 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6977 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6978 #else
6979 return vec_perm(
6980 __a, __b,
6981 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6982 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6983 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6984 #endif
6985 }
6986
6987 /* vec_vsldoi */
6988
6989 static __inline__ vector signed char __ATTRS_o_ai
vec_vsldoi(vector signed char __a,vector signed char __b,unsigned char __c)6990 vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) {
6991 unsigned char __d = __c & 0x0F;
6992 #ifdef __LITTLE_ENDIAN__
6993 return vec_perm(
6994 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6995 20 - __d, 21 - __d, 22 - __d, 23 - __d,
6996 24 - __d, 25 - __d, 26 - __d, 27 - __d,
6997 28 - __d, 29 - __d, 30 - __d, 31 - __d));
6998 #else
6999 return vec_perm(
7000 __a, __b,
7001 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7002 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7003 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7004 #endif
7005 }
7006
vec_vsldoi(vector unsigned char __a,vector unsigned char __b,unsigned char __c)7007 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsldoi(
7008 vector unsigned char __a, vector unsigned char __b, unsigned char __c) {
7009 unsigned char __d = __c & 0x0F;
7010 #ifdef __LITTLE_ENDIAN__
7011 return vec_perm(
7012 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7013 20 - __d, 21 - __d, 22 - __d, 23 - __d,
7014 24 - __d, 25 - __d, 26 - __d, 27 - __d,
7015 28 - __d, 29 - __d, 30 - __d, 31 - __d));
7016 #else
7017 return vec_perm(
7018 __a, __b,
7019 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7020 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7021 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7022 #endif
7023 }
7024
vec_vsldoi(vector short __a,vector short __b,unsigned char __c)7025 static __inline__ vector short __ATTRS_o_ai vec_vsldoi(vector short __a,
7026 vector short __b,
7027 unsigned char __c) {
7028 unsigned char __d = __c & 0x0F;
7029 #ifdef __LITTLE_ENDIAN__
7030 return vec_perm(
7031 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7032 20 - __d, 21 - __d, 22 - __d, 23 - __d,
7033 24 - __d, 25 - __d, 26 - __d, 27 - __d,
7034 28 - __d, 29 - __d, 30 - __d, 31 - __d));
7035 #else
7036 return vec_perm(
7037 __a, __b,
7038 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7039 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7040 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7041 #endif
7042 }
7043
vec_vsldoi(vector unsigned short __a,vector unsigned short __b,unsigned char __c)7044 static __inline__ vector unsigned short __ATTRS_o_ai vec_vsldoi(
7045 vector unsigned short __a, vector unsigned short __b, unsigned char __c) {
7046 unsigned char __d = __c & 0x0F;
7047 #ifdef __LITTLE_ENDIAN__
7048 return vec_perm(
7049 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7050 20 - __d, 21 - __d, 22 - __d, 23 - __d,
7051 24 - __d, 25 - __d, 26 - __d, 27 - __d,
7052 28 - __d, 29 - __d, 30 - __d, 31 - __d));
7053 #else
7054 return vec_perm(
7055 __a, __b,
7056 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7057 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7058 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7059 #endif
7060 }
7061
vec_vsldoi(vector pixel __a,vector pixel __b,unsigned char __c)7062 static __inline__ vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a,
7063 vector pixel __b,
7064 unsigned char __c) {
7065 unsigned char __d = __c & 0x0F;
7066 #ifdef __LITTLE_ENDIAN__
7067 return vec_perm(
7068 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7069 20 - __d, 21 - __d, 22 - __d, 23 - __d,
7070 24 - __d, 25 - __d, 26 - __d, 27 - __d,
7071 28 - __d, 29 - __d, 30 - __d, 31 - __d));
7072 #else
7073 return vec_perm(
7074 __a, __b,
7075 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7076 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7077 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7078 #endif
7079 }
7080
vec_vsldoi(vector int __a,vector int __b,unsigned char __c)7081 static __inline__ vector int __ATTRS_o_ai vec_vsldoi(vector int __a,
7082 vector int __b,
7083 unsigned char __c) {
7084 unsigned char __d = __c & 0x0F;
7085 #ifdef __LITTLE_ENDIAN__
7086 return vec_perm(
7087 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7088 20 - __d, 21 - __d, 22 - __d, 23 - __d,
7089 24 - __d, 25 - __d, 26 - __d, 27 - __d,
7090 28 - __d, 29 - __d, 30 - __d, 31 - __d));
7091 #else
7092 return vec_perm(
7093 __a, __b,
7094 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7095 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7096 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7097 #endif
7098 }
7099
vec_vsldoi(vector unsigned int __a,vector unsigned int __b,unsigned char __c)7100 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsldoi(
7101 vector unsigned int __a, vector unsigned int __b, unsigned char __c) {
7102 unsigned char __d = __c & 0x0F;
7103 #ifdef __LITTLE_ENDIAN__
7104 return vec_perm(
7105 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7106 20 - __d, 21 - __d, 22 - __d, 23 - __d,
7107 24 - __d, 25 - __d, 26 - __d, 27 - __d,
7108 28 - __d, 29 - __d, 30 - __d, 31 - __d));
7109 #else
7110 return vec_perm(
7111 __a, __b,
7112 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7113 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7114 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7115 #endif
7116 }
7117
vec_vsldoi(vector float __a,vector float __b,unsigned char __c)7118 static __inline__ vector float __ATTRS_o_ai vec_vsldoi(vector float __a,
7119 vector float __b,
7120 unsigned char __c) {
7121 unsigned char __d = __c & 0x0F;
7122 #ifdef __LITTLE_ENDIAN__
7123 return vec_perm(
7124 __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7125 20 - __d, 21 - __d, 22 - __d, 23 - __d,
7126 24 - __d, 25 - __d, 26 - __d, 27 - __d,
7127 28 - __d, 29 - __d, 30 - __d, 31 - __d));
7128 #else
7129 return vec_perm(
7130 __a, __b,
7131 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7132 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7133 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7134 #endif
7135 }
7136
7137 /* vec_sll */
7138
7139 static __inline__ vector signed char __ATTRS_o_ai
vec_sll(vector signed char __a,vector unsigned char __b)7140 vec_sll(vector signed char __a, vector unsigned char __b) {
7141 return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7142 (vector int)__b);
7143 }
7144
7145 static __inline__ vector signed char __ATTRS_o_ai
vec_sll(vector signed char __a,vector unsigned short __b)7146 vec_sll(vector signed char __a, vector unsigned short __b) {
7147 return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7148 (vector int)__b);
7149 }
7150
7151 static __inline__ vector signed char __ATTRS_o_ai
vec_sll(vector signed char __a,vector unsigned int __b)7152 vec_sll(vector signed char __a, vector unsigned int __b) {
7153 return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7154 (vector int)__b);
7155 }
7156
7157 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sll(vector unsigned char __a,vector unsigned char __b)7158 vec_sll(vector unsigned char __a, vector unsigned char __b) {
7159 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7160 (vector int)__b);
7161 }
7162
7163 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sll(vector unsigned char __a,vector unsigned short __b)7164 vec_sll(vector unsigned char __a, vector unsigned short __b) {
7165 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7166 (vector int)__b);
7167 }
7168
7169 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sll(vector unsigned char __a,vector unsigned int __b)7170 vec_sll(vector unsigned char __a, vector unsigned int __b) {
7171 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7172 (vector int)__b);
7173 }
7174
7175 static __inline__ vector bool char __ATTRS_o_ai
vec_sll(vector bool char __a,vector unsigned char __b)7176 vec_sll(vector bool char __a, vector unsigned char __b) {
7177 return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7178 (vector int)__b);
7179 }
7180
7181 static __inline__ vector bool char __ATTRS_o_ai
vec_sll(vector bool char __a,vector unsigned short __b)7182 vec_sll(vector bool char __a, vector unsigned short __b) {
7183 return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7184 (vector int)__b);
7185 }
7186
7187 static __inline__ vector bool char __ATTRS_o_ai
vec_sll(vector bool char __a,vector unsigned int __b)7188 vec_sll(vector bool char __a, vector unsigned int __b) {
7189 return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7190 (vector int)__b);
7191 }
7192
vec_sll(vector short __a,vector unsigned char __b)7193 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
7194 vector unsigned char __b) {
7195 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7196 }
7197
vec_sll(vector short __a,vector unsigned short __b)7198 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
7199 vector unsigned short __b) {
7200 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7201 }
7202
vec_sll(vector short __a,vector unsigned int __b)7203 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
7204 vector unsigned int __b) {
7205 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7206 }
7207
7208 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sll(vector unsigned short __a,vector unsigned char __b)7209 vec_sll(vector unsigned short __a, vector unsigned char __b) {
7210 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7211 (vector int)__b);
7212 }
7213
7214 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sll(vector unsigned short __a,vector unsigned short __b)7215 vec_sll(vector unsigned short __a, vector unsigned short __b) {
7216 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7217 (vector int)__b);
7218 }
7219
7220 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sll(vector unsigned short __a,vector unsigned int __b)7221 vec_sll(vector unsigned short __a, vector unsigned int __b) {
7222 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7223 (vector int)__b);
7224 }
7225
7226 static __inline__ vector bool short __ATTRS_o_ai
vec_sll(vector bool short __a,vector unsigned char __b)7227 vec_sll(vector bool short __a, vector unsigned char __b) {
7228 return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7229 (vector int)__b);
7230 }
7231
7232 static __inline__ vector bool short __ATTRS_o_ai
vec_sll(vector bool short __a,vector unsigned short __b)7233 vec_sll(vector bool short __a, vector unsigned short __b) {
7234 return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7235 (vector int)__b);
7236 }
7237
7238 static __inline__ vector bool short __ATTRS_o_ai
vec_sll(vector bool short __a,vector unsigned int __b)7239 vec_sll(vector bool short __a, vector unsigned int __b) {
7240 return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7241 (vector int)__b);
7242 }
7243
vec_sll(vector pixel __a,vector unsigned char __b)7244 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7245 vector unsigned char __b) {
7246 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7247 }
7248
vec_sll(vector pixel __a,vector unsigned short __b)7249 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7250 vector unsigned short __b) {
7251 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7252 }
7253
vec_sll(vector pixel __a,vector unsigned int __b)7254 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7255 vector unsigned int __b) {
7256 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7257 }
7258
vec_sll(vector int __a,vector unsigned char __b)7259 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
7260 vector unsigned char __b) {
7261 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7262 }
7263
vec_sll(vector int __a,vector unsigned short __b)7264 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
7265 vector unsigned short __b) {
7266 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7267 }
7268
vec_sll(vector int __a,vector unsigned int __b)7269 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
7270 vector unsigned int __b) {
7271 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7272 }
7273
7274 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sll(vector unsigned int __a,vector unsigned char __b)7275 vec_sll(vector unsigned int __a, vector unsigned char __b) {
7276 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7277 (vector int)__b);
7278 }
7279
7280 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sll(vector unsigned int __a,vector unsigned short __b)7281 vec_sll(vector unsigned int __a, vector unsigned short __b) {
7282 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7283 (vector int)__b);
7284 }
7285
7286 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sll(vector unsigned int __a,vector unsigned int __b)7287 vec_sll(vector unsigned int __a, vector unsigned int __b) {
7288 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7289 (vector int)__b);
7290 }
7291
7292 static __inline__ vector bool int __ATTRS_o_ai
vec_sll(vector bool int __a,vector unsigned char __b)7293 vec_sll(vector bool int __a, vector unsigned char __b) {
7294 return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7295 (vector int)__b);
7296 }
7297
7298 static __inline__ vector bool int __ATTRS_o_ai
vec_sll(vector bool int __a,vector unsigned short __b)7299 vec_sll(vector bool int __a, vector unsigned short __b) {
7300 return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7301 (vector int)__b);
7302 }
7303
7304 static __inline__ vector bool int __ATTRS_o_ai
vec_sll(vector bool int __a,vector unsigned int __b)7305 vec_sll(vector bool int __a, vector unsigned int __b) {
7306 return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7307 (vector int)__b);
7308 }
7309
7310 /* vec_vsl */
7311
7312 static __inline__ vector signed char __ATTRS_o_ai
vec_vsl(vector signed char __a,vector unsigned char __b)7313 vec_vsl(vector signed char __a, vector unsigned char __b) {
7314 return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7315 (vector int)__b);
7316 }
7317
7318 static __inline__ vector signed char __ATTRS_o_ai
vec_vsl(vector signed char __a,vector unsigned short __b)7319 vec_vsl(vector signed char __a, vector unsigned short __b) {
7320 return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7321 (vector int)__b);
7322 }
7323
7324 static __inline__ vector signed char __ATTRS_o_ai
vec_vsl(vector signed char __a,vector unsigned int __b)7325 vec_vsl(vector signed char __a, vector unsigned int __b) {
7326 return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7327 (vector int)__b);
7328 }
7329
7330 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsl(vector unsigned char __a,vector unsigned char __b)7331 vec_vsl(vector unsigned char __a, vector unsigned char __b) {
7332 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7333 (vector int)__b);
7334 }
7335
7336 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsl(vector unsigned char __a,vector unsigned short __b)7337 vec_vsl(vector unsigned char __a, vector unsigned short __b) {
7338 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7339 (vector int)__b);
7340 }
7341
7342 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsl(vector unsigned char __a,vector unsigned int __b)7343 vec_vsl(vector unsigned char __a, vector unsigned int __b) {
7344 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7345 (vector int)__b);
7346 }
7347
7348 static __inline__ vector bool char __ATTRS_o_ai
vec_vsl(vector bool char __a,vector unsigned char __b)7349 vec_vsl(vector bool char __a, vector unsigned char __b) {
7350 return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7351 (vector int)__b);
7352 }
7353
7354 static __inline__ vector bool char __ATTRS_o_ai
vec_vsl(vector bool char __a,vector unsigned short __b)7355 vec_vsl(vector bool char __a, vector unsigned short __b) {
7356 return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7357 (vector int)__b);
7358 }
7359
7360 static __inline__ vector bool char __ATTRS_o_ai
vec_vsl(vector bool char __a,vector unsigned int __b)7361 vec_vsl(vector bool char __a, vector unsigned int __b) {
7362 return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7363 (vector int)__b);
7364 }
7365
vec_vsl(vector short __a,vector unsigned char __b)7366 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
7367 vector unsigned char __b) {
7368 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7369 }
7370
vec_vsl(vector short __a,vector unsigned short __b)7371 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
7372 vector unsigned short __b) {
7373 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7374 }
7375
vec_vsl(vector short __a,vector unsigned int __b)7376 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
7377 vector unsigned int __b) {
7378 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7379 }
7380
7381 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsl(vector unsigned short __a,vector unsigned char __b)7382 vec_vsl(vector unsigned short __a, vector unsigned char __b) {
7383 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7384 (vector int)__b);
7385 }
7386
7387 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsl(vector unsigned short __a,vector unsigned short __b)7388 vec_vsl(vector unsigned short __a, vector unsigned short __b) {
7389 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7390 (vector int)__b);
7391 }
7392
7393 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsl(vector unsigned short __a,vector unsigned int __b)7394 vec_vsl(vector unsigned short __a, vector unsigned int __b) {
7395 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7396 (vector int)__b);
7397 }
7398
7399 static __inline__ vector bool short __ATTRS_o_ai
vec_vsl(vector bool short __a,vector unsigned char __b)7400 vec_vsl(vector bool short __a, vector unsigned char __b) {
7401 return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7402 (vector int)__b);
7403 }
7404
7405 static __inline__ vector bool short __ATTRS_o_ai
vec_vsl(vector bool short __a,vector unsigned short __b)7406 vec_vsl(vector bool short __a, vector unsigned short __b) {
7407 return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7408 (vector int)__b);
7409 }
7410
7411 static __inline__ vector bool short __ATTRS_o_ai
vec_vsl(vector bool short __a,vector unsigned int __b)7412 vec_vsl(vector bool short __a, vector unsigned int __b) {
7413 return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7414 (vector int)__b);
7415 }
7416
vec_vsl(vector pixel __a,vector unsigned char __b)7417 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7418 vector unsigned char __b) {
7419 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7420 }
7421
vec_vsl(vector pixel __a,vector unsigned short __b)7422 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7423 vector unsigned short __b) {
7424 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7425 }
7426
vec_vsl(vector pixel __a,vector unsigned int __b)7427 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7428 vector unsigned int __b) {
7429 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7430 }
7431
vec_vsl(vector int __a,vector unsigned char __b)7432 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
7433 vector unsigned char __b) {
7434 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7435 }
7436
vec_vsl(vector int __a,vector unsigned short __b)7437 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
7438 vector unsigned short __b) {
7439 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7440 }
7441
vec_vsl(vector int __a,vector unsigned int __b)7442 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
7443 vector unsigned int __b) {
7444 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7445 }
7446
7447 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsl(vector unsigned int __a,vector unsigned char __b)7448 vec_vsl(vector unsigned int __a, vector unsigned char __b) {
7449 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7450 (vector int)__b);
7451 }
7452
7453 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsl(vector unsigned int __a,vector unsigned short __b)7454 vec_vsl(vector unsigned int __a, vector unsigned short __b) {
7455 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7456 (vector int)__b);
7457 }
7458
7459 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsl(vector unsigned int __a,vector unsigned int __b)7460 vec_vsl(vector unsigned int __a, vector unsigned int __b) {
7461 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7462 (vector int)__b);
7463 }
7464
7465 static __inline__ vector bool int __ATTRS_o_ai
vec_vsl(vector bool int __a,vector unsigned char __b)7466 vec_vsl(vector bool int __a, vector unsigned char __b) {
7467 return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7468 (vector int)__b);
7469 }
7470
7471 static __inline__ vector bool int __ATTRS_o_ai
vec_vsl(vector bool int __a,vector unsigned short __b)7472 vec_vsl(vector bool int __a, vector unsigned short __b) {
7473 return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7474 (vector int)__b);
7475 }
7476
7477 static __inline__ vector bool int __ATTRS_o_ai
vec_vsl(vector bool int __a,vector unsigned int __b)7478 vec_vsl(vector bool int __a, vector unsigned int __b) {
7479 return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7480 (vector int)__b);
7481 }
7482
7483 /* vec_slo */
7484
7485 static __inline__ vector signed char __ATTRS_o_ai
vec_slo(vector signed char __a,vector signed char __b)7486 vec_slo(vector signed char __a, vector signed char __b) {
7487 return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7488 (vector int)__b);
7489 }
7490
7491 static __inline__ vector signed char __ATTRS_o_ai
vec_slo(vector signed char __a,vector unsigned char __b)7492 vec_slo(vector signed char __a, vector unsigned char __b) {
7493 return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7494 (vector int)__b);
7495 }
7496
7497 static __inline__ vector unsigned char __ATTRS_o_ai
vec_slo(vector unsigned char __a,vector signed char __b)7498 vec_slo(vector unsigned char __a, vector signed char __b) {
7499 return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7500 (vector int)__b);
7501 }
7502
7503 static __inline__ vector unsigned char __ATTRS_o_ai
vec_slo(vector unsigned char __a,vector unsigned char __b)7504 vec_slo(vector unsigned char __a, vector unsigned char __b) {
7505 return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7506 (vector int)__b);
7507 }
7508
vec_slo(vector short __a,vector signed char __b)7509 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
7510 vector signed char __b) {
7511 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7512 }
7513
vec_slo(vector short __a,vector unsigned char __b)7514 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
7515 vector unsigned char __b) {
7516 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7517 }
7518
7519 static __inline__ vector unsigned short __ATTRS_o_ai
vec_slo(vector unsigned short __a,vector signed char __b)7520 vec_slo(vector unsigned short __a, vector signed char __b) {
7521 return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7522 (vector int)__b);
7523 }
7524
7525 static __inline__ vector unsigned short __ATTRS_o_ai
vec_slo(vector unsigned short __a,vector unsigned char __b)7526 vec_slo(vector unsigned short __a, vector unsigned char __b) {
7527 return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7528 (vector int)__b);
7529 }
7530
vec_slo(vector pixel __a,vector signed char __b)7531 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
7532 vector signed char __b) {
7533 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7534 }
7535
vec_slo(vector pixel __a,vector unsigned char __b)7536 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
7537 vector unsigned char __b) {
7538 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7539 }
7540
vec_slo(vector int __a,vector signed char __b)7541 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
7542 vector signed char __b) {
7543 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7544 }
7545
vec_slo(vector int __a,vector unsigned char __b)7546 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
7547 vector unsigned char __b) {
7548 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7549 }
7550
7551 static __inline__ vector unsigned int __ATTRS_o_ai
vec_slo(vector unsigned int __a,vector signed char __b)7552 vec_slo(vector unsigned int __a, vector signed char __b) {
7553 return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7554 (vector int)__b);
7555 }
7556
7557 static __inline__ vector unsigned int __ATTRS_o_ai
vec_slo(vector unsigned int __a,vector unsigned char __b)7558 vec_slo(vector unsigned int __a, vector unsigned char __b) {
7559 return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7560 (vector int)__b);
7561 }
7562
vec_slo(vector float __a,vector signed char __b)7563 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
7564 vector signed char __b) {
7565 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7566 }
7567
vec_slo(vector float __a,vector unsigned char __b)7568 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
7569 vector unsigned char __b) {
7570 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7571 }
7572
7573 /* vec_vslo */
7574
7575 static __inline__ vector signed char __ATTRS_o_ai
vec_vslo(vector signed char __a,vector signed char __b)7576 vec_vslo(vector signed char __a, vector signed char __b) {
7577 return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7578 (vector int)__b);
7579 }
7580
7581 static __inline__ vector signed char __ATTRS_o_ai
vec_vslo(vector signed char __a,vector unsigned char __b)7582 vec_vslo(vector signed char __a, vector unsigned char __b) {
7583 return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7584 (vector int)__b);
7585 }
7586
7587 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vslo(vector unsigned char __a,vector signed char __b)7588 vec_vslo(vector unsigned char __a, vector signed char __b) {
7589 return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7590 (vector int)__b);
7591 }
7592
7593 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vslo(vector unsigned char __a,vector unsigned char __b)7594 vec_vslo(vector unsigned char __a, vector unsigned char __b) {
7595 return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7596 (vector int)__b);
7597 }
7598
vec_vslo(vector short __a,vector signed char __b)7599 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
7600 vector signed char __b) {
7601 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7602 }
7603
vec_vslo(vector short __a,vector unsigned char __b)7604 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
7605 vector unsigned char __b) {
7606 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7607 }
7608
7609 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vslo(vector unsigned short __a,vector signed char __b)7610 vec_vslo(vector unsigned short __a, vector signed char __b) {
7611 return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7612 (vector int)__b);
7613 }
7614
7615 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vslo(vector unsigned short __a,vector unsigned char __b)7616 vec_vslo(vector unsigned short __a, vector unsigned char __b) {
7617 return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7618 (vector int)__b);
7619 }
7620
vec_vslo(vector pixel __a,vector signed char __b)7621 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
7622 vector signed char __b) {
7623 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7624 }
7625
vec_vslo(vector pixel __a,vector unsigned char __b)7626 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
7627 vector unsigned char __b) {
7628 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7629 }
7630
vec_vslo(vector int __a,vector signed char __b)7631 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
7632 vector signed char __b) {
7633 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7634 }
7635
vec_vslo(vector int __a,vector unsigned char __b)7636 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
7637 vector unsigned char __b) {
7638 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7639 }
7640
7641 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vslo(vector unsigned int __a,vector signed char __b)7642 vec_vslo(vector unsigned int __a, vector signed char __b) {
7643 return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7644 (vector int)__b);
7645 }
7646
7647 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vslo(vector unsigned int __a,vector unsigned char __b)7648 vec_vslo(vector unsigned int __a, vector unsigned char __b) {
7649 return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7650 (vector int)__b);
7651 }
7652
vec_vslo(vector float __a,vector signed char __b)7653 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
7654 vector signed char __b) {
7655 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7656 }
7657
vec_vslo(vector float __a,vector unsigned char __b)7658 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
7659 vector unsigned char __b) {
7660 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7661 }
7662
7663 /* vec_splat */
7664
7665 static __inline__ vector signed char __ATTRS_o_ai
vec_splat(vector signed char __a,unsigned const int __b)7666 vec_splat(vector signed char __a, unsigned const int __b) {
7667 return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7668 }
7669
7670 static __inline__ vector unsigned char __ATTRS_o_ai
vec_splat(vector unsigned char __a,unsigned const int __b)7671 vec_splat(vector unsigned char __a, unsigned const int __b) {
7672 return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7673 }
7674
7675 static __inline__ vector bool char __ATTRS_o_ai
vec_splat(vector bool char __a,unsigned const int __b)7676 vec_splat(vector bool char __a, unsigned const int __b) {
7677 return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7678 }
7679
7680 static __inline__ vector signed short __ATTRS_o_ai
vec_splat(vector signed short __a,unsigned const int __b)7681 vec_splat(vector signed short __a, unsigned const int __b) {
7682 unsigned char b0 = (__b & 0x07) * 2;
7683 unsigned char b1 = b0 + 1;
7684 return vec_perm(__a, __a,
7685 (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7686 b0, b1, b0, b1, b0, b1));
7687 }
7688
7689 static __inline__ vector unsigned short __ATTRS_o_ai
vec_splat(vector unsigned short __a,unsigned const int __b)7690 vec_splat(vector unsigned short __a, unsigned const int __b) {
7691 unsigned char b0 = (__b & 0x07) * 2;
7692 unsigned char b1 = b0 + 1;
7693 return vec_perm(__a, __a,
7694 (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7695 b0, b1, b0, b1, b0, b1));
7696 }
7697
7698 static __inline__ vector bool short __ATTRS_o_ai
vec_splat(vector bool short __a,unsigned const int __b)7699 vec_splat(vector bool short __a, unsigned const int __b) {
7700 unsigned char b0 = (__b & 0x07) * 2;
7701 unsigned char b1 = b0 + 1;
7702 return vec_perm(__a, __a,
7703 (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7704 b0, b1, b0, b1, b0, b1));
7705 }
7706
vec_splat(vector pixel __a,unsigned const int __b)7707 static __inline__ vector pixel __ATTRS_o_ai vec_splat(vector pixel __a,
7708 unsigned const int __b) {
7709 unsigned char b0 = (__b & 0x07) * 2;
7710 unsigned char b1 = b0 + 1;
7711 return vec_perm(__a, __a,
7712 (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7713 b0, b1, b0, b1, b0, b1));
7714 }
7715
7716 static __inline__ vector signed int __ATTRS_o_ai
vec_splat(vector signed int __a,unsigned const int __b)7717 vec_splat(vector signed int __a, unsigned const int __b) {
7718 unsigned char b0 = (__b & 0x03) * 4;
7719 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7720 return vec_perm(__a, __a,
7721 (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7722 b2, b3, b0, b1, b2, b3));
7723 }
7724
7725 static __inline__ vector unsigned int __ATTRS_o_ai
vec_splat(vector unsigned int __a,unsigned const int __b)7726 vec_splat(vector unsigned int __a, unsigned const int __b) {
7727 unsigned char b0 = (__b & 0x03) * 4;
7728 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7729 return vec_perm(__a, __a,
7730 (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7731 b2, b3, b0, b1, b2, b3));
7732 }
7733
7734 static __inline__ vector bool int __ATTRS_o_ai
vec_splat(vector bool int __a,unsigned const int __b)7735 vec_splat(vector bool int __a, unsigned const int __b) {
7736 unsigned char b0 = (__b & 0x03) * 4;
7737 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7738 return vec_perm(__a, __a,
7739 (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7740 b2, b3, b0, b1, b2, b3));
7741 }
7742
vec_splat(vector float __a,unsigned const int __b)7743 static __inline__ vector float __ATTRS_o_ai vec_splat(vector float __a,
7744 unsigned const int __b) {
7745 unsigned char b0 = (__b & 0x03) * 4;
7746 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7747 return vec_perm(__a, __a,
7748 (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7749 b2, b3, b0, b1, b2, b3));
7750 }
7751
7752 #ifdef __VSX__
vec_splat(vector double __a,unsigned const int __b)7753 static __inline__ vector double __ATTRS_o_ai vec_splat(vector double __a,
7754 unsigned const int __b) {
7755 unsigned char b0 = (__b & 0x01) * 8;
7756 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7757 b6 = b0 + 6, b7 = b0 + 7;
7758 return vec_perm(__a, __a,
7759 (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7760 b2, b3, b4, b5, b6, b7));
7761 }
7762 static __inline__ vector bool long long __ATTRS_o_ai
vec_splat(vector bool long long __a,unsigned const int __b)7763 vec_splat(vector bool long long __a, unsigned const int __b) {
7764 unsigned char b0 = (__b & 0x01) * 8;
7765 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7766 b6 = b0 + 6, b7 = b0 + 7;
7767 return vec_perm(__a, __a,
7768 (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7769 b2, b3, b4, b5, b6, b7));
7770 }
7771 static __inline__ vector signed long long __ATTRS_o_ai
vec_splat(vector signed long long __a,unsigned const int __b)7772 vec_splat(vector signed long long __a, unsigned const int __b) {
7773 unsigned char b0 = (__b & 0x01) * 8;
7774 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7775 b6 = b0 + 6, b7 = b0 + 7;
7776 return vec_perm(__a, __a,
7777 (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7778 b2, b3, b4, b5, b6, b7));
7779 }
7780 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_splat(vector unsigned long long __a,unsigned const int __b)7781 vec_splat(vector unsigned long long __a, unsigned const int __b) {
7782 unsigned char b0 = (__b & 0x01) * 8;
7783 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7784 b6 = b0 + 6, b7 = b0 + 7;
7785 return vec_perm(__a, __a,
7786 (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7787 b2, b3, b4, b5, b6, b7));
7788 }
7789 #endif
7790
7791 /* vec_vspltb */
7792
7793 #define __builtin_altivec_vspltb vec_vspltb
7794
7795 static __inline__ vector signed char __ATTRS_o_ai
vec_vspltb(vector signed char __a,unsigned char __b)7796 vec_vspltb(vector signed char __a, unsigned char __b) {
7797 return vec_perm(__a, __a, (vector unsigned char)(__b));
7798 }
7799
7800 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vspltb(vector unsigned char __a,unsigned char __b)7801 vec_vspltb(vector unsigned char __a, unsigned char __b) {
7802 return vec_perm(__a, __a, (vector unsigned char)(__b));
7803 }
7804
vec_vspltb(vector bool char __a,unsigned char __b)7805 static __inline__ vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a,
7806 unsigned char __b) {
7807 return vec_perm(__a, __a, (vector unsigned char)(__b));
7808 }
7809
7810 /* vec_vsplth */
7811
7812 #define __builtin_altivec_vsplth vec_vsplth
7813
vec_vsplth(vector short __a,unsigned char __b)7814 static __inline__ vector short __ATTRS_o_ai vec_vsplth(vector short __a,
7815 unsigned char __b) {
7816 __b *= 2;
7817 unsigned char b1 = __b + 1;
7818 return vec_perm(__a, __a,
7819 (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7820 __b, b1, __b, b1, __b, b1, __b, b1));
7821 }
7822
7823 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsplth(vector unsigned short __a,unsigned char __b)7824 vec_vsplth(vector unsigned short __a, unsigned char __b) {
7825 __b *= 2;
7826 unsigned char b1 = __b + 1;
7827 return vec_perm(__a, __a,
7828 (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7829 __b, b1, __b, b1, __b, b1, __b, b1));
7830 }
7831
7832 static __inline__ vector bool short __ATTRS_o_ai
vec_vsplth(vector bool short __a,unsigned char __b)7833 vec_vsplth(vector bool short __a, unsigned char __b) {
7834 __b *= 2;
7835 unsigned char b1 = __b + 1;
7836 return vec_perm(__a, __a,
7837 (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7838 __b, b1, __b, b1, __b, b1, __b, b1));
7839 }
7840
vec_vsplth(vector pixel __a,unsigned char __b)7841 static __inline__ vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a,
7842 unsigned char __b) {
7843 __b *= 2;
7844 unsigned char b1 = __b + 1;
7845 return vec_perm(__a, __a,
7846 (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7847 __b, b1, __b, b1, __b, b1, __b, b1));
7848 }
7849
7850 /* vec_vspltw */
7851
7852 #define __builtin_altivec_vspltw vec_vspltw
7853
vec_vspltw(vector int __a,unsigned char __b)7854 static __inline__ vector int __ATTRS_o_ai vec_vspltw(vector int __a,
7855 unsigned char __b) {
7856 __b *= 4;
7857 unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7858 return vec_perm(__a, __a,
7859 (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7860 b1, b2, b3, __b, b1, b2, b3));
7861 }
7862
7863 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vspltw(vector unsigned int __a,unsigned char __b)7864 vec_vspltw(vector unsigned int __a, unsigned char __b) {
7865 __b *= 4;
7866 unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7867 return vec_perm(__a, __a,
7868 (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7869 b1, b2, b3, __b, b1, b2, b3));
7870 }
7871
vec_vspltw(vector bool int __a,unsigned char __b)7872 static __inline__ vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a,
7873 unsigned char __b) {
7874 __b *= 4;
7875 unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7876 return vec_perm(__a, __a,
7877 (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7878 b1, b2, b3, __b, b1, b2, b3));
7879 }
7880
vec_vspltw(vector float __a,unsigned char __b)7881 static __inline__ vector float __ATTRS_o_ai vec_vspltw(vector float __a,
7882 unsigned char __b) {
7883 __b *= 4;
7884 unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7885 return vec_perm(__a, __a,
7886 (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7887 b1, b2, b3, __b, b1, b2, b3));
7888 }
7889
7890 /* vec_splat_s8 */
7891
7892 #define __builtin_altivec_vspltisb vec_splat_s8
7893
7894 // FIXME: parameter should be treated as 5-bit signed literal
7895 static __inline__ vector signed char __ATTRS_o_ai
vec_splat_s8(signed char __a)7896 vec_splat_s8(signed char __a) {
7897 return (vector signed char)(__a);
7898 }
7899
7900 /* vec_vspltisb */
7901
7902 // FIXME: parameter should be treated as 5-bit signed literal
7903 static __inline__ vector signed char __ATTRS_o_ai
vec_vspltisb(signed char __a)7904 vec_vspltisb(signed char __a) {
7905 return (vector signed char)(__a);
7906 }
7907
7908 /* vec_splat_s16 */
7909
7910 #define __builtin_altivec_vspltish vec_splat_s16
7911
7912 // FIXME: parameter should be treated as 5-bit signed literal
vec_splat_s16(signed char __a)7913 static __inline__ vector short __ATTRS_o_ai vec_splat_s16(signed char __a) {
7914 return (vector short)(__a);
7915 }
7916
7917 /* vec_vspltish */
7918
7919 // FIXME: parameter should be treated as 5-bit signed literal
vec_vspltish(signed char __a)7920 static __inline__ vector short __ATTRS_o_ai vec_vspltish(signed char __a) {
7921 return (vector short)(__a);
7922 }
7923
7924 /* vec_splat_s32 */
7925
7926 #define __builtin_altivec_vspltisw vec_splat_s32
7927
7928 // FIXME: parameter should be treated as 5-bit signed literal
vec_splat_s32(signed char __a)7929 static __inline__ vector int __ATTRS_o_ai vec_splat_s32(signed char __a) {
7930 return (vector int)(__a);
7931 }
7932
7933 /* vec_vspltisw */
7934
7935 // FIXME: parameter should be treated as 5-bit signed literal
vec_vspltisw(signed char __a)7936 static __inline__ vector int __ATTRS_o_ai vec_vspltisw(signed char __a) {
7937 return (vector int)(__a);
7938 }
7939
7940 /* vec_splat_u8 */
7941
7942 // FIXME: parameter should be treated as 5-bit signed literal
7943 static __inline__ vector unsigned char __ATTRS_o_ai
vec_splat_u8(unsigned char __a)7944 vec_splat_u8(unsigned char __a) {
7945 return (vector unsigned char)(__a);
7946 }
7947
7948 /* vec_splat_u16 */
7949
7950 // FIXME: parameter should be treated as 5-bit signed literal
7951 static __inline__ vector unsigned short __ATTRS_o_ai
vec_splat_u16(signed char __a)7952 vec_splat_u16(signed char __a) {
7953 return (vector unsigned short)(__a);
7954 }
7955
7956 /* vec_splat_u32 */
7957
7958 // FIXME: parameter should be treated as 5-bit signed literal
7959 static __inline__ vector unsigned int __ATTRS_o_ai
vec_splat_u32(signed char __a)7960 vec_splat_u32(signed char __a) {
7961 return (vector unsigned int)(__a);
7962 }
7963
7964 /* vec_sr */
7965
7966 static __inline__ vector signed char __ATTRS_o_ai
vec_sr(vector signed char __a,vector unsigned char __b)7967 vec_sr(vector signed char __a, vector unsigned char __b) {
7968 vector unsigned char __res = (vector unsigned char)__a >> __b;
7969 return (vector signed char)__res;
7970 }
7971
7972 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sr(vector unsigned char __a,vector unsigned char __b)7973 vec_sr(vector unsigned char __a, vector unsigned char __b) {
7974 return __a >> __b;
7975 }
7976
7977 static __inline__ vector signed short __ATTRS_o_ai
vec_sr(vector signed short __a,vector unsigned short __b)7978 vec_sr(vector signed short __a, vector unsigned short __b) {
7979 vector unsigned short __res = (vector unsigned short)__a >> __b;
7980 return (vector signed short)__res;
7981 }
7982
7983 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sr(vector unsigned short __a,vector unsigned short __b)7984 vec_sr(vector unsigned short __a, vector unsigned short __b) {
7985 return __a >> __b;
7986 }
7987
7988 static __inline__ vector signed int __ATTRS_o_ai
vec_sr(vector signed int __a,vector unsigned int __b)7989 vec_sr(vector signed int __a, vector unsigned int __b) {
7990 vector unsigned int __res = (vector unsigned int)__a >> __b;
7991 return (vector signed int)__res;
7992 }
7993
7994 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sr(vector unsigned int __a,vector unsigned int __b)7995 vec_sr(vector unsigned int __a, vector unsigned int __b) {
7996 return __a >> __b;
7997 }
7998
7999 #ifdef __POWER8_VECTOR__
8000 static __inline__ vector signed long long __ATTRS_o_ai
vec_sr(vector signed long long __a,vector unsigned long long __b)8001 vec_sr(vector signed long long __a, vector unsigned long long __b) {
8002 vector unsigned long long __res = (vector unsigned long long)__a >> __b;
8003 return (vector signed long long)__res;
8004 }
8005
8006 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sr(vector unsigned long long __a,vector unsigned long long __b)8007 vec_sr(vector unsigned long long __a, vector unsigned long long __b) {
8008 return __a >> __b;
8009 }
8010 #endif
8011
8012 /* vec_vsrb */
8013
8014 #define __builtin_altivec_vsrb vec_vsrb
8015
8016 static __inline__ vector signed char __ATTRS_o_ai
vec_vsrb(vector signed char __a,vector unsigned char __b)8017 vec_vsrb(vector signed char __a, vector unsigned char __b) {
8018 return __a >> (vector signed char)__b;
8019 }
8020
8021 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsrb(vector unsigned char __a,vector unsigned char __b)8022 vec_vsrb(vector unsigned char __a, vector unsigned char __b) {
8023 return __a >> __b;
8024 }
8025
8026 /* vec_vsrh */
8027
8028 #define __builtin_altivec_vsrh vec_vsrh
8029
8030 static __inline__ vector short __ATTRS_o_ai
vec_vsrh(vector short __a,vector unsigned short __b)8031 vec_vsrh(vector short __a, vector unsigned short __b) {
8032 return __a >> (vector short)__b;
8033 }
8034
8035 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsrh(vector unsigned short __a,vector unsigned short __b)8036 vec_vsrh(vector unsigned short __a, vector unsigned short __b) {
8037 return __a >> __b;
8038 }
8039
8040 /* vec_vsrw */
8041
8042 #define __builtin_altivec_vsrw vec_vsrw
8043
vec_vsrw(vector int __a,vector unsigned int __b)8044 static __inline__ vector int __ATTRS_o_ai vec_vsrw(vector int __a,
8045 vector unsigned int __b) {
8046 return __a >> (vector int)__b;
8047 }
8048
8049 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsrw(vector unsigned int __a,vector unsigned int __b)8050 vec_vsrw(vector unsigned int __a, vector unsigned int __b) {
8051 return __a >> __b;
8052 }
8053
8054 /* vec_sra */
8055
8056 static __inline__ vector signed char __ATTRS_o_ai
vec_sra(vector signed char __a,vector unsigned char __b)8057 vec_sra(vector signed char __a, vector unsigned char __b) {
8058 return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
8059 }
8060
8061 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sra(vector unsigned char __a,vector unsigned char __b)8062 vec_sra(vector unsigned char __a, vector unsigned char __b) {
8063 return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
8064 }
8065
vec_sra(vector short __a,vector unsigned short __b)8066 static __inline__ vector short __ATTRS_o_ai vec_sra(vector short __a,
8067 vector unsigned short __b) {
8068 return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
8069 }
8070
8071 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sra(vector unsigned short __a,vector unsigned short __b)8072 vec_sra(vector unsigned short __a, vector unsigned short __b) {
8073 return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
8074 }
8075
vec_sra(vector int __a,vector unsigned int __b)8076 static __inline__ vector int __ATTRS_o_ai vec_sra(vector int __a,
8077 vector unsigned int __b) {
8078 return __builtin_altivec_vsraw(__a, __b);
8079 }
8080
8081 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sra(vector unsigned int __a,vector unsigned int __b)8082 vec_sra(vector unsigned int __a, vector unsigned int __b) {
8083 return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
8084 }
8085
8086 #ifdef __POWER8_VECTOR__
8087 static __inline__ vector signed long long __ATTRS_o_ai
vec_sra(vector signed long long __a,vector unsigned long long __b)8088 vec_sra(vector signed long long __a, vector unsigned long long __b) {
8089 return __a >> __b;
8090 }
8091
8092 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sra(vector unsigned long long __a,vector unsigned long long __b)8093 vec_sra(vector unsigned long long __a, vector unsigned long long __b) {
8094 return (vector unsigned long long)((vector signed long long)__a >> __b);
8095 }
8096 #endif
8097
8098 /* vec_vsrab */
8099
8100 static __inline__ vector signed char __ATTRS_o_ai
vec_vsrab(vector signed char __a,vector unsigned char __b)8101 vec_vsrab(vector signed char __a, vector unsigned char __b) {
8102 return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
8103 }
8104
8105 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsrab(vector unsigned char __a,vector unsigned char __b)8106 vec_vsrab(vector unsigned char __a, vector unsigned char __b) {
8107 return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
8108 }
8109
8110 /* vec_vsrah */
8111
8112 static __inline__ vector short __ATTRS_o_ai
vec_vsrah(vector short __a,vector unsigned short __b)8113 vec_vsrah(vector short __a, vector unsigned short __b) {
8114 return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
8115 }
8116
8117 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsrah(vector unsigned short __a,vector unsigned short __b)8118 vec_vsrah(vector unsigned short __a, vector unsigned short __b) {
8119 return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
8120 }
8121
8122 /* vec_vsraw */
8123
vec_vsraw(vector int __a,vector unsigned int __b)8124 static __inline__ vector int __ATTRS_o_ai vec_vsraw(vector int __a,
8125 vector unsigned int __b) {
8126 return __builtin_altivec_vsraw(__a, __b);
8127 }
8128
8129 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsraw(vector unsigned int __a,vector unsigned int __b)8130 vec_vsraw(vector unsigned int __a, vector unsigned int __b) {
8131 return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
8132 }
8133
8134 /* vec_srl */
8135
8136 static __inline__ vector signed char __ATTRS_o_ai
vec_srl(vector signed char __a,vector unsigned char __b)8137 vec_srl(vector signed char __a, vector unsigned char __b) {
8138 return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8139 (vector int)__b);
8140 }
8141
8142 static __inline__ vector signed char __ATTRS_o_ai
vec_srl(vector signed char __a,vector unsigned short __b)8143 vec_srl(vector signed char __a, vector unsigned short __b) {
8144 return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8145 (vector int)__b);
8146 }
8147
8148 static __inline__ vector signed char __ATTRS_o_ai
vec_srl(vector signed char __a,vector unsigned int __b)8149 vec_srl(vector signed char __a, vector unsigned int __b) {
8150 return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8151 (vector int)__b);
8152 }
8153
8154 static __inline__ vector unsigned char __ATTRS_o_ai
vec_srl(vector unsigned char __a,vector unsigned char __b)8155 vec_srl(vector unsigned char __a, vector unsigned char __b) {
8156 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8157 (vector int)__b);
8158 }
8159
8160 static __inline__ vector unsigned char __ATTRS_o_ai
vec_srl(vector unsigned char __a,vector unsigned short __b)8161 vec_srl(vector unsigned char __a, vector unsigned short __b) {
8162 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8163 (vector int)__b);
8164 }
8165
8166 static __inline__ vector unsigned char __ATTRS_o_ai
vec_srl(vector unsigned char __a,vector unsigned int __b)8167 vec_srl(vector unsigned char __a, vector unsigned int __b) {
8168 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8169 (vector int)__b);
8170 }
8171
8172 static __inline__ vector bool char __ATTRS_o_ai
vec_srl(vector bool char __a,vector unsigned char __b)8173 vec_srl(vector bool char __a, vector unsigned char __b) {
8174 return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8175 (vector int)__b);
8176 }
8177
8178 static __inline__ vector bool char __ATTRS_o_ai
vec_srl(vector bool char __a,vector unsigned short __b)8179 vec_srl(vector bool char __a, vector unsigned short __b) {
8180 return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8181 (vector int)__b);
8182 }
8183
8184 static __inline__ vector bool char __ATTRS_o_ai
vec_srl(vector bool char __a,vector unsigned int __b)8185 vec_srl(vector bool char __a, vector unsigned int __b) {
8186 return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8187 (vector int)__b);
8188 }
8189
vec_srl(vector short __a,vector unsigned char __b)8190 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
8191 vector unsigned char __b) {
8192 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8193 }
8194
vec_srl(vector short __a,vector unsigned short __b)8195 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
8196 vector unsigned short __b) {
8197 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8198 }
8199
vec_srl(vector short __a,vector unsigned int __b)8200 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
8201 vector unsigned int __b) {
8202 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8203 }
8204
8205 static __inline__ vector unsigned short __ATTRS_o_ai
vec_srl(vector unsigned short __a,vector unsigned char __b)8206 vec_srl(vector unsigned short __a, vector unsigned char __b) {
8207 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8208 (vector int)__b);
8209 }
8210
8211 static __inline__ vector unsigned short __ATTRS_o_ai
vec_srl(vector unsigned short __a,vector unsigned short __b)8212 vec_srl(vector unsigned short __a, vector unsigned short __b) {
8213 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8214 (vector int)__b);
8215 }
8216
8217 static __inline__ vector unsigned short __ATTRS_o_ai
vec_srl(vector unsigned short __a,vector unsigned int __b)8218 vec_srl(vector unsigned short __a, vector unsigned int __b) {
8219 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8220 (vector int)__b);
8221 }
8222
8223 static __inline__ vector bool short __ATTRS_o_ai
vec_srl(vector bool short __a,vector unsigned char __b)8224 vec_srl(vector bool short __a, vector unsigned char __b) {
8225 return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8226 (vector int)__b);
8227 }
8228
8229 static __inline__ vector bool short __ATTRS_o_ai
vec_srl(vector bool short __a,vector unsigned short __b)8230 vec_srl(vector bool short __a, vector unsigned short __b) {
8231 return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8232 (vector int)__b);
8233 }
8234
8235 static __inline__ vector bool short __ATTRS_o_ai
vec_srl(vector bool short __a,vector unsigned int __b)8236 vec_srl(vector bool short __a, vector unsigned int __b) {
8237 return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8238 (vector int)__b);
8239 }
8240
vec_srl(vector pixel __a,vector unsigned char __b)8241 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8242 vector unsigned char __b) {
8243 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8244 }
8245
vec_srl(vector pixel __a,vector unsigned short __b)8246 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8247 vector unsigned short __b) {
8248 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8249 }
8250
vec_srl(vector pixel __a,vector unsigned int __b)8251 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8252 vector unsigned int __b) {
8253 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8254 }
8255
vec_srl(vector int __a,vector unsigned char __b)8256 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
8257 vector unsigned char __b) {
8258 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8259 }
8260
vec_srl(vector int __a,vector unsigned short __b)8261 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
8262 vector unsigned short __b) {
8263 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8264 }
8265
vec_srl(vector int __a,vector unsigned int __b)8266 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
8267 vector unsigned int __b) {
8268 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8269 }
8270
8271 static __inline__ vector unsigned int __ATTRS_o_ai
vec_srl(vector unsigned int __a,vector unsigned char __b)8272 vec_srl(vector unsigned int __a, vector unsigned char __b) {
8273 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8274 (vector int)__b);
8275 }
8276
8277 static __inline__ vector unsigned int __ATTRS_o_ai
vec_srl(vector unsigned int __a,vector unsigned short __b)8278 vec_srl(vector unsigned int __a, vector unsigned short __b) {
8279 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8280 (vector int)__b);
8281 }
8282
8283 static __inline__ vector unsigned int __ATTRS_o_ai
vec_srl(vector unsigned int __a,vector unsigned int __b)8284 vec_srl(vector unsigned int __a, vector unsigned int __b) {
8285 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8286 (vector int)__b);
8287 }
8288
8289 static __inline__ vector bool int __ATTRS_o_ai
vec_srl(vector bool int __a,vector unsigned char __b)8290 vec_srl(vector bool int __a, vector unsigned char __b) {
8291 return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8292 (vector int)__b);
8293 }
8294
8295 static __inline__ vector bool int __ATTRS_o_ai
vec_srl(vector bool int __a,vector unsigned short __b)8296 vec_srl(vector bool int __a, vector unsigned short __b) {
8297 return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8298 (vector int)__b);
8299 }
8300
8301 static __inline__ vector bool int __ATTRS_o_ai
vec_srl(vector bool int __a,vector unsigned int __b)8302 vec_srl(vector bool int __a, vector unsigned int __b) {
8303 return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8304 (vector int)__b);
8305 }
8306
8307 /* vec_vsr */
8308
8309 static __inline__ vector signed char __ATTRS_o_ai
vec_vsr(vector signed char __a,vector unsigned char __b)8310 vec_vsr(vector signed char __a, vector unsigned char __b) {
8311 return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8312 (vector int)__b);
8313 }
8314
8315 static __inline__ vector signed char __ATTRS_o_ai
vec_vsr(vector signed char __a,vector unsigned short __b)8316 vec_vsr(vector signed char __a, vector unsigned short __b) {
8317 return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8318 (vector int)__b);
8319 }
8320
8321 static __inline__ vector signed char __ATTRS_o_ai
vec_vsr(vector signed char __a,vector unsigned int __b)8322 vec_vsr(vector signed char __a, vector unsigned int __b) {
8323 return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8324 (vector int)__b);
8325 }
8326
8327 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsr(vector unsigned char __a,vector unsigned char __b)8328 vec_vsr(vector unsigned char __a, vector unsigned char __b) {
8329 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8330 (vector int)__b);
8331 }
8332
8333 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsr(vector unsigned char __a,vector unsigned short __b)8334 vec_vsr(vector unsigned char __a, vector unsigned short __b) {
8335 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8336 (vector int)__b);
8337 }
8338
8339 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsr(vector unsigned char __a,vector unsigned int __b)8340 vec_vsr(vector unsigned char __a, vector unsigned int __b) {
8341 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8342 (vector int)__b);
8343 }
8344
8345 static __inline__ vector bool char __ATTRS_o_ai
vec_vsr(vector bool char __a,vector unsigned char __b)8346 vec_vsr(vector bool char __a, vector unsigned char __b) {
8347 return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8348 (vector int)__b);
8349 }
8350
8351 static __inline__ vector bool char __ATTRS_o_ai
vec_vsr(vector bool char __a,vector unsigned short __b)8352 vec_vsr(vector bool char __a, vector unsigned short __b) {
8353 return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8354 (vector int)__b);
8355 }
8356
8357 static __inline__ vector bool char __ATTRS_o_ai
vec_vsr(vector bool char __a,vector unsigned int __b)8358 vec_vsr(vector bool char __a, vector unsigned int __b) {
8359 return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8360 (vector int)__b);
8361 }
8362
vec_vsr(vector short __a,vector unsigned char __b)8363 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
8364 vector unsigned char __b) {
8365 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8366 }
8367
vec_vsr(vector short __a,vector unsigned short __b)8368 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
8369 vector unsigned short __b) {
8370 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8371 }
8372
vec_vsr(vector short __a,vector unsigned int __b)8373 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
8374 vector unsigned int __b) {
8375 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8376 }
8377
8378 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsr(vector unsigned short __a,vector unsigned char __b)8379 vec_vsr(vector unsigned short __a, vector unsigned char __b) {
8380 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8381 (vector int)__b);
8382 }
8383
8384 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsr(vector unsigned short __a,vector unsigned short __b)8385 vec_vsr(vector unsigned short __a, vector unsigned short __b) {
8386 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8387 (vector int)__b);
8388 }
8389
8390 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsr(vector unsigned short __a,vector unsigned int __b)8391 vec_vsr(vector unsigned short __a, vector unsigned int __b) {
8392 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8393 (vector int)__b);
8394 }
8395
8396 static __inline__ vector bool short __ATTRS_o_ai
vec_vsr(vector bool short __a,vector unsigned char __b)8397 vec_vsr(vector bool short __a, vector unsigned char __b) {
8398 return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8399 (vector int)__b);
8400 }
8401
8402 static __inline__ vector bool short __ATTRS_o_ai
vec_vsr(vector bool short __a,vector unsigned short __b)8403 vec_vsr(vector bool short __a, vector unsigned short __b) {
8404 return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8405 (vector int)__b);
8406 }
8407
8408 static __inline__ vector bool short __ATTRS_o_ai
vec_vsr(vector bool short __a,vector unsigned int __b)8409 vec_vsr(vector bool short __a, vector unsigned int __b) {
8410 return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8411 (vector int)__b);
8412 }
8413
vec_vsr(vector pixel __a,vector unsigned char __b)8414 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8415 vector unsigned char __b) {
8416 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8417 }
8418
vec_vsr(vector pixel __a,vector unsigned short __b)8419 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8420 vector unsigned short __b) {
8421 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8422 }
8423
vec_vsr(vector pixel __a,vector unsigned int __b)8424 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8425 vector unsigned int __b) {
8426 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8427 }
8428
vec_vsr(vector int __a,vector unsigned char __b)8429 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
8430 vector unsigned char __b) {
8431 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8432 }
8433
vec_vsr(vector int __a,vector unsigned short __b)8434 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
8435 vector unsigned short __b) {
8436 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8437 }
8438
vec_vsr(vector int __a,vector unsigned int __b)8439 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
8440 vector unsigned int __b) {
8441 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8442 }
8443
8444 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsr(vector unsigned int __a,vector unsigned char __b)8445 vec_vsr(vector unsigned int __a, vector unsigned char __b) {
8446 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8447 (vector int)__b);
8448 }
8449
8450 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsr(vector unsigned int __a,vector unsigned short __b)8451 vec_vsr(vector unsigned int __a, vector unsigned short __b) {
8452 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8453 (vector int)__b);
8454 }
8455
8456 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsr(vector unsigned int __a,vector unsigned int __b)8457 vec_vsr(vector unsigned int __a, vector unsigned int __b) {
8458 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8459 (vector int)__b);
8460 }
8461
8462 static __inline__ vector bool int __ATTRS_o_ai
vec_vsr(vector bool int __a,vector unsigned char __b)8463 vec_vsr(vector bool int __a, vector unsigned char __b) {
8464 return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8465 (vector int)__b);
8466 }
8467
8468 static __inline__ vector bool int __ATTRS_o_ai
vec_vsr(vector bool int __a,vector unsigned short __b)8469 vec_vsr(vector bool int __a, vector unsigned short __b) {
8470 return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8471 (vector int)__b);
8472 }
8473
8474 static __inline__ vector bool int __ATTRS_o_ai
vec_vsr(vector bool int __a,vector unsigned int __b)8475 vec_vsr(vector bool int __a, vector unsigned int __b) {
8476 return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8477 (vector int)__b);
8478 }
8479
8480 /* vec_sro */
8481
8482 static __inline__ vector signed char __ATTRS_o_ai
vec_sro(vector signed char __a,vector signed char __b)8483 vec_sro(vector signed char __a, vector signed char __b) {
8484 return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8485 (vector int)__b);
8486 }
8487
8488 static __inline__ vector signed char __ATTRS_o_ai
vec_sro(vector signed char __a,vector unsigned char __b)8489 vec_sro(vector signed char __a, vector unsigned char __b) {
8490 return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8491 (vector int)__b);
8492 }
8493
8494 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sro(vector unsigned char __a,vector signed char __b)8495 vec_sro(vector unsigned char __a, vector signed char __b) {
8496 return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8497 (vector int)__b);
8498 }
8499
8500 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sro(vector unsigned char __a,vector unsigned char __b)8501 vec_sro(vector unsigned char __a, vector unsigned char __b) {
8502 return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8503 (vector int)__b);
8504 }
8505
vec_sro(vector short __a,vector signed char __b)8506 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
8507 vector signed char __b) {
8508 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8509 }
8510
vec_sro(vector short __a,vector unsigned char __b)8511 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
8512 vector unsigned char __b) {
8513 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8514 }
8515
8516 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sro(vector unsigned short __a,vector signed char __b)8517 vec_sro(vector unsigned short __a, vector signed char __b) {
8518 return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8519 (vector int)__b);
8520 }
8521
8522 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sro(vector unsigned short __a,vector unsigned char __b)8523 vec_sro(vector unsigned short __a, vector unsigned char __b) {
8524 return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8525 (vector int)__b);
8526 }
8527
vec_sro(vector pixel __a,vector signed char __b)8528 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
8529 vector signed char __b) {
8530 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8531 }
8532
vec_sro(vector pixel __a,vector unsigned char __b)8533 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
8534 vector unsigned char __b) {
8535 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8536 }
8537
vec_sro(vector int __a,vector signed char __b)8538 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
8539 vector signed char __b) {
8540 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8541 }
8542
vec_sro(vector int __a,vector unsigned char __b)8543 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
8544 vector unsigned char __b) {
8545 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8546 }
8547
8548 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sro(vector unsigned int __a,vector signed char __b)8549 vec_sro(vector unsigned int __a, vector signed char __b) {
8550 return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8551 (vector int)__b);
8552 }
8553
8554 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sro(vector unsigned int __a,vector unsigned char __b)8555 vec_sro(vector unsigned int __a, vector unsigned char __b) {
8556 return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8557 (vector int)__b);
8558 }
8559
vec_sro(vector float __a,vector signed char __b)8560 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
8561 vector signed char __b) {
8562 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8563 }
8564
vec_sro(vector float __a,vector unsigned char __b)8565 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
8566 vector unsigned char __b) {
8567 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8568 }
8569
8570 /* vec_vsro */
8571
8572 static __inline__ vector signed char __ATTRS_o_ai
vec_vsro(vector signed char __a,vector signed char __b)8573 vec_vsro(vector signed char __a, vector signed char __b) {
8574 return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8575 (vector int)__b);
8576 }
8577
8578 static __inline__ vector signed char __ATTRS_o_ai
vec_vsro(vector signed char __a,vector unsigned char __b)8579 vec_vsro(vector signed char __a, vector unsigned char __b) {
8580 return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8581 (vector int)__b);
8582 }
8583
8584 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsro(vector unsigned char __a,vector signed char __b)8585 vec_vsro(vector unsigned char __a, vector signed char __b) {
8586 return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8587 (vector int)__b);
8588 }
8589
8590 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsro(vector unsigned char __a,vector unsigned char __b)8591 vec_vsro(vector unsigned char __a, vector unsigned char __b) {
8592 return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8593 (vector int)__b);
8594 }
8595
vec_vsro(vector short __a,vector signed char __b)8596 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
8597 vector signed char __b) {
8598 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8599 }
8600
vec_vsro(vector short __a,vector unsigned char __b)8601 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
8602 vector unsigned char __b) {
8603 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8604 }
8605
8606 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsro(vector unsigned short __a,vector signed char __b)8607 vec_vsro(vector unsigned short __a, vector signed char __b) {
8608 return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8609 (vector int)__b);
8610 }
8611
8612 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsro(vector unsigned short __a,vector unsigned char __b)8613 vec_vsro(vector unsigned short __a, vector unsigned char __b) {
8614 return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8615 (vector int)__b);
8616 }
8617
vec_vsro(vector pixel __a,vector signed char __b)8618 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
8619 vector signed char __b) {
8620 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8621 }
8622
vec_vsro(vector pixel __a,vector unsigned char __b)8623 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
8624 vector unsigned char __b) {
8625 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8626 }
8627
vec_vsro(vector int __a,vector signed char __b)8628 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
8629 vector signed char __b) {
8630 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8631 }
8632
vec_vsro(vector int __a,vector unsigned char __b)8633 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
8634 vector unsigned char __b) {
8635 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8636 }
8637
8638 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsro(vector unsigned int __a,vector signed char __b)8639 vec_vsro(vector unsigned int __a, vector signed char __b) {
8640 return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8641 (vector int)__b);
8642 }
8643
8644 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsro(vector unsigned int __a,vector unsigned char __b)8645 vec_vsro(vector unsigned int __a, vector unsigned char __b) {
8646 return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8647 (vector int)__b);
8648 }
8649
vec_vsro(vector float __a,vector signed char __b)8650 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
8651 vector signed char __b) {
8652 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8653 }
8654
vec_vsro(vector float __a,vector unsigned char __b)8655 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
8656 vector unsigned char __b) {
8657 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8658 }
8659
8660 /* vec_st */
8661
vec_st(vector signed char __a,int __b,vector signed char * __c)8662 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
8663 vector signed char *__c) {
8664 __builtin_altivec_stvx((vector int)__a, __b, __c);
8665 }
8666
vec_st(vector signed char __a,int __b,signed char * __c)8667 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
8668 signed char *__c) {
8669 __builtin_altivec_stvx((vector int)__a, __b, __c);
8670 }
8671
vec_st(vector unsigned char __a,int __b,vector unsigned char * __c)8672 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
8673 vector unsigned char *__c) {
8674 __builtin_altivec_stvx((vector int)__a, __b, __c);
8675 }
8676
vec_st(vector unsigned char __a,int __b,unsigned char * __c)8677 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
8678 unsigned char *__c) {
8679 __builtin_altivec_stvx((vector int)__a, __b, __c);
8680 }
8681
vec_st(vector bool char __a,int __b,signed char * __c)8682 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8683 signed char *__c) {
8684 __builtin_altivec_stvx((vector int)__a, __b, __c);
8685 }
8686
vec_st(vector bool char __a,int __b,unsigned char * __c)8687 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8688 unsigned char *__c) {
8689 __builtin_altivec_stvx((vector int)__a, __b, __c);
8690 }
8691
vec_st(vector bool char __a,int __b,vector bool char * __c)8692 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8693 vector bool char *__c) {
8694 __builtin_altivec_stvx((vector int)__a, __b, __c);
8695 }
8696
vec_st(vector short __a,int __b,vector short * __c)8697 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
8698 vector short *__c) {
8699 __builtin_altivec_stvx((vector int)__a, __b, __c);
8700 }
8701
vec_st(vector short __a,int __b,short * __c)8702 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
8703 short *__c) {
8704 __builtin_altivec_stvx((vector int)__a, __b, __c);
8705 }
8706
vec_st(vector unsigned short __a,int __b,vector unsigned short * __c)8707 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
8708 vector unsigned short *__c) {
8709 __builtin_altivec_stvx((vector int)__a, __b, __c);
8710 }
8711
vec_st(vector unsigned short __a,int __b,unsigned short * __c)8712 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
8713 unsigned short *__c) {
8714 __builtin_altivec_stvx((vector int)__a, __b, __c);
8715 }
8716
vec_st(vector bool short __a,int __b,short * __c)8717 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8718 short *__c) {
8719 __builtin_altivec_stvx((vector int)__a, __b, __c);
8720 }
8721
vec_st(vector bool short __a,int __b,unsigned short * __c)8722 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8723 unsigned short *__c) {
8724 __builtin_altivec_stvx((vector int)__a, __b, __c);
8725 }
8726
vec_st(vector bool short __a,int __b,vector bool short * __c)8727 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8728 vector bool short *__c) {
8729 __builtin_altivec_stvx((vector int)__a, __b, __c);
8730 }
8731
vec_st(vector pixel __a,int __b,short * __c)8732 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8733 short *__c) {
8734 __builtin_altivec_stvx((vector int)__a, __b, __c);
8735 }
8736
vec_st(vector pixel __a,int __b,unsigned short * __c)8737 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8738 unsigned short *__c) {
8739 __builtin_altivec_stvx((vector int)__a, __b, __c);
8740 }
8741
vec_st(vector pixel __a,int __b,vector pixel * __c)8742 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8743 vector pixel *__c) {
8744 __builtin_altivec_stvx((vector int)__a, __b, __c);
8745 }
8746
vec_st(vector int __a,int __b,vector int * __c)8747 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b,
8748 vector int *__c) {
8749 __builtin_altivec_stvx(__a, __b, __c);
8750 }
8751
vec_st(vector int __a,int __b,int * __c)8752 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) {
8753 __builtin_altivec_stvx(__a, __b, __c);
8754 }
8755
vec_st(vector unsigned int __a,int __b,vector unsigned int * __c)8756 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
8757 vector unsigned int *__c) {
8758 __builtin_altivec_stvx((vector int)__a, __b, __c);
8759 }
8760
vec_st(vector unsigned int __a,int __b,unsigned int * __c)8761 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
8762 unsigned int *__c) {
8763 __builtin_altivec_stvx((vector int)__a, __b, __c);
8764 }
8765
vec_st(vector bool int __a,int __b,int * __c)8766 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8767 int *__c) {
8768 __builtin_altivec_stvx((vector int)__a, __b, __c);
8769 }
8770
vec_st(vector bool int __a,int __b,unsigned int * __c)8771 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8772 unsigned int *__c) {
8773 __builtin_altivec_stvx((vector int)__a, __b, __c);
8774 }
8775
vec_st(vector bool int __a,int __b,vector bool int * __c)8776 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8777 vector bool int *__c) {
8778 __builtin_altivec_stvx((vector int)__a, __b, __c);
8779 }
8780
vec_st(vector float __a,int __b,vector float * __c)8781 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
8782 vector float *__c) {
8783 __builtin_altivec_stvx((vector int)__a, __b, __c);
8784 }
8785
vec_st(vector float __a,int __b,float * __c)8786 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
8787 float *__c) {
8788 __builtin_altivec_stvx((vector int)__a, __b, __c);
8789 }
8790
8791 /* vec_stvx */
8792
vec_stvx(vector signed char __a,int __b,vector signed char * __c)8793 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
8794 vector signed char *__c) {
8795 __builtin_altivec_stvx((vector int)__a, __b, __c);
8796 }
8797
vec_stvx(vector signed char __a,int __b,signed char * __c)8798 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
8799 signed char *__c) {
8800 __builtin_altivec_stvx((vector int)__a, __b, __c);
8801 }
8802
vec_stvx(vector unsigned char __a,int __b,vector unsigned char * __c)8803 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
8804 vector unsigned char *__c) {
8805 __builtin_altivec_stvx((vector int)__a, __b, __c);
8806 }
8807
vec_stvx(vector unsigned char __a,int __b,unsigned char * __c)8808 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
8809 unsigned char *__c) {
8810 __builtin_altivec_stvx((vector int)__a, __b, __c);
8811 }
8812
vec_stvx(vector bool char __a,int __b,signed char * __c)8813 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8814 signed char *__c) {
8815 __builtin_altivec_stvx((vector int)__a, __b, __c);
8816 }
8817
vec_stvx(vector bool char __a,int __b,unsigned char * __c)8818 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8819 unsigned char *__c) {
8820 __builtin_altivec_stvx((vector int)__a, __b, __c);
8821 }
8822
vec_stvx(vector bool char __a,int __b,vector bool char * __c)8823 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8824 vector bool char *__c) {
8825 __builtin_altivec_stvx((vector int)__a, __b, __c);
8826 }
8827
vec_stvx(vector short __a,int __b,vector short * __c)8828 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
8829 vector short *__c) {
8830 __builtin_altivec_stvx((vector int)__a, __b, __c);
8831 }
8832
vec_stvx(vector short __a,int __b,short * __c)8833 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
8834 short *__c) {
8835 __builtin_altivec_stvx((vector int)__a, __b, __c);
8836 }
8837
vec_stvx(vector unsigned short __a,int __b,vector unsigned short * __c)8838 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
8839 vector unsigned short *__c) {
8840 __builtin_altivec_stvx((vector int)__a, __b, __c);
8841 }
8842
vec_stvx(vector unsigned short __a,int __b,unsigned short * __c)8843 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
8844 unsigned short *__c) {
8845 __builtin_altivec_stvx((vector int)__a, __b, __c);
8846 }
8847
vec_stvx(vector bool short __a,int __b,short * __c)8848 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8849 short *__c) {
8850 __builtin_altivec_stvx((vector int)__a, __b, __c);
8851 }
8852
vec_stvx(vector bool short __a,int __b,unsigned short * __c)8853 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8854 unsigned short *__c) {
8855 __builtin_altivec_stvx((vector int)__a, __b, __c);
8856 }
8857
vec_stvx(vector bool short __a,int __b,vector bool short * __c)8858 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8859 vector bool short *__c) {
8860 __builtin_altivec_stvx((vector int)__a, __b, __c);
8861 }
8862
vec_stvx(vector pixel __a,int __b,short * __c)8863 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8864 short *__c) {
8865 __builtin_altivec_stvx((vector int)__a, __b, __c);
8866 }
8867
vec_stvx(vector pixel __a,int __b,unsigned short * __c)8868 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8869 unsigned short *__c) {
8870 __builtin_altivec_stvx((vector int)__a, __b, __c);
8871 }
8872
vec_stvx(vector pixel __a,int __b,vector pixel * __c)8873 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8874 vector pixel *__c) {
8875 __builtin_altivec_stvx((vector int)__a, __b, __c);
8876 }
8877
vec_stvx(vector int __a,int __b,vector int * __c)8878 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
8879 vector int *__c) {
8880 __builtin_altivec_stvx(__a, __b, __c);
8881 }
8882
vec_stvx(vector int __a,int __b,int * __c)8883 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
8884 int *__c) {
8885 __builtin_altivec_stvx(__a, __b, __c);
8886 }
8887
vec_stvx(vector unsigned int __a,int __b,vector unsigned int * __c)8888 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
8889 vector unsigned int *__c) {
8890 __builtin_altivec_stvx((vector int)__a, __b, __c);
8891 }
8892
vec_stvx(vector unsigned int __a,int __b,unsigned int * __c)8893 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
8894 unsigned int *__c) {
8895 __builtin_altivec_stvx((vector int)__a, __b, __c);
8896 }
8897
vec_stvx(vector bool int __a,int __b,int * __c)8898 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8899 int *__c) {
8900 __builtin_altivec_stvx((vector int)__a, __b, __c);
8901 }
8902
vec_stvx(vector bool int __a,int __b,unsigned int * __c)8903 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8904 unsigned int *__c) {
8905 __builtin_altivec_stvx((vector int)__a, __b, __c);
8906 }
8907
vec_stvx(vector bool int __a,int __b,vector bool int * __c)8908 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8909 vector bool int *__c) {
8910 __builtin_altivec_stvx((vector int)__a, __b, __c);
8911 }
8912
vec_stvx(vector float __a,int __b,vector float * __c)8913 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
8914 vector float *__c) {
8915 __builtin_altivec_stvx((vector int)__a, __b, __c);
8916 }
8917
vec_stvx(vector float __a,int __b,float * __c)8918 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
8919 float *__c) {
8920 __builtin_altivec_stvx((vector int)__a, __b, __c);
8921 }
8922
8923 /* vec_ste */
8924
vec_ste(vector signed char __a,int __b,signed char * __c)8925 static __inline__ void __ATTRS_o_ai vec_ste(vector signed char __a, int __b,
8926 signed char *__c) {
8927 __builtin_altivec_stvebx((vector char)__a, __b, __c);
8928 }
8929
vec_ste(vector unsigned char __a,int __b,unsigned char * __c)8930 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b,
8931 unsigned char *__c) {
8932 __builtin_altivec_stvebx((vector char)__a, __b, __c);
8933 }
8934
vec_ste(vector bool char __a,int __b,signed char * __c)8935 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
8936 signed char *__c) {
8937 __builtin_altivec_stvebx((vector char)__a, __b, __c);
8938 }
8939
vec_ste(vector bool char __a,int __b,unsigned char * __c)8940 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
8941 unsigned char *__c) {
8942 __builtin_altivec_stvebx((vector char)__a, __b, __c);
8943 }
8944
vec_ste(vector short __a,int __b,short * __c)8945 static __inline__ void __ATTRS_o_ai vec_ste(vector short __a, int __b,
8946 short *__c) {
8947 __builtin_altivec_stvehx(__a, __b, __c);
8948 }
8949
vec_ste(vector unsigned short __a,int __b,unsigned short * __c)8950 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b,
8951 unsigned short *__c) {
8952 __builtin_altivec_stvehx((vector short)__a, __b, __c);
8953 }
8954
vec_ste(vector bool short __a,int __b,short * __c)8955 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
8956 short *__c) {
8957 __builtin_altivec_stvehx((vector short)__a, __b, __c);
8958 }
8959
vec_ste(vector bool short __a,int __b,unsigned short * __c)8960 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
8961 unsigned short *__c) {
8962 __builtin_altivec_stvehx((vector short)__a, __b, __c);
8963 }
8964
vec_ste(vector pixel __a,int __b,short * __c)8965 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
8966 short *__c) {
8967 __builtin_altivec_stvehx((vector short)__a, __b, __c);
8968 }
8969
vec_ste(vector pixel __a,int __b,unsigned short * __c)8970 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
8971 unsigned short *__c) {
8972 __builtin_altivec_stvehx((vector short)__a, __b, __c);
8973 }
8974
vec_ste(vector int __a,int __b,int * __c)8975 static __inline__ void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) {
8976 __builtin_altivec_stvewx(__a, __b, __c);
8977 }
8978
vec_ste(vector unsigned int __a,int __b,unsigned int * __c)8979 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b,
8980 unsigned int *__c) {
8981 __builtin_altivec_stvewx((vector int)__a, __b, __c);
8982 }
8983
vec_ste(vector bool int __a,int __b,int * __c)8984 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
8985 int *__c) {
8986 __builtin_altivec_stvewx((vector int)__a, __b, __c);
8987 }
8988
vec_ste(vector bool int __a,int __b,unsigned int * __c)8989 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
8990 unsigned int *__c) {
8991 __builtin_altivec_stvewx((vector int)__a, __b, __c);
8992 }
8993
vec_ste(vector float __a,int __b,float * __c)8994 static __inline__ void __ATTRS_o_ai vec_ste(vector float __a, int __b,
8995 float *__c) {
8996 __builtin_altivec_stvewx((vector int)__a, __b, __c);
8997 }
8998
8999 /* vec_stvebx */
9000
vec_stvebx(vector signed char __a,int __b,signed char * __c)9001 static __inline__ void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b,
9002 signed char *__c) {
9003 __builtin_altivec_stvebx((vector char)__a, __b, __c);
9004 }
9005
vec_stvebx(vector unsigned char __a,int __b,unsigned char * __c)9006 static __inline__ void __ATTRS_o_ai vec_stvebx(vector unsigned char __a,
9007 int __b, unsigned char *__c) {
9008 __builtin_altivec_stvebx((vector char)__a, __b, __c);
9009 }
9010
vec_stvebx(vector bool char __a,int __b,signed char * __c)9011 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
9012 signed char *__c) {
9013 __builtin_altivec_stvebx((vector char)__a, __b, __c);
9014 }
9015
vec_stvebx(vector bool char __a,int __b,unsigned char * __c)9016 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
9017 unsigned char *__c) {
9018 __builtin_altivec_stvebx((vector char)__a, __b, __c);
9019 }
9020
9021 /* vec_stvehx */
9022
vec_stvehx(vector short __a,int __b,short * __c)9023 static __inline__ void __ATTRS_o_ai vec_stvehx(vector short __a, int __b,
9024 short *__c) {
9025 __builtin_altivec_stvehx(__a, __b, __c);
9026 }
9027
vec_stvehx(vector unsigned short __a,int __b,unsigned short * __c)9028 static __inline__ void __ATTRS_o_ai vec_stvehx(vector unsigned short __a,
9029 int __b, unsigned short *__c) {
9030 __builtin_altivec_stvehx((vector short)__a, __b, __c);
9031 }
9032
vec_stvehx(vector bool short __a,int __b,short * __c)9033 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
9034 short *__c) {
9035 __builtin_altivec_stvehx((vector short)__a, __b, __c);
9036 }
9037
vec_stvehx(vector bool short __a,int __b,unsigned short * __c)9038 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
9039 unsigned short *__c) {
9040 __builtin_altivec_stvehx((vector short)__a, __b, __c);
9041 }
9042
vec_stvehx(vector pixel __a,int __b,short * __c)9043 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
9044 short *__c) {
9045 __builtin_altivec_stvehx((vector short)__a, __b, __c);
9046 }
9047
vec_stvehx(vector pixel __a,int __b,unsigned short * __c)9048 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
9049 unsigned short *__c) {
9050 __builtin_altivec_stvehx((vector short)__a, __b, __c);
9051 }
9052
9053 /* vec_stvewx */
9054
vec_stvewx(vector int __a,int __b,int * __c)9055 static __inline__ void __ATTRS_o_ai vec_stvewx(vector int __a, int __b,
9056 int *__c) {
9057 __builtin_altivec_stvewx(__a, __b, __c);
9058 }
9059
vec_stvewx(vector unsigned int __a,int __b,unsigned int * __c)9060 static __inline__ void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b,
9061 unsigned int *__c) {
9062 __builtin_altivec_stvewx((vector int)__a, __b, __c);
9063 }
9064
vec_stvewx(vector bool int __a,int __b,int * __c)9065 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
9066 int *__c) {
9067 __builtin_altivec_stvewx((vector int)__a, __b, __c);
9068 }
9069
vec_stvewx(vector bool int __a,int __b,unsigned int * __c)9070 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
9071 unsigned int *__c) {
9072 __builtin_altivec_stvewx((vector int)__a, __b, __c);
9073 }
9074
vec_stvewx(vector float __a,int __b,float * __c)9075 static __inline__ void __ATTRS_o_ai vec_stvewx(vector float __a, int __b,
9076 float *__c) {
9077 __builtin_altivec_stvewx((vector int)__a, __b, __c);
9078 }
9079
9080 /* vec_stl */
9081
vec_stl(vector signed char __a,int __b,vector signed char * __c)9082 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
9083 vector signed char *__c) {
9084 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9085 }
9086
vec_stl(vector signed char __a,int __b,signed char * __c)9087 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
9088 signed char *__c) {
9089 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9090 }
9091
vec_stl(vector unsigned char __a,int __b,vector unsigned char * __c)9092 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
9093 vector unsigned char *__c) {
9094 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9095 }
9096
vec_stl(vector unsigned char __a,int __b,unsigned char * __c)9097 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
9098 unsigned char *__c) {
9099 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9100 }
9101
vec_stl(vector bool char __a,int __b,signed char * __c)9102 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
9103 signed char *__c) {
9104 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9105 }
9106
vec_stl(vector bool char __a,int __b,unsigned char * __c)9107 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
9108 unsigned char *__c) {
9109 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9110 }
9111
vec_stl(vector bool char __a,int __b,vector bool char * __c)9112 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
9113 vector bool char *__c) {
9114 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9115 }
9116
vec_stl(vector short __a,int __b,vector short * __c)9117 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
9118 vector short *__c) {
9119 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9120 }
9121
vec_stl(vector short __a,int __b,short * __c)9122 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
9123 short *__c) {
9124 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9125 }
9126
vec_stl(vector unsigned short __a,int __b,vector unsigned short * __c)9127 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
9128 vector unsigned short *__c) {
9129 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9130 }
9131
vec_stl(vector unsigned short __a,int __b,unsigned short * __c)9132 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
9133 unsigned short *__c) {
9134 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9135 }
9136
vec_stl(vector bool short __a,int __b,short * __c)9137 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
9138 short *__c) {
9139 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9140 }
9141
vec_stl(vector bool short __a,int __b,unsigned short * __c)9142 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
9143 unsigned short *__c) {
9144 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9145 }
9146
vec_stl(vector bool short __a,int __b,vector bool short * __c)9147 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
9148 vector bool short *__c) {
9149 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9150 }
9151
vec_stl(vector pixel __a,int __b,short * __c)9152 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
9153 short *__c) {
9154 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9155 }
9156
vec_stl(vector pixel __a,int __b,unsigned short * __c)9157 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
9158 unsigned short *__c) {
9159 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9160 }
9161
vec_stl(vector pixel __a,int __b,vector pixel * __c)9162 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
9163 vector pixel *__c) {
9164 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9165 }
9166
vec_stl(vector int __a,int __b,vector int * __c)9167 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b,
9168 vector int *__c) {
9169 __builtin_altivec_stvxl(__a, __b, __c);
9170 }
9171
vec_stl(vector int __a,int __b,int * __c)9172 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) {
9173 __builtin_altivec_stvxl(__a, __b, __c);
9174 }
9175
vec_stl(vector unsigned int __a,int __b,vector unsigned int * __c)9176 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
9177 vector unsigned int *__c) {
9178 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9179 }
9180
vec_stl(vector unsigned int __a,int __b,unsigned int * __c)9181 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
9182 unsigned int *__c) {
9183 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9184 }
9185
vec_stl(vector bool int __a,int __b,int * __c)9186 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
9187 int *__c) {
9188 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9189 }
9190
vec_stl(vector bool int __a,int __b,unsigned int * __c)9191 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
9192 unsigned int *__c) {
9193 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9194 }
9195
vec_stl(vector bool int __a,int __b,vector bool int * __c)9196 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
9197 vector bool int *__c) {
9198 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9199 }
9200
vec_stl(vector float __a,int __b,vector float * __c)9201 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
9202 vector float *__c) {
9203 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9204 }
9205
vec_stl(vector float __a,int __b,float * __c)9206 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
9207 float *__c) {
9208 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9209 }
9210
9211 /* vec_stvxl */
9212
vec_stvxl(vector signed char __a,int __b,vector signed char * __c)9213 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
9214 vector signed char *__c) {
9215 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9216 }
9217
vec_stvxl(vector signed char __a,int __b,signed char * __c)9218 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
9219 signed char *__c) {
9220 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9221 }
9222
vec_stvxl(vector unsigned char __a,int __b,vector unsigned char * __c)9223 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
9224 vector unsigned char *__c) {
9225 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9226 }
9227
vec_stvxl(vector unsigned char __a,int __b,unsigned char * __c)9228 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
9229 unsigned char *__c) {
9230 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9231 }
9232
vec_stvxl(vector bool char __a,int __b,signed char * __c)9233 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9234 signed char *__c) {
9235 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9236 }
9237
vec_stvxl(vector bool char __a,int __b,unsigned char * __c)9238 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9239 unsigned char *__c) {
9240 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9241 }
9242
vec_stvxl(vector bool char __a,int __b,vector bool char * __c)9243 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9244 vector bool char *__c) {
9245 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9246 }
9247
vec_stvxl(vector short __a,int __b,vector short * __c)9248 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
9249 vector short *__c) {
9250 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9251 }
9252
vec_stvxl(vector short __a,int __b,short * __c)9253 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
9254 short *__c) {
9255 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9256 }
9257
vec_stvxl(vector unsigned short __a,int __b,vector unsigned short * __c)9258 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
9259 int __b,
9260 vector unsigned short *__c) {
9261 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9262 }
9263
vec_stvxl(vector unsigned short __a,int __b,unsigned short * __c)9264 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
9265 int __b, unsigned short *__c) {
9266 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9267 }
9268
vec_stvxl(vector bool short __a,int __b,short * __c)9269 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9270 short *__c) {
9271 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9272 }
9273
vec_stvxl(vector bool short __a,int __b,unsigned short * __c)9274 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9275 unsigned short *__c) {
9276 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9277 }
9278
vec_stvxl(vector bool short __a,int __b,vector bool short * __c)9279 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9280 vector bool short *__c) {
9281 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9282 }
9283
vec_stvxl(vector pixel __a,int __b,short * __c)9284 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9285 short *__c) {
9286 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9287 }
9288
vec_stvxl(vector pixel __a,int __b,unsigned short * __c)9289 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9290 unsigned short *__c) {
9291 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9292 }
9293
vec_stvxl(vector pixel __a,int __b,vector pixel * __c)9294 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9295 vector pixel *__c) {
9296 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9297 }
9298
vec_stvxl(vector int __a,int __b,vector int * __c)9299 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
9300 vector int *__c) {
9301 __builtin_altivec_stvxl(__a, __b, __c);
9302 }
9303
vec_stvxl(vector int __a,int __b,int * __c)9304 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
9305 int *__c) {
9306 __builtin_altivec_stvxl(__a, __b, __c);
9307 }
9308
vec_stvxl(vector unsigned int __a,int __b,vector unsigned int * __c)9309 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
9310 vector unsigned int *__c) {
9311 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9312 }
9313
vec_stvxl(vector unsigned int __a,int __b,unsigned int * __c)9314 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
9315 unsigned int *__c) {
9316 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9317 }
9318
vec_stvxl(vector bool int __a,int __b,int * __c)9319 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9320 int *__c) {
9321 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9322 }
9323
vec_stvxl(vector bool int __a,int __b,unsigned int * __c)9324 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9325 unsigned int *__c) {
9326 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9327 }
9328
vec_stvxl(vector bool int __a,int __b,vector bool int * __c)9329 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9330 vector bool int *__c) {
9331 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9332 }
9333
vec_stvxl(vector float __a,int __b,vector float * __c)9334 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
9335 vector float *__c) {
9336 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9337 }
9338
vec_stvxl(vector float __a,int __b,float * __c)9339 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
9340 float *__c) {
9341 __builtin_altivec_stvxl((vector int)__a, __b, __c);
9342 }
9343
9344 /* vec_sub */
9345
9346 static __inline__ vector signed char __ATTRS_o_ai
vec_sub(vector signed char __a,vector signed char __b)9347 vec_sub(vector signed char __a, vector signed char __b) {
9348 return __a - __b;
9349 }
9350
9351 static __inline__ vector signed char __ATTRS_o_ai
vec_sub(vector bool char __a,vector signed char __b)9352 vec_sub(vector bool char __a, vector signed char __b) {
9353 return (vector signed char)__a - __b;
9354 }
9355
9356 static __inline__ vector signed char __ATTRS_o_ai
vec_sub(vector signed char __a,vector bool char __b)9357 vec_sub(vector signed char __a, vector bool char __b) {
9358 return __a - (vector signed char)__b;
9359 }
9360
9361 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sub(vector unsigned char __a,vector unsigned char __b)9362 vec_sub(vector unsigned char __a, vector unsigned char __b) {
9363 return __a - __b;
9364 }
9365
9366 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sub(vector bool char __a,vector unsigned char __b)9367 vec_sub(vector bool char __a, vector unsigned char __b) {
9368 return (vector unsigned char)__a - __b;
9369 }
9370
9371 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sub(vector unsigned char __a,vector bool char __b)9372 vec_sub(vector unsigned char __a, vector bool char __b) {
9373 return __a - (vector unsigned char)__b;
9374 }
9375
vec_sub(vector short __a,vector short __b)9376 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
9377 vector short __b) {
9378 return __a - __b;
9379 }
9380
vec_sub(vector bool short __a,vector short __b)9381 static __inline__ vector short __ATTRS_o_ai vec_sub(vector bool short __a,
9382 vector short __b) {
9383 return (vector short)__a - __b;
9384 }
9385
vec_sub(vector short __a,vector bool short __b)9386 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
9387 vector bool short __b) {
9388 return __a - (vector short)__b;
9389 }
9390
9391 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sub(vector unsigned short __a,vector unsigned short __b)9392 vec_sub(vector unsigned short __a, vector unsigned short __b) {
9393 return __a - __b;
9394 }
9395
9396 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sub(vector bool short __a,vector unsigned short __b)9397 vec_sub(vector bool short __a, vector unsigned short __b) {
9398 return (vector unsigned short)__a - __b;
9399 }
9400
9401 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sub(vector unsigned short __a,vector bool short __b)9402 vec_sub(vector unsigned short __a, vector bool short __b) {
9403 return __a - (vector unsigned short)__b;
9404 }
9405
vec_sub(vector int __a,vector int __b)9406 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
9407 vector int __b) {
9408 return __a - __b;
9409 }
9410
vec_sub(vector bool int __a,vector int __b)9411 static __inline__ vector int __ATTRS_o_ai vec_sub(vector bool int __a,
9412 vector int __b) {
9413 return (vector int)__a - __b;
9414 }
9415
vec_sub(vector int __a,vector bool int __b)9416 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
9417 vector bool int __b) {
9418 return __a - (vector int)__b;
9419 }
9420
9421 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sub(vector unsigned int __a,vector unsigned int __b)9422 vec_sub(vector unsigned int __a, vector unsigned int __b) {
9423 return __a - __b;
9424 }
9425
9426 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sub(vector bool int __a,vector unsigned int __b)9427 vec_sub(vector bool int __a, vector unsigned int __b) {
9428 return (vector unsigned int)__a - __b;
9429 }
9430
9431 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sub(vector unsigned int __a,vector bool int __b)9432 vec_sub(vector unsigned int __a, vector bool int __b) {
9433 return __a - (vector unsigned int)__b;
9434 }
9435
9436 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9437 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_sub(vector signed __int128 __a,vector signed __int128 __b)9438 vec_sub(vector signed __int128 __a, vector signed __int128 __b) {
9439 return __a - __b;
9440 }
9441
9442 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_sub(vector unsigned __int128 __a,vector unsigned __int128 __b)9443 vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9444 return __a - __b;
9445 }
9446 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9447
9448 #ifdef __VSX__
9449 static __inline__ vector signed long long __ATTRS_o_ai
vec_sub(vector signed long long __a,vector signed long long __b)9450 vec_sub(vector signed long long __a, vector signed long long __b) {
9451 return __a - __b;
9452 }
9453
9454 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sub(vector unsigned long long __a,vector unsigned long long __b)9455 vec_sub(vector unsigned long long __a, vector unsigned long long __b) {
9456 return __a - __b;
9457 }
9458
vec_sub(vector double __a,vector double __b)9459 static __inline__ vector double __ATTRS_o_ai vec_sub(vector double __a,
9460 vector double __b) {
9461 return __a - __b;
9462 }
9463 #endif
9464
vec_sub(vector float __a,vector float __b)9465 static __inline__ vector float __ATTRS_o_ai vec_sub(vector float __a,
9466 vector float __b) {
9467 return __a - __b;
9468 }
9469
9470 /* vec_vsububm */
9471
9472 #define __builtin_altivec_vsububm vec_vsububm
9473
9474 static __inline__ vector signed char __ATTRS_o_ai
vec_vsububm(vector signed char __a,vector signed char __b)9475 vec_vsububm(vector signed char __a, vector signed char __b) {
9476 return __a - __b;
9477 }
9478
9479 static __inline__ vector signed char __ATTRS_o_ai
vec_vsububm(vector bool char __a,vector signed char __b)9480 vec_vsububm(vector bool char __a, vector signed char __b) {
9481 return (vector signed char)__a - __b;
9482 }
9483
9484 static __inline__ vector signed char __ATTRS_o_ai
vec_vsububm(vector signed char __a,vector bool char __b)9485 vec_vsububm(vector signed char __a, vector bool char __b) {
9486 return __a - (vector signed char)__b;
9487 }
9488
9489 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububm(vector unsigned char __a,vector unsigned char __b)9490 vec_vsububm(vector unsigned char __a, vector unsigned char __b) {
9491 return __a - __b;
9492 }
9493
9494 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububm(vector bool char __a,vector unsigned char __b)9495 vec_vsububm(vector bool char __a, vector unsigned char __b) {
9496 return (vector unsigned char)__a - __b;
9497 }
9498
9499 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububm(vector unsigned char __a,vector bool char __b)9500 vec_vsububm(vector unsigned char __a, vector bool char __b) {
9501 return __a - (vector unsigned char)__b;
9502 }
9503
9504 /* vec_vsubuhm */
9505
9506 #define __builtin_altivec_vsubuhm vec_vsubuhm
9507
vec_vsubuhm(vector short __a,vector short __b)9508 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
9509 vector short __b) {
9510 return __a - __b;
9511 }
9512
vec_vsubuhm(vector bool short __a,vector short __b)9513 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a,
9514 vector short __b) {
9515 return (vector short)__a - __b;
9516 }
9517
vec_vsubuhm(vector short __a,vector bool short __b)9518 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
9519 vector bool short __b) {
9520 return __a - (vector short)__b;
9521 }
9522
9523 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhm(vector unsigned short __a,vector unsigned short __b)9524 vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) {
9525 return __a - __b;
9526 }
9527
9528 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhm(vector bool short __a,vector unsigned short __b)9529 vec_vsubuhm(vector bool short __a, vector unsigned short __b) {
9530 return (vector unsigned short)__a - __b;
9531 }
9532
9533 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhm(vector unsigned short __a,vector bool short __b)9534 vec_vsubuhm(vector unsigned short __a, vector bool short __b) {
9535 return __a - (vector unsigned short)__b;
9536 }
9537
9538 /* vec_vsubuwm */
9539
9540 #define __builtin_altivec_vsubuwm vec_vsubuwm
9541
vec_vsubuwm(vector int __a,vector int __b)9542 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
9543 vector int __b) {
9544 return __a - __b;
9545 }
9546
vec_vsubuwm(vector bool int __a,vector int __b)9547 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
9548 vector int __b) {
9549 return (vector int)__a - __b;
9550 }
9551
vec_vsubuwm(vector int __a,vector bool int __b)9552 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
9553 vector bool int __b) {
9554 return __a - (vector int)__b;
9555 }
9556
9557 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuwm(vector unsigned int __a,vector unsigned int __b)9558 vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) {
9559 return __a - __b;
9560 }
9561
9562 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuwm(vector bool int __a,vector unsigned int __b)9563 vec_vsubuwm(vector bool int __a, vector unsigned int __b) {
9564 return (vector unsigned int)__a - __b;
9565 }
9566
9567 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuwm(vector unsigned int __a,vector bool int __b)9568 vec_vsubuwm(vector unsigned int __a, vector bool int __b) {
9569 return __a - (vector unsigned int)__b;
9570 }
9571
9572 /* vec_vsubfp */
9573
9574 #define __builtin_altivec_vsubfp vec_vsubfp
9575
9576 static __inline__ vector float __attribute__((__always_inline__))
vec_vsubfp(vector float __a,vector float __b)9577 vec_vsubfp(vector float __a, vector float __b) {
9578 return __a - __b;
9579 }
9580
9581 /* vec_subc */
9582
9583 static __inline__ vector unsigned int __ATTRS_o_ai
vec_subc(vector unsigned int __a,vector unsigned int __b)9584 vec_subc(vector unsigned int __a, vector unsigned int __b) {
9585 return __builtin_altivec_vsubcuw(__a, __b);
9586 }
9587
9588 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9589 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_subc(vector unsigned __int128 __a,vector unsigned __int128 __b)9590 vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9591 return __builtin_altivec_vsubcuq(__a, __b);
9592 }
9593
9594 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_subc(vector signed __int128 __a,vector signed __int128 __b)9595 vec_subc(vector signed __int128 __a, vector signed __int128 __b) {
9596 return __builtin_altivec_vsubcuq(__a, __b);
9597 }
9598 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9599
9600 /* vec_vsubcuw */
9601
9602 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vsubcuw(vector unsigned int __a,vector unsigned int __b)9603 vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) {
9604 return __builtin_altivec_vsubcuw(__a, __b);
9605 }
9606
9607 /* vec_subs */
9608
9609 static __inline__ vector signed char __ATTRS_o_ai
vec_subs(vector signed char __a,vector signed char __b)9610 vec_subs(vector signed char __a, vector signed char __b) {
9611 return __builtin_altivec_vsubsbs(__a, __b);
9612 }
9613
9614 static __inline__ vector signed char __ATTRS_o_ai
vec_subs(vector bool char __a,vector signed char __b)9615 vec_subs(vector bool char __a, vector signed char __b) {
9616 return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
9617 }
9618
9619 static __inline__ vector signed char __ATTRS_o_ai
vec_subs(vector signed char __a,vector bool char __b)9620 vec_subs(vector signed char __a, vector bool char __b) {
9621 return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
9622 }
9623
9624 static __inline__ vector unsigned char __ATTRS_o_ai
vec_subs(vector unsigned char __a,vector unsigned char __b)9625 vec_subs(vector unsigned char __a, vector unsigned char __b) {
9626 return __builtin_altivec_vsububs(__a, __b);
9627 }
9628
9629 static __inline__ vector unsigned char __ATTRS_o_ai
vec_subs(vector bool char __a,vector unsigned char __b)9630 vec_subs(vector bool char __a, vector unsigned char __b) {
9631 return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
9632 }
9633
9634 static __inline__ vector unsigned char __ATTRS_o_ai
vec_subs(vector unsigned char __a,vector bool char __b)9635 vec_subs(vector unsigned char __a, vector bool char __b) {
9636 return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
9637 }
9638
vec_subs(vector short __a,vector short __b)9639 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
9640 vector short __b) {
9641 return __builtin_altivec_vsubshs(__a, __b);
9642 }
9643
vec_subs(vector bool short __a,vector short __b)9644 static __inline__ vector short __ATTRS_o_ai vec_subs(vector bool short __a,
9645 vector short __b) {
9646 return __builtin_altivec_vsubshs((vector short)__a, __b);
9647 }
9648
vec_subs(vector short __a,vector bool short __b)9649 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
9650 vector bool short __b) {
9651 return __builtin_altivec_vsubshs(__a, (vector short)__b);
9652 }
9653
9654 static __inline__ vector unsigned short __ATTRS_o_ai
vec_subs(vector unsigned short __a,vector unsigned short __b)9655 vec_subs(vector unsigned short __a, vector unsigned short __b) {
9656 return __builtin_altivec_vsubuhs(__a, __b);
9657 }
9658
9659 static __inline__ vector unsigned short __ATTRS_o_ai
vec_subs(vector bool short __a,vector unsigned short __b)9660 vec_subs(vector bool short __a, vector unsigned short __b) {
9661 return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
9662 }
9663
9664 static __inline__ vector unsigned short __ATTRS_o_ai
vec_subs(vector unsigned short __a,vector bool short __b)9665 vec_subs(vector unsigned short __a, vector bool short __b) {
9666 return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
9667 }
9668
vec_subs(vector int __a,vector int __b)9669 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
9670 vector int __b) {
9671 return __builtin_altivec_vsubsws(__a, __b);
9672 }
9673
vec_subs(vector bool int __a,vector int __b)9674 static __inline__ vector int __ATTRS_o_ai vec_subs(vector bool int __a,
9675 vector int __b) {
9676 return __builtin_altivec_vsubsws((vector int)__a, __b);
9677 }
9678
vec_subs(vector int __a,vector bool int __b)9679 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
9680 vector bool int __b) {
9681 return __builtin_altivec_vsubsws(__a, (vector int)__b);
9682 }
9683
9684 static __inline__ vector unsigned int __ATTRS_o_ai
vec_subs(vector unsigned int __a,vector unsigned int __b)9685 vec_subs(vector unsigned int __a, vector unsigned int __b) {
9686 return __builtin_altivec_vsubuws(__a, __b);
9687 }
9688
9689 static __inline__ vector unsigned int __ATTRS_o_ai
vec_subs(vector bool int __a,vector unsigned int __b)9690 vec_subs(vector bool int __a, vector unsigned int __b) {
9691 return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
9692 }
9693
9694 static __inline__ vector unsigned int __ATTRS_o_ai
vec_subs(vector unsigned int __a,vector bool int __b)9695 vec_subs(vector unsigned int __a, vector bool int __b) {
9696 return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
9697 }
9698
9699 /* vec_vsubsbs */
9700
9701 static __inline__ vector signed char __ATTRS_o_ai
vec_vsubsbs(vector signed char __a,vector signed char __b)9702 vec_vsubsbs(vector signed char __a, vector signed char __b) {
9703 return __builtin_altivec_vsubsbs(__a, __b);
9704 }
9705
9706 static __inline__ vector signed char __ATTRS_o_ai
vec_vsubsbs(vector bool char __a,vector signed char __b)9707 vec_vsubsbs(vector bool char __a, vector signed char __b) {
9708 return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
9709 }
9710
9711 static __inline__ vector signed char __ATTRS_o_ai
vec_vsubsbs(vector signed char __a,vector bool char __b)9712 vec_vsubsbs(vector signed char __a, vector bool char __b) {
9713 return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
9714 }
9715
9716 /* vec_vsububs */
9717
9718 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububs(vector unsigned char __a,vector unsigned char __b)9719 vec_vsububs(vector unsigned char __a, vector unsigned char __b) {
9720 return __builtin_altivec_vsububs(__a, __b);
9721 }
9722
9723 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububs(vector bool char __a,vector unsigned char __b)9724 vec_vsububs(vector bool char __a, vector unsigned char __b) {
9725 return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
9726 }
9727
9728 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububs(vector unsigned char __a,vector bool char __b)9729 vec_vsububs(vector unsigned char __a, vector bool char __b) {
9730 return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
9731 }
9732
9733 /* vec_vsubshs */
9734
vec_vsubshs(vector short __a,vector short __b)9735 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
9736 vector short __b) {
9737 return __builtin_altivec_vsubshs(__a, __b);
9738 }
9739
vec_vsubshs(vector bool short __a,vector short __b)9740 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a,
9741 vector short __b) {
9742 return __builtin_altivec_vsubshs((vector short)__a, __b);
9743 }
9744
vec_vsubshs(vector short __a,vector bool short __b)9745 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
9746 vector bool short __b) {
9747 return __builtin_altivec_vsubshs(__a, (vector short)__b);
9748 }
9749
9750 /* vec_vsubuhs */
9751
9752 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhs(vector unsigned short __a,vector unsigned short __b)9753 vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) {
9754 return __builtin_altivec_vsubuhs(__a, __b);
9755 }
9756
9757 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhs(vector bool short __a,vector unsigned short __b)9758 vec_vsubuhs(vector bool short __a, vector unsigned short __b) {
9759 return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
9760 }
9761
9762 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhs(vector unsigned short __a,vector bool short __b)9763 vec_vsubuhs(vector unsigned short __a, vector bool short __b) {
9764 return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
9765 }
9766
9767 /* vec_vsubsws */
9768
vec_vsubsws(vector int __a,vector int __b)9769 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
9770 vector int __b) {
9771 return __builtin_altivec_vsubsws(__a, __b);
9772 }
9773
vec_vsubsws(vector bool int __a,vector int __b)9774 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a,
9775 vector int __b) {
9776 return __builtin_altivec_vsubsws((vector int)__a, __b);
9777 }
9778
vec_vsubsws(vector int __a,vector bool int __b)9779 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
9780 vector bool int __b) {
9781 return __builtin_altivec_vsubsws(__a, (vector int)__b);
9782 }
9783
9784 /* vec_vsubuws */
9785
9786 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuws(vector unsigned int __a,vector unsigned int __b)9787 vec_vsubuws(vector unsigned int __a, vector unsigned int __b) {
9788 return __builtin_altivec_vsubuws(__a, __b);
9789 }
9790
9791 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuws(vector bool int __a,vector unsigned int __b)9792 vec_vsubuws(vector bool int __a, vector unsigned int __b) {
9793 return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
9794 }
9795
9796 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuws(vector unsigned int __a,vector bool int __b)9797 vec_vsubuws(vector unsigned int __a, vector bool int __b) {
9798 return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
9799 }
9800
9801 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9802 /* vec_vsubuqm */
9803
9804 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubuqm(vector signed __int128 __a,vector signed __int128 __b)9805 vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) {
9806 return __a - __b;
9807 }
9808
9809 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubuqm(vector unsigned __int128 __a,vector unsigned __int128 __b)9810 vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9811 return __a - __b;
9812 }
9813
9814 /* vec_vsubeuqm */
9815
9816 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubeuqm(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)9817 vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b,
9818 vector signed __int128 __c) {
9819 return __builtin_altivec_vsubeuqm(__a, __b, __c);
9820 }
9821
9822 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubeuqm(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)9823 vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
9824 vector unsigned __int128 __c) {
9825 return __builtin_altivec_vsubeuqm(__a, __b, __c);
9826 }
9827
9828 /* vec_vsubcuq */
9829
9830 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubcuq(vector signed __int128 __a,vector signed __int128 __b)9831 vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) {
9832 return __builtin_altivec_vsubcuq(__a, __b);
9833 }
9834
9835 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubcuq(vector unsigned __int128 __a,vector unsigned __int128 __b)9836 vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9837 return __builtin_altivec_vsubcuq(__a, __b);
9838 }
9839
9840 /* vec_vsubecuq */
9841
9842 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubecuq(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)9843 vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b,
9844 vector signed __int128 __c) {
9845 return __builtin_altivec_vsubecuq(__a, __b, __c);
9846 }
9847
9848 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubecuq(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)9849 vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
9850 vector unsigned __int128 __c) {
9851 return __builtin_altivec_vsubecuq(__a, __b, __c);
9852 }
9853 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9854
9855 /* vec_sum4s */
9856
vec_sum4s(vector signed char __a,vector int __b)9857 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed char __a,
9858 vector int __b) {
9859 return __builtin_altivec_vsum4sbs(__a, __b);
9860 }
9861
9862 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sum4s(vector unsigned char __a,vector unsigned int __b)9863 vec_sum4s(vector unsigned char __a, vector unsigned int __b) {
9864 return __builtin_altivec_vsum4ubs(__a, __b);
9865 }
9866
vec_sum4s(vector signed short __a,vector int __b)9867 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed short __a,
9868 vector int __b) {
9869 return __builtin_altivec_vsum4shs(__a, __b);
9870 }
9871
9872 /* vec_vsum4sbs */
9873
9874 static __inline__ vector int __attribute__((__always_inline__))
vec_vsum4sbs(vector signed char __a,vector int __b)9875 vec_vsum4sbs(vector signed char __a, vector int __b) {
9876 return __builtin_altivec_vsum4sbs(__a, __b);
9877 }
9878
9879 /* vec_vsum4ubs */
9880
9881 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vsum4ubs(vector unsigned char __a,vector unsigned int __b)9882 vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) {
9883 return __builtin_altivec_vsum4ubs(__a, __b);
9884 }
9885
9886 /* vec_vsum4shs */
9887
9888 static __inline__ vector int __attribute__((__always_inline__))
vec_vsum4shs(vector signed short __a,vector int __b)9889 vec_vsum4shs(vector signed short __a, vector int __b) {
9890 return __builtin_altivec_vsum4shs(__a, __b);
9891 }
9892
9893 /* vec_sum2s */
9894
9895 /* The vsum2sws instruction has a big-endian bias, so that the second
9896 input vector and the result always reference big-endian elements
9897 1 and 3 (little-endian element 0 and 2). For ease of porting the
9898 programmer wants elements 1 and 3 in both cases, so for little
9899 endian we must perform some permutes. */
9900
9901 static __inline__ vector signed int __attribute__((__always_inline__))
vec_sum2s(vector int __a,vector int __b)9902 vec_sum2s(vector int __a, vector int __b) {
9903 #ifdef __LITTLE_ENDIAN__
9904 vector int __c = (vector signed int)vec_perm(
9905 __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9906 8, 9, 10, 11));
9907 __c = __builtin_altivec_vsum2sws(__a, __c);
9908 return (vector signed int)vec_perm(
9909 __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9910 8, 9, 10, 11));
9911 #else
9912 return __builtin_altivec_vsum2sws(__a, __b);
9913 #endif
9914 }
9915
9916 /* vec_vsum2sws */
9917
9918 static __inline__ vector signed int __attribute__((__always_inline__))
vec_vsum2sws(vector int __a,vector int __b)9919 vec_vsum2sws(vector int __a, vector int __b) {
9920 #ifdef __LITTLE_ENDIAN__
9921 vector int __c = (vector signed int)vec_perm(
9922 __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9923 8, 9, 10, 11));
9924 __c = __builtin_altivec_vsum2sws(__a, __c);
9925 return (vector signed int)vec_perm(
9926 __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9927 8, 9, 10, 11));
9928 #else
9929 return __builtin_altivec_vsum2sws(__a, __b);
9930 #endif
9931 }
9932
9933 /* vec_sums */
9934
9935 /* The vsumsws instruction has a big-endian bias, so that the second
9936 input vector and the result always reference big-endian element 3
9937 (little-endian element 0). For ease of porting the programmer
9938 wants element 3 in both cases, so for little endian we must perform
9939 some permutes. */
9940
9941 static __inline__ vector signed int __attribute__((__always_inline__))
vec_sums(vector signed int __a,vector signed int __b)9942 vec_sums(vector signed int __a, vector signed int __b) {
9943 #ifdef __LITTLE_ENDIAN__
9944 __b = (vector signed int)vec_splat(__b, 3);
9945 __b = __builtin_altivec_vsumsws(__a, __b);
9946 return (vector signed int)(0, 0, 0, __b[0]);
9947 #else
9948 return __builtin_altivec_vsumsws(__a, __b);
9949 #endif
9950 }
9951
9952 /* vec_vsumsws */
9953
9954 static __inline__ vector signed int __attribute__((__always_inline__))
vec_vsumsws(vector signed int __a,vector signed int __b)9955 vec_vsumsws(vector signed int __a, vector signed int __b) {
9956 #ifdef __LITTLE_ENDIAN__
9957 __b = (vector signed int)vec_splat(__b, 3);
9958 __b = __builtin_altivec_vsumsws(__a, __b);
9959 return (vector signed int)(0, 0, 0, __b[0]);
9960 #else
9961 return __builtin_altivec_vsumsws(__a, __b);
9962 #endif
9963 }
9964
9965 /* vec_trunc */
9966
vec_trunc(vector float __a)9967 static __inline__ vector float __ATTRS_o_ai vec_trunc(vector float __a) {
9968 #ifdef __VSX__
9969 return __builtin_vsx_xvrspiz(__a);
9970 #else
9971 return __builtin_altivec_vrfiz(__a);
9972 #endif
9973 }
9974
9975 #ifdef __VSX__
vec_trunc(vector double __a)9976 static __inline__ vector double __ATTRS_o_ai vec_trunc(vector double __a) {
9977 return __builtin_vsx_xvrdpiz(__a);
9978 }
9979 #endif
9980
9981 /* vec_vrfiz */
9982
9983 static __inline__ vector float __attribute__((__always_inline__))
vec_vrfiz(vector float __a)9984 vec_vrfiz(vector float __a) {
9985 return __builtin_altivec_vrfiz(__a);
9986 }
9987
9988 /* vec_unpackh */
9989
9990 /* The vector unpack instructions all have a big-endian bias, so for
9991 little endian we must reverse the meanings of "high" and "low." */
9992
9993 static __inline__ vector short __ATTRS_o_ai
vec_unpackh(vector signed char __a)9994 vec_unpackh(vector signed char __a) {
9995 #ifdef __LITTLE_ENDIAN__
9996 return __builtin_altivec_vupklsb((vector char)__a);
9997 #else
9998 return __builtin_altivec_vupkhsb((vector char)__a);
9999 #endif
10000 }
10001
10002 static __inline__ vector bool short __ATTRS_o_ai
vec_unpackh(vector bool char __a)10003 vec_unpackh(vector bool char __a) {
10004 #ifdef __LITTLE_ENDIAN__
10005 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10006 #else
10007 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10008 #endif
10009 }
10010
vec_unpackh(vector short __a)10011 static __inline__ vector int __ATTRS_o_ai vec_unpackh(vector short __a) {
10012 #ifdef __LITTLE_ENDIAN__
10013 return __builtin_altivec_vupklsh(__a);
10014 #else
10015 return __builtin_altivec_vupkhsh(__a);
10016 #endif
10017 }
10018
10019 static __inline__ vector bool int __ATTRS_o_ai
vec_unpackh(vector bool short __a)10020 vec_unpackh(vector bool short __a) {
10021 #ifdef __LITTLE_ENDIAN__
10022 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10023 #else
10024 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10025 #endif
10026 }
10027
10028 static __inline__ vector unsigned int __ATTRS_o_ai
vec_unpackh(vector pixel __a)10029 vec_unpackh(vector pixel __a) {
10030 #ifdef __LITTLE_ENDIAN__
10031 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10032 #else
10033 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10034 #endif
10035 }
10036
10037 #ifdef __POWER8_VECTOR__
vec_unpackh(vector int __a)10038 static __inline__ vector long long __ATTRS_o_ai vec_unpackh(vector int __a) {
10039 #ifdef __LITTLE_ENDIAN__
10040 return __builtin_altivec_vupklsw(__a);
10041 #else
10042 return __builtin_altivec_vupkhsw(__a);
10043 #endif
10044 }
10045
10046 static __inline__ vector bool long long __ATTRS_o_ai
vec_unpackh(vector bool int __a)10047 vec_unpackh(vector bool int __a) {
10048 #ifdef __LITTLE_ENDIAN__
10049 return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10050 #else
10051 return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10052 #endif
10053 }
10054 #endif
10055
10056 /* vec_vupkhsb */
10057
10058 static __inline__ vector short __ATTRS_o_ai
vec_vupkhsb(vector signed char __a)10059 vec_vupkhsb(vector signed char __a) {
10060 #ifdef __LITTLE_ENDIAN__
10061 return __builtin_altivec_vupklsb((vector char)__a);
10062 #else
10063 return __builtin_altivec_vupkhsb((vector char)__a);
10064 #endif
10065 }
10066
10067 static __inline__ vector bool short __ATTRS_o_ai
vec_vupkhsb(vector bool char __a)10068 vec_vupkhsb(vector bool char __a) {
10069 #ifdef __LITTLE_ENDIAN__
10070 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10071 #else
10072 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10073 #endif
10074 }
10075
10076 /* vec_vupkhsh */
10077
vec_vupkhsh(vector short __a)10078 static __inline__ vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) {
10079 #ifdef __LITTLE_ENDIAN__
10080 return __builtin_altivec_vupklsh(__a);
10081 #else
10082 return __builtin_altivec_vupkhsh(__a);
10083 #endif
10084 }
10085
10086 static __inline__ vector bool int __ATTRS_o_ai
vec_vupkhsh(vector bool short __a)10087 vec_vupkhsh(vector bool short __a) {
10088 #ifdef __LITTLE_ENDIAN__
10089 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10090 #else
10091 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10092 #endif
10093 }
10094
10095 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vupkhsh(vector pixel __a)10096 vec_vupkhsh(vector pixel __a) {
10097 #ifdef __LITTLE_ENDIAN__
10098 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10099 #else
10100 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10101 #endif
10102 }
10103
10104 /* vec_vupkhsw */
10105
10106 #ifdef __POWER8_VECTOR__
vec_vupkhsw(vector int __a)10107 static __inline__ vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) {
10108 #ifdef __LITTLE_ENDIAN__
10109 return __builtin_altivec_vupklsw(__a);
10110 #else
10111 return __builtin_altivec_vupkhsw(__a);
10112 #endif
10113 }
10114
10115 static __inline__ vector bool long long __ATTRS_o_ai
vec_vupkhsw(vector bool int __a)10116 vec_vupkhsw(vector bool int __a) {
10117 #ifdef __LITTLE_ENDIAN__
10118 return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10119 #else
10120 return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10121 #endif
10122 }
10123 #endif
10124
10125 /* vec_unpackl */
10126
10127 static __inline__ vector short __ATTRS_o_ai
vec_unpackl(vector signed char __a)10128 vec_unpackl(vector signed char __a) {
10129 #ifdef __LITTLE_ENDIAN__
10130 return __builtin_altivec_vupkhsb((vector char)__a);
10131 #else
10132 return __builtin_altivec_vupklsb((vector char)__a);
10133 #endif
10134 }
10135
10136 static __inline__ vector bool short __ATTRS_o_ai
vec_unpackl(vector bool char __a)10137 vec_unpackl(vector bool char __a) {
10138 #ifdef __LITTLE_ENDIAN__
10139 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10140 #else
10141 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10142 #endif
10143 }
10144
vec_unpackl(vector short __a)10145 static __inline__ vector int __ATTRS_o_ai vec_unpackl(vector short __a) {
10146 #ifdef __LITTLE_ENDIAN__
10147 return __builtin_altivec_vupkhsh(__a);
10148 #else
10149 return __builtin_altivec_vupklsh(__a);
10150 #endif
10151 }
10152
10153 static __inline__ vector bool int __ATTRS_o_ai
vec_unpackl(vector bool short __a)10154 vec_unpackl(vector bool short __a) {
10155 #ifdef __LITTLE_ENDIAN__
10156 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10157 #else
10158 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10159 #endif
10160 }
10161
10162 static __inline__ vector unsigned int __ATTRS_o_ai
vec_unpackl(vector pixel __a)10163 vec_unpackl(vector pixel __a) {
10164 #ifdef __LITTLE_ENDIAN__
10165 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10166 #else
10167 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10168 #endif
10169 }
10170
10171 #ifdef __POWER8_VECTOR__
vec_unpackl(vector int __a)10172 static __inline__ vector long long __ATTRS_o_ai vec_unpackl(vector int __a) {
10173 #ifdef __LITTLE_ENDIAN__
10174 return __builtin_altivec_vupkhsw(__a);
10175 #else
10176 return __builtin_altivec_vupklsw(__a);
10177 #endif
10178 }
10179
10180 static __inline__ vector bool long long __ATTRS_o_ai
vec_unpackl(vector bool int __a)10181 vec_unpackl(vector bool int __a) {
10182 #ifdef __LITTLE_ENDIAN__
10183 return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10184 #else
10185 return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10186 #endif
10187 }
10188 #endif
10189
10190 /* vec_vupklsb */
10191
10192 static __inline__ vector short __ATTRS_o_ai
vec_vupklsb(vector signed char __a)10193 vec_vupklsb(vector signed char __a) {
10194 #ifdef __LITTLE_ENDIAN__
10195 return __builtin_altivec_vupkhsb((vector char)__a);
10196 #else
10197 return __builtin_altivec_vupklsb((vector char)__a);
10198 #endif
10199 }
10200
10201 static __inline__ vector bool short __ATTRS_o_ai
vec_vupklsb(vector bool char __a)10202 vec_vupklsb(vector bool char __a) {
10203 #ifdef __LITTLE_ENDIAN__
10204 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10205 #else
10206 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10207 #endif
10208 }
10209
10210 /* vec_vupklsh */
10211
vec_vupklsh(vector short __a)10212 static __inline__ vector int __ATTRS_o_ai vec_vupklsh(vector short __a) {
10213 #ifdef __LITTLE_ENDIAN__
10214 return __builtin_altivec_vupkhsh(__a);
10215 #else
10216 return __builtin_altivec_vupklsh(__a);
10217 #endif
10218 }
10219
10220 static __inline__ vector bool int __ATTRS_o_ai
vec_vupklsh(vector bool short __a)10221 vec_vupklsh(vector bool short __a) {
10222 #ifdef __LITTLE_ENDIAN__
10223 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10224 #else
10225 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10226 #endif
10227 }
10228
10229 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vupklsh(vector pixel __a)10230 vec_vupklsh(vector pixel __a) {
10231 #ifdef __LITTLE_ENDIAN__
10232 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10233 #else
10234 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10235 #endif
10236 }
10237
10238 /* vec_vupklsw */
10239
10240 #ifdef __POWER8_VECTOR__
vec_vupklsw(vector int __a)10241 static __inline__ vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) {
10242 #ifdef __LITTLE_ENDIAN__
10243 return __builtin_altivec_vupkhsw(__a);
10244 #else
10245 return __builtin_altivec_vupklsw(__a);
10246 #endif
10247 }
10248
10249 static __inline__ vector bool long long __ATTRS_o_ai
vec_vupklsw(vector bool int __a)10250 vec_vupklsw(vector bool int __a) {
10251 #ifdef __LITTLE_ENDIAN__
10252 return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10253 #else
10254 return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10255 #endif
10256 }
10257 #endif
10258
10259 /* vec_vsx_ld */
10260
10261 #ifdef __VSX__
10262
10263 static __inline__ vector bool int __ATTRS_o_ai
vec_vsx_ld(int __a,const vector bool int * __b)10264 vec_vsx_ld(int __a, const vector bool int *__b) {
10265 return (vector bool int)__builtin_vsx_lxvw4x(__a, __b);
10266 }
10267
10268 static __inline__ vector signed int __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed int * __b)10269 vec_vsx_ld(int __a, const vector signed int *__b) {
10270 return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
10271 }
10272
10273 static __inline__ vector signed int __ATTRS_o_ai
vec_vsx_ld(int __a,const signed int * __b)10274 vec_vsx_ld(int __a, const signed int *__b) {
10275 return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
10276 }
10277
10278 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned int * __b)10279 vec_vsx_ld(int __a, const vector unsigned int *__b) {
10280 return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
10281 }
10282
10283 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsx_ld(int __a,const unsigned int * __b)10284 vec_vsx_ld(int __a, const unsigned int *__b) {
10285 return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
10286 }
10287
10288 static __inline__ vector float __ATTRS_o_ai
vec_vsx_ld(int __a,const vector float * __b)10289 vec_vsx_ld(int __a, const vector float *__b) {
10290 return (vector float)__builtin_vsx_lxvw4x(__a, __b);
10291 }
10292
vec_vsx_ld(int __a,const float * __b)10293 static __inline__ vector float __ATTRS_o_ai vec_vsx_ld(int __a,
10294 const float *__b) {
10295 return (vector float)__builtin_vsx_lxvw4x(__a, __b);
10296 }
10297
10298 static __inline__ vector signed long long __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed long long * __b)10299 vec_vsx_ld(int __a, const vector signed long long *__b) {
10300 return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b);
10301 }
10302
10303 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned long long * __b)10304 vec_vsx_ld(int __a, const vector unsigned long long *__b) {
10305 return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b);
10306 }
10307
10308 static __inline__ vector double __ATTRS_o_ai
vec_vsx_ld(int __a,const vector double * __b)10309 vec_vsx_ld(int __a, const vector double *__b) {
10310 return (vector double)__builtin_vsx_lxvd2x(__a, __b);
10311 }
10312
10313 static __inline__ vector double __ATTRS_o_ai
vec_vsx_ld(int __a,const double * __b)10314 vec_vsx_ld(int __a, const double *__b) {
10315 return (vector double)__builtin_vsx_lxvd2x(__a, __b);
10316 }
10317
10318 static __inline__ vector bool short __ATTRS_o_ai
vec_vsx_ld(int __a,const vector bool short * __b)10319 vec_vsx_ld(int __a, const vector bool short *__b) {
10320 return (vector bool short)__builtin_vsx_lxvw4x(__a, __b);
10321 }
10322
10323 static __inline__ vector signed short __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed short * __b)10324 vec_vsx_ld(int __a, const vector signed short *__b) {
10325 return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
10326 }
10327
10328 static __inline__ vector signed short __ATTRS_o_ai
vec_vsx_ld(int __a,const signed short * __b)10329 vec_vsx_ld(int __a, const signed short *__b) {
10330 return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
10331 }
10332
10333 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned short * __b)10334 vec_vsx_ld(int __a, const vector unsigned short *__b) {
10335 return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
10336 }
10337
10338 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsx_ld(int __a,const unsigned short * __b)10339 vec_vsx_ld(int __a, const unsigned short *__b) {
10340 return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
10341 }
10342
10343 static __inline__ vector bool char __ATTRS_o_ai
vec_vsx_ld(int __a,const vector bool char * __b)10344 vec_vsx_ld(int __a, const vector bool char *__b) {
10345 return (vector bool char)__builtin_vsx_lxvw4x(__a, __b);
10346 }
10347
10348 static __inline__ vector signed char __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed char * __b)10349 vec_vsx_ld(int __a, const vector signed char *__b) {
10350 return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
10351 }
10352
10353 static __inline__ vector signed char __ATTRS_o_ai
vec_vsx_ld(int __a,const signed char * __b)10354 vec_vsx_ld(int __a, const signed char *__b) {
10355 return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
10356 }
10357
10358 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned char * __b)10359 vec_vsx_ld(int __a, const vector unsigned char *__b) {
10360 return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
10361 }
10362
10363 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsx_ld(int __a,const unsigned char * __b)10364 vec_vsx_ld(int __a, const unsigned char *__b) {
10365 return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
10366 }
10367
10368 #endif
10369
10370 /* vec_vsx_st */
10371
10372 #ifdef __VSX__
10373
vec_vsx_st(vector bool int __a,int __b,vector bool int * __c)10374 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
10375 vector bool int *__c) {
10376 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10377 }
10378
vec_vsx_st(vector bool int __a,int __b,signed int * __c)10379 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
10380 signed int *__c) {
10381 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10382 }
10383
vec_vsx_st(vector bool int __a,int __b,unsigned int * __c)10384 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
10385 unsigned int *__c) {
10386 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10387 }
10388
vec_vsx_st(vector signed int __a,int __b,vector signed int * __c)10389 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
10390 vector signed int *__c) {
10391 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10392 }
10393
vec_vsx_st(vector signed int __a,int __b,signed int * __c)10394 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
10395 signed int *__c) {
10396 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10397 }
10398
vec_vsx_st(vector unsigned int __a,int __b,vector unsigned int * __c)10399 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
10400 vector unsigned int *__c) {
10401 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10402 }
10403
vec_vsx_st(vector unsigned int __a,int __b,unsigned int * __c)10404 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
10405 unsigned int *__c) {
10406 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10407 }
10408
vec_vsx_st(vector float __a,int __b,vector float * __c)10409 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
10410 vector float *__c) {
10411 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10412 }
10413
vec_vsx_st(vector float __a,int __b,float * __c)10414 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
10415 float *__c) {
10416 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10417 }
10418
vec_vsx_st(vector signed long long __a,int __b,vector signed long long * __c)10419 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed long long __a,
10420 int __b,
10421 vector signed long long *__c) {
10422 __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10423 }
10424
vec_vsx_st(vector unsigned long long __a,int __b,vector unsigned long long * __c)10425 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a,
10426 int __b,
10427 vector unsigned long long *__c) {
10428 __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10429 }
10430
vec_vsx_st(vector double __a,int __b,vector double * __c)10431 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
10432 vector double *__c) {
10433 __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10434 }
10435
vec_vsx_st(vector double __a,int __b,double * __c)10436 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
10437 double *__c) {
10438 __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10439 }
10440
vec_vsx_st(vector bool short __a,int __b,vector bool short * __c)10441 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
10442 vector bool short *__c) {
10443 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10444 }
10445
vec_vsx_st(vector bool short __a,int __b,signed short * __c)10446 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
10447 signed short *__c) {
10448 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10449 }
10450
vec_vsx_st(vector bool short __a,int __b,unsigned short * __c)10451 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
10452 unsigned short *__c) {
10453 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10454 }
vec_vsx_st(vector signed short __a,int __b,vector signed short * __c)10455 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
10456 vector signed short *__c) {
10457 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10458 }
10459
vec_vsx_st(vector signed short __a,int __b,signed short * __c)10460 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
10461 signed short *__c) {
10462 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10463 }
10464
vec_vsx_st(vector unsigned short __a,int __b,vector unsigned short * __c)10465 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
10466 int __b,
10467 vector unsigned short *__c) {
10468 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10469 }
10470
vec_vsx_st(vector unsigned short __a,int __b,unsigned short * __c)10471 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
10472 int __b, unsigned short *__c) {
10473 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10474 }
10475
vec_vsx_st(vector bool char __a,int __b,vector bool char * __c)10476 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
10477 vector bool char *__c) {
10478 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10479 }
10480
vec_vsx_st(vector bool char __a,int __b,signed char * __c)10481 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
10482 signed char *__c) {
10483 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10484 }
10485
vec_vsx_st(vector bool char __a,int __b,unsigned char * __c)10486 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
10487 unsigned char *__c) {
10488 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10489 }
10490
vec_vsx_st(vector signed char __a,int __b,vector signed char * __c)10491 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
10492 vector signed char *__c) {
10493 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10494 }
10495
vec_vsx_st(vector signed char __a,int __b,signed char * __c)10496 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
10497 signed char *__c) {
10498 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10499 }
10500
vec_vsx_st(vector unsigned char __a,int __b,vector unsigned char * __c)10501 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
10502 int __b,
10503 vector unsigned char *__c) {
10504 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10505 }
10506
vec_vsx_st(vector unsigned char __a,int __b,unsigned char * __c)10507 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
10508 int __b, unsigned char *__c) {
10509 __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10510 }
10511
10512 #endif
10513
10514 /* vec_xor */
10515
10516 #define __builtin_altivec_vxor vec_xor
10517
10518 static __inline__ vector signed char __ATTRS_o_ai
vec_xor(vector signed char __a,vector signed char __b)10519 vec_xor(vector signed char __a, vector signed char __b) {
10520 return __a ^ __b;
10521 }
10522
10523 static __inline__ vector signed char __ATTRS_o_ai
vec_xor(vector bool char __a,vector signed char __b)10524 vec_xor(vector bool char __a, vector signed char __b) {
10525 return (vector signed char)__a ^ __b;
10526 }
10527
10528 static __inline__ vector signed char __ATTRS_o_ai
vec_xor(vector signed char __a,vector bool char __b)10529 vec_xor(vector signed char __a, vector bool char __b) {
10530 return __a ^ (vector signed char)__b;
10531 }
10532
10533 static __inline__ vector unsigned char __ATTRS_o_ai
vec_xor(vector unsigned char __a,vector unsigned char __b)10534 vec_xor(vector unsigned char __a, vector unsigned char __b) {
10535 return __a ^ __b;
10536 }
10537
10538 static __inline__ vector unsigned char __ATTRS_o_ai
vec_xor(vector bool char __a,vector unsigned char __b)10539 vec_xor(vector bool char __a, vector unsigned char __b) {
10540 return (vector unsigned char)__a ^ __b;
10541 }
10542
10543 static __inline__ vector unsigned char __ATTRS_o_ai
vec_xor(vector unsigned char __a,vector bool char __b)10544 vec_xor(vector unsigned char __a, vector bool char __b) {
10545 return __a ^ (vector unsigned char)__b;
10546 }
10547
vec_xor(vector bool char __a,vector bool char __b)10548 static __inline__ vector bool char __ATTRS_o_ai vec_xor(vector bool char __a,
10549 vector bool char __b) {
10550 return __a ^ __b;
10551 }
10552
vec_xor(vector short __a,vector short __b)10553 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
10554 vector short __b) {
10555 return __a ^ __b;
10556 }
10557
vec_xor(vector bool short __a,vector short __b)10558 static __inline__ vector short __ATTRS_o_ai vec_xor(vector bool short __a,
10559 vector short __b) {
10560 return (vector short)__a ^ __b;
10561 }
10562
vec_xor(vector short __a,vector bool short __b)10563 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
10564 vector bool short __b) {
10565 return __a ^ (vector short)__b;
10566 }
10567
10568 static __inline__ vector unsigned short __ATTRS_o_ai
vec_xor(vector unsigned short __a,vector unsigned short __b)10569 vec_xor(vector unsigned short __a, vector unsigned short __b) {
10570 return __a ^ __b;
10571 }
10572
10573 static __inline__ vector unsigned short __ATTRS_o_ai
vec_xor(vector bool short __a,vector unsigned short __b)10574 vec_xor(vector bool short __a, vector unsigned short __b) {
10575 return (vector unsigned short)__a ^ __b;
10576 }
10577
10578 static __inline__ vector unsigned short __ATTRS_o_ai
vec_xor(vector unsigned short __a,vector bool short __b)10579 vec_xor(vector unsigned short __a, vector bool short __b) {
10580 return __a ^ (vector unsigned short)__b;
10581 }
10582
10583 static __inline__ vector bool short __ATTRS_o_ai
vec_xor(vector bool short __a,vector bool short __b)10584 vec_xor(vector bool short __a, vector bool short __b) {
10585 return __a ^ __b;
10586 }
10587
vec_xor(vector int __a,vector int __b)10588 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
10589 vector int __b) {
10590 return __a ^ __b;
10591 }
10592
vec_xor(vector bool int __a,vector int __b)10593 static __inline__ vector int __ATTRS_o_ai vec_xor(vector bool int __a,
10594 vector int __b) {
10595 return (vector int)__a ^ __b;
10596 }
10597
vec_xor(vector int __a,vector bool int __b)10598 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
10599 vector bool int __b) {
10600 return __a ^ (vector int)__b;
10601 }
10602
10603 static __inline__ vector unsigned int __ATTRS_o_ai
vec_xor(vector unsigned int __a,vector unsigned int __b)10604 vec_xor(vector unsigned int __a, vector unsigned int __b) {
10605 return __a ^ __b;
10606 }
10607
10608 static __inline__ vector unsigned int __ATTRS_o_ai
vec_xor(vector bool int __a,vector unsigned int __b)10609 vec_xor(vector bool int __a, vector unsigned int __b) {
10610 return (vector unsigned int)__a ^ __b;
10611 }
10612
10613 static __inline__ vector unsigned int __ATTRS_o_ai
vec_xor(vector unsigned int __a,vector bool int __b)10614 vec_xor(vector unsigned int __a, vector bool int __b) {
10615 return __a ^ (vector unsigned int)__b;
10616 }
10617
vec_xor(vector bool int __a,vector bool int __b)10618 static __inline__ vector bool int __ATTRS_o_ai vec_xor(vector bool int __a,
10619 vector bool int __b) {
10620 return __a ^ __b;
10621 }
10622
vec_xor(vector float __a,vector float __b)10623 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
10624 vector float __b) {
10625 vector unsigned int __res =
10626 (vector unsigned int)__a ^ (vector unsigned int)__b;
10627 return (vector float)__res;
10628 }
10629
vec_xor(vector bool int __a,vector float __b)10630 static __inline__ vector float __ATTRS_o_ai vec_xor(vector bool int __a,
10631 vector float __b) {
10632 vector unsigned int __res =
10633 (vector unsigned int)__a ^ (vector unsigned int)__b;
10634 return (vector float)__res;
10635 }
10636
vec_xor(vector float __a,vector bool int __b)10637 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
10638 vector bool int __b) {
10639 vector unsigned int __res =
10640 (vector unsigned int)__a ^ (vector unsigned int)__b;
10641 return (vector float)__res;
10642 }
10643
10644 #ifdef __VSX__
10645 static __inline__ vector signed long long __ATTRS_o_ai
vec_xor(vector signed long long __a,vector signed long long __b)10646 vec_xor(vector signed long long __a, vector signed long long __b) {
10647 return __a ^ __b;
10648 }
10649
10650 static __inline__ vector signed long long __ATTRS_o_ai
vec_xor(vector bool long long __a,vector signed long long __b)10651 vec_xor(vector bool long long __a, vector signed long long __b) {
10652 return (vector signed long long)__a ^ __b;
10653 }
10654
10655 static __inline__ vector signed long long __ATTRS_o_ai
vec_xor(vector signed long long __a,vector bool long long __b)10656 vec_xor(vector signed long long __a, vector bool long long __b) {
10657 return __a ^ (vector signed long long)__b;
10658 }
10659
10660 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xor(vector unsigned long long __a,vector unsigned long long __b)10661 vec_xor(vector unsigned long long __a, vector unsigned long long __b) {
10662 return __a ^ __b;
10663 }
10664
10665 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xor(vector bool long long __a,vector unsigned long long __b)10666 vec_xor(vector bool long long __a, vector unsigned long long __b) {
10667 return (vector unsigned long long)__a ^ __b;
10668 }
10669
10670 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xor(vector unsigned long long __a,vector bool long long __b)10671 vec_xor(vector unsigned long long __a, vector bool long long __b) {
10672 return __a ^ (vector unsigned long long)__b;
10673 }
10674
10675 static __inline__ vector bool long long __ATTRS_o_ai
vec_xor(vector bool long long __a,vector bool long long __b)10676 vec_xor(vector bool long long __a, vector bool long long __b) {
10677 return __a ^ __b;
10678 }
10679
vec_xor(vector double __a,vector double __b)10680 static __inline__ vector double __ATTRS_o_ai vec_xor(vector double __a,
10681 vector double __b) {
10682 return (vector double)((vector unsigned long long)__a ^
10683 (vector unsigned long long)__b);
10684 }
10685
10686 static __inline__ vector double __ATTRS_o_ai
vec_xor(vector double __a,vector bool long long __b)10687 vec_xor(vector double __a, vector bool long long __b) {
10688 return (vector double)((vector unsigned long long)__a ^
10689 (vector unsigned long long)__b);
10690 }
10691
vec_xor(vector bool long long __a,vector double __b)10692 static __inline__ vector double __ATTRS_o_ai vec_xor(vector bool long long __a,
10693 vector double __b) {
10694 return (vector double)((vector unsigned long long)__a ^
10695 (vector unsigned long long)__b);
10696 }
10697 #endif
10698
10699 /* vec_vxor */
10700
10701 static __inline__ vector signed char __ATTRS_o_ai
vec_vxor(vector signed char __a,vector signed char __b)10702 vec_vxor(vector signed char __a, vector signed char __b) {
10703 return __a ^ __b;
10704 }
10705
10706 static __inline__ vector signed char __ATTRS_o_ai
vec_vxor(vector bool char __a,vector signed char __b)10707 vec_vxor(vector bool char __a, vector signed char __b) {
10708 return (vector signed char)__a ^ __b;
10709 }
10710
10711 static __inline__ vector signed char __ATTRS_o_ai
vec_vxor(vector signed char __a,vector bool char __b)10712 vec_vxor(vector signed char __a, vector bool char __b) {
10713 return __a ^ (vector signed char)__b;
10714 }
10715
10716 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vxor(vector unsigned char __a,vector unsigned char __b)10717 vec_vxor(vector unsigned char __a, vector unsigned char __b) {
10718 return __a ^ __b;
10719 }
10720
10721 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vxor(vector bool char __a,vector unsigned char __b)10722 vec_vxor(vector bool char __a, vector unsigned char __b) {
10723 return (vector unsigned char)__a ^ __b;
10724 }
10725
10726 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vxor(vector unsigned char __a,vector bool char __b)10727 vec_vxor(vector unsigned char __a, vector bool char __b) {
10728 return __a ^ (vector unsigned char)__b;
10729 }
10730
vec_vxor(vector bool char __a,vector bool char __b)10731 static __inline__ vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a,
10732 vector bool char __b) {
10733 return __a ^ __b;
10734 }
10735
vec_vxor(vector short __a,vector short __b)10736 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
10737 vector short __b) {
10738 return __a ^ __b;
10739 }
10740
vec_vxor(vector bool short __a,vector short __b)10741 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector bool short __a,
10742 vector short __b) {
10743 return (vector short)__a ^ __b;
10744 }
10745
vec_vxor(vector short __a,vector bool short __b)10746 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
10747 vector bool short __b) {
10748 return __a ^ (vector short)__b;
10749 }
10750
10751 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vxor(vector unsigned short __a,vector unsigned short __b)10752 vec_vxor(vector unsigned short __a, vector unsigned short __b) {
10753 return __a ^ __b;
10754 }
10755
10756 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vxor(vector bool short __a,vector unsigned short __b)10757 vec_vxor(vector bool short __a, vector unsigned short __b) {
10758 return (vector unsigned short)__a ^ __b;
10759 }
10760
10761 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vxor(vector unsigned short __a,vector bool short __b)10762 vec_vxor(vector unsigned short __a, vector bool short __b) {
10763 return __a ^ (vector unsigned short)__b;
10764 }
10765
10766 static __inline__ vector bool short __ATTRS_o_ai
vec_vxor(vector bool short __a,vector bool short __b)10767 vec_vxor(vector bool short __a, vector bool short __b) {
10768 return __a ^ __b;
10769 }
10770
vec_vxor(vector int __a,vector int __b)10771 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
10772 vector int __b) {
10773 return __a ^ __b;
10774 }
10775
vec_vxor(vector bool int __a,vector int __b)10776 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector bool int __a,
10777 vector int __b) {
10778 return (vector int)__a ^ __b;
10779 }
10780
vec_vxor(vector int __a,vector bool int __b)10781 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
10782 vector bool int __b) {
10783 return __a ^ (vector int)__b;
10784 }
10785
10786 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vxor(vector unsigned int __a,vector unsigned int __b)10787 vec_vxor(vector unsigned int __a, vector unsigned int __b) {
10788 return __a ^ __b;
10789 }
10790
10791 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vxor(vector bool int __a,vector unsigned int __b)10792 vec_vxor(vector bool int __a, vector unsigned int __b) {
10793 return (vector unsigned int)__a ^ __b;
10794 }
10795
10796 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vxor(vector unsigned int __a,vector bool int __b)10797 vec_vxor(vector unsigned int __a, vector bool int __b) {
10798 return __a ^ (vector unsigned int)__b;
10799 }
10800
vec_vxor(vector bool int __a,vector bool int __b)10801 static __inline__ vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a,
10802 vector bool int __b) {
10803 return __a ^ __b;
10804 }
10805
vec_vxor(vector float __a,vector float __b)10806 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
10807 vector float __b) {
10808 vector unsigned int __res =
10809 (vector unsigned int)__a ^ (vector unsigned int)__b;
10810 return (vector float)__res;
10811 }
10812
vec_vxor(vector bool int __a,vector float __b)10813 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector bool int __a,
10814 vector float __b) {
10815 vector unsigned int __res =
10816 (vector unsigned int)__a ^ (vector unsigned int)__b;
10817 return (vector float)__res;
10818 }
10819
vec_vxor(vector float __a,vector bool int __b)10820 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
10821 vector bool int __b) {
10822 vector unsigned int __res =
10823 (vector unsigned int)__a ^ (vector unsigned int)__b;
10824 return (vector float)__res;
10825 }
10826
10827 #ifdef __VSX__
10828 static __inline__ vector signed long long __ATTRS_o_ai
vec_vxor(vector signed long long __a,vector signed long long __b)10829 vec_vxor(vector signed long long __a, vector signed long long __b) {
10830 return __a ^ __b;
10831 }
10832
10833 static __inline__ vector signed long long __ATTRS_o_ai
vec_vxor(vector bool long long __a,vector signed long long __b)10834 vec_vxor(vector bool long long __a, vector signed long long __b) {
10835 return (vector signed long long)__a ^ __b;
10836 }
10837
10838 static __inline__ vector signed long long __ATTRS_o_ai
vec_vxor(vector signed long long __a,vector bool long long __b)10839 vec_vxor(vector signed long long __a, vector bool long long __b) {
10840 return __a ^ (vector signed long long)__b;
10841 }
10842
10843 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vxor(vector unsigned long long __a,vector unsigned long long __b)10844 vec_vxor(vector unsigned long long __a, vector unsigned long long __b) {
10845 return __a ^ __b;
10846 }
10847
10848 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vxor(vector bool long long __a,vector unsigned long long __b)10849 vec_vxor(vector bool long long __a, vector unsigned long long __b) {
10850 return (vector unsigned long long)__a ^ __b;
10851 }
10852
10853 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vxor(vector unsigned long long __a,vector bool long long __b)10854 vec_vxor(vector unsigned long long __a, vector bool long long __b) {
10855 return __a ^ (vector unsigned long long)__b;
10856 }
10857
10858 static __inline__ vector bool long long __ATTRS_o_ai
vec_vxor(vector bool long long __a,vector bool long long __b)10859 vec_vxor(vector bool long long __a, vector bool long long __b) {
10860 return __a ^ __b;
10861 }
10862 #endif
10863
10864 /* ------------------------ extensions for CBEA ----------------------------- */
10865
10866 /* vec_extract */
10867
vec_extract(vector signed char __a,int __b)10868 static __inline__ signed char __ATTRS_o_ai vec_extract(vector signed char __a,
10869 int __b) {
10870 return __a[__b];
10871 }
10872
10873 static __inline__ unsigned char __ATTRS_o_ai
vec_extract(vector unsigned char __a,int __b)10874 vec_extract(vector unsigned char __a, int __b) {
10875 return __a[__b];
10876 }
10877
vec_extract(vector bool char __a,int __b)10878 static __inline__ unsigned char __ATTRS_o_ai vec_extract(vector bool char __a,
10879 int __b) {
10880 return __a[__b];
10881 }
10882
vec_extract(vector signed short __a,int __b)10883 static __inline__ signed short __ATTRS_o_ai vec_extract(vector signed short __a,
10884 int __b) {
10885 return __a[__b];
10886 }
10887
10888 static __inline__ unsigned short __ATTRS_o_ai
vec_extract(vector unsigned short __a,int __b)10889 vec_extract(vector unsigned short __a, int __b) {
10890 return __a[__b];
10891 }
10892
vec_extract(vector bool short __a,int __b)10893 static __inline__ unsigned short __ATTRS_o_ai vec_extract(vector bool short __a,
10894 int __b) {
10895 return __a[__b];
10896 }
10897
vec_extract(vector signed int __a,int __b)10898 static __inline__ signed int __ATTRS_o_ai vec_extract(vector signed int __a,
10899 int __b) {
10900 return __a[__b];
10901 }
10902
vec_extract(vector unsigned int __a,int __b)10903 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a,
10904 int __b) {
10905 return __a[__b];
10906 }
10907
vec_extract(vector bool int __a,int __b)10908 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector bool int __a,
10909 int __b) {
10910 return __a[__b];
10911 }
10912
10913 #ifdef __VSX__
10914 static __inline__ signed long long __ATTRS_o_ai
vec_extract(vector signed long long __a,int __b)10915 vec_extract(vector signed long long __a, int __b) {
10916 return __a[__b];
10917 }
10918
10919 static __inline__ unsigned long long __ATTRS_o_ai
vec_extract(vector unsigned long long __a,int __b)10920 vec_extract(vector unsigned long long __a, int __b) {
10921 return __a[__b];
10922 }
10923
10924 static __inline__ unsigned long long __ATTRS_o_ai
vec_extract(vector bool long long __a,int __b)10925 vec_extract(vector bool long long __a, int __b) {
10926 return __a[__b];
10927 }
10928
vec_extract(vector double __a,int __b)10929 static __inline__ double __ATTRS_o_ai vec_extract(vector double __a, int __b) {
10930 return __a[__b];
10931 }
10932 #endif
10933
vec_extract(vector float __a,int __b)10934 static __inline__ float __ATTRS_o_ai vec_extract(vector float __a, int __b) {
10935 return __a[__b];
10936 }
10937
10938 /* vec_insert */
10939
10940 static __inline__ vector signed char __ATTRS_o_ai
vec_insert(signed char __a,vector signed char __b,int __c)10941 vec_insert(signed char __a, vector signed char __b, int __c) {
10942 __b[__c] = __a;
10943 return __b;
10944 }
10945
10946 static __inline__ vector unsigned char __ATTRS_o_ai
vec_insert(unsigned char __a,vector unsigned char __b,int __c)10947 vec_insert(unsigned char __a, vector unsigned char __b, int __c) {
10948 __b[__c] = __a;
10949 return __b;
10950 }
10951
vec_insert(unsigned char __a,vector bool char __b,int __c)10952 static __inline__ vector bool char __ATTRS_o_ai vec_insert(unsigned char __a,
10953 vector bool char __b,
10954 int __c) {
10955 __b[__c] = __a;
10956 return __b;
10957 }
10958
10959 static __inline__ vector signed short __ATTRS_o_ai
vec_insert(signed short __a,vector signed short __b,int __c)10960 vec_insert(signed short __a, vector signed short __b, int __c) {
10961 __b[__c] = __a;
10962 return __b;
10963 }
10964
10965 static __inline__ vector unsigned short __ATTRS_o_ai
vec_insert(unsigned short __a,vector unsigned short __b,int __c)10966 vec_insert(unsigned short __a, vector unsigned short __b, int __c) {
10967 __b[__c] = __a;
10968 return __b;
10969 }
10970
10971 static __inline__ vector bool short __ATTRS_o_ai
vec_insert(unsigned short __a,vector bool short __b,int __c)10972 vec_insert(unsigned short __a, vector bool short __b, int __c) {
10973 __b[__c] = __a;
10974 return __b;
10975 }
10976
10977 static __inline__ vector signed int __ATTRS_o_ai
vec_insert(signed int __a,vector signed int __b,int __c)10978 vec_insert(signed int __a, vector signed int __b, int __c) {
10979 __b[__c] = __a;
10980 return __b;
10981 }
10982
10983 static __inline__ vector unsigned int __ATTRS_o_ai
vec_insert(unsigned int __a,vector unsigned int __b,int __c)10984 vec_insert(unsigned int __a, vector unsigned int __b, int __c) {
10985 __b[__c] = __a;
10986 return __b;
10987 }
10988
vec_insert(unsigned int __a,vector bool int __b,int __c)10989 static __inline__ vector bool int __ATTRS_o_ai vec_insert(unsigned int __a,
10990 vector bool int __b,
10991 int __c) {
10992 __b[__c] = __a;
10993 return __b;
10994 }
10995
10996 #ifdef __VSX__
10997 static __inline__ vector signed long long __ATTRS_o_ai
vec_insert(signed long long __a,vector signed long long __b,int __c)10998 vec_insert(signed long long __a, vector signed long long __b, int __c) {
10999 __b[__c] = __a;
11000 return __b;
11001 }
11002
11003 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_insert(unsigned long long __a,vector unsigned long long __b,int __c)11004 vec_insert(unsigned long long __a, vector unsigned long long __b, int __c) {
11005 __b[__c] = __a;
11006 return __b;
11007 }
11008
11009 static __inline__ vector bool long long __ATTRS_o_ai
vec_insert(unsigned long long __a,vector bool long long __b,int __c)11010 vec_insert(unsigned long long __a, vector bool long long __b, int __c) {
11011 __b[__c] = __a;
11012 return __b;
11013 }
vec_insert(double __a,vector double __b,int __c)11014 static __inline__ vector double __ATTRS_o_ai vec_insert(double __a,
11015 vector double __b,
11016 int __c) {
11017 __b[__c] = __a;
11018 return __b;
11019 }
11020 #endif
11021
vec_insert(float __a,vector float __b,int __c)11022 static __inline__ vector float __ATTRS_o_ai vec_insert(float __a,
11023 vector float __b,
11024 int __c) {
11025 __b[__c] = __a;
11026 return __b;
11027 }
11028
11029 /* vec_lvlx */
11030
11031 static __inline__ vector signed char __ATTRS_o_ai
vec_lvlx(int __a,const signed char * __b)11032 vec_lvlx(int __a, const signed char *__b) {
11033 return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
11034 vec_lvsl(__a, __b));
11035 }
11036
11037 static __inline__ vector signed char __ATTRS_o_ai
vec_lvlx(int __a,const vector signed char * __b)11038 vec_lvlx(int __a, const vector signed char *__b) {
11039 return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
11040 vec_lvsl(__a, (unsigned char *)__b));
11041 }
11042
11043 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlx(int __a,const unsigned char * __b)11044 vec_lvlx(int __a, const unsigned char *__b) {
11045 return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
11046 vec_lvsl(__a, __b));
11047 }
11048
11049 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlx(int __a,const vector unsigned char * __b)11050 vec_lvlx(int __a, const vector unsigned char *__b) {
11051 return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
11052 vec_lvsl(__a, (unsigned char *)__b));
11053 }
11054
11055 static __inline__ vector bool char __ATTRS_o_ai
vec_lvlx(int __a,const vector bool char * __b)11056 vec_lvlx(int __a, const vector bool char *__b) {
11057 return vec_perm(vec_ld(__a, __b), (vector bool char)(0),
11058 vec_lvsl(__a, (unsigned char *)__b));
11059 }
11060
vec_lvlx(int __a,const short * __b)11061 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
11062 const short *__b) {
11063 return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
11064 }
11065
vec_lvlx(int __a,const vector short * __b)11066 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
11067 const vector short *__b) {
11068 return vec_perm(vec_ld(__a, __b), (vector short)(0),
11069 vec_lvsl(__a, (unsigned char *)__b));
11070 }
11071
11072 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlx(int __a,const unsigned short * __b)11073 vec_lvlx(int __a, const unsigned short *__b) {
11074 return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
11075 vec_lvsl(__a, __b));
11076 }
11077
11078 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlx(int __a,const vector unsigned short * __b)11079 vec_lvlx(int __a, const vector unsigned short *__b) {
11080 return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
11081 vec_lvsl(__a, (unsigned char *)__b));
11082 }
11083
11084 static __inline__ vector bool short __ATTRS_o_ai
vec_lvlx(int __a,const vector bool short * __b)11085 vec_lvlx(int __a, const vector bool short *__b) {
11086 return vec_perm(vec_ld(__a, __b), (vector bool short)(0),
11087 vec_lvsl(__a, (unsigned char *)__b));
11088 }
11089
vec_lvlx(int __a,const vector pixel * __b)11090 static __inline__ vector pixel __ATTRS_o_ai vec_lvlx(int __a,
11091 const vector pixel *__b) {
11092 return vec_perm(vec_ld(__a, __b), (vector pixel)(0),
11093 vec_lvsl(__a, (unsigned char *)__b));
11094 }
11095
vec_lvlx(int __a,const int * __b)11096 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) {
11097 return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
11098 }
11099
vec_lvlx(int __a,const vector int * __b)11100 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a,
11101 const vector int *__b) {
11102 return vec_perm(vec_ld(__a, __b), (vector int)(0),
11103 vec_lvsl(__a, (unsigned char *)__b));
11104 }
11105
11106 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlx(int __a,const unsigned int * __b)11107 vec_lvlx(int __a, const unsigned int *__b) {
11108 return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
11109 vec_lvsl(__a, __b));
11110 }
11111
11112 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlx(int __a,const vector unsigned int * __b)11113 vec_lvlx(int __a, const vector unsigned int *__b) {
11114 return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
11115 vec_lvsl(__a, (unsigned char *)__b));
11116 }
11117
11118 static __inline__ vector bool int __ATTRS_o_ai
vec_lvlx(int __a,const vector bool int * __b)11119 vec_lvlx(int __a, const vector bool int *__b) {
11120 return vec_perm(vec_ld(__a, __b), (vector bool int)(0),
11121 vec_lvsl(__a, (unsigned char *)__b));
11122 }
11123
vec_lvlx(int __a,const float * __b)11124 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
11125 const float *__b) {
11126 return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
11127 }
11128
vec_lvlx(int __a,const vector float * __b)11129 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
11130 const vector float *__b) {
11131 return vec_perm(vec_ld(__a, __b), (vector float)(0),
11132 vec_lvsl(__a, (unsigned char *)__b));
11133 }
11134
11135 /* vec_lvlxl */
11136
11137 static __inline__ vector signed char __ATTRS_o_ai
vec_lvlxl(int __a,const signed char * __b)11138 vec_lvlxl(int __a, const signed char *__b) {
11139 return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
11140 vec_lvsl(__a, __b));
11141 }
11142
11143 static __inline__ vector signed char __ATTRS_o_ai
vec_lvlxl(int __a,const vector signed char * __b)11144 vec_lvlxl(int __a, const vector signed char *__b) {
11145 return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
11146 vec_lvsl(__a, (unsigned char *)__b));
11147 }
11148
11149 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlxl(int __a,const unsigned char * __b)11150 vec_lvlxl(int __a, const unsigned char *__b) {
11151 return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
11152 vec_lvsl(__a, __b));
11153 }
11154
11155 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlxl(int __a,const vector unsigned char * __b)11156 vec_lvlxl(int __a, const vector unsigned char *__b) {
11157 return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
11158 vec_lvsl(__a, (unsigned char *)__b));
11159 }
11160
11161 static __inline__ vector bool char __ATTRS_o_ai
vec_lvlxl(int __a,const vector bool char * __b)11162 vec_lvlxl(int __a, const vector bool char *__b) {
11163 return vec_perm(vec_ldl(__a, __b), (vector bool char)(0),
11164 vec_lvsl(__a, (unsigned char *)__b));
11165 }
11166
vec_lvlxl(int __a,const short * __b)11167 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
11168 const short *__b) {
11169 return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
11170 }
11171
vec_lvlxl(int __a,const vector short * __b)11172 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
11173 const vector short *__b) {
11174 return vec_perm(vec_ldl(__a, __b), (vector short)(0),
11175 vec_lvsl(__a, (unsigned char *)__b));
11176 }
11177
11178 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlxl(int __a,const unsigned short * __b)11179 vec_lvlxl(int __a, const unsigned short *__b) {
11180 return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
11181 vec_lvsl(__a, __b));
11182 }
11183
11184 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlxl(int __a,const vector unsigned short * __b)11185 vec_lvlxl(int __a, const vector unsigned short *__b) {
11186 return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
11187 vec_lvsl(__a, (unsigned char *)__b));
11188 }
11189
11190 static __inline__ vector bool short __ATTRS_o_ai
vec_lvlxl(int __a,const vector bool short * __b)11191 vec_lvlxl(int __a, const vector bool short *__b) {
11192 return vec_perm(vec_ldl(__a, __b), (vector bool short)(0),
11193 vec_lvsl(__a, (unsigned char *)__b));
11194 }
11195
vec_lvlxl(int __a,const vector pixel * __b)11196 static __inline__ vector pixel __ATTRS_o_ai vec_lvlxl(int __a,
11197 const vector pixel *__b) {
11198 return vec_perm(vec_ldl(__a, __b), (vector pixel)(0),
11199 vec_lvsl(__a, (unsigned char *)__b));
11200 }
11201
vec_lvlxl(int __a,const int * __b)11202 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) {
11203 return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
11204 }
11205
vec_lvlxl(int __a,const vector int * __b)11206 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a,
11207 const vector int *__b) {
11208 return vec_perm(vec_ldl(__a, __b), (vector int)(0),
11209 vec_lvsl(__a, (unsigned char *)__b));
11210 }
11211
11212 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlxl(int __a,const unsigned int * __b)11213 vec_lvlxl(int __a, const unsigned int *__b) {
11214 return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
11215 vec_lvsl(__a, __b));
11216 }
11217
11218 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlxl(int __a,const vector unsigned int * __b)11219 vec_lvlxl(int __a, const vector unsigned int *__b) {
11220 return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
11221 vec_lvsl(__a, (unsigned char *)__b));
11222 }
11223
11224 static __inline__ vector bool int __ATTRS_o_ai
vec_lvlxl(int __a,const vector bool int * __b)11225 vec_lvlxl(int __a, const vector bool int *__b) {
11226 return vec_perm(vec_ldl(__a, __b), (vector bool int)(0),
11227 vec_lvsl(__a, (unsigned char *)__b));
11228 }
11229
vec_lvlxl(int __a,const float * __b)11230 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
11231 const float *__b) {
11232 return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
11233 }
11234
vec_lvlxl(int __a,vector float * __b)11235 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
11236 vector float *__b) {
11237 return vec_perm(vec_ldl(__a, __b), (vector float)(0),
11238 vec_lvsl(__a, (unsigned char *)__b));
11239 }
11240
11241 /* vec_lvrx */
11242
11243 static __inline__ vector signed char __ATTRS_o_ai
vec_lvrx(int __a,const signed char * __b)11244 vec_lvrx(int __a, const signed char *__b) {
11245 return vec_perm((vector signed char)(0), vec_ld(__a, __b),
11246 vec_lvsl(__a, __b));
11247 }
11248
11249 static __inline__ vector signed char __ATTRS_o_ai
vec_lvrx(int __a,const vector signed char * __b)11250 vec_lvrx(int __a, const vector signed char *__b) {
11251 return vec_perm((vector signed char)(0), vec_ld(__a, __b),
11252 vec_lvsl(__a, (unsigned char *)__b));
11253 }
11254
11255 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrx(int __a,const unsigned char * __b)11256 vec_lvrx(int __a, const unsigned char *__b) {
11257 return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
11258 vec_lvsl(__a, __b));
11259 }
11260
11261 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrx(int __a,const vector unsigned char * __b)11262 vec_lvrx(int __a, const vector unsigned char *__b) {
11263 return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
11264 vec_lvsl(__a, (unsigned char *)__b));
11265 }
11266
11267 static __inline__ vector bool char __ATTRS_o_ai
vec_lvrx(int __a,const vector bool char * __b)11268 vec_lvrx(int __a, const vector bool char *__b) {
11269 return vec_perm((vector bool char)(0), vec_ld(__a, __b),
11270 vec_lvsl(__a, (unsigned char *)__b));
11271 }
11272
vec_lvrx(int __a,const short * __b)11273 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
11274 const short *__b) {
11275 return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
11276 }
11277
vec_lvrx(int __a,const vector short * __b)11278 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
11279 const vector short *__b) {
11280 return vec_perm((vector short)(0), vec_ld(__a, __b),
11281 vec_lvsl(__a, (unsigned char *)__b));
11282 }
11283
11284 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrx(int __a,const unsigned short * __b)11285 vec_lvrx(int __a, const unsigned short *__b) {
11286 return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
11287 vec_lvsl(__a, __b));
11288 }
11289
11290 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrx(int __a,const vector unsigned short * __b)11291 vec_lvrx(int __a, const vector unsigned short *__b) {
11292 return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
11293 vec_lvsl(__a, (unsigned char *)__b));
11294 }
11295
11296 static __inline__ vector bool short __ATTRS_o_ai
vec_lvrx(int __a,const vector bool short * __b)11297 vec_lvrx(int __a, const vector bool short *__b) {
11298 return vec_perm((vector bool short)(0), vec_ld(__a, __b),
11299 vec_lvsl(__a, (unsigned char *)__b));
11300 }
11301
vec_lvrx(int __a,const vector pixel * __b)11302 static __inline__ vector pixel __ATTRS_o_ai vec_lvrx(int __a,
11303 const vector pixel *__b) {
11304 return vec_perm((vector pixel)(0), vec_ld(__a, __b),
11305 vec_lvsl(__a, (unsigned char *)__b));
11306 }
11307
vec_lvrx(int __a,const int * __b)11308 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) {
11309 return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
11310 }
11311
vec_lvrx(int __a,const vector int * __b)11312 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a,
11313 const vector int *__b) {
11314 return vec_perm((vector int)(0), vec_ld(__a, __b),
11315 vec_lvsl(__a, (unsigned char *)__b));
11316 }
11317
11318 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrx(int __a,const unsigned int * __b)11319 vec_lvrx(int __a, const unsigned int *__b) {
11320 return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
11321 vec_lvsl(__a, __b));
11322 }
11323
11324 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrx(int __a,const vector unsigned int * __b)11325 vec_lvrx(int __a, const vector unsigned int *__b) {
11326 return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
11327 vec_lvsl(__a, (unsigned char *)__b));
11328 }
11329
11330 static __inline__ vector bool int __ATTRS_o_ai
vec_lvrx(int __a,const vector bool int * __b)11331 vec_lvrx(int __a, const vector bool int *__b) {
11332 return vec_perm((vector bool int)(0), vec_ld(__a, __b),
11333 vec_lvsl(__a, (unsigned char *)__b));
11334 }
11335
vec_lvrx(int __a,const float * __b)11336 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
11337 const float *__b) {
11338 return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
11339 }
11340
vec_lvrx(int __a,const vector float * __b)11341 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
11342 const vector float *__b) {
11343 return vec_perm((vector float)(0), vec_ld(__a, __b),
11344 vec_lvsl(__a, (unsigned char *)__b));
11345 }
11346
11347 /* vec_lvrxl */
11348
11349 static __inline__ vector signed char __ATTRS_o_ai
vec_lvrxl(int __a,const signed char * __b)11350 vec_lvrxl(int __a, const signed char *__b) {
11351 return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
11352 vec_lvsl(__a, __b));
11353 }
11354
11355 static __inline__ vector signed char __ATTRS_o_ai
vec_lvrxl(int __a,const vector signed char * __b)11356 vec_lvrxl(int __a, const vector signed char *__b) {
11357 return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
11358 vec_lvsl(__a, (unsigned char *)__b));
11359 }
11360
11361 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrxl(int __a,const unsigned char * __b)11362 vec_lvrxl(int __a, const unsigned char *__b) {
11363 return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
11364 vec_lvsl(__a, __b));
11365 }
11366
11367 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrxl(int __a,const vector unsigned char * __b)11368 vec_lvrxl(int __a, const vector unsigned char *__b) {
11369 return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
11370 vec_lvsl(__a, (unsigned char *)__b));
11371 }
11372
11373 static __inline__ vector bool char __ATTRS_o_ai
vec_lvrxl(int __a,const vector bool char * __b)11374 vec_lvrxl(int __a, const vector bool char *__b) {
11375 return vec_perm((vector bool char)(0), vec_ldl(__a, __b),
11376 vec_lvsl(__a, (unsigned char *)__b));
11377 }
11378
vec_lvrxl(int __a,const short * __b)11379 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
11380 const short *__b) {
11381 return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
11382 }
11383
vec_lvrxl(int __a,const vector short * __b)11384 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
11385 const vector short *__b) {
11386 return vec_perm((vector short)(0), vec_ldl(__a, __b),
11387 vec_lvsl(__a, (unsigned char *)__b));
11388 }
11389
11390 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrxl(int __a,const unsigned short * __b)11391 vec_lvrxl(int __a, const unsigned short *__b) {
11392 return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
11393 vec_lvsl(__a, __b));
11394 }
11395
11396 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrxl(int __a,const vector unsigned short * __b)11397 vec_lvrxl(int __a, const vector unsigned short *__b) {
11398 return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
11399 vec_lvsl(__a, (unsigned char *)__b));
11400 }
11401
11402 static __inline__ vector bool short __ATTRS_o_ai
vec_lvrxl(int __a,const vector bool short * __b)11403 vec_lvrxl(int __a, const vector bool short *__b) {
11404 return vec_perm((vector bool short)(0), vec_ldl(__a, __b),
11405 vec_lvsl(__a, (unsigned char *)__b));
11406 }
11407
vec_lvrxl(int __a,const vector pixel * __b)11408 static __inline__ vector pixel __ATTRS_o_ai vec_lvrxl(int __a,
11409 const vector pixel *__b) {
11410 return vec_perm((vector pixel)(0), vec_ldl(__a, __b),
11411 vec_lvsl(__a, (unsigned char *)__b));
11412 }
11413
vec_lvrxl(int __a,const int * __b)11414 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) {
11415 return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
11416 }
11417
vec_lvrxl(int __a,const vector int * __b)11418 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a,
11419 const vector int *__b) {
11420 return vec_perm((vector int)(0), vec_ldl(__a, __b),
11421 vec_lvsl(__a, (unsigned char *)__b));
11422 }
11423
11424 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrxl(int __a,const unsigned int * __b)11425 vec_lvrxl(int __a, const unsigned int *__b) {
11426 return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
11427 vec_lvsl(__a, __b));
11428 }
11429
11430 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrxl(int __a,const vector unsigned int * __b)11431 vec_lvrxl(int __a, const vector unsigned int *__b) {
11432 return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
11433 vec_lvsl(__a, (unsigned char *)__b));
11434 }
11435
11436 static __inline__ vector bool int __ATTRS_o_ai
vec_lvrxl(int __a,const vector bool int * __b)11437 vec_lvrxl(int __a, const vector bool int *__b) {
11438 return vec_perm((vector bool int)(0), vec_ldl(__a, __b),
11439 vec_lvsl(__a, (unsigned char *)__b));
11440 }
11441
vec_lvrxl(int __a,const float * __b)11442 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
11443 const float *__b) {
11444 return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
11445 }
11446
vec_lvrxl(int __a,const vector float * __b)11447 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
11448 const vector float *__b) {
11449 return vec_perm((vector float)(0), vec_ldl(__a, __b),
11450 vec_lvsl(__a, (unsigned char *)__b));
11451 }
11452
11453 /* vec_stvlx */
11454
vec_stvlx(vector signed char __a,int __b,signed char * __c)11455 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
11456 signed char *__c) {
11457 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11458 __c);
11459 }
11460
vec_stvlx(vector signed char __a,int __b,vector signed char * __c)11461 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
11462 vector signed char *__c) {
11463 return vec_st(
11464 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11465 __b, __c);
11466 }
11467
vec_stvlx(vector unsigned char __a,int __b,unsigned char * __c)11468 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
11469 unsigned char *__c) {
11470 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11471 __c);
11472 }
11473
vec_stvlx(vector unsigned char __a,int __b,vector unsigned char * __c)11474 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
11475 vector unsigned char *__c) {
11476 return vec_st(
11477 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11478 __b, __c);
11479 }
11480
vec_stvlx(vector bool char __a,int __b,vector bool char * __c)11481 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b,
11482 vector bool char *__c) {
11483 return vec_st(
11484 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11485 __b, __c);
11486 }
11487
vec_stvlx(vector short __a,int __b,short * __c)11488 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
11489 short *__c) {
11490 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11491 __c);
11492 }
11493
vec_stvlx(vector short __a,int __b,vector short * __c)11494 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
11495 vector short *__c) {
11496 return vec_st(
11497 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11498 __b, __c);
11499 }
11500
vec_stvlx(vector unsigned short __a,int __b,unsigned short * __c)11501 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
11502 int __b, unsigned short *__c) {
11503 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11504 __c);
11505 }
11506
vec_stvlx(vector unsigned short __a,int __b,vector unsigned short * __c)11507 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
11508 int __b,
11509 vector unsigned short *__c) {
11510 return vec_st(
11511 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11512 __b, __c);
11513 }
11514
vec_stvlx(vector bool short __a,int __b,vector bool short * __c)11515 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b,
11516 vector bool short *__c) {
11517 return vec_st(
11518 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11519 __b, __c);
11520 }
11521
vec_stvlx(vector pixel __a,int __b,vector pixel * __c)11522 static __inline__ void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b,
11523 vector pixel *__c) {
11524 return vec_st(
11525 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11526 __b, __c);
11527 }
11528
vec_stvlx(vector int __a,int __b,int * __c)11529 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
11530 int *__c) {
11531 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11532 __c);
11533 }
11534
vec_stvlx(vector int __a,int __b,vector int * __c)11535 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
11536 vector int *__c) {
11537 return vec_st(
11538 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11539 __b, __c);
11540 }
11541
vec_stvlx(vector unsigned int __a,int __b,unsigned int * __c)11542 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
11543 unsigned int *__c) {
11544 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11545 __c);
11546 }
11547
vec_stvlx(vector unsigned int __a,int __b,vector unsigned int * __c)11548 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
11549 vector unsigned int *__c) {
11550 return vec_st(
11551 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11552 __b, __c);
11553 }
11554
vec_stvlx(vector bool int __a,int __b,vector bool int * __c)11555 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b,
11556 vector bool int *__c) {
11557 return vec_st(
11558 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11559 __b, __c);
11560 }
11561
vec_stvlx(vector float __a,int __b,vector float * __c)11562 static __inline__ void __ATTRS_o_ai vec_stvlx(vector float __a, int __b,
11563 vector float *__c) {
11564 return vec_st(
11565 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11566 __b, __c);
11567 }
11568
11569 /* vec_stvlxl */
11570
vec_stvlxl(vector signed char __a,int __b,signed char * __c)11571 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
11572 signed char *__c) {
11573 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11574 __c);
11575 }
11576
vec_stvlxl(vector signed char __a,int __b,vector signed char * __c)11577 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
11578 vector signed char *__c) {
11579 return vec_stl(
11580 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11581 __b, __c);
11582 }
11583
vec_stvlxl(vector unsigned char __a,int __b,unsigned char * __c)11584 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
11585 int __b, unsigned char *__c) {
11586 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11587 __c);
11588 }
11589
vec_stvlxl(vector unsigned char __a,int __b,vector unsigned char * __c)11590 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
11591 int __b,
11592 vector unsigned char *__c) {
11593 return vec_stl(
11594 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11595 __b, __c);
11596 }
11597
vec_stvlxl(vector bool char __a,int __b,vector bool char * __c)11598 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b,
11599 vector bool char *__c) {
11600 return vec_stl(
11601 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11602 __b, __c);
11603 }
11604
vec_stvlxl(vector short __a,int __b,short * __c)11605 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
11606 short *__c) {
11607 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11608 __c);
11609 }
11610
vec_stvlxl(vector short __a,int __b,vector short * __c)11611 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
11612 vector short *__c) {
11613 return vec_stl(
11614 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11615 __b, __c);
11616 }
11617
vec_stvlxl(vector unsigned short __a,int __b,unsigned short * __c)11618 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
11619 int __b, unsigned short *__c) {
11620 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11621 __c);
11622 }
11623
vec_stvlxl(vector unsigned short __a,int __b,vector unsigned short * __c)11624 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
11625 int __b,
11626 vector unsigned short *__c) {
11627 return vec_stl(
11628 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11629 __b, __c);
11630 }
11631
vec_stvlxl(vector bool short __a,int __b,vector bool short * __c)11632 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b,
11633 vector bool short *__c) {
11634 return vec_stl(
11635 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11636 __b, __c);
11637 }
11638
vec_stvlxl(vector pixel __a,int __b,vector pixel * __c)11639 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b,
11640 vector pixel *__c) {
11641 return vec_stl(
11642 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11643 __b, __c);
11644 }
11645
vec_stvlxl(vector int __a,int __b,int * __c)11646 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
11647 int *__c) {
11648 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11649 __c);
11650 }
11651
vec_stvlxl(vector int __a,int __b,vector int * __c)11652 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
11653 vector int *__c) {
11654 return vec_stl(
11655 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11656 __b, __c);
11657 }
11658
vec_stvlxl(vector unsigned int __a,int __b,unsigned int * __c)11659 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
11660 unsigned int *__c) {
11661 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11662 __c);
11663 }
11664
vec_stvlxl(vector unsigned int __a,int __b,vector unsigned int * __c)11665 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
11666 vector unsigned int *__c) {
11667 return vec_stl(
11668 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11669 __b, __c);
11670 }
11671
vec_stvlxl(vector bool int __a,int __b,vector bool int * __c)11672 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b,
11673 vector bool int *__c) {
11674 return vec_stl(
11675 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11676 __b, __c);
11677 }
11678
vec_stvlxl(vector float __a,int __b,vector float * __c)11679 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b,
11680 vector float *__c) {
11681 return vec_stl(
11682 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11683 __b, __c);
11684 }
11685
11686 /* vec_stvrx */
11687
vec_stvrx(vector signed char __a,int __b,signed char * __c)11688 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
11689 signed char *__c) {
11690 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11691 __c);
11692 }
11693
vec_stvrx(vector signed char __a,int __b,vector signed char * __c)11694 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
11695 vector signed char *__c) {
11696 return vec_st(
11697 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11698 __b, __c);
11699 }
11700
vec_stvrx(vector unsigned char __a,int __b,unsigned char * __c)11701 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
11702 unsigned char *__c) {
11703 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11704 __c);
11705 }
11706
vec_stvrx(vector unsigned char __a,int __b,vector unsigned char * __c)11707 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
11708 vector unsigned char *__c) {
11709 return vec_st(
11710 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11711 __b, __c);
11712 }
11713
vec_stvrx(vector bool char __a,int __b,vector bool char * __c)11714 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b,
11715 vector bool char *__c) {
11716 return vec_st(
11717 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11718 __b, __c);
11719 }
11720
vec_stvrx(vector short __a,int __b,short * __c)11721 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
11722 short *__c) {
11723 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11724 __c);
11725 }
11726
vec_stvrx(vector short __a,int __b,vector short * __c)11727 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
11728 vector short *__c) {
11729 return vec_st(
11730 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11731 __b, __c);
11732 }
11733
vec_stvrx(vector unsigned short __a,int __b,unsigned short * __c)11734 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
11735 int __b, unsigned short *__c) {
11736 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11737 __c);
11738 }
11739
vec_stvrx(vector unsigned short __a,int __b,vector unsigned short * __c)11740 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
11741 int __b,
11742 vector unsigned short *__c) {
11743 return vec_st(
11744 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11745 __b, __c);
11746 }
11747
vec_stvrx(vector bool short __a,int __b,vector bool short * __c)11748 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b,
11749 vector bool short *__c) {
11750 return vec_st(
11751 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11752 __b, __c);
11753 }
11754
vec_stvrx(vector pixel __a,int __b,vector pixel * __c)11755 static __inline__ void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b,
11756 vector pixel *__c) {
11757 return vec_st(
11758 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11759 __b, __c);
11760 }
11761
vec_stvrx(vector int __a,int __b,int * __c)11762 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
11763 int *__c) {
11764 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11765 __c);
11766 }
11767
vec_stvrx(vector int __a,int __b,vector int * __c)11768 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
11769 vector int *__c) {
11770 return vec_st(
11771 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11772 __b, __c);
11773 }
11774
vec_stvrx(vector unsigned int __a,int __b,unsigned int * __c)11775 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
11776 unsigned int *__c) {
11777 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11778 __c);
11779 }
11780
vec_stvrx(vector unsigned int __a,int __b,vector unsigned int * __c)11781 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
11782 vector unsigned int *__c) {
11783 return vec_st(
11784 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11785 __b, __c);
11786 }
11787
vec_stvrx(vector bool int __a,int __b,vector bool int * __c)11788 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b,
11789 vector bool int *__c) {
11790 return vec_st(
11791 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11792 __b, __c);
11793 }
11794
vec_stvrx(vector float __a,int __b,vector float * __c)11795 static __inline__ void __ATTRS_o_ai vec_stvrx(vector float __a, int __b,
11796 vector float *__c) {
11797 return vec_st(
11798 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11799 __b, __c);
11800 }
11801
11802 /* vec_stvrxl */
11803
vec_stvrxl(vector signed char __a,int __b,signed char * __c)11804 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
11805 signed char *__c) {
11806 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11807 __c);
11808 }
11809
vec_stvrxl(vector signed char __a,int __b,vector signed char * __c)11810 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
11811 vector signed char *__c) {
11812 return vec_stl(
11813 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11814 __b, __c);
11815 }
11816
vec_stvrxl(vector unsigned char __a,int __b,unsigned char * __c)11817 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
11818 int __b, unsigned char *__c) {
11819 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11820 __c);
11821 }
11822
vec_stvrxl(vector unsigned char __a,int __b,vector unsigned char * __c)11823 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
11824 int __b,
11825 vector unsigned char *__c) {
11826 return vec_stl(
11827 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11828 __b, __c);
11829 }
11830
vec_stvrxl(vector bool char __a,int __b,vector bool char * __c)11831 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b,
11832 vector bool char *__c) {
11833 return vec_stl(
11834 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11835 __b, __c);
11836 }
11837
vec_stvrxl(vector short __a,int __b,short * __c)11838 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
11839 short *__c) {
11840 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11841 __c);
11842 }
11843
vec_stvrxl(vector short __a,int __b,vector short * __c)11844 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
11845 vector short *__c) {
11846 return vec_stl(
11847 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11848 __b, __c);
11849 }
11850
vec_stvrxl(vector unsigned short __a,int __b,unsigned short * __c)11851 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
11852 int __b, unsigned short *__c) {
11853 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11854 __c);
11855 }
11856
vec_stvrxl(vector unsigned short __a,int __b,vector unsigned short * __c)11857 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
11858 int __b,
11859 vector unsigned short *__c) {
11860 return vec_stl(
11861 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11862 __b, __c);
11863 }
11864
vec_stvrxl(vector bool short __a,int __b,vector bool short * __c)11865 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b,
11866 vector bool short *__c) {
11867 return vec_stl(
11868 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11869 __b, __c);
11870 }
11871
vec_stvrxl(vector pixel __a,int __b,vector pixel * __c)11872 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b,
11873 vector pixel *__c) {
11874 return vec_stl(
11875 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11876 __b, __c);
11877 }
11878
vec_stvrxl(vector int __a,int __b,int * __c)11879 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
11880 int *__c) {
11881 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11882 __c);
11883 }
11884
vec_stvrxl(vector int __a,int __b,vector int * __c)11885 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
11886 vector int *__c) {
11887 return vec_stl(
11888 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11889 __b, __c);
11890 }
11891
vec_stvrxl(vector unsigned int __a,int __b,unsigned int * __c)11892 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
11893 unsigned int *__c) {
11894 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11895 __c);
11896 }
11897
vec_stvrxl(vector unsigned int __a,int __b,vector unsigned int * __c)11898 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
11899 vector unsigned int *__c) {
11900 return vec_stl(
11901 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11902 __b, __c);
11903 }
11904
vec_stvrxl(vector bool int __a,int __b,vector bool int * __c)11905 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b,
11906 vector bool int *__c) {
11907 return vec_stl(
11908 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11909 __b, __c);
11910 }
11911
vec_stvrxl(vector float __a,int __b,vector float * __c)11912 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
11913 vector float *__c) {
11914 return vec_stl(
11915 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11916 __b, __c);
11917 }
11918
11919 /* vec_promote */
11920
vec_promote(signed char __a,int __b)11921 static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
11922 int __b) {
11923 vector signed char __res = (vector signed char)(0);
11924 __res[__b] = __a;
11925 return __res;
11926 }
11927
11928 static __inline__ vector unsigned char __ATTRS_o_ai
vec_promote(unsigned char __a,int __b)11929 vec_promote(unsigned char __a, int __b) {
11930 vector unsigned char __res = (vector unsigned char)(0);
11931 __res[__b] = __a;
11932 return __res;
11933 }
11934
vec_promote(short __a,int __b)11935 static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
11936 vector short __res = (vector short)(0);
11937 __res[__b] = __a;
11938 return __res;
11939 }
11940
11941 static __inline__ vector unsigned short __ATTRS_o_ai
vec_promote(unsigned short __a,int __b)11942 vec_promote(unsigned short __a, int __b) {
11943 vector unsigned short __res = (vector unsigned short)(0);
11944 __res[__b] = __a;
11945 return __res;
11946 }
11947
vec_promote(int __a,int __b)11948 static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
11949 vector int __res = (vector int)(0);
11950 __res[__b] = __a;
11951 return __res;
11952 }
11953
vec_promote(unsigned int __a,int __b)11954 static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
11955 int __b) {
11956 vector unsigned int __res = (vector unsigned int)(0);
11957 __res[__b] = __a;
11958 return __res;
11959 }
11960
vec_promote(float __a,int __b)11961 static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
11962 vector float __res = (vector float)(0);
11963 __res[__b] = __a;
11964 return __res;
11965 }
11966
11967 /* vec_splats */
11968
vec_splats(signed char __a)11969 static __inline__ vector signed char __ATTRS_o_ai vec_splats(signed char __a) {
11970 return (vector signed char)(__a);
11971 }
11972
11973 static __inline__ vector unsigned char __ATTRS_o_ai
vec_splats(unsigned char __a)11974 vec_splats(unsigned char __a) {
11975 return (vector unsigned char)(__a);
11976 }
11977
vec_splats(short __a)11978 static __inline__ vector short __ATTRS_o_ai vec_splats(short __a) {
11979 return (vector short)(__a);
11980 }
11981
11982 static __inline__ vector unsigned short __ATTRS_o_ai
vec_splats(unsigned short __a)11983 vec_splats(unsigned short __a) {
11984 return (vector unsigned short)(__a);
11985 }
11986
vec_splats(int __a)11987 static __inline__ vector int __ATTRS_o_ai vec_splats(int __a) {
11988 return (vector int)(__a);
11989 }
11990
11991 static __inline__ vector unsigned int __ATTRS_o_ai
vec_splats(unsigned int __a)11992 vec_splats(unsigned int __a) {
11993 return (vector unsigned int)(__a);
11994 }
11995
11996 #ifdef __VSX__
11997 static __inline__ vector signed long long __ATTRS_o_ai
vec_splats(signed long long __a)11998 vec_splats(signed long long __a) {
11999 return (vector signed long long)(__a);
12000 }
12001
12002 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_splats(unsigned long long __a)12003 vec_splats(unsigned long long __a) {
12004 return (vector unsigned long long)(__a);
12005 }
12006
12007 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
12008 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_splats(signed __int128 __a)12009 vec_splats(signed __int128 __a) {
12010 return (vector signed __int128)(__a);
12011 }
12012
12013 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_splats(unsigned __int128 __a)12014 vec_splats(unsigned __int128 __a) {
12015 return (vector unsigned __int128)(__a);
12016 }
12017
12018 #endif
12019
vec_splats(double __a)12020 static __inline__ vector double __ATTRS_o_ai vec_splats(double __a) {
12021 return (vector double)(__a);
12022 }
12023 #endif
12024
vec_splats(float __a)12025 static __inline__ vector float __ATTRS_o_ai vec_splats(float __a) {
12026 return (vector float)(__a);
12027 }
12028
12029 /* ----------------------------- predicates --------------------------------- */
12030
12031 /* vec_all_eq */
12032
vec_all_eq(vector signed char __a,vector signed char __b)12033 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
12034 vector signed char __b) {
12035 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12036 (vector char)__b);
12037 }
12038
vec_all_eq(vector signed char __a,vector bool char __b)12039 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
12040 vector bool char __b) {
12041 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12042 (vector char)__b);
12043 }
12044
vec_all_eq(vector unsigned char __a,vector unsigned char __b)12045 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
12046 vector unsigned char __b) {
12047 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12048 (vector char)__b);
12049 }
12050
vec_all_eq(vector unsigned char __a,vector bool char __b)12051 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
12052 vector bool char __b) {
12053 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12054 (vector char)__b);
12055 }
12056
vec_all_eq(vector bool char __a,vector signed char __b)12057 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
12058 vector signed char __b) {
12059 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12060 (vector char)__b);
12061 }
12062
vec_all_eq(vector bool char __a,vector unsigned char __b)12063 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
12064 vector unsigned char __b) {
12065 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12066 (vector char)__b);
12067 }
12068
vec_all_eq(vector bool char __a,vector bool char __b)12069 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
12070 vector bool char __b) {
12071 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12072 (vector char)__b);
12073 }
12074
vec_all_eq(vector short __a,vector short __b)12075 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
12076 vector short __b) {
12077 return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
12078 }
12079
vec_all_eq(vector short __a,vector bool short __b)12080 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
12081 vector bool short __b) {
12082 return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
12083 }
12084
vec_all_eq(vector unsigned short __a,vector unsigned short __b)12085 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
12086 vector unsigned short __b) {
12087 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12088 (vector short)__b);
12089 }
12090
vec_all_eq(vector unsigned short __a,vector bool short __b)12091 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
12092 vector bool short __b) {
12093 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12094 (vector short)__b);
12095 }
12096
vec_all_eq(vector bool short __a,vector short __b)12097 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
12098 vector short __b) {
12099 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12100 (vector short)__b);
12101 }
12102
vec_all_eq(vector bool short __a,vector unsigned short __b)12103 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
12104 vector unsigned short __b) {
12105 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12106 (vector short)__b);
12107 }
12108
vec_all_eq(vector bool short __a,vector bool short __b)12109 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
12110 vector bool short __b) {
12111 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12112 (vector short)__b);
12113 }
12114
vec_all_eq(vector pixel __a,vector pixel __b)12115 static __inline__ int __ATTRS_o_ai vec_all_eq(vector pixel __a,
12116 vector pixel __b) {
12117 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12118 (vector short)__b);
12119 }
12120
vec_all_eq(vector int __a,vector int __b)12121 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) {
12122 return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
12123 }
12124
vec_all_eq(vector int __a,vector bool int __b)12125 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a,
12126 vector bool int __b) {
12127 return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
12128 }
12129
vec_all_eq(vector unsigned int __a,vector unsigned int __b)12130 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
12131 vector unsigned int __b) {
12132 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12133 (vector int)__b);
12134 }
12135
vec_all_eq(vector unsigned int __a,vector bool int __b)12136 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
12137 vector bool int __b) {
12138 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12139 (vector int)__b);
12140 }
12141
vec_all_eq(vector bool int __a,vector int __b)12142 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
12143 vector int __b) {
12144 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12145 (vector int)__b);
12146 }
12147
vec_all_eq(vector bool int __a,vector unsigned int __b)12148 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
12149 vector unsigned int __b) {
12150 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12151 (vector int)__b);
12152 }
12153
vec_all_eq(vector bool int __a,vector bool int __b)12154 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
12155 vector bool int __b) {
12156 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12157 (vector int)__b);
12158 }
12159
12160 #ifdef __POWER8_VECTOR__
vec_all_eq(vector signed long long __a,vector signed long long __b)12161 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed long long __a,
12162 vector signed long long __b) {
12163 return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b);
12164 }
12165
vec_all_eq(vector long long __a,vector bool long long __b)12166 static __inline__ int __ATTRS_o_ai vec_all_eq(vector long long __a,
12167 vector bool long long __b) {
12168 return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b);
12169 }
12170
vec_all_eq(vector unsigned long long __a,vector unsigned long long __b)12171 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
12172 vector unsigned long long __b) {
12173 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12174 (vector long long)__b);
12175 }
12176
vec_all_eq(vector unsigned long long __a,vector bool long long __b)12177 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
12178 vector bool long long __b) {
12179 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12180 (vector long long)__b);
12181 }
12182
vec_all_eq(vector bool long long __a,vector long long __b)12183 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
12184 vector long long __b) {
12185 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12186 (vector long long)__b);
12187 }
12188
vec_all_eq(vector bool long long __a,vector unsigned long long __b)12189 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
12190 vector unsigned long long __b) {
12191 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12192 (vector long long)__b);
12193 }
12194
vec_all_eq(vector bool long long __a,vector bool long long __b)12195 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
12196 vector bool long long __b) {
12197 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12198 (vector long long)__b);
12199 }
12200 #endif
12201
vec_all_eq(vector float __a,vector float __b)12202 static __inline__ int __ATTRS_o_ai vec_all_eq(vector float __a,
12203 vector float __b) {
12204 #ifdef __VSX__
12205 return __builtin_vsx_xvcmpeqsp_p(__CR6_LT, __a, __b);
12206 #else
12207 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
12208 #endif
12209 }
12210
12211 #ifdef __VSX__
vec_all_eq(vector double __a,vector double __b)12212 static __inline__ int __ATTRS_o_ai vec_all_eq(vector double __a,
12213 vector double __b) {
12214 return __builtin_vsx_xvcmpeqdp_p(__CR6_LT, __a, __b);
12215 }
12216 #endif
12217
12218 /* vec_all_ge */
12219
vec_all_ge(vector signed char __a,vector signed char __b)12220 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
12221 vector signed char __b) {
12222 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
12223 }
12224
vec_all_ge(vector signed char __a,vector bool char __b)12225 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
12226 vector bool char __b) {
12227 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
12228 }
12229
vec_all_ge(vector unsigned char __a,vector unsigned char __b)12230 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
12231 vector unsigned char __b) {
12232 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
12233 }
12234
vec_all_ge(vector unsigned char __a,vector bool char __b)12235 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
12236 vector bool char __b) {
12237 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
12238 }
12239
vec_all_ge(vector bool char __a,vector signed char __b)12240 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
12241 vector signed char __b) {
12242 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
12243 (vector unsigned char)__a);
12244 }
12245
vec_all_ge(vector bool char __a,vector unsigned char __b)12246 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
12247 vector unsigned char __b) {
12248 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
12249 }
12250
vec_all_ge(vector bool char __a,vector bool char __b)12251 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
12252 vector bool char __b) {
12253 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
12254 (vector unsigned char)__a);
12255 }
12256
vec_all_ge(vector short __a,vector short __b)12257 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
12258 vector short __b) {
12259 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
12260 }
12261
vec_all_ge(vector short __a,vector bool short __b)12262 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
12263 vector bool short __b) {
12264 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
12265 }
12266
vec_all_ge(vector unsigned short __a,vector unsigned short __b)12267 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
12268 vector unsigned short __b) {
12269 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
12270 }
12271
vec_all_ge(vector unsigned short __a,vector bool short __b)12272 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
12273 vector bool short __b) {
12274 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
12275 __a);
12276 }
12277
vec_all_ge(vector bool short __a,vector short __b)12278 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
12279 vector short __b) {
12280 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
12281 (vector unsigned short)__a);
12282 }
12283
vec_all_ge(vector bool short __a,vector unsigned short __b)12284 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
12285 vector unsigned short __b) {
12286 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b,
12287 (vector unsigned short)__a);
12288 }
12289
vec_all_ge(vector bool short __a,vector bool short __b)12290 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
12291 vector bool short __b) {
12292 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
12293 (vector unsigned short)__a);
12294 }
12295
vec_all_ge(vector int __a,vector int __b)12296 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) {
12297 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
12298 }
12299
vec_all_ge(vector int __a,vector bool int __b)12300 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a,
12301 vector bool int __b) {
12302 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
12303 }
12304
vec_all_ge(vector unsigned int __a,vector unsigned int __b)12305 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
12306 vector unsigned int __b) {
12307 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
12308 }
12309
vec_all_ge(vector unsigned int __a,vector bool int __b)12310 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
12311 vector bool int __b) {
12312 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
12313 }
12314
vec_all_ge(vector bool int __a,vector int __b)12315 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
12316 vector int __b) {
12317 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
12318 (vector unsigned int)__a);
12319 }
12320
vec_all_ge(vector bool int __a,vector unsigned int __b)12321 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
12322 vector unsigned int __b) {
12323 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
12324 }
12325
vec_all_ge(vector bool int __a,vector bool int __b)12326 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
12327 vector bool int __b) {
12328 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
12329 (vector unsigned int)__a);
12330 }
12331
12332 #ifdef __POWER8_VECTOR__
vec_all_ge(vector signed long long __a,vector signed long long __b)12333 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
12334 vector signed long long __b) {
12335 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a);
12336 }
vec_all_ge(vector signed long long __a,vector bool long long __b)12337 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
12338 vector bool long long __b) {
12339 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b,
12340 __a);
12341 }
12342
vec_all_ge(vector unsigned long long __a,vector unsigned long long __b)12343 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
12344 vector unsigned long long __b) {
12345 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a);
12346 }
12347
vec_all_ge(vector unsigned long long __a,vector bool long long __b)12348 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
12349 vector bool long long __b) {
12350 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
12351 __a);
12352 }
12353
vec_all_ge(vector bool long long __a,vector signed long long __b)12354 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
12355 vector signed long long __b) {
12356 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
12357 (vector unsigned long long)__a);
12358 }
12359
vec_all_ge(vector bool long long __a,vector unsigned long long __b)12360 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
12361 vector unsigned long long __b) {
12362 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b,
12363 (vector unsigned long long)__a);
12364 }
12365
vec_all_ge(vector bool long long __a,vector bool long long __b)12366 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
12367 vector bool long long __b) {
12368 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
12369 (vector unsigned long long)__a);
12370 }
12371 #endif
12372
vec_all_ge(vector float __a,vector float __b)12373 static __inline__ int __ATTRS_o_ai vec_all_ge(vector float __a,
12374 vector float __b) {
12375 #ifdef __VSX__
12376 return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __a, __b);
12377 #else
12378 return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
12379 #endif
12380 }
12381
12382 #ifdef __VSX__
vec_all_ge(vector double __a,vector double __b)12383 static __inline__ int __ATTRS_o_ai vec_all_ge(vector double __a,
12384 vector double __b) {
12385 return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __a, __b);
12386 }
12387 #endif
12388
12389 /* vec_all_gt */
12390
vec_all_gt(vector signed char __a,vector signed char __b)12391 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
12392 vector signed char __b) {
12393 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
12394 }
12395
vec_all_gt(vector signed char __a,vector bool char __b)12396 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
12397 vector bool char __b) {
12398 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
12399 }
12400
vec_all_gt(vector unsigned char __a,vector unsigned char __b)12401 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
12402 vector unsigned char __b) {
12403 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
12404 }
12405
vec_all_gt(vector unsigned char __a,vector bool char __b)12406 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
12407 vector bool char __b) {
12408 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
12409 }
12410
vec_all_gt(vector bool char __a,vector signed char __b)12411 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
12412 vector signed char __b) {
12413 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
12414 (vector unsigned char)__b);
12415 }
12416
vec_all_gt(vector bool char __a,vector unsigned char __b)12417 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
12418 vector unsigned char __b) {
12419 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
12420 }
12421
vec_all_gt(vector bool char __a,vector bool char __b)12422 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
12423 vector bool char __b) {
12424 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
12425 (vector unsigned char)__b);
12426 }
12427
vec_all_gt(vector short __a,vector short __b)12428 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
12429 vector short __b) {
12430 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
12431 }
12432
vec_all_gt(vector short __a,vector bool short __b)12433 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
12434 vector bool short __b) {
12435 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
12436 }
12437
vec_all_gt(vector unsigned short __a,vector unsigned short __b)12438 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
12439 vector unsigned short __b) {
12440 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
12441 }
12442
vec_all_gt(vector unsigned short __a,vector bool short __b)12443 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
12444 vector bool short __b) {
12445 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a,
12446 (vector unsigned short)__b);
12447 }
12448
vec_all_gt(vector bool short __a,vector short __b)12449 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
12450 vector short __b) {
12451 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
12452 (vector unsigned short)__b);
12453 }
12454
vec_all_gt(vector bool short __a,vector unsigned short __b)12455 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
12456 vector unsigned short __b) {
12457 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
12458 __b);
12459 }
12460
vec_all_gt(vector bool short __a,vector bool short __b)12461 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
12462 vector bool short __b) {
12463 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
12464 (vector unsigned short)__b);
12465 }
12466
vec_all_gt(vector int __a,vector int __b)12467 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) {
12468 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
12469 }
12470
vec_all_gt(vector int __a,vector bool int __b)12471 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a,
12472 vector bool int __b) {
12473 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
12474 }
12475
vec_all_gt(vector unsigned int __a,vector unsigned int __b)12476 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
12477 vector unsigned int __b) {
12478 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
12479 }
12480
vec_all_gt(vector unsigned int __a,vector bool int __b)12481 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
12482 vector bool int __b) {
12483 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
12484 }
12485
vec_all_gt(vector bool int __a,vector int __b)12486 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
12487 vector int __b) {
12488 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
12489 (vector unsigned int)__b);
12490 }
12491
vec_all_gt(vector bool int __a,vector unsigned int __b)12492 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
12493 vector unsigned int __b) {
12494 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
12495 }
12496
vec_all_gt(vector bool int __a,vector bool int __b)12497 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
12498 vector bool int __b) {
12499 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
12500 (vector unsigned int)__b);
12501 }
12502
12503 #ifdef __POWER8_VECTOR__
vec_all_gt(vector signed long long __a,vector signed long long __b)12504 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
12505 vector signed long long __b) {
12506 return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b);
12507 }
vec_all_gt(vector signed long long __a,vector bool long long __b)12508 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
12509 vector bool long long __b) {
12510 return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a,
12511 (vector signed long long)__b);
12512 }
12513
vec_all_gt(vector unsigned long long __a,vector unsigned long long __b)12514 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
12515 vector unsigned long long __b) {
12516 return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b);
12517 }
12518
vec_all_gt(vector unsigned long long __a,vector bool long long __b)12519 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
12520 vector bool long long __b) {
12521 return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a,
12522 (vector unsigned long long)__b);
12523 }
12524
vec_all_gt(vector bool long long __a,vector signed long long __b)12525 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
12526 vector signed long long __b) {
12527 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
12528 (vector unsigned long long)__b);
12529 }
12530
vec_all_gt(vector bool long long __a,vector unsigned long long __b)12531 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
12532 vector unsigned long long __b) {
12533 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
12534 __b);
12535 }
12536
vec_all_gt(vector bool long long __a,vector bool long long __b)12537 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
12538 vector bool long long __b) {
12539 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
12540 (vector unsigned long long)__b);
12541 }
12542 #endif
12543
vec_all_gt(vector float __a,vector float __b)12544 static __inline__ int __ATTRS_o_ai vec_all_gt(vector float __a,
12545 vector float __b) {
12546 #ifdef __VSX__
12547 return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __a, __b);
12548 #else
12549 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
12550 #endif
12551 }
12552
12553 #ifdef __VSX__
vec_all_gt(vector double __a,vector double __b)12554 static __inline__ int __ATTRS_o_ai vec_all_gt(vector double __a,
12555 vector double __b) {
12556 return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __a, __b);
12557 }
12558 #endif
12559
12560 /* vec_all_in */
12561
12562 static __inline__ int __attribute__((__always_inline__))
vec_all_in(vector float __a,vector float __b)12563 vec_all_in(vector float __a, vector float __b) {
12564 return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
12565 }
12566
12567 /* vec_all_le */
12568
vec_all_le(vector signed char __a,vector signed char __b)12569 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
12570 vector signed char __b) {
12571 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
12572 }
12573
vec_all_le(vector signed char __a,vector bool char __b)12574 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
12575 vector bool char __b) {
12576 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
12577 }
12578
vec_all_le(vector unsigned char __a,vector unsigned char __b)12579 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
12580 vector unsigned char __b) {
12581 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
12582 }
12583
vec_all_le(vector unsigned char __a,vector bool char __b)12584 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
12585 vector bool char __b) {
12586 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
12587 }
12588
vec_all_le(vector bool char __a,vector signed char __b)12589 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
12590 vector signed char __b) {
12591 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
12592 (vector unsigned char)__b);
12593 }
12594
vec_all_le(vector bool char __a,vector unsigned char __b)12595 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
12596 vector unsigned char __b) {
12597 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
12598 }
12599
vec_all_le(vector bool char __a,vector bool char __b)12600 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
12601 vector bool char __b) {
12602 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
12603 (vector unsigned char)__b);
12604 }
12605
vec_all_le(vector short __a,vector short __b)12606 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
12607 vector short __b) {
12608 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
12609 }
12610
vec_all_le(vector short __a,vector bool short __b)12611 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
12612 vector bool short __b) {
12613 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
12614 }
12615
vec_all_le(vector unsigned short __a,vector unsigned short __b)12616 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
12617 vector unsigned short __b) {
12618 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
12619 }
12620
vec_all_le(vector unsigned short __a,vector bool short __b)12621 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
12622 vector bool short __b) {
12623 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a,
12624 (vector unsigned short)__b);
12625 }
12626
vec_all_le(vector bool short __a,vector short __b)12627 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
12628 vector short __b) {
12629 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
12630 (vector unsigned short)__b);
12631 }
12632
vec_all_le(vector bool short __a,vector unsigned short __b)12633 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
12634 vector unsigned short __b) {
12635 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
12636 __b);
12637 }
12638
vec_all_le(vector bool short __a,vector bool short __b)12639 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
12640 vector bool short __b) {
12641 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
12642 (vector unsigned short)__b);
12643 }
12644
vec_all_le(vector int __a,vector int __b)12645 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) {
12646 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
12647 }
12648
vec_all_le(vector int __a,vector bool int __b)12649 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a,
12650 vector bool int __b) {
12651 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
12652 }
12653
vec_all_le(vector unsigned int __a,vector unsigned int __b)12654 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
12655 vector unsigned int __b) {
12656 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
12657 }
12658
vec_all_le(vector unsigned int __a,vector bool int __b)12659 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
12660 vector bool int __b) {
12661 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
12662 }
12663
vec_all_le(vector bool int __a,vector int __b)12664 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
12665 vector int __b) {
12666 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
12667 (vector unsigned int)__b);
12668 }
12669
vec_all_le(vector bool int __a,vector unsigned int __b)12670 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
12671 vector unsigned int __b) {
12672 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
12673 }
12674
vec_all_le(vector bool int __a,vector bool int __b)12675 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
12676 vector bool int __b) {
12677 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
12678 (vector unsigned int)__b);
12679 }
12680
12681 #ifdef __POWER8_VECTOR__
vec_all_le(vector signed long long __a,vector signed long long __b)12682 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
12683 vector signed long long __b) {
12684 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b);
12685 }
12686
vec_all_le(vector unsigned long long __a,vector unsigned long long __b)12687 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
12688 vector unsigned long long __b) {
12689 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b);
12690 }
12691
vec_all_le(vector signed long long __a,vector bool long long __b)12692 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
12693 vector bool long long __b) {
12694 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a,
12695 (vector signed long long)__b);
12696 }
12697
vec_all_le(vector unsigned long long __a,vector bool long long __b)12698 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
12699 vector bool long long __b) {
12700 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a,
12701 (vector unsigned long long)__b);
12702 }
12703
vec_all_le(vector bool long long __a,vector signed long long __b)12704 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12705 vector signed long long __b) {
12706 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12707 (vector unsigned long long)__b);
12708 }
12709
vec_all_le(vector bool long long __a,vector unsigned long long __b)12710 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12711 vector unsigned long long __b) {
12712 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12713 __b);
12714 }
12715
vec_all_le(vector bool long long __a,vector bool long long __b)12716 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12717 vector bool long long __b) {
12718 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12719 (vector unsigned long long)__b);
12720 }
12721 #endif
12722
vec_all_le(vector float __a,vector float __b)12723 static __inline__ int __ATTRS_o_ai vec_all_le(vector float __a,
12724 vector float __b) {
12725 #ifdef __VSX__
12726 return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __b, __a);
12727 #else
12728 return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
12729 #endif
12730 }
12731
12732 #ifdef __VSX__
vec_all_le(vector double __a,vector double __b)12733 static __inline__ int __ATTRS_o_ai vec_all_le(vector double __a,
12734 vector double __b) {
12735 return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __b, __a);
12736 }
12737 #endif
12738
12739 /* vec_all_lt */
12740
vec_all_lt(vector signed char __a,vector signed char __b)12741 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
12742 vector signed char __b) {
12743 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
12744 }
12745
vec_all_lt(vector signed char __a,vector bool char __b)12746 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
12747 vector bool char __b) {
12748 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
12749 }
12750
vec_all_lt(vector unsigned char __a,vector unsigned char __b)12751 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
12752 vector unsigned char __b) {
12753 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
12754 }
12755
vec_all_lt(vector unsigned char __a,vector bool char __b)12756 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
12757 vector bool char __b) {
12758 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
12759 }
12760
vec_all_lt(vector bool char __a,vector signed char __b)12761 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12762 vector signed char __b) {
12763 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
12764 (vector unsigned char)__a);
12765 }
12766
vec_all_lt(vector bool char __a,vector unsigned char __b)12767 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12768 vector unsigned char __b) {
12769 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
12770 }
12771
vec_all_lt(vector bool char __a,vector bool char __b)12772 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12773 vector bool char __b) {
12774 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
12775 (vector unsigned char)__a);
12776 }
12777
vec_all_lt(vector short __a,vector short __b)12778 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
12779 vector short __b) {
12780 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
12781 }
12782
vec_all_lt(vector short __a,vector bool short __b)12783 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
12784 vector bool short __b) {
12785 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
12786 }
12787
vec_all_lt(vector unsigned short __a,vector unsigned short __b)12788 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
12789 vector unsigned short __b) {
12790 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
12791 }
12792
vec_all_lt(vector unsigned short __a,vector bool short __b)12793 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
12794 vector bool short __b) {
12795 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12796 __a);
12797 }
12798
vec_all_lt(vector bool short __a,vector short __b)12799 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12800 vector short __b) {
12801 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12802 (vector unsigned short)__a);
12803 }
12804
vec_all_lt(vector bool short __a,vector unsigned short __b)12805 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12806 vector unsigned short __b) {
12807 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b,
12808 (vector unsigned short)__a);
12809 }
12810
vec_all_lt(vector bool short __a,vector bool short __b)12811 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12812 vector bool short __b) {
12813 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12814 (vector unsigned short)__a);
12815 }
12816
vec_all_lt(vector int __a,vector int __b)12817 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) {
12818 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
12819 }
12820
vec_all_lt(vector int __a,vector bool int __b)12821 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a,
12822 vector bool int __b) {
12823 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
12824 }
12825
vec_all_lt(vector unsigned int __a,vector unsigned int __b)12826 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
12827 vector unsigned int __b) {
12828 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
12829 }
12830
vec_all_lt(vector unsigned int __a,vector bool int __b)12831 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
12832 vector bool int __b) {
12833 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
12834 }
12835
vec_all_lt(vector bool int __a,vector int __b)12836 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12837 vector int __b) {
12838 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
12839 (vector unsigned int)__a);
12840 }
12841
vec_all_lt(vector bool int __a,vector unsigned int __b)12842 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12843 vector unsigned int __b) {
12844 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
12845 }
12846
vec_all_lt(vector bool int __a,vector bool int __b)12847 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12848 vector bool int __b) {
12849 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
12850 (vector unsigned int)__a);
12851 }
12852
12853 #ifdef __POWER8_VECTOR__
vec_all_lt(vector signed long long __a,vector signed long long __b)12854 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
12855 vector signed long long __b) {
12856 return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a);
12857 }
12858
vec_all_lt(vector unsigned long long __a,vector unsigned long long __b)12859 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
12860 vector unsigned long long __b) {
12861 return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a);
12862 }
12863
vec_all_lt(vector signed long long __a,vector bool long long __b)12864 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
12865 vector bool long long __b) {
12866 return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b,
12867 __a);
12868 }
12869
vec_all_lt(vector unsigned long long __a,vector bool long long __b)12870 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
12871 vector bool long long __b) {
12872 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12873 __a);
12874 }
12875
vec_all_lt(vector bool long long __a,vector signed long long __b)12876 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12877 vector signed long long __b) {
12878 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12879 (vector unsigned long long)__a);
12880 }
12881
vec_all_lt(vector bool long long __a,vector unsigned long long __b)12882 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12883 vector unsigned long long __b) {
12884 return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b,
12885 (vector unsigned long long)__a);
12886 }
12887
vec_all_lt(vector bool long long __a,vector bool long long __b)12888 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12889 vector bool long long __b) {
12890 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12891 (vector unsigned long long)__a);
12892 }
12893 #endif
12894
vec_all_lt(vector float __a,vector float __b)12895 static __inline__ int __ATTRS_o_ai vec_all_lt(vector float __a,
12896 vector float __b) {
12897 #ifdef __VSX__
12898 return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __b, __a);
12899 #else
12900 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
12901 #endif
12902 }
12903
12904 #ifdef __VSX__
vec_all_lt(vector double __a,vector double __b)12905 static __inline__ int __ATTRS_o_ai vec_all_lt(vector double __a,
12906 vector double __b) {
12907 return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __b, __a);
12908 }
12909 #endif
12910
12911 /* vec_all_nan */
12912
vec_all_nan(vector float __a)12913 static __inline__ int __ATTRS_o_ai vec_all_nan(vector float __a) {
12914 #ifdef __VSX__
12915 return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __a);
12916 #else
12917 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
12918 #endif
12919 }
12920
12921 #ifdef __VSX__
vec_all_nan(vector double __a)12922 static __inline__ int __ATTRS_o_ai vec_all_nan(vector double __a) {
12923 return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __a);
12924 }
12925 #endif
12926
12927 /* vec_all_ne */
12928
vec_all_ne(vector signed char __a,vector signed char __b)12929 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
12930 vector signed char __b) {
12931 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12932 (vector char)__b);
12933 }
12934
vec_all_ne(vector signed char __a,vector bool char __b)12935 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
12936 vector bool char __b) {
12937 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12938 (vector char)__b);
12939 }
12940
vec_all_ne(vector unsigned char __a,vector unsigned char __b)12941 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
12942 vector unsigned char __b) {
12943 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12944 (vector char)__b);
12945 }
12946
vec_all_ne(vector unsigned char __a,vector bool char __b)12947 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
12948 vector bool char __b) {
12949 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12950 (vector char)__b);
12951 }
12952
vec_all_ne(vector bool char __a,vector signed char __b)12953 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12954 vector signed char __b) {
12955 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12956 (vector char)__b);
12957 }
12958
vec_all_ne(vector bool char __a,vector unsigned char __b)12959 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12960 vector unsigned char __b) {
12961 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12962 (vector char)__b);
12963 }
12964
vec_all_ne(vector bool char __a,vector bool char __b)12965 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12966 vector bool char __b) {
12967 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12968 (vector char)__b);
12969 }
12970
vec_all_ne(vector short __a,vector short __b)12971 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
12972 vector short __b) {
12973 return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
12974 }
12975
vec_all_ne(vector short __a,vector bool short __b)12976 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
12977 vector bool short __b) {
12978 return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
12979 }
12980
vec_all_ne(vector unsigned short __a,vector unsigned short __b)12981 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
12982 vector unsigned short __b) {
12983 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12984 (vector short)__b);
12985 }
12986
vec_all_ne(vector unsigned short __a,vector bool short __b)12987 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
12988 vector bool short __b) {
12989 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12990 (vector short)__b);
12991 }
12992
vec_all_ne(vector bool short __a,vector short __b)12993 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
12994 vector short __b) {
12995 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12996 (vector short)__b);
12997 }
12998
vec_all_ne(vector bool short __a,vector unsigned short __b)12999 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
13000 vector unsigned short __b) {
13001 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
13002 (vector short)__b);
13003 }
13004
vec_all_ne(vector bool short __a,vector bool short __b)13005 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
13006 vector bool short __b) {
13007 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
13008 (vector short)__b);
13009 }
13010
vec_all_ne(vector pixel __a,vector pixel __b)13011 static __inline__ int __ATTRS_o_ai vec_all_ne(vector pixel __a,
13012 vector pixel __b) {
13013 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
13014 (vector short)__b);
13015 }
13016
vec_all_ne(vector int __a,vector int __b)13017 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) {
13018 return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
13019 }
13020
vec_all_ne(vector int __a,vector bool int __b)13021 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a,
13022 vector bool int __b) {
13023 return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
13024 }
13025
vec_all_ne(vector unsigned int __a,vector unsigned int __b)13026 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
13027 vector unsigned int __b) {
13028 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13029 (vector int)__b);
13030 }
13031
vec_all_ne(vector unsigned int __a,vector bool int __b)13032 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
13033 vector bool int __b) {
13034 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13035 (vector int)__b);
13036 }
13037
vec_all_ne(vector bool int __a,vector int __b)13038 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
13039 vector int __b) {
13040 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13041 (vector int)__b);
13042 }
13043
vec_all_ne(vector bool int __a,vector unsigned int __b)13044 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
13045 vector unsigned int __b) {
13046 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13047 (vector int)__b);
13048 }
13049
vec_all_ne(vector bool int __a,vector bool int __b)13050 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
13051 vector bool int __b) {
13052 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13053 (vector int)__b);
13054 }
13055
13056 #ifdef __POWER8_VECTOR__
vec_all_ne(vector signed long long __a,vector signed long long __b)13057 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
13058 vector signed long long __b) {
13059 return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b);
13060 }
13061
vec_all_ne(vector unsigned long long __a,vector unsigned long long __b)13062 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
13063 vector unsigned long long __b) {
13064 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a,
13065 (vector long long)__b);
13066 }
13067
vec_all_ne(vector signed long long __a,vector bool long long __b)13068 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
13069 vector bool long long __b) {
13070 return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a,
13071 (vector signed long long)__b);
13072 }
13073
vec_all_ne(vector unsigned long long __a,vector bool long long __b)13074 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
13075 vector bool long long __b) {
13076 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13077 (vector signed long long)__b);
13078 }
13079
vec_all_ne(vector bool long long __a,vector signed long long __b)13080 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
13081 vector signed long long __b) {
13082 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13083 (vector signed long long)__b);
13084 }
13085
vec_all_ne(vector bool long long __a,vector unsigned long long __b)13086 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
13087 vector unsigned long long __b) {
13088 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13089 (vector signed long long)__b);
13090 }
13091
vec_all_ne(vector bool long long __a,vector bool long long __b)13092 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
13093 vector bool long long __b) {
13094 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13095 (vector signed long long)__b);
13096 }
13097 #endif
13098
vec_all_ne(vector float __a,vector float __b)13099 static __inline__ int __ATTRS_o_ai vec_all_ne(vector float __a,
13100 vector float __b) {
13101 #ifdef __VSX__
13102 return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
13103 #else
13104 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
13105 #endif
13106 }
13107
13108 #ifdef __VSX__
vec_all_ne(vector double __a,vector double __b)13109 static __inline__ int __ATTRS_o_ai vec_all_ne(vector double __a,
13110 vector double __b) {
13111 return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
13112 }
13113 #endif
13114
13115 /* vec_all_nge */
13116
vec_all_nge(vector float __a,vector float __b)13117 static __inline__ int __ATTRS_o_ai vec_all_nge(vector float __a,
13118 vector float __b) {
13119 #ifdef __VSX__
13120 return __builtin_vsx_xvcmpgesp_p(__CR6_EQ, __a, __b);
13121 #else
13122 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
13123 #endif
13124 }
13125
13126 #ifdef __VSX__
vec_all_nge(vector double __a,vector double __b)13127 static __inline__ int __ATTRS_o_ai vec_all_nge(vector double __a,
13128 vector double __b) {
13129 return __builtin_vsx_xvcmpgedp_p(__CR6_EQ, __a, __b);
13130 }
13131 #endif
13132
13133 /* vec_all_ngt */
13134
vec_all_ngt(vector float __a,vector float __b)13135 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector float __a,
13136 vector float __b) {
13137 #ifdef __VSX__
13138 return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ, __a, __b);
13139 #else
13140 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
13141 #endif
13142 }
13143
13144 #ifdef __VSX__
vec_all_ngt(vector double __a,vector double __b)13145 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector double __a,
13146 vector double __b) {
13147 return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ, __a, __b);
13148 }
13149 #endif
13150
13151 /* vec_all_nle */
13152
13153 static __inline__ int __attribute__((__always_inline__))
vec_all_nle(vector float __a,vector float __b)13154 vec_all_nle(vector float __a, vector float __b) {
13155 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
13156 }
13157
13158 /* vec_all_nlt */
13159
13160 static __inline__ int __attribute__((__always_inline__))
vec_all_nlt(vector float __a,vector float __b)13161 vec_all_nlt(vector float __a, vector float __b) {
13162 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
13163 }
13164
13165 /* vec_all_numeric */
13166
13167 static __inline__ int __attribute__((__always_inline__))
vec_all_numeric(vector float __a)13168 vec_all_numeric(vector float __a) {
13169 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
13170 }
13171
13172 /* vec_any_eq */
13173
vec_any_eq(vector signed char __a,vector signed char __b)13174 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
13175 vector signed char __b) {
13176 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13177 (vector char)__b);
13178 }
13179
vec_any_eq(vector signed char __a,vector bool char __b)13180 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
13181 vector bool char __b) {
13182 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13183 (vector char)__b);
13184 }
13185
vec_any_eq(vector unsigned char __a,vector unsigned char __b)13186 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
13187 vector unsigned char __b) {
13188 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13189 (vector char)__b);
13190 }
13191
vec_any_eq(vector unsigned char __a,vector bool char __b)13192 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
13193 vector bool char __b) {
13194 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13195 (vector char)__b);
13196 }
13197
vec_any_eq(vector bool char __a,vector signed char __b)13198 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
13199 vector signed char __b) {
13200 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13201 (vector char)__b);
13202 }
13203
vec_any_eq(vector bool char __a,vector unsigned char __b)13204 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
13205 vector unsigned char __b) {
13206 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13207 (vector char)__b);
13208 }
13209
vec_any_eq(vector bool char __a,vector bool char __b)13210 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
13211 vector bool char __b) {
13212 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13213 (vector char)__b);
13214 }
13215
vec_any_eq(vector short __a,vector short __b)13216 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
13217 vector short __b) {
13218 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
13219 }
13220
vec_any_eq(vector short __a,vector bool short __b)13221 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
13222 vector bool short __b) {
13223 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
13224 }
13225
vec_any_eq(vector unsigned short __a,vector unsigned short __b)13226 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
13227 vector unsigned short __b) {
13228 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13229 (vector short)__b);
13230 }
13231
vec_any_eq(vector unsigned short __a,vector bool short __b)13232 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
13233 vector bool short __b) {
13234 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13235 (vector short)__b);
13236 }
13237
vec_any_eq(vector bool short __a,vector short __b)13238 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
13239 vector short __b) {
13240 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13241 (vector short)__b);
13242 }
13243
vec_any_eq(vector bool short __a,vector unsigned short __b)13244 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
13245 vector unsigned short __b) {
13246 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13247 (vector short)__b);
13248 }
13249
vec_any_eq(vector bool short __a,vector bool short __b)13250 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
13251 vector bool short __b) {
13252 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13253 (vector short)__b);
13254 }
13255
vec_any_eq(vector pixel __a,vector pixel __b)13256 static __inline__ int __ATTRS_o_ai vec_any_eq(vector pixel __a,
13257 vector pixel __b) {
13258 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13259 (vector short)__b);
13260 }
13261
vec_any_eq(vector int __a,vector int __b)13262 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) {
13263 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
13264 }
13265
vec_any_eq(vector int __a,vector bool int __b)13266 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a,
13267 vector bool int __b) {
13268 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
13269 }
13270
vec_any_eq(vector unsigned int __a,vector unsigned int __b)13271 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
13272 vector unsigned int __b) {
13273 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13274 (vector int)__b);
13275 }
13276
vec_any_eq(vector unsigned int __a,vector bool int __b)13277 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
13278 vector bool int __b) {
13279 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13280 (vector int)__b);
13281 }
13282
vec_any_eq(vector bool int __a,vector int __b)13283 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
13284 vector int __b) {
13285 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13286 (vector int)__b);
13287 }
13288
vec_any_eq(vector bool int __a,vector unsigned int __b)13289 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
13290 vector unsigned int __b) {
13291 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13292 (vector int)__b);
13293 }
13294
vec_any_eq(vector bool int __a,vector bool int __b)13295 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
13296 vector bool int __b) {
13297 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13298 (vector int)__b);
13299 }
13300
13301 #ifdef __POWER8_VECTOR__
vec_any_eq(vector signed long long __a,vector signed long long __b)13302 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
13303 vector signed long long __b) {
13304 return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b);
13305 }
13306
vec_any_eq(vector unsigned long long __a,vector unsigned long long __b)13307 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
13308 vector unsigned long long __b) {
13309 return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a,
13310 (vector long long)__b);
13311 }
13312
vec_any_eq(vector signed long long __a,vector bool long long __b)13313 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
13314 vector bool long long __b) {
13315 return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a,
13316 (vector signed long long)__b);
13317 }
13318
vec_any_eq(vector unsigned long long __a,vector bool long long __b)13319 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
13320 vector bool long long __b) {
13321 return __builtin_altivec_vcmpequd_p(
13322 __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13323 }
13324
vec_any_eq(vector bool long long __a,vector signed long long __b)13325 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
13326 vector signed long long __b) {
13327 return __builtin_altivec_vcmpequd_p(
13328 __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13329 }
13330
vec_any_eq(vector bool long long __a,vector unsigned long long __b)13331 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
13332 vector unsigned long long __b) {
13333 return __builtin_altivec_vcmpequd_p(
13334 __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13335 }
13336
vec_any_eq(vector bool long long __a,vector bool long long __b)13337 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
13338 vector bool long long __b) {
13339 return __builtin_altivec_vcmpequd_p(
13340 __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13341 }
13342 #endif
13343
vec_any_eq(vector float __a,vector float __b)13344 static __inline__ int __ATTRS_o_ai vec_any_eq(vector float __a,
13345 vector float __b) {
13346 #ifdef __VSX__
13347 return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ_REV, __a, __b);
13348 #else
13349 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
13350 #endif
13351 }
13352
13353 #ifdef __VSX__
vec_any_eq(vector double __a,vector double __b)13354 static __inline__ int __ATTRS_o_ai vec_any_eq(vector double __a,
13355 vector double __b) {
13356 return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ_REV, __a, __b);
13357 }
13358 #endif
13359
13360 /* vec_any_ge */
13361
vec_any_ge(vector signed char __a,vector signed char __b)13362 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
13363 vector signed char __b) {
13364 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
13365 }
13366
vec_any_ge(vector signed char __a,vector bool char __b)13367 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
13368 vector bool char __b) {
13369 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b,
13370 __a);
13371 }
13372
vec_any_ge(vector unsigned char __a,vector unsigned char __b)13373 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
13374 vector unsigned char __b) {
13375 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
13376 }
13377
vec_any_ge(vector unsigned char __a,vector bool char __b)13378 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
13379 vector bool char __b) {
13380 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
13381 __a);
13382 }
13383
vec_any_ge(vector bool char __a,vector signed char __b)13384 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
13385 vector signed char __b) {
13386 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
13387 (vector unsigned char)__a);
13388 }
13389
vec_any_ge(vector bool char __a,vector unsigned char __b)13390 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
13391 vector unsigned char __b) {
13392 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b,
13393 (vector unsigned char)__a);
13394 }
13395
vec_any_ge(vector bool char __a,vector bool char __b)13396 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
13397 vector bool char __b) {
13398 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
13399 (vector unsigned char)__a);
13400 }
13401
vec_any_ge(vector short __a,vector short __b)13402 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
13403 vector short __b) {
13404 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
13405 }
13406
vec_any_ge(vector short __a,vector bool short __b)13407 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
13408 vector bool short __b) {
13409 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
13410 }
13411
vec_any_ge(vector unsigned short __a,vector unsigned short __b)13412 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
13413 vector unsigned short __b) {
13414 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
13415 }
13416
vec_any_ge(vector unsigned short __a,vector bool short __b)13417 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
13418 vector bool short __b) {
13419 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
13420 __a);
13421 }
13422
vec_any_ge(vector bool short __a,vector short __b)13423 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
13424 vector short __b) {
13425 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
13426 (vector unsigned short)__a);
13427 }
13428
vec_any_ge(vector bool short __a,vector unsigned short __b)13429 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
13430 vector unsigned short __b) {
13431 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b,
13432 (vector unsigned short)__a);
13433 }
13434
vec_any_ge(vector bool short __a,vector bool short __b)13435 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
13436 vector bool short __b) {
13437 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
13438 (vector unsigned short)__a);
13439 }
13440
vec_any_ge(vector int __a,vector int __b)13441 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) {
13442 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
13443 }
13444
vec_any_ge(vector int __a,vector bool int __b)13445 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a,
13446 vector bool int __b) {
13447 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
13448 }
13449
vec_any_ge(vector unsigned int __a,vector unsigned int __b)13450 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
13451 vector unsigned int __b) {
13452 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
13453 }
13454
vec_any_ge(vector unsigned int __a,vector bool int __b)13455 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
13456 vector bool int __b) {
13457 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
13458 __a);
13459 }
13460
vec_any_ge(vector bool int __a,vector int __b)13461 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
13462 vector int __b) {
13463 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
13464 (vector unsigned int)__a);
13465 }
13466
vec_any_ge(vector bool int __a,vector unsigned int __b)13467 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
13468 vector unsigned int __b) {
13469 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b,
13470 (vector unsigned int)__a);
13471 }
13472
vec_any_ge(vector bool int __a,vector bool int __b)13473 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
13474 vector bool int __b) {
13475 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
13476 (vector unsigned int)__a);
13477 }
13478
13479 #ifdef __POWER8_VECTOR__
vec_any_ge(vector signed long long __a,vector signed long long __b)13480 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
13481 vector signed long long __b) {
13482 return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a);
13483 }
13484
vec_any_ge(vector unsigned long long __a,vector unsigned long long __b)13485 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
13486 vector unsigned long long __b) {
13487 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a);
13488 }
13489
vec_any_ge(vector signed long long __a,vector bool long long __b)13490 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
13491 vector bool long long __b) {
13492 return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV,
13493 (vector signed long long)__b, __a);
13494 }
13495
vec_any_ge(vector unsigned long long __a,vector bool long long __b)13496 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
13497 vector bool long long __b) {
13498 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13499 (vector unsigned long long)__b, __a);
13500 }
13501
vec_any_ge(vector bool long long __a,vector signed long long __b)13502 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
13503 vector signed long long __b) {
13504 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13505 (vector unsigned long long)__b,
13506 (vector unsigned long long)__a);
13507 }
13508
vec_any_ge(vector bool long long __a,vector unsigned long long __b)13509 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
13510 vector unsigned long long __b) {
13511 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b,
13512 (vector unsigned long long)__a);
13513 }
13514
vec_any_ge(vector bool long long __a,vector bool long long __b)13515 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
13516 vector bool long long __b) {
13517 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13518 (vector unsigned long long)__b,
13519 (vector unsigned long long)__a);
13520 }
13521 #endif
13522
vec_any_ge(vector float __a,vector float __b)13523 static __inline__ int __ATTRS_o_ai vec_any_ge(vector float __a,
13524 vector float __b) {
13525 #ifdef __VSX__
13526 return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __a, __b);
13527 #else
13528 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
13529 #endif
13530 }
13531
13532 #ifdef __VSX__
vec_any_ge(vector double __a,vector double __b)13533 static __inline__ int __ATTRS_o_ai vec_any_ge(vector double __a,
13534 vector double __b) {
13535 return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __a, __b);
13536 }
13537 #endif
13538
13539 /* vec_any_gt */
13540
vec_any_gt(vector signed char __a,vector signed char __b)13541 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
13542 vector signed char __b) {
13543 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
13544 }
13545
vec_any_gt(vector signed char __a,vector bool char __b)13546 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
13547 vector bool char __b) {
13548 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a,
13549 (vector signed char)__b);
13550 }
13551
vec_any_gt(vector unsigned char __a,vector unsigned char __b)13552 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
13553 vector unsigned char __b) {
13554 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
13555 }
13556
vec_any_gt(vector unsigned char __a,vector bool char __b)13557 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
13558 vector bool char __b) {
13559 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a,
13560 (vector unsigned char)__b);
13561 }
13562
vec_any_gt(vector bool char __a,vector signed char __b)13563 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
13564 vector signed char __b) {
13565 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
13566 (vector unsigned char)__b);
13567 }
13568
vec_any_gt(vector bool char __a,vector unsigned char __b)13569 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
13570 vector unsigned char __b) {
13571 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
13572 __b);
13573 }
13574
vec_any_gt(vector bool char __a,vector bool char __b)13575 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
13576 vector bool char __b) {
13577 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
13578 (vector unsigned char)__b);
13579 }
13580
vec_any_gt(vector short __a,vector short __b)13581 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
13582 vector short __b) {
13583 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
13584 }
13585
vec_any_gt(vector short __a,vector bool short __b)13586 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
13587 vector bool short __b) {
13588 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
13589 }
13590
vec_any_gt(vector unsigned short __a,vector unsigned short __b)13591 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
13592 vector unsigned short __b) {
13593 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
13594 }
13595
vec_any_gt(vector unsigned short __a,vector bool short __b)13596 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
13597 vector bool short __b) {
13598 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a,
13599 (vector unsigned short)__b);
13600 }
13601
vec_any_gt(vector bool short __a,vector short __b)13602 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
13603 vector short __b) {
13604 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
13605 (vector unsigned short)__b);
13606 }
13607
vec_any_gt(vector bool short __a,vector unsigned short __b)13608 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
13609 vector unsigned short __b) {
13610 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
13611 __b);
13612 }
13613
vec_any_gt(vector bool short __a,vector bool short __b)13614 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
13615 vector bool short __b) {
13616 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
13617 (vector unsigned short)__b);
13618 }
13619
vec_any_gt(vector int __a,vector int __b)13620 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) {
13621 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
13622 }
13623
vec_any_gt(vector int __a,vector bool int __b)13624 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a,
13625 vector bool int __b) {
13626 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
13627 }
13628
vec_any_gt(vector unsigned int __a,vector unsigned int __b)13629 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
13630 vector unsigned int __b) {
13631 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
13632 }
13633
vec_any_gt(vector unsigned int __a,vector bool int __b)13634 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
13635 vector bool int __b) {
13636 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a,
13637 (vector unsigned int)__b);
13638 }
13639
vec_any_gt(vector bool int __a,vector int __b)13640 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
13641 vector int __b) {
13642 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
13643 (vector unsigned int)__b);
13644 }
13645
vec_any_gt(vector bool int __a,vector unsigned int __b)13646 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
13647 vector unsigned int __b) {
13648 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
13649 __b);
13650 }
13651
vec_any_gt(vector bool int __a,vector bool int __b)13652 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
13653 vector bool int __b) {
13654 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
13655 (vector unsigned int)__b);
13656 }
13657
13658 #ifdef __POWER8_VECTOR__
vec_any_gt(vector signed long long __a,vector signed long long __b)13659 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
13660 vector signed long long __b) {
13661 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b);
13662 }
13663
vec_any_gt(vector unsigned long long __a,vector unsigned long long __b)13664 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
13665 vector unsigned long long __b) {
13666 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b);
13667 }
13668
vec_any_gt(vector signed long long __a,vector bool long long __b)13669 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
13670 vector bool long long __b) {
13671 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a,
13672 (vector signed long long)__b);
13673 }
13674
vec_any_gt(vector unsigned long long __a,vector bool long long __b)13675 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
13676 vector bool long long __b) {
13677 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a,
13678 (vector unsigned long long)__b);
13679 }
13680
vec_any_gt(vector bool long long __a,vector signed long long __b)13681 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
13682 vector signed long long __b) {
13683 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13684 (vector unsigned long long)__a,
13685 (vector unsigned long long)__b);
13686 }
13687
vec_any_gt(vector bool long long __a,vector unsigned long long __b)13688 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
13689 vector unsigned long long __b) {
13690 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13691 (vector unsigned long long)__a, __b);
13692 }
13693
vec_any_gt(vector bool long long __a,vector bool long long __b)13694 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
13695 vector bool long long __b) {
13696 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13697 (vector unsigned long long)__a,
13698 (vector unsigned long long)__b);
13699 }
13700 #endif
13701
vec_any_gt(vector float __a,vector float __b)13702 static __inline__ int __ATTRS_o_ai vec_any_gt(vector float __a,
13703 vector float __b) {
13704 #ifdef __VSX__
13705 return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __a, __b);
13706 #else
13707 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
13708 #endif
13709 }
13710
13711 #ifdef __VSX__
vec_any_gt(vector double __a,vector double __b)13712 static __inline__ int __ATTRS_o_ai vec_any_gt(vector double __a,
13713 vector double __b) {
13714 return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __a, __b);
13715 }
13716 #endif
13717
13718 /* vec_any_le */
13719
vec_any_le(vector signed char __a,vector signed char __b)13720 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
13721 vector signed char __b) {
13722 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
13723 }
13724
vec_any_le(vector signed char __a,vector bool char __b)13725 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
13726 vector bool char __b) {
13727 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a,
13728 (vector signed char)__b);
13729 }
13730
vec_any_le(vector unsigned char __a,vector unsigned char __b)13731 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
13732 vector unsigned char __b) {
13733 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
13734 }
13735
vec_any_le(vector unsigned char __a,vector bool char __b)13736 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
13737 vector bool char __b) {
13738 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a,
13739 (vector unsigned char)__b);
13740 }
13741
vec_any_le(vector bool char __a,vector signed char __b)13742 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
13743 vector signed char __b) {
13744 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
13745 (vector unsigned char)__b);
13746 }
13747
vec_any_le(vector bool char __a,vector unsigned char __b)13748 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
13749 vector unsigned char __b) {
13750 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
13751 __b);
13752 }
13753
vec_any_le(vector bool char __a,vector bool char __b)13754 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
13755 vector bool char __b) {
13756 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
13757 (vector unsigned char)__b);
13758 }
13759
vec_any_le(vector short __a,vector short __b)13760 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
13761 vector short __b) {
13762 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
13763 }
13764
vec_any_le(vector short __a,vector bool short __b)13765 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
13766 vector bool short __b) {
13767 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
13768 }
13769
vec_any_le(vector unsigned short __a,vector unsigned short __b)13770 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
13771 vector unsigned short __b) {
13772 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
13773 }
13774
vec_any_le(vector unsigned short __a,vector bool short __b)13775 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
13776 vector bool short __b) {
13777 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a,
13778 (vector unsigned short)__b);
13779 }
13780
vec_any_le(vector bool short __a,vector short __b)13781 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
13782 vector short __b) {
13783 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
13784 (vector unsigned short)__b);
13785 }
13786
vec_any_le(vector bool short __a,vector unsigned short __b)13787 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
13788 vector unsigned short __b) {
13789 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
13790 __b);
13791 }
13792
vec_any_le(vector bool short __a,vector bool short __b)13793 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
13794 vector bool short __b) {
13795 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
13796 (vector unsigned short)__b);
13797 }
13798
vec_any_le(vector int __a,vector int __b)13799 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) {
13800 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
13801 }
13802
vec_any_le(vector int __a,vector bool int __b)13803 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a,
13804 vector bool int __b) {
13805 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
13806 }
13807
vec_any_le(vector unsigned int __a,vector unsigned int __b)13808 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
13809 vector unsigned int __b) {
13810 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
13811 }
13812
vec_any_le(vector unsigned int __a,vector bool int __b)13813 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
13814 vector bool int __b) {
13815 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a,
13816 (vector unsigned int)__b);
13817 }
13818
vec_any_le(vector bool int __a,vector int __b)13819 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
13820 vector int __b) {
13821 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
13822 (vector unsigned int)__b);
13823 }
13824
vec_any_le(vector bool int __a,vector unsigned int __b)13825 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
13826 vector unsigned int __b) {
13827 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
13828 __b);
13829 }
13830
vec_any_le(vector bool int __a,vector bool int __b)13831 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
13832 vector bool int __b) {
13833 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
13834 (vector unsigned int)__b);
13835 }
13836
13837 #ifdef __POWER8_VECTOR__
vec_any_le(vector signed long long __a,vector signed long long __b)13838 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
13839 vector signed long long __b) {
13840 return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b);
13841 }
13842
vec_any_le(vector unsigned long long __a,vector unsigned long long __b)13843 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
13844 vector unsigned long long __b) {
13845 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b);
13846 }
13847
vec_any_le(vector signed long long __a,vector bool long long __b)13848 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
13849 vector bool long long __b) {
13850 return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a,
13851 (vector signed long long)__b);
13852 }
13853
vec_any_le(vector unsigned long long __a,vector bool long long __b)13854 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
13855 vector bool long long __b) {
13856 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a,
13857 (vector unsigned long long)__b);
13858 }
13859
vec_any_le(vector bool long long __a,vector signed long long __b)13860 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13861 vector signed long long __b) {
13862 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13863 (vector unsigned long long)__a,
13864 (vector unsigned long long)__b);
13865 }
13866
vec_any_le(vector bool long long __a,vector unsigned long long __b)13867 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13868 vector unsigned long long __b) {
13869 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13870 (vector unsigned long long)__a, __b);
13871 }
13872
vec_any_le(vector bool long long __a,vector bool long long __b)13873 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13874 vector bool long long __b) {
13875 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13876 (vector unsigned long long)__a,
13877 (vector unsigned long long)__b);
13878 }
13879 #endif
13880
vec_any_le(vector float __a,vector float __b)13881 static __inline__ int __ATTRS_o_ai vec_any_le(vector float __a,
13882 vector float __b) {
13883 #ifdef __VSX__
13884 return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __b, __a);
13885 #else
13886 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
13887 #endif
13888 }
13889
13890 #ifdef __VSX__
vec_any_le(vector double __a,vector double __b)13891 static __inline__ int __ATTRS_o_ai vec_any_le(vector double __a,
13892 vector double __b) {
13893 return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __b, __a);
13894 }
13895 #endif
13896
13897 /* vec_any_lt */
13898
vec_any_lt(vector signed char __a,vector signed char __b)13899 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
13900 vector signed char __b) {
13901 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
13902 }
13903
vec_any_lt(vector signed char __a,vector bool char __b)13904 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
13905 vector bool char __b) {
13906 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b,
13907 __a);
13908 }
13909
vec_any_lt(vector unsigned char __a,vector unsigned char __b)13910 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
13911 vector unsigned char __b) {
13912 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
13913 }
13914
vec_any_lt(vector unsigned char __a,vector bool char __b)13915 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
13916 vector bool char __b) {
13917 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13918 __a);
13919 }
13920
vec_any_lt(vector bool char __a,vector signed char __b)13921 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13922 vector signed char __b) {
13923 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13924 (vector unsigned char)__a);
13925 }
13926
vec_any_lt(vector bool char __a,vector unsigned char __b)13927 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13928 vector unsigned char __b) {
13929 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b,
13930 (vector unsigned char)__a);
13931 }
13932
vec_any_lt(vector bool char __a,vector bool char __b)13933 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13934 vector bool char __b) {
13935 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13936 (vector unsigned char)__a);
13937 }
13938
vec_any_lt(vector short __a,vector short __b)13939 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
13940 vector short __b) {
13941 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
13942 }
13943
vec_any_lt(vector short __a,vector bool short __b)13944 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
13945 vector bool short __b) {
13946 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
13947 }
13948
vec_any_lt(vector unsigned short __a,vector unsigned short __b)13949 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
13950 vector unsigned short __b) {
13951 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
13952 }
13953
vec_any_lt(vector unsigned short __a,vector bool short __b)13954 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
13955 vector bool short __b) {
13956 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13957 __a);
13958 }
13959
vec_any_lt(vector bool short __a,vector short __b)13960 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13961 vector short __b) {
13962 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13963 (vector unsigned short)__a);
13964 }
13965
vec_any_lt(vector bool short __a,vector unsigned short __b)13966 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13967 vector unsigned short __b) {
13968 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b,
13969 (vector unsigned short)__a);
13970 }
13971
vec_any_lt(vector bool short __a,vector bool short __b)13972 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13973 vector bool short __b) {
13974 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13975 (vector unsigned short)__a);
13976 }
13977
vec_any_lt(vector int __a,vector int __b)13978 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) {
13979 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
13980 }
13981
vec_any_lt(vector int __a,vector bool int __b)13982 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a,
13983 vector bool int __b) {
13984 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
13985 }
13986
vec_any_lt(vector unsigned int __a,vector unsigned int __b)13987 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
13988 vector unsigned int __b) {
13989 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
13990 }
13991
vec_any_lt(vector unsigned int __a,vector bool int __b)13992 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
13993 vector bool int __b) {
13994 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
13995 __a);
13996 }
13997
vec_any_lt(vector bool int __a,vector int __b)13998 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
13999 vector int __b) {
14000 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
14001 (vector unsigned int)__a);
14002 }
14003
vec_any_lt(vector bool int __a,vector unsigned int __b)14004 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
14005 vector unsigned int __b) {
14006 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b,
14007 (vector unsigned int)__a);
14008 }
14009
vec_any_lt(vector bool int __a,vector bool int __b)14010 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
14011 vector bool int __b) {
14012 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
14013 (vector unsigned int)__a);
14014 }
14015
14016 #ifdef __POWER8_VECTOR__
vec_any_lt(vector signed long long __a,vector signed long long __b)14017 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
14018 vector signed long long __b) {
14019 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a);
14020 }
14021
vec_any_lt(vector unsigned long long __a,vector unsigned long long __b)14022 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
14023 vector unsigned long long __b) {
14024 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a);
14025 }
14026
vec_any_lt(vector signed long long __a,vector bool long long __b)14027 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
14028 vector bool long long __b) {
14029 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV,
14030 (vector signed long long)__b, __a);
14031 }
14032
vec_any_lt(vector unsigned long long __a,vector bool long long __b)14033 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
14034 vector bool long long __b) {
14035 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
14036 (vector unsigned long long)__b, __a);
14037 }
14038
vec_any_lt(vector bool long long __a,vector signed long long __b)14039 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
14040 vector signed long long __b) {
14041 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
14042 (vector unsigned long long)__b,
14043 (vector unsigned long long)__a);
14044 }
14045
vec_any_lt(vector bool long long __a,vector unsigned long long __b)14046 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
14047 vector unsigned long long __b) {
14048 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b,
14049 (vector unsigned long long)__a);
14050 }
14051
vec_any_lt(vector bool long long __a,vector bool long long __b)14052 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
14053 vector bool long long __b) {
14054 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
14055 (vector unsigned long long)__b,
14056 (vector unsigned long long)__a);
14057 }
14058 #endif
14059
vec_any_lt(vector float __a,vector float __b)14060 static __inline__ int __ATTRS_o_ai vec_any_lt(vector float __a,
14061 vector float __b) {
14062 #ifdef __VSX__
14063 return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __b, __a);
14064 #else
14065 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
14066 #endif
14067 }
14068
14069 #ifdef __VSX__
vec_any_lt(vector double __a,vector double __b)14070 static __inline__ int __ATTRS_o_ai vec_any_lt(vector double __a,
14071 vector double __b) {
14072 return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __b, __a);
14073 }
14074 #endif
14075
14076 /* vec_any_nan */
14077
14078 static __inline__ int __attribute__((__always_inline__))
vec_any_nan(vector float __a)14079 vec_any_nan(vector float __a) {
14080 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
14081 }
14082
14083 /* vec_any_ne */
14084
vec_any_ne(vector signed char __a,vector signed char __b)14085 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
14086 vector signed char __b) {
14087 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14088 (vector char)__b);
14089 }
14090
vec_any_ne(vector signed char __a,vector bool char __b)14091 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
14092 vector bool char __b) {
14093 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14094 (vector char)__b);
14095 }
14096
vec_any_ne(vector unsigned char __a,vector unsigned char __b)14097 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
14098 vector unsigned char __b) {
14099 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14100 (vector char)__b);
14101 }
14102
vec_any_ne(vector unsigned char __a,vector bool char __b)14103 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
14104 vector bool char __b) {
14105 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14106 (vector char)__b);
14107 }
14108
vec_any_ne(vector bool char __a,vector signed char __b)14109 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
14110 vector signed char __b) {
14111 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14112 (vector char)__b);
14113 }
14114
vec_any_ne(vector bool char __a,vector unsigned char __b)14115 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
14116 vector unsigned char __b) {
14117 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14118 (vector char)__b);
14119 }
14120
vec_any_ne(vector bool char __a,vector bool char __b)14121 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
14122 vector bool char __b) {
14123 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14124 (vector char)__b);
14125 }
14126
vec_any_ne(vector short __a,vector short __b)14127 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
14128 vector short __b) {
14129 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
14130 }
14131
vec_any_ne(vector short __a,vector bool short __b)14132 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
14133 vector bool short __b) {
14134 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
14135 }
14136
vec_any_ne(vector unsigned short __a,vector unsigned short __b)14137 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
14138 vector unsigned short __b) {
14139 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14140 (vector short)__b);
14141 }
14142
vec_any_ne(vector unsigned short __a,vector bool short __b)14143 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
14144 vector bool short __b) {
14145 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14146 (vector short)__b);
14147 }
14148
vec_any_ne(vector bool short __a,vector short __b)14149 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
14150 vector short __b) {
14151 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14152 (vector short)__b);
14153 }
14154
vec_any_ne(vector bool short __a,vector unsigned short __b)14155 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
14156 vector unsigned short __b) {
14157 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14158 (vector short)__b);
14159 }
14160
vec_any_ne(vector bool short __a,vector bool short __b)14161 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
14162 vector bool short __b) {
14163 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14164 (vector short)__b);
14165 }
14166
vec_any_ne(vector pixel __a,vector pixel __b)14167 static __inline__ int __ATTRS_o_ai vec_any_ne(vector pixel __a,
14168 vector pixel __b) {
14169 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14170 (vector short)__b);
14171 }
14172
vec_any_ne(vector int __a,vector int __b)14173 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) {
14174 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
14175 }
14176
vec_any_ne(vector int __a,vector bool int __b)14177 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a,
14178 vector bool int __b) {
14179 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
14180 }
14181
vec_any_ne(vector unsigned int __a,vector unsigned int __b)14182 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
14183 vector unsigned int __b) {
14184 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14185 (vector int)__b);
14186 }
14187
vec_any_ne(vector unsigned int __a,vector bool int __b)14188 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
14189 vector bool int __b) {
14190 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14191 (vector int)__b);
14192 }
14193
vec_any_ne(vector bool int __a,vector int __b)14194 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
14195 vector int __b) {
14196 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14197 (vector int)__b);
14198 }
14199
vec_any_ne(vector bool int __a,vector unsigned int __b)14200 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
14201 vector unsigned int __b) {
14202 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14203 (vector int)__b);
14204 }
14205
vec_any_ne(vector bool int __a,vector bool int __b)14206 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
14207 vector bool int __b) {
14208 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14209 (vector int)__b);
14210 }
14211
14212 #ifdef __POWER8_VECTOR__
vec_any_ne(vector signed long long __a,vector signed long long __b)14213 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
14214 vector signed long long __b) {
14215 return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b);
14216 }
14217
vec_any_ne(vector unsigned long long __a,vector unsigned long long __b)14218 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
14219 vector unsigned long long __b) {
14220 return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a,
14221 (vector long long)__b);
14222 }
14223
vec_any_ne(vector signed long long __a,vector bool long long __b)14224 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
14225 vector bool long long __b) {
14226 return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a,
14227 (vector signed long long)__b);
14228 }
14229
vec_any_ne(vector unsigned long long __a,vector bool long long __b)14230 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
14231 vector bool long long __b) {
14232 return __builtin_altivec_vcmpequd_p(
14233 __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14234 }
14235
vec_any_ne(vector bool long long __a,vector signed long long __b)14236 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
14237 vector signed long long __b) {
14238 return __builtin_altivec_vcmpequd_p(
14239 __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14240 }
14241
vec_any_ne(vector bool long long __a,vector unsigned long long __b)14242 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
14243 vector unsigned long long __b) {
14244 return __builtin_altivec_vcmpequd_p(
14245 __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14246 }
14247
vec_any_ne(vector bool long long __a,vector bool long long __b)14248 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
14249 vector bool long long __b) {
14250 return __builtin_altivec_vcmpequd_p(
14251 __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14252 }
14253 #endif
14254
vec_any_ne(vector float __a,vector float __b)14255 static __inline__ int __ATTRS_o_ai vec_any_ne(vector float __a,
14256 vector float __b) {
14257 #ifdef __VSX__
14258 return __builtin_vsx_xvcmpeqsp_p(__CR6_LT_REV, __a, __b);
14259 #else
14260 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
14261 #endif
14262 }
14263
14264 #ifdef __VSX__
vec_any_ne(vector double __a,vector double __b)14265 static __inline__ int __ATTRS_o_ai vec_any_ne(vector double __a,
14266 vector double __b) {
14267 return __builtin_vsx_xvcmpeqdp_p(__CR6_LT_REV, __a, __b);
14268 }
14269 #endif
14270
14271 /* vec_any_nge */
14272
14273 static __inline__ int __attribute__((__always_inline__))
vec_any_nge(vector float __a,vector float __b)14274 vec_any_nge(vector float __a, vector float __b) {
14275 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
14276 }
14277
14278 /* vec_any_ngt */
14279
14280 static __inline__ int __attribute__((__always_inline__))
vec_any_ngt(vector float __a,vector float __b)14281 vec_any_ngt(vector float __a, vector float __b) {
14282 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
14283 }
14284
14285 /* vec_any_nle */
14286
14287 static __inline__ int __attribute__((__always_inline__))
vec_any_nle(vector float __a,vector float __b)14288 vec_any_nle(vector float __a, vector float __b) {
14289 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
14290 }
14291
14292 /* vec_any_nlt */
14293
14294 static __inline__ int __attribute__((__always_inline__))
vec_any_nlt(vector float __a,vector float __b)14295 vec_any_nlt(vector float __a, vector float __b) {
14296 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
14297 }
14298
14299 /* vec_any_numeric */
14300
14301 static __inline__ int __attribute__((__always_inline__))
vec_any_numeric(vector float __a)14302 vec_any_numeric(vector float __a) {
14303 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
14304 }
14305
14306 /* vec_any_out */
14307
14308 static __inline__ int __attribute__((__always_inline__))
vec_any_out(vector float __a,vector float __b)14309 vec_any_out(vector float __a, vector float __b) {
14310 return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
14311 }
14312
14313 /* Power 8 Crypto functions
14314 Note: We diverge from the current GCC implementation with regard
14315 to cryptography and related functions as follows:
14316 - Only the SHA and AES instructions and builtins are disabled by -mno-crypto
14317 - The remaining ones are only available on Power8 and up so
14318 require -mpower8-vector
14319 The justification for this is that export requirements require that
14320 Category:Vector.Crypto is optional (i.e. compliant hardware may not provide
14321 support). As a result, we need to be able to turn off support for those.
14322 The remaining ones (currently controlled by -mcrypto for GCC) still
14323 need to be provided on compliant hardware even if Vector.Crypto is not
14324 provided.
14325 */
14326 #ifdef __CRYPTO__
14327 #define vec_sbox_be __builtin_altivec_crypto_vsbox
14328 #define vec_cipher_be __builtin_altivec_crypto_vcipher
14329 #define vec_cipherlast_be __builtin_altivec_crypto_vcipherlast
14330 #define vec_ncipher_be __builtin_altivec_crypto_vncipher
14331 #define vec_ncipherlast_be __builtin_altivec_crypto_vncipherlast
14332
14333 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vsbox(vector unsigned long long __a)14334 __builtin_crypto_vsbox(vector unsigned long long __a) {
14335 return __builtin_altivec_crypto_vsbox(__a);
14336 }
14337
14338 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vcipher(vector unsigned long long __a,vector unsigned long long __b)14339 __builtin_crypto_vcipher(vector unsigned long long __a,
14340 vector unsigned long long __b) {
14341 return __builtin_altivec_crypto_vcipher(__a, __b);
14342 }
14343
14344 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vcipherlast(vector unsigned long long __a,vector unsigned long long __b)14345 __builtin_crypto_vcipherlast(vector unsigned long long __a,
14346 vector unsigned long long __b) {
14347 return __builtin_altivec_crypto_vcipherlast(__a, __b);
14348 }
14349
14350 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vncipher(vector unsigned long long __a,vector unsigned long long __b)14351 __builtin_crypto_vncipher(vector unsigned long long __a,
14352 vector unsigned long long __b) {
14353 return __builtin_altivec_crypto_vncipher(__a, __b);
14354 }
14355
14356 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vncipherlast(vector unsigned long long __a,vector unsigned long long __b)14357 __builtin_crypto_vncipherlast(vector unsigned long long __a,
14358 vector unsigned long long __b) {
14359 return __builtin_altivec_crypto_vncipherlast(__a, __b);
14360 }
14361
14362 #define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad
14363 #define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw
14364
14365 #define vec_shasigma_be(X, Y, Z) \
14366 _Generic((X), vector unsigned int \
14367 : __builtin_crypto_vshasigmaw, vector unsigned long long \
14368 : __builtin_crypto_vshasigmad)((X), (Y), (Z))
14369 #endif
14370
14371 #ifdef __POWER8_VECTOR__
14372 static __inline__ vector unsigned char __ATTRS_o_ai
__builtin_crypto_vpermxor(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)14373 __builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b,
14374 vector unsigned char __c) {
14375 return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
14376 }
14377
14378 static __inline__ vector unsigned short __ATTRS_o_ai
__builtin_crypto_vpermxor(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)14379 __builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b,
14380 vector unsigned short __c) {
14381 return (vector unsigned short)__builtin_altivec_crypto_vpermxor(
14382 (vector unsigned char)__a, (vector unsigned char)__b,
14383 (vector unsigned char)__c);
14384 }
14385
__builtin_crypto_vpermxor(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)14386 static __inline__ vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor(
14387 vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
14388 return (vector unsigned int)__builtin_altivec_crypto_vpermxor(
14389 (vector unsigned char)__a, (vector unsigned char)__b,
14390 (vector unsigned char)__c);
14391 }
14392
14393 static __inline__ vector unsigned long long __ATTRS_o_ai
__builtin_crypto_vpermxor(vector unsigned long long __a,vector unsigned long long __b,vector unsigned long long __c)14394 __builtin_crypto_vpermxor(vector unsigned long long __a,
14395 vector unsigned long long __b,
14396 vector unsigned long long __c) {
14397 return (vector unsigned long long)__builtin_altivec_crypto_vpermxor(
14398 (vector unsigned char)__a, (vector unsigned char)__b,
14399 (vector unsigned char)__c);
14400 }
14401
14402 static __inline__ vector unsigned char __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned char __a,vector unsigned char __b)14403 __builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) {
14404 return __builtin_altivec_crypto_vpmsumb(__a, __b);
14405 }
14406
14407 static __inline__ vector unsigned short __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned short __a,vector unsigned short __b)14408 __builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) {
14409 return __builtin_altivec_crypto_vpmsumh(__a, __b);
14410 }
14411
14412 static __inline__ vector unsigned int __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned int __a,vector unsigned int __b)14413 __builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) {
14414 return __builtin_altivec_crypto_vpmsumw(__a, __b);
14415 }
14416
14417 static __inline__ vector unsigned long long __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned long long __a,vector unsigned long long __b)14418 __builtin_crypto_vpmsumb(vector unsigned long long __a,
14419 vector unsigned long long __b) {
14420 return __builtin_altivec_crypto_vpmsumd(__a, __b);
14421 }
14422
14423 static __inline__ vector signed char __ATTRS_o_ai
vec_vgbbd(vector signed char __a)14424 vec_vgbbd(vector signed char __a) {
14425 return __builtin_altivec_vgbbd((vector unsigned char)__a);
14426 }
14427
14428 #define vec_pmsum_be __builtin_crypto_vpmsumb
14429 #define vec_gb __builtin_altivec_vgbbd
14430
14431 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vgbbd(vector unsigned char __a)14432 vec_vgbbd(vector unsigned char __a) {
14433 return __builtin_altivec_vgbbd(__a);
14434 }
14435
14436 static __inline__ vector long long __ATTRS_o_ai
vec_vbpermq(vector signed char __a,vector signed char __b)14437 vec_vbpermq(vector signed char __a, vector signed char __b) {
14438 return __builtin_altivec_vbpermq((vector unsigned char)__a,
14439 (vector unsigned char)__b);
14440 }
14441
14442 static __inline__ vector long long __ATTRS_o_ai
vec_vbpermq(vector unsigned char __a,vector unsigned char __b)14443 vec_vbpermq(vector unsigned char __a, vector unsigned char __b) {
14444 return __builtin_altivec_vbpermq(__a, __b);
14445 }
14446
14447 #ifdef __powerpc64__
14448 static __inline__ vector unsigned long long __attribute__((__always_inline__))
vec_bperm(vector unsigned __int128 __a,vector unsigned char __b)14449 vec_bperm(vector unsigned __int128 __a, vector unsigned char __b) {
14450 return __builtin_altivec_vbpermq((vector unsigned char)__a,
14451 (vector unsigned char)__b);
14452 }
14453 #endif
14454 #endif
14455
14456 #undef __ATTRS_o_ai
14457
14458 #endif /* __ALTIVEC_H */
14459