1 /*===---- altivec.h - Standard header for type generic math ---------------===*\
2  *
3  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4  * See https://llvm.org/LICENSE.txt for license information.
5  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6  *
7 \*===----------------------------------------------------------------------===*/
8 
9 #ifndef __ALTIVEC_H
10 #define __ALTIVEC_H
11 
12 #ifndef __ALTIVEC__
13 #error "AltiVec support not enabled"
14 #endif
15 
16 /* Constants for mapping CR6 bits to predicate result. */
17 
18 #define __CR6_EQ 0
19 #define __CR6_EQ_REV 1
20 #define __CR6_LT 2
21 #define __CR6_LT_REV 3
22 
23 /* Constants for vec_test_data_class */
24 #define __VEC_CLASS_FP_SUBNORMAL_N (1 << 0)
25 #define __VEC_CLASS_FP_SUBNORMAL_P (1 << 1)
26 #define __VEC_CLASS_FP_SUBNORMAL (__VEC_CLASS_FP_SUBNORMAL_P | \
27                                   __VEC_CLASS_FP_SUBNORMAL_N)
28 #define __VEC_CLASS_FP_ZERO_N (1<<2)
29 #define __VEC_CLASS_FP_ZERO_P (1<<3)
30 #define __VEC_CLASS_FP_ZERO (__VEC_CLASS_FP_ZERO_P           | \
31                              __VEC_CLASS_FP_ZERO_N)
32 #define __VEC_CLASS_FP_INFINITY_N (1<<4)
33 #define __VEC_CLASS_FP_INFINITY_P (1<<5)
34 #define __VEC_CLASS_FP_INFINITY (__VEC_CLASS_FP_INFINITY_P   | \
35                                  __VEC_CLASS_FP_INFINITY_N)
36 #define __VEC_CLASS_FP_NAN (1<<6)
37 #define __VEC_CLASS_FP_NOT_NORMAL (__VEC_CLASS_FP_NAN        | \
38                                    __VEC_CLASS_FP_SUBNORMAL  | \
39                                    __VEC_CLASS_FP_ZERO       | \
40                                    __VEC_CLASS_FP_INFINITY)
41 
42 #define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
43 
44 #ifdef __POWER9_VECTOR__
45 #include <stddef.h>
46 #endif
47 
48 static __inline__ vector signed char __ATTRS_o_ai vec_perm(
49     vector signed char __a, vector signed char __b, vector unsigned char __c);
50 
51 static __inline__ vector unsigned char __ATTRS_o_ai
52 vec_perm(vector unsigned char __a, vector unsigned char __b,
53          vector unsigned char __c);
54 
55 static __inline__ vector bool char __ATTRS_o_ai
56 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c);
57 
58 static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
59                                                      vector signed short __b,
60                                                      vector unsigned char __c);
61 
62 static __inline__ vector unsigned short __ATTRS_o_ai
63 vec_perm(vector unsigned short __a, vector unsigned short __b,
64          vector unsigned char __c);
65 
66 static __inline__ vector bool short __ATTRS_o_ai vec_perm(
67     vector bool short __a, vector bool short __b, vector unsigned char __c);
68 
69 static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
70                                                      vector pixel __b,
71                                                      vector unsigned char __c);
72 
73 static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
74                                                    vector signed int __b,
75                                                    vector unsigned char __c);
76 
77 static __inline__ vector unsigned int __ATTRS_o_ai vec_perm(
78     vector unsigned int __a, vector unsigned int __b, vector unsigned char __c);
79 
80 static __inline__ vector bool int __ATTRS_o_ai
81 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c);
82 
83 static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
84                                                      vector float __b,
85                                                      vector unsigned char __c);
86 
87 #ifdef __VSX__
88 static __inline__ vector long long __ATTRS_o_ai
89 vec_perm(vector signed long long __a, vector signed long long __b,
90          vector unsigned char __c);
91 
92 static __inline__ vector unsigned long long __ATTRS_o_ai
93 vec_perm(vector unsigned long long __a, vector unsigned long long __b,
94          vector unsigned char __c);
95 
96 static __inline__ vector bool long long __ATTRS_o_ai
97 vec_perm(vector bool long long __a, vector bool long long __b,
98          vector unsigned char __c);
99 
100 static __inline__ vector double __ATTRS_o_ai vec_perm(vector double __a,
101                                                       vector double __b,
102                                                       vector unsigned char __c);
103 #endif
104 
105 static __inline__ vector unsigned char __ATTRS_o_ai
106 vec_xor(vector unsigned char __a, vector unsigned char __b);
107 
108 /* vec_abs */
109 
110 #define __builtin_altivec_abs_v16qi vec_abs
111 #define __builtin_altivec_abs_v8hi vec_abs
112 #define __builtin_altivec_abs_v4si vec_abs
113 
114 static __inline__ vector signed char __ATTRS_o_ai
vec_abs(vector signed char __a)115 vec_abs(vector signed char __a) {
116   return __builtin_altivec_vmaxsb(__a, -__a);
117 }
118 
119 static __inline__ vector signed short __ATTRS_o_ai
vec_abs(vector signed short __a)120 vec_abs(vector signed short __a) {
121   return __builtin_altivec_vmaxsh(__a, -__a);
122 }
123 
124 static __inline__ vector signed int __ATTRS_o_ai
vec_abs(vector signed int __a)125 vec_abs(vector signed int __a) {
126   return __builtin_altivec_vmaxsw(__a, -__a);
127 }
128 
129 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
130 static __inline__ vector signed long long __ATTRS_o_ai
vec_abs(vector signed long long __a)131 vec_abs(vector signed long long __a) {
132   return __builtin_altivec_vmaxsd(__a, -__a);
133 }
134 #endif
135 
vec_abs(vector float __a)136 static __inline__ vector float __ATTRS_o_ai vec_abs(vector float __a) {
137 #ifdef __VSX__
138   return __builtin_vsx_xvabssp(__a);
139 #else
140   vector unsigned int __res =
141       (vector unsigned int)__a & (vector unsigned int)(0x7FFFFFFF);
142   return (vector float)__res;
143 #endif
144 }
145 
146 #ifdef __VSX__
vec_abs(vector double __a)147 static __inline__ vector double __ATTRS_o_ai vec_abs(vector double __a) {
148   return __builtin_vsx_xvabsdp(__a);
149 }
150 #endif
151 
152 /* vec_abss */
153 #define __builtin_altivec_abss_v16qi vec_abss
154 #define __builtin_altivec_abss_v8hi vec_abss
155 #define __builtin_altivec_abss_v4si vec_abss
156 
157 static __inline__ vector signed char __ATTRS_o_ai
vec_abss(vector signed char __a)158 vec_abss(vector signed char __a) {
159   return __builtin_altivec_vmaxsb(
160       __a, __builtin_altivec_vsubsbs((vector signed char)(0), __a));
161 }
162 
163 static __inline__ vector signed short __ATTRS_o_ai
vec_abss(vector signed short __a)164 vec_abss(vector signed short __a) {
165   return __builtin_altivec_vmaxsh(
166       __a, __builtin_altivec_vsubshs((vector signed short)(0), __a));
167 }
168 
169 static __inline__ vector signed int __ATTRS_o_ai
vec_abss(vector signed int __a)170 vec_abss(vector signed int __a) {
171   return __builtin_altivec_vmaxsw(
172       __a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
173 }
174 
175 /* vec_absd */
176 #if defined(__POWER9_VECTOR__)
177 
178 static __inline__ vector unsigned char __ATTRS_o_ai
vec_absd(vector unsigned char __a,vector unsigned char __b)179 vec_absd(vector unsigned char __a, vector unsigned char __b) {
180   return __builtin_altivec_vabsdub(__a, __b);
181 }
182 
183 static __inline__ vector unsigned short __ATTRS_o_ai
vec_absd(vector unsigned short __a,vector unsigned short __b)184 vec_absd(vector unsigned short __a, vector unsigned short __b) {
185   return __builtin_altivec_vabsduh(__a, __b);
186 }
187 
188 static __inline__ vector unsigned int __ATTRS_o_ai
vec_absd(vector unsigned int __a,vector unsigned int __b)189 vec_absd(vector unsigned int __a,  vector unsigned int __b) {
190   return __builtin_altivec_vabsduw(__a, __b);
191 }
192 
193 #endif /* End __POWER9_VECTOR__ */
194 
195 /* vec_add */
196 
197 static __inline__ vector signed char __ATTRS_o_ai
vec_add(vector signed char __a,vector signed char __b)198 vec_add(vector signed char __a, vector signed char __b) {
199   return __a + __b;
200 }
201 
202 static __inline__ vector signed char __ATTRS_o_ai
vec_add(vector bool char __a,vector signed char __b)203 vec_add(vector bool char __a, vector signed char __b) {
204   return (vector signed char)__a + __b;
205 }
206 
207 static __inline__ vector signed char __ATTRS_o_ai
vec_add(vector signed char __a,vector bool char __b)208 vec_add(vector signed char __a, vector bool char __b) {
209   return __a + (vector signed char)__b;
210 }
211 
212 static __inline__ vector unsigned char __ATTRS_o_ai
vec_add(vector unsigned char __a,vector unsigned char __b)213 vec_add(vector unsigned char __a, vector unsigned char __b) {
214   return __a + __b;
215 }
216 
217 static __inline__ vector unsigned char __ATTRS_o_ai
vec_add(vector bool char __a,vector unsigned char __b)218 vec_add(vector bool char __a, vector unsigned char __b) {
219   return (vector unsigned char)__a + __b;
220 }
221 
222 static __inline__ vector unsigned char __ATTRS_o_ai
vec_add(vector unsigned char __a,vector bool char __b)223 vec_add(vector unsigned char __a, vector bool char __b) {
224   return __a + (vector unsigned char)__b;
225 }
226 
vec_add(vector short __a,vector short __b)227 static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
228                                                     vector short __b) {
229   return __a + __b;
230 }
231 
vec_add(vector bool short __a,vector short __b)232 static __inline__ vector short __ATTRS_o_ai vec_add(vector bool short __a,
233                                                     vector short __b) {
234   return (vector short)__a + __b;
235 }
236 
vec_add(vector short __a,vector bool short __b)237 static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
238                                                     vector bool short __b) {
239   return __a + (vector short)__b;
240 }
241 
242 static __inline__ vector unsigned short __ATTRS_o_ai
vec_add(vector unsigned short __a,vector unsigned short __b)243 vec_add(vector unsigned short __a, vector unsigned short __b) {
244   return __a + __b;
245 }
246 
247 static __inline__ vector unsigned short __ATTRS_o_ai
vec_add(vector bool short __a,vector unsigned short __b)248 vec_add(vector bool short __a, vector unsigned short __b) {
249   return (vector unsigned short)__a + __b;
250 }
251 
252 static __inline__ vector unsigned short __ATTRS_o_ai
vec_add(vector unsigned short __a,vector bool short __b)253 vec_add(vector unsigned short __a, vector bool short __b) {
254   return __a + (vector unsigned short)__b;
255 }
256 
vec_add(vector int __a,vector int __b)257 static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
258                                                   vector int __b) {
259   return __a + __b;
260 }
261 
vec_add(vector bool int __a,vector int __b)262 static __inline__ vector int __ATTRS_o_ai vec_add(vector bool int __a,
263                                                   vector int __b) {
264   return (vector int)__a + __b;
265 }
266 
vec_add(vector int __a,vector bool int __b)267 static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
268                                                   vector bool int __b) {
269   return __a + (vector int)__b;
270 }
271 
272 static __inline__ vector unsigned int __ATTRS_o_ai
vec_add(vector unsigned int __a,vector unsigned int __b)273 vec_add(vector unsigned int __a, vector unsigned int __b) {
274   return __a + __b;
275 }
276 
277 static __inline__ vector unsigned int __ATTRS_o_ai
vec_add(vector bool int __a,vector unsigned int __b)278 vec_add(vector bool int __a, vector unsigned int __b) {
279   return (vector unsigned int)__a + __b;
280 }
281 
282 static __inline__ vector unsigned int __ATTRS_o_ai
vec_add(vector unsigned int __a,vector bool int __b)283 vec_add(vector unsigned int __a, vector bool int __b) {
284   return __a + (vector unsigned int)__b;
285 }
286 
287 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
288 static __inline__ vector signed long long __ATTRS_o_ai
vec_add(vector signed long long __a,vector signed long long __b)289 vec_add(vector signed long long __a, vector signed long long __b) {
290   return __a + __b;
291 }
292 
293 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_add(vector unsigned long long __a,vector unsigned long long __b)294 vec_add(vector unsigned long long __a, vector unsigned long long __b) {
295   return __a + __b;
296 }
297 
298 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_add(vector signed __int128 __a,vector signed __int128 __b)299 vec_add(vector signed __int128 __a, vector signed __int128 __b) {
300   return __a + __b;
301 }
302 
303 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_add(vector unsigned __int128 __a,vector unsigned __int128 __b)304 vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) {
305   return __a + __b;
306 }
307 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
308 
vec_add(vector float __a,vector float __b)309 static __inline__ vector float __ATTRS_o_ai vec_add(vector float __a,
310                                                     vector float __b) {
311   return __a + __b;
312 }
313 
314 #ifdef __VSX__
vec_add(vector double __a,vector double __b)315 static __inline__ vector double __ATTRS_o_ai vec_add(vector double __a,
316                                                      vector double __b) {
317   return __a + __b;
318 }
319 #endif // __VSX__
320 
321 /* vec_adde */
322 
323 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
324 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_adde(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)325 vec_adde(vector signed __int128 __a, vector signed __int128 __b,
326          vector signed __int128 __c) {
327   return __builtin_altivec_vaddeuqm(__a, __b, __c);
328 }
329 
330 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_adde(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)331 vec_adde(vector unsigned __int128 __a, vector unsigned __int128 __b,
332          vector unsigned __int128 __c) {
333   return __builtin_altivec_vaddeuqm(__a, __b, __c);
334 }
335 #endif
336 
337 static __inline__ vector signed int __ATTRS_o_ai
vec_adde(vector signed int __a,vector signed int __b,vector signed int __c)338 vec_adde(vector signed int __a, vector signed int __b,
339          vector signed int __c) {
340   vector signed int __mask = {1, 1, 1, 1};
341   vector signed int __carry = __c & __mask;
342   return vec_add(vec_add(__a, __b), __carry);
343 }
344 
345 static __inline__ vector unsigned int __ATTRS_o_ai
vec_adde(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)346 vec_adde(vector unsigned int __a, vector unsigned int __b,
347          vector unsigned int __c) {
348   vector unsigned int __mask = {1, 1, 1, 1};
349   vector unsigned int __carry = __c & __mask;
350   return vec_add(vec_add(__a, __b), __carry);
351 }
352 
353 /* vec_addec */
354 
355 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
356 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_addec(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)357 vec_addec(vector signed __int128 __a, vector signed __int128 __b,
358           vector signed __int128 __c) {
359   return __builtin_altivec_vaddecuq(__a, __b, __c);
360 }
361 
362 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_addec(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)363 vec_addec(vector unsigned __int128 __a, vector unsigned __int128 __b,
364           vector unsigned __int128 __c) {
365   return __builtin_altivec_vaddecuq(__a, __b, __c);
366 }
367 
368 static __inline__ vector signed int __ATTRS_o_ai
vec_addec(vector signed int __a,vector signed int __b,vector signed int __c)369 vec_addec(vector signed int __a, vector signed int __b,
370           vector signed int __c) {
371 
372   signed int __result[4];
373   for (int i = 0; i < 4; i++) {
374     unsigned int __tempa = (unsigned int) __a[i];
375     unsigned int __tempb = (unsigned int) __b[i];
376     unsigned int __tempc = (unsigned int) __c[i];
377     __tempc = __tempc & 0x00000001;
378     unsigned long long __longa = (unsigned long long) __tempa;
379     unsigned long long __longb = (unsigned long long) __tempb;
380     unsigned long long __longc = (unsigned long long) __tempc;
381     unsigned long long __sum = __longa + __longb + __longc;
382     unsigned long long __res = (__sum >> 32) & 0x01;
383     unsigned long long __tempres = (unsigned int) __res;
384     __result[i] = (signed int) __tempres;
385   }
386 
387   vector signed int ret = { __result[0], __result[1], __result[2], __result[3] };
388   return ret;
389 }
390 
391 static __inline__ vector unsigned int __ATTRS_o_ai
vec_addec(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)392 vec_addec(vector unsigned int __a, vector unsigned int __b,
393           vector unsigned int __c) {
394 
395   unsigned int __result[4];
396   for (int i = 0; i < 4; i++) {
397     unsigned int __tempc = __c[i] & 1;
398     unsigned long long __longa = (unsigned long long) __a[i];
399     unsigned long long __longb = (unsigned long long) __b[i];
400     unsigned long long __longc = (unsigned long long) __tempc;
401     unsigned long long __sum = __longa + __longb + __longc;
402     unsigned long long __res = (__sum >> 32) & 0x01;
403     unsigned long long __tempres = (unsigned int) __res;
404     __result[i] = (signed int) __tempres;
405   }
406 
407   vector unsigned int ret = { __result[0], __result[1], __result[2], __result[3] };
408   return ret;
409 }
410 
411 #endif
412 
413 /* vec_vaddubm */
414 
415 #define __builtin_altivec_vaddubm vec_vaddubm
416 
417 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddubm(vector signed char __a,vector signed char __b)418 vec_vaddubm(vector signed char __a, vector signed char __b) {
419   return __a + __b;
420 }
421 
422 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddubm(vector bool char __a,vector signed char __b)423 vec_vaddubm(vector bool char __a, vector signed char __b) {
424   return (vector signed char)__a + __b;
425 }
426 
427 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddubm(vector signed char __a,vector bool char __b)428 vec_vaddubm(vector signed char __a, vector bool char __b) {
429   return __a + (vector signed char)__b;
430 }
431 
432 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubm(vector unsigned char __a,vector unsigned char __b)433 vec_vaddubm(vector unsigned char __a, vector unsigned char __b) {
434   return __a + __b;
435 }
436 
437 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubm(vector bool char __a,vector unsigned char __b)438 vec_vaddubm(vector bool char __a, vector unsigned char __b) {
439   return (vector unsigned char)__a + __b;
440 }
441 
442 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubm(vector unsigned char __a,vector bool char __b)443 vec_vaddubm(vector unsigned char __a, vector bool char __b) {
444   return __a + (vector unsigned char)__b;
445 }
446 
447 /* vec_vadduhm */
448 
449 #define __builtin_altivec_vadduhm vec_vadduhm
450 
vec_vadduhm(vector short __a,vector short __b)451 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
452                                                         vector short __b) {
453   return __a + __b;
454 }
455 
vec_vadduhm(vector bool short __a,vector short __b)456 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector bool short __a,
457                                                         vector short __b) {
458   return (vector short)__a + __b;
459 }
460 
vec_vadduhm(vector short __a,vector bool short __b)461 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
462                                                         vector bool short __b) {
463   return __a + (vector short)__b;
464 }
465 
466 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhm(vector unsigned short __a,vector unsigned short __b)467 vec_vadduhm(vector unsigned short __a, vector unsigned short __b) {
468   return __a + __b;
469 }
470 
471 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhm(vector bool short __a,vector unsigned short __b)472 vec_vadduhm(vector bool short __a, vector unsigned short __b) {
473   return (vector unsigned short)__a + __b;
474 }
475 
476 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhm(vector unsigned short __a,vector bool short __b)477 vec_vadduhm(vector unsigned short __a, vector bool short __b) {
478   return __a + (vector unsigned short)__b;
479 }
480 
481 /* vec_vadduwm */
482 
483 #define __builtin_altivec_vadduwm vec_vadduwm
484 
vec_vadduwm(vector int __a,vector int __b)485 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
486                                                       vector int __b) {
487   return __a + __b;
488 }
489 
vec_vadduwm(vector bool int __a,vector int __b)490 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector bool int __a,
491                                                       vector int __b) {
492   return (vector int)__a + __b;
493 }
494 
vec_vadduwm(vector int __a,vector bool int __b)495 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
496                                                       vector bool int __b) {
497   return __a + (vector int)__b;
498 }
499 
500 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduwm(vector unsigned int __a,vector unsigned int __b)501 vec_vadduwm(vector unsigned int __a, vector unsigned int __b) {
502   return __a + __b;
503 }
504 
505 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduwm(vector bool int __a,vector unsigned int __b)506 vec_vadduwm(vector bool int __a, vector unsigned int __b) {
507   return (vector unsigned int)__a + __b;
508 }
509 
510 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduwm(vector unsigned int __a,vector bool int __b)511 vec_vadduwm(vector unsigned int __a, vector bool int __b) {
512   return __a + (vector unsigned int)__b;
513 }
514 
515 /* vec_vaddfp */
516 
517 #define __builtin_altivec_vaddfp vec_vaddfp
518 
519 static __inline__ vector float __attribute__((__always_inline__))
vec_vaddfp(vector float __a,vector float __b)520 vec_vaddfp(vector float __a, vector float __b) {
521   return __a + __b;
522 }
523 
524 /* vec_addc */
525 
526 static __inline__ vector signed int __ATTRS_o_ai
vec_addc(vector signed int __a,vector signed int __b)527 vec_addc(vector signed int __a, vector signed int __b) {
528   return (vector signed int)__builtin_altivec_vaddcuw((vector unsigned int)__a,
529                                                       (vector unsigned int)__b);
530 }
531 
532 static __inline__ vector unsigned int __ATTRS_o_ai
vec_addc(vector unsigned int __a,vector unsigned int __b)533 vec_addc(vector unsigned int __a, vector unsigned int __b) {
534   return __builtin_altivec_vaddcuw(__a, __b);
535 }
536 
537 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
538 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_addc(vector signed __int128 __a,vector signed __int128 __b)539 vec_addc(vector signed __int128 __a, vector signed __int128 __b) {
540   return (vector signed __int128)__builtin_altivec_vaddcuq(
541       (vector unsigned __int128)__a, (vector unsigned __int128)__b);
542 }
543 
544 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_addc(vector unsigned __int128 __a,vector unsigned __int128 __b)545 vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
546   return __builtin_altivec_vaddcuq(__a, __b);
547 }
548 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
549 
550 /* vec_vaddcuw */
551 
552 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vaddcuw(vector unsigned int __a,vector unsigned int __b)553 vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) {
554   return __builtin_altivec_vaddcuw(__a, __b);
555 }
556 
557 /* vec_adds */
558 
559 static __inline__ vector signed char __ATTRS_o_ai
vec_adds(vector signed char __a,vector signed char __b)560 vec_adds(vector signed char __a, vector signed char __b) {
561   return __builtin_altivec_vaddsbs(__a, __b);
562 }
563 
564 static __inline__ vector signed char __ATTRS_o_ai
vec_adds(vector bool char __a,vector signed char __b)565 vec_adds(vector bool char __a, vector signed char __b) {
566   return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
567 }
568 
569 static __inline__ vector signed char __ATTRS_o_ai
vec_adds(vector signed char __a,vector bool char __b)570 vec_adds(vector signed char __a, vector bool char __b) {
571   return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
572 }
573 
574 static __inline__ vector unsigned char __ATTRS_o_ai
vec_adds(vector unsigned char __a,vector unsigned char __b)575 vec_adds(vector unsigned char __a, vector unsigned char __b) {
576   return __builtin_altivec_vaddubs(__a, __b);
577 }
578 
579 static __inline__ vector unsigned char __ATTRS_o_ai
vec_adds(vector bool char __a,vector unsigned char __b)580 vec_adds(vector bool char __a, vector unsigned char __b) {
581   return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
582 }
583 
584 static __inline__ vector unsigned char __ATTRS_o_ai
vec_adds(vector unsigned char __a,vector bool char __b)585 vec_adds(vector unsigned char __a, vector bool char __b) {
586   return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
587 }
588 
vec_adds(vector short __a,vector short __b)589 static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
590                                                      vector short __b) {
591   return __builtin_altivec_vaddshs(__a, __b);
592 }
593 
vec_adds(vector bool short __a,vector short __b)594 static __inline__ vector short __ATTRS_o_ai vec_adds(vector bool short __a,
595                                                      vector short __b) {
596   return __builtin_altivec_vaddshs((vector short)__a, __b);
597 }
598 
vec_adds(vector short __a,vector bool short __b)599 static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
600                                                      vector bool short __b) {
601   return __builtin_altivec_vaddshs(__a, (vector short)__b);
602 }
603 
604 static __inline__ vector unsigned short __ATTRS_o_ai
vec_adds(vector unsigned short __a,vector unsigned short __b)605 vec_adds(vector unsigned short __a, vector unsigned short __b) {
606   return __builtin_altivec_vadduhs(__a, __b);
607 }
608 
609 static __inline__ vector unsigned short __ATTRS_o_ai
vec_adds(vector bool short __a,vector unsigned short __b)610 vec_adds(vector bool short __a, vector unsigned short __b) {
611   return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
612 }
613 
614 static __inline__ vector unsigned short __ATTRS_o_ai
vec_adds(vector unsigned short __a,vector bool short __b)615 vec_adds(vector unsigned short __a, vector bool short __b) {
616   return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
617 }
618 
vec_adds(vector int __a,vector int __b)619 static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
620                                                    vector int __b) {
621   return __builtin_altivec_vaddsws(__a, __b);
622 }
623 
vec_adds(vector bool int __a,vector int __b)624 static __inline__ vector int __ATTRS_o_ai vec_adds(vector bool int __a,
625                                                    vector int __b) {
626   return __builtin_altivec_vaddsws((vector int)__a, __b);
627 }
628 
vec_adds(vector int __a,vector bool int __b)629 static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
630                                                    vector bool int __b) {
631   return __builtin_altivec_vaddsws(__a, (vector int)__b);
632 }
633 
634 static __inline__ vector unsigned int __ATTRS_o_ai
vec_adds(vector unsigned int __a,vector unsigned int __b)635 vec_adds(vector unsigned int __a, vector unsigned int __b) {
636   return __builtin_altivec_vadduws(__a, __b);
637 }
638 
639 static __inline__ vector unsigned int __ATTRS_o_ai
vec_adds(vector bool int __a,vector unsigned int __b)640 vec_adds(vector bool int __a, vector unsigned int __b) {
641   return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
642 }
643 
644 static __inline__ vector unsigned int __ATTRS_o_ai
vec_adds(vector unsigned int __a,vector bool int __b)645 vec_adds(vector unsigned int __a, vector bool int __b) {
646   return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
647 }
648 
649 /* vec_vaddsbs */
650 
651 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddsbs(vector signed char __a,vector signed char __b)652 vec_vaddsbs(vector signed char __a, vector signed char __b) {
653   return __builtin_altivec_vaddsbs(__a, __b);
654 }
655 
656 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddsbs(vector bool char __a,vector signed char __b)657 vec_vaddsbs(vector bool char __a, vector signed char __b) {
658   return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
659 }
660 
661 static __inline__ vector signed char __ATTRS_o_ai
vec_vaddsbs(vector signed char __a,vector bool char __b)662 vec_vaddsbs(vector signed char __a, vector bool char __b) {
663   return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
664 }
665 
666 /* vec_vaddubs */
667 
668 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubs(vector unsigned char __a,vector unsigned char __b)669 vec_vaddubs(vector unsigned char __a, vector unsigned char __b) {
670   return __builtin_altivec_vaddubs(__a, __b);
671 }
672 
673 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubs(vector bool char __a,vector unsigned char __b)674 vec_vaddubs(vector bool char __a, vector unsigned char __b) {
675   return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
676 }
677 
678 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubs(vector unsigned char __a,vector bool char __b)679 vec_vaddubs(vector unsigned char __a, vector bool char __b) {
680   return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
681 }
682 
683 /* vec_vaddshs */
684 
vec_vaddshs(vector short __a,vector short __b)685 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
686                                                         vector short __b) {
687   return __builtin_altivec_vaddshs(__a, __b);
688 }
689 
vec_vaddshs(vector bool short __a,vector short __b)690 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector bool short __a,
691                                                         vector short __b) {
692   return __builtin_altivec_vaddshs((vector short)__a, __b);
693 }
694 
vec_vaddshs(vector short __a,vector bool short __b)695 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
696                                                         vector bool short __b) {
697   return __builtin_altivec_vaddshs(__a, (vector short)__b);
698 }
699 
700 /* vec_vadduhs */
701 
702 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhs(vector unsigned short __a,vector unsigned short __b)703 vec_vadduhs(vector unsigned short __a, vector unsigned short __b) {
704   return __builtin_altivec_vadduhs(__a, __b);
705 }
706 
707 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhs(vector bool short __a,vector unsigned short __b)708 vec_vadduhs(vector bool short __a, vector unsigned short __b) {
709   return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
710 }
711 
712 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhs(vector unsigned short __a,vector bool short __b)713 vec_vadduhs(vector unsigned short __a, vector bool short __b) {
714   return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
715 }
716 
717 /* vec_vaddsws */
718 
vec_vaddsws(vector int __a,vector int __b)719 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
720                                                       vector int __b) {
721   return __builtin_altivec_vaddsws(__a, __b);
722 }
723 
vec_vaddsws(vector bool int __a,vector int __b)724 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector bool int __a,
725                                                       vector int __b) {
726   return __builtin_altivec_vaddsws((vector int)__a, __b);
727 }
728 
vec_vaddsws(vector int __a,vector bool int __b)729 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
730                                                       vector bool int __b) {
731   return __builtin_altivec_vaddsws(__a, (vector int)__b);
732 }
733 
734 /* vec_vadduws */
735 
736 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduws(vector unsigned int __a,vector unsigned int __b)737 vec_vadduws(vector unsigned int __a, vector unsigned int __b) {
738   return __builtin_altivec_vadduws(__a, __b);
739 }
740 
741 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduws(vector bool int __a,vector unsigned int __b)742 vec_vadduws(vector bool int __a, vector unsigned int __b) {
743   return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
744 }
745 
746 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduws(vector unsigned int __a,vector bool int __b)747 vec_vadduws(vector unsigned int __a, vector bool int __b) {
748   return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
749 }
750 
751 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
752 /* vec_vadduqm */
753 
754 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vadduqm(vector signed __int128 __a,vector signed __int128 __b)755 vec_vadduqm(vector signed __int128 __a, vector signed __int128 __b) {
756   return __a + __b;
757 }
758 
759 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vadduqm(vector unsigned __int128 __a,vector unsigned __int128 __b)760 vec_vadduqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
761   return __a + __b;
762 }
763 
764 /* vec_vaddeuqm */
765 
766 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vaddeuqm(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)767 vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b,
768              vector signed __int128 __c) {
769   return __builtin_altivec_vaddeuqm(__a, __b, __c);
770 }
771 
772 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vaddeuqm(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)773 vec_vaddeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
774              vector unsigned __int128 __c) {
775   return __builtin_altivec_vaddeuqm(__a, __b, __c);
776 }
777 
778 /* vec_vaddcuq */
779 
780 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vaddcuq(vector signed __int128 __a,vector signed __int128 __b)781 vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) {
782   return __builtin_altivec_vaddcuq(__a, __b);
783 }
784 
785 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vaddcuq(vector unsigned __int128 __a,vector unsigned __int128 __b)786 vec_vaddcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
787   return __builtin_altivec_vaddcuq(__a, __b);
788 }
789 
790 /* vec_vaddecuq */
791 
792 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vaddecuq(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)793 vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b,
794              vector signed __int128 __c) {
795   return __builtin_altivec_vaddecuq(__a, __b, __c);
796 }
797 
798 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vaddecuq(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)799 vec_vaddecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
800              vector unsigned __int128 __c) {
801   return __builtin_altivec_vaddecuq(__a, __b, __c);
802 }
803 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
804 
805 /* vec_and */
806 
807 #define __builtin_altivec_vand vec_and
808 
809 static __inline__ vector signed char __ATTRS_o_ai
vec_and(vector signed char __a,vector signed char __b)810 vec_and(vector signed char __a, vector signed char __b) {
811   return __a & __b;
812 }
813 
814 static __inline__ vector signed char __ATTRS_o_ai
vec_and(vector bool char __a,vector signed char __b)815 vec_and(vector bool char __a, vector signed char __b) {
816   return (vector signed char)__a & __b;
817 }
818 
819 static __inline__ vector signed char __ATTRS_o_ai
vec_and(vector signed char __a,vector bool char __b)820 vec_and(vector signed char __a, vector bool char __b) {
821   return __a & (vector signed char)__b;
822 }
823 
824 static __inline__ vector unsigned char __ATTRS_o_ai
vec_and(vector unsigned char __a,vector unsigned char __b)825 vec_and(vector unsigned char __a, vector unsigned char __b) {
826   return __a & __b;
827 }
828 
829 static __inline__ vector unsigned char __ATTRS_o_ai
vec_and(vector bool char __a,vector unsigned char __b)830 vec_and(vector bool char __a, vector unsigned char __b) {
831   return (vector unsigned char)__a & __b;
832 }
833 
834 static __inline__ vector unsigned char __ATTRS_o_ai
vec_and(vector unsigned char __a,vector bool char __b)835 vec_and(vector unsigned char __a, vector bool char __b) {
836   return __a & (vector unsigned char)__b;
837 }
838 
vec_and(vector bool char __a,vector bool char __b)839 static __inline__ vector bool char __ATTRS_o_ai vec_and(vector bool char __a,
840                                                         vector bool char __b) {
841   return __a & __b;
842 }
843 
vec_and(vector short __a,vector short __b)844 static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
845                                                     vector short __b) {
846   return __a & __b;
847 }
848 
vec_and(vector bool short __a,vector short __b)849 static __inline__ vector short __ATTRS_o_ai vec_and(vector bool short __a,
850                                                     vector short __b) {
851   return (vector short)__a & __b;
852 }
853 
vec_and(vector short __a,vector bool short __b)854 static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
855                                                     vector bool short __b) {
856   return __a & (vector short)__b;
857 }
858 
859 static __inline__ vector unsigned short __ATTRS_o_ai
vec_and(vector unsigned short __a,vector unsigned short __b)860 vec_and(vector unsigned short __a, vector unsigned short __b) {
861   return __a & __b;
862 }
863 
864 static __inline__ vector unsigned short __ATTRS_o_ai
vec_and(vector bool short __a,vector unsigned short __b)865 vec_and(vector bool short __a, vector unsigned short __b) {
866   return (vector unsigned short)__a & __b;
867 }
868 
869 static __inline__ vector unsigned short __ATTRS_o_ai
vec_and(vector unsigned short __a,vector bool short __b)870 vec_and(vector unsigned short __a, vector bool short __b) {
871   return __a & (vector unsigned short)__b;
872 }
873 
874 static __inline__ vector bool short __ATTRS_o_ai
vec_and(vector bool short __a,vector bool short __b)875 vec_and(vector bool short __a, vector bool short __b) {
876   return __a & __b;
877 }
878 
vec_and(vector int __a,vector int __b)879 static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
880                                                   vector int __b) {
881   return __a & __b;
882 }
883 
vec_and(vector bool int __a,vector int __b)884 static __inline__ vector int __ATTRS_o_ai vec_and(vector bool int __a,
885                                                   vector int __b) {
886   return (vector int)__a & __b;
887 }
888 
vec_and(vector int __a,vector bool int __b)889 static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
890                                                   vector bool int __b) {
891   return __a & (vector int)__b;
892 }
893 
894 static __inline__ vector unsigned int __ATTRS_o_ai
vec_and(vector unsigned int __a,vector unsigned int __b)895 vec_and(vector unsigned int __a, vector unsigned int __b) {
896   return __a & __b;
897 }
898 
899 static __inline__ vector unsigned int __ATTRS_o_ai
vec_and(vector bool int __a,vector unsigned int __b)900 vec_and(vector bool int __a, vector unsigned int __b) {
901   return (vector unsigned int)__a & __b;
902 }
903 
904 static __inline__ vector unsigned int __ATTRS_o_ai
vec_and(vector unsigned int __a,vector bool int __b)905 vec_and(vector unsigned int __a, vector bool int __b) {
906   return __a & (vector unsigned int)__b;
907 }
908 
vec_and(vector bool int __a,vector bool int __b)909 static __inline__ vector bool int __ATTRS_o_ai vec_and(vector bool int __a,
910                                                        vector bool int __b) {
911   return __a & __b;
912 }
913 
vec_and(vector float __a,vector float __b)914 static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
915                                                     vector float __b) {
916   vector unsigned int __res =
917       (vector unsigned int)__a & (vector unsigned int)__b;
918   return (vector float)__res;
919 }
920 
vec_and(vector bool int __a,vector float __b)921 static __inline__ vector float __ATTRS_o_ai vec_and(vector bool int __a,
922                                                     vector float __b) {
923   vector unsigned int __res =
924       (vector unsigned int)__a & (vector unsigned int)__b;
925   return (vector float)__res;
926 }
927 
vec_and(vector float __a,vector bool int __b)928 static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
929                                                     vector bool int __b) {
930   vector unsigned int __res =
931       (vector unsigned int)__a & (vector unsigned int)__b;
932   return (vector float)__res;
933 }
934 
935 #ifdef __VSX__
vec_and(vector bool long long __a,vector double __b)936 static __inline__ vector double __ATTRS_o_ai vec_and(vector bool long long __a,
937                                                      vector double __b) {
938   vector unsigned long long __res =
939       (vector unsigned long long)__a & (vector unsigned long long)__b;
940   return (vector double)__res;
941 }
942 
943 static __inline__ vector double __ATTRS_o_ai
vec_and(vector double __a,vector bool long long __b)944 vec_and(vector double __a, vector bool long long __b) {
945   vector unsigned long long __res =
946       (vector unsigned long long)__a & (vector unsigned long long)__b;
947   return (vector double)__res;
948 }
949 
vec_and(vector double __a,vector double __b)950 static __inline__ vector double __ATTRS_o_ai vec_and(vector double __a,
951                                                      vector double __b) {
952   vector unsigned long long __res =
953       (vector unsigned long long)__a & (vector unsigned long long)__b;
954   return (vector double)__res;
955 }
956 
957 static __inline__ vector signed long long __ATTRS_o_ai
vec_and(vector signed long long __a,vector signed long long __b)958 vec_and(vector signed long long __a, vector signed long long __b) {
959   return __a & __b;
960 }
961 
962 static __inline__ vector signed long long __ATTRS_o_ai
vec_and(vector bool long long __a,vector signed long long __b)963 vec_and(vector bool long long __a, vector signed long long __b) {
964   return (vector signed long long)__a & __b;
965 }
966 
967 static __inline__ vector signed long long __ATTRS_o_ai
vec_and(vector signed long long __a,vector bool long long __b)968 vec_and(vector signed long long __a, vector bool long long __b) {
969   return __a & (vector signed long long)__b;
970 }
971 
972 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_and(vector unsigned long long __a,vector unsigned long long __b)973 vec_and(vector unsigned long long __a, vector unsigned long long __b) {
974   return __a & __b;
975 }
976 
977 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_and(vector bool long long __a,vector unsigned long long __b)978 vec_and(vector bool long long __a, vector unsigned long long __b) {
979   return (vector unsigned long long)__a & __b;
980 }
981 
982 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_and(vector unsigned long long __a,vector bool long long __b)983 vec_and(vector unsigned long long __a, vector bool long long __b) {
984   return __a & (vector unsigned long long)__b;
985 }
986 
987 static __inline__ vector bool long long __ATTRS_o_ai
vec_and(vector bool long long __a,vector bool long long __b)988 vec_and(vector bool long long __a, vector bool long long __b) {
989   return __a & __b;
990 }
991 #endif
992 
993 /* vec_vand */
994 
995 static __inline__ vector signed char __ATTRS_o_ai
vec_vand(vector signed char __a,vector signed char __b)996 vec_vand(vector signed char __a, vector signed char __b) {
997   return __a & __b;
998 }
999 
1000 static __inline__ vector signed char __ATTRS_o_ai
vec_vand(vector bool char __a,vector signed char __b)1001 vec_vand(vector bool char __a, vector signed char __b) {
1002   return (vector signed char)__a & __b;
1003 }
1004 
1005 static __inline__ vector signed char __ATTRS_o_ai
vec_vand(vector signed char __a,vector bool char __b)1006 vec_vand(vector signed char __a, vector bool char __b) {
1007   return __a & (vector signed char)__b;
1008 }
1009 
1010 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vand(vector unsigned char __a,vector unsigned char __b)1011 vec_vand(vector unsigned char __a, vector unsigned char __b) {
1012   return __a & __b;
1013 }
1014 
1015 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vand(vector bool char __a,vector unsigned char __b)1016 vec_vand(vector bool char __a, vector unsigned char __b) {
1017   return (vector unsigned char)__a & __b;
1018 }
1019 
1020 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vand(vector unsigned char __a,vector bool char __b)1021 vec_vand(vector unsigned char __a, vector bool char __b) {
1022   return __a & (vector unsigned char)__b;
1023 }
1024 
vec_vand(vector bool char __a,vector bool char __b)1025 static __inline__ vector bool char __ATTRS_o_ai vec_vand(vector bool char __a,
1026                                                          vector bool char __b) {
1027   return __a & __b;
1028 }
1029 
vec_vand(vector short __a,vector short __b)1030 static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
1031                                                      vector short __b) {
1032   return __a & __b;
1033 }
1034 
vec_vand(vector bool short __a,vector short __b)1035 static __inline__ vector short __ATTRS_o_ai vec_vand(vector bool short __a,
1036                                                      vector short __b) {
1037   return (vector short)__a & __b;
1038 }
1039 
vec_vand(vector short __a,vector bool short __b)1040 static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
1041                                                      vector bool short __b) {
1042   return __a & (vector short)__b;
1043 }
1044 
1045 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vand(vector unsigned short __a,vector unsigned short __b)1046 vec_vand(vector unsigned short __a, vector unsigned short __b) {
1047   return __a & __b;
1048 }
1049 
1050 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vand(vector bool short __a,vector unsigned short __b)1051 vec_vand(vector bool short __a, vector unsigned short __b) {
1052   return (vector unsigned short)__a & __b;
1053 }
1054 
1055 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vand(vector unsigned short __a,vector bool short __b)1056 vec_vand(vector unsigned short __a, vector bool short __b) {
1057   return __a & (vector unsigned short)__b;
1058 }
1059 
1060 static __inline__ vector bool short __ATTRS_o_ai
vec_vand(vector bool short __a,vector bool short __b)1061 vec_vand(vector bool short __a, vector bool short __b) {
1062   return __a & __b;
1063 }
1064 
vec_vand(vector int __a,vector int __b)1065 static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
1066                                                    vector int __b) {
1067   return __a & __b;
1068 }
1069 
vec_vand(vector bool int __a,vector int __b)1070 static __inline__ vector int __ATTRS_o_ai vec_vand(vector bool int __a,
1071                                                    vector int __b) {
1072   return (vector int)__a & __b;
1073 }
1074 
vec_vand(vector int __a,vector bool int __b)1075 static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
1076                                                    vector bool int __b) {
1077   return __a & (vector int)__b;
1078 }
1079 
1080 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vand(vector unsigned int __a,vector unsigned int __b)1081 vec_vand(vector unsigned int __a, vector unsigned int __b) {
1082   return __a & __b;
1083 }
1084 
1085 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vand(vector bool int __a,vector unsigned int __b)1086 vec_vand(vector bool int __a, vector unsigned int __b) {
1087   return (vector unsigned int)__a & __b;
1088 }
1089 
1090 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vand(vector unsigned int __a,vector bool int __b)1091 vec_vand(vector unsigned int __a, vector bool int __b) {
1092   return __a & (vector unsigned int)__b;
1093 }
1094 
vec_vand(vector bool int __a,vector bool int __b)1095 static __inline__ vector bool int __ATTRS_o_ai vec_vand(vector bool int __a,
1096                                                         vector bool int __b) {
1097   return __a & __b;
1098 }
1099 
vec_vand(vector float __a,vector float __b)1100 static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1101                                                      vector float __b) {
1102   vector unsigned int __res =
1103       (vector unsigned int)__a & (vector unsigned int)__b;
1104   return (vector float)__res;
1105 }
1106 
vec_vand(vector bool int __a,vector float __b)1107 static __inline__ vector float __ATTRS_o_ai vec_vand(vector bool int __a,
1108                                                      vector float __b) {
1109   vector unsigned int __res =
1110       (vector unsigned int)__a & (vector unsigned int)__b;
1111   return (vector float)__res;
1112 }
1113 
vec_vand(vector float __a,vector bool int __b)1114 static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1115                                                      vector bool int __b) {
1116   vector unsigned int __res =
1117       (vector unsigned int)__a & (vector unsigned int)__b;
1118   return (vector float)__res;
1119 }
1120 
1121 #ifdef __VSX__
1122 static __inline__ vector signed long long __ATTRS_o_ai
vec_vand(vector signed long long __a,vector signed long long __b)1123 vec_vand(vector signed long long __a, vector signed long long __b) {
1124   return __a & __b;
1125 }
1126 
1127 static __inline__ vector signed long long __ATTRS_o_ai
vec_vand(vector bool long long __a,vector signed long long __b)1128 vec_vand(vector bool long long __a, vector signed long long __b) {
1129   return (vector signed long long)__a & __b;
1130 }
1131 
1132 static __inline__ vector signed long long __ATTRS_o_ai
vec_vand(vector signed long long __a,vector bool long long __b)1133 vec_vand(vector signed long long __a, vector bool long long __b) {
1134   return __a & (vector signed long long)__b;
1135 }
1136 
1137 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vand(vector unsigned long long __a,vector unsigned long long __b)1138 vec_vand(vector unsigned long long __a, vector unsigned long long __b) {
1139   return __a & __b;
1140 }
1141 
1142 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vand(vector bool long long __a,vector unsigned long long __b)1143 vec_vand(vector bool long long __a, vector unsigned long long __b) {
1144   return (vector unsigned long long)__a & __b;
1145 }
1146 
1147 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vand(vector unsigned long long __a,vector bool long long __b)1148 vec_vand(vector unsigned long long __a, vector bool long long __b) {
1149   return __a & (vector unsigned long long)__b;
1150 }
1151 
1152 static __inline__ vector bool long long __ATTRS_o_ai
vec_vand(vector bool long long __a,vector bool long long __b)1153 vec_vand(vector bool long long __a, vector bool long long __b) {
1154   return __a & __b;
1155 }
1156 #endif
1157 
1158 /* vec_andc */
1159 
1160 #define __builtin_altivec_vandc vec_andc
1161 
1162 static __inline__ vector signed char __ATTRS_o_ai
vec_andc(vector signed char __a,vector signed char __b)1163 vec_andc(vector signed char __a, vector signed char __b) {
1164   return __a & ~__b;
1165 }
1166 
1167 static __inline__ vector signed char __ATTRS_o_ai
vec_andc(vector bool char __a,vector signed char __b)1168 vec_andc(vector bool char __a, vector signed char __b) {
1169   return (vector signed char)__a & ~__b;
1170 }
1171 
1172 static __inline__ vector signed char __ATTRS_o_ai
vec_andc(vector signed char __a,vector bool char __b)1173 vec_andc(vector signed char __a, vector bool char __b) {
1174   return __a & ~(vector signed char)__b;
1175 }
1176 
1177 static __inline__ vector unsigned char __ATTRS_o_ai
vec_andc(vector unsigned char __a,vector unsigned char __b)1178 vec_andc(vector unsigned char __a, vector unsigned char __b) {
1179   return __a & ~__b;
1180 }
1181 
1182 static __inline__ vector unsigned char __ATTRS_o_ai
vec_andc(vector bool char __a,vector unsigned char __b)1183 vec_andc(vector bool char __a, vector unsigned char __b) {
1184   return (vector unsigned char)__a & ~__b;
1185 }
1186 
1187 static __inline__ vector unsigned char __ATTRS_o_ai
vec_andc(vector unsigned char __a,vector bool char __b)1188 vec_andc(vector unsigned char __a, vector bool char __b) {
1189   return __a & ~(vector unsigned char)__b;
1190 }
1191 
vec_andc(vector bool char __a,vector bool char __b)1192 static __inline__ vector bool char __ATTRS_o_ai vec_andc(vector bool char __a,
1193                                                          vector bool char __b) {
1194   return __a & ~__b;
1195 }
1196 
vec_andc(vector short __a,vector short __b)1197 static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1198                                                      vector short __b) {
1199   return __a & ~__b;
1200 }
1201 
vec_andc(vector bool short __a,vector short __b)1202 static __inline__ vector short __ATTRS_o_ai vec_andc(vector bool short __a,
1203                                                      vector short __b) {
1204   return (vector short)__a & ~__b;
1205 }
1206 
vec_andc(vector short __a,vector bool short __b)1207 static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1208                                                      vector bool short __b) {
1209   return __a & ~(vector short)__b;
1210 }
1211 
1212 static __inline__ vector unsigned short __ATTRS_o_ai
vec_andc(vector unsigned short __a,vector unsigned short __b)1213 vec_andc(vector unsigned short __a, vector unsigned short __b) {
1214   return __a & ~__b;
1215 }
1216 
1217 static __inline__ vector unsigned short __ATTRS_o_ai
vec_andc(vector bool short __a,vector unsigned short __b)1218 vec_andc(vector bool short __a, vector unsigned short __b) {
1219   return (vector unsigned short)__a & ~__b;
1220 }
1221 
1222 static __inline__ vector unsigned short __ATTRS_o_ai
vec_andc(vector unsigned short __a,vector bool short __b)1223 vec_andc(vector unsigned short __a, vector bool short __b) {
1224   return __a & ~(vector unsigned short)__b;
1225 }
1226 
1227 static __inline__ vector bool short __ATTRS_o_ai
vec_andc(vector bool short __a,vector bool short __b)1228 vec_andc(vector bool short __a, vector bool short __b) {
1229   return __a & ~__b;
1230 }
1231 
vec_andc(vector int __a,vector int __b)1232 static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1233                                                    vector int __b) {
1234   return __a & ~__b;
1235 }
1236 
vec_andc(vector bool int __a,vector int __b)1237 static __inline__ vector int __ATTRS_o_ai vec_andc(vector bool int __a,
1238                                                    vector int __b) {
1239   return (vector int)__a & ~__b;
1240 }
1241 
vec_andc(vector int __a,vector bool int __b)1242 static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1243                                                    vector bool int __b) {
1244   return __a & ~(vector int)__b;
1245 }
1246 
1247 static __inline__ vector unsigned int __ATTRS_o_ai
vec_andc(vector unsigned int __a,vector unsigned int __b)1248 vec_andc(vector unsigned int __a, vector unsigned int __b) {
1249   return __a & ~__b;
1250 }
1251 
1252 static __inline__ vector unsigned int __ATTRS_o_ai
vec_andc(vector bool int __a,vector unsigned int __b)1253 vec_andc(vector bool int __a, vector unsigned int __b) {
1254   return (vector unsigned int)__a & ~__b;
1255 }
1256 
1257 static __inline__ vector unsigned int __ATTRS_o_ai
vec_andc(vector unsigned int __a,vector bool int __b)1258 vec_andc(vector unsigned int __a, vector bool int __b) {
1259   return __a & ~(vector unsigned int)__b;
1260 }
1261 
vec_andc(vector bool int __a,vector bool int __b)1262 static __inline__ vector bool int __ATTRS_o_ai vec_andc(vector bool int __a,
1263                                                         vector bool int __b) {
1264   return __a & ~__b;
1265 }
1266 
vec_andc(vector float __a,vector float __b)1267 static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1268                                                      vector float __b) {
1269   vector unsigned int __res =
1270       (vector unsigned int)__a & ~(vector unsigned int)__b;
1271   return (vector float)__res;
1272 }
1273 
vec_andc(vector bool int __a,vector float __b)1274 static __inline__ vector float __ATTRS_o_ai vec_andc(vector bool int __a,
1275                                                      vector float __b) {
1276   vector unsigned int __res =
1277       (vector unsigned int)__a & ~(vector unsigned int)__b;
1278   return (vector float)__res;
1279 }
1280 
vec_andc(vector float __a,vector bool int __b)1281 static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1282                                                      vector bool int __b) {
1283   vector unsigned int __res =
1284       (vector unsigned int)__a & ~(vector unsigned int)__b;
1285   return (vector float)__res;
1286 }
1287 
1288 #ifdef __VSX__
vec_andc(vector bool long long __a,vector double __b)1289 static __inline__ vector double __ATTRS_o_ai vec_andc(vector bool long long __a,
1290                                                       vector double __b) {
1291   vector unsigned long long __res =
1292       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1293   return (vector double)__res;
1294 }
1295 
1296 static __inline__ vector double __ATTRS_o_ai
vec_andc(vector double __a,vector bool long long __b)1297 vec_andc(vector double __a, vector bool long long __b) {
1298   vector unsigned long long __res =
1299       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1300   return (vector double)__res;
1301 }
1302 
vec_andc(vector double __a,vector double __b)1303 static __inline__ vector double __ATTRS_o_ai vec_andc(vector double __a,
1304                                                       vector double __b) {
1305   vector unsigned long long __res =
1306       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1307   return (vector double)__res;
1308 }
1309 
1310 static __inline__ vector signed long long __ATTRS_o_ai
vec_andc(vector signed long long __a,vector signed long long __b)1311 vec_andc(vector signed long long __a, vector signed long long __b) {
1312   return __a & ~__b;
1313 }
1314 
1315 static __inline__ vector signed long long __ATTRS_o_ai
vec_andc(vector bool long long __a,vector signed long long __b)1316 vec_andc(vector bool long long __a, vector signed long long __b) {
1317   return (vector signed long long)__a & ~__b;
1318 }
1319 
1320 static __inline__ vector signed long long __ATTRS_o_ai
vec_andc(vector signed long long __a,vector bool long long __b)1321 vec_andc(vector signed long long __a, vector bool long long __b) {
1322   return __a & ~(vector signed long long)__b;
1323 }
1324 
1325 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_andc(vector unsigned long long __a,vector unsigned long long __b)1326 vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
1327   return __a & ~__b;
1328 }
1329 
1330 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_andc(vector bool long long __a,vector unsigned long long __b)1331 vec_andc(vector bool long long __a, vector unsigned long long __b) {
1332   return (vector unsigned long long)__a & ~__b;
1333 }
1334 
1335 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_andc(vector unsigned long long __a,vector bool long long __b)1336 vec_andc(vector unsigned long long __a, vector bool long long __b) {
1337   return __a & ~(vector unsigned long long)__b;
1338 }
1339 
1340 static __inline__ vector bool long long __ATTRS_o_ai
vec_andc(vector bool long long __a,vector bool long long __b)1341 vec_andc(vector bool long long __a, vector bool long long __b) {
1342   return __a & ~__b;
1343 }
1344 #endif
1345 
1346 /* vec_vandc */
1347 
1348 static __inline__ vector signed char __ATTRS_o_ai
vec_vandc(vector signed char __a,vector signed char __b)1349 vec_vandc(vector signed char __a, vector signed char __b) {
1350   return __a & ~__b;
1351 }
1352 
1353 static __inline__ vector signed char __ATTRS_o_ai
vec_vandc(vector bool char __a,vector signed char __b)1354 vec_vandc(vector bool char __a, vector signed char __b) {
1355   return (vector signed char)__a & ~__b;
1356 }
1357 
1358 static __inline__ vector signed char __ATTRS_o_ai
vec_vandc(vector signed char __a,vector bool char __b)1359 vec_vandc(vector signed char __a, vector bool char __b) {
1360   return __a & ~(vector signed char)__b;
1361 }
1362 
1363 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vandc(vector unsigned char __a,vector unsigned char __b)1364 vec_vandc(vector unsigned char __a, vector unsigned char __b) {
1365   return __a & ~__b;
1366 }
1367 
1368 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vandc(vector bool char __a,vector unsigned char __b)1369 vec_vandc(vector bool char __a, vector unsigned char __b) {
1370   return (vector unsigned char)__a & ~__b;
1371 }
1372 
1373 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vandc(vector unsigned char __a,vector bool char __b)1374 vec_vandc(vector unsigned char __a, vector bool char __b) {
1375   return __a & ~(vector unsigned char)__b;
1376 }
1377 
1378 static __inline__ vector bool char __ATTRS_o_ai
vec_vandc(vector bool char __a,vector bool char __b)1379 vec_vandc(vector bool char __a, vector bool char __b) {
1380   return __a & ~__b;
1381 }
1382 
vec_vandc(vector short __a,vector short __b)1383 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1384                                                       vector short __b) {
1385   return __a & ~__b;
1386 }
1387 
vec_vandc(vector bool short __a,vector short __b)1388 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector bool short __a,
1389                                                       vector short __b) {
1390   return (vector short)__a & ~__b;
1391 }
1392 
vec_vandc(vector short __a,vector bool short __b)1393 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1394                                                       vector bool short __b) {
1395   return __a & ~(vector short)__b;
1396 }
1397 
1398 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vandc(vector unsigned short __a,vector unsigned short __b)1399 vec_vandc(vector unsigned short __a, vector unsigned short __b) {
1400   return __a & ~__b;
1401 }
1402 
1403 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vandc(vector bool short __a,vector unsigned short __b)1404 vec_vandc(vector bool short __a, vector unsigned short __b) {
1405   return (vector unsigned short)__a & ~__b;
1406 }
1407 
1408 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vandc(vector unsigned short __a,vector bool short __b)1409 vec_vandc(vector unsigned short __a, vector bool short __b) {
1410   return __a & ~(vector unsigned short)__b;
1411 }
1412 
1413 static __inline__ vector bool short __ATTRS_o_ai
vec_vandc(vector bool short __a,vector bool short __b)1414 vec_vandc(vector bool short __a, vector bool short __b) {
1415   return __a & ~__b;
1416 }
1417 
vec_vandc(vector int __a,vector int __b)1418 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1419                                                     vector int __b) {
1420   return __a & ~__b;
1421 }
1422 
vec_vandc(vector bool int __a,vector int __b)1423 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector bool int __a,
1424                                                     vector int __b) {
1425   return (vector int)__a & ~__b;
1426 }
1427 
vec_vandc(vector int __a,vector bool int __b)1428 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1429                                                     vector bool int __b) {
1430   return __a & ~(vector int)__b;
1431 }
1432 
1433 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vandc(vector unsigned int __a,vector unsigned int __b)1434 vec_vandc(vector unsigned int __a, vector unsigned int __b) {
1435   return __a & ~__b;
1436 }
1437 
1438 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vandc(vector bool int __a,vector unsigned int __b)1439 vec_vandc(vector bool int __a, vector unsigned int __b) {
1440   return (vector unsigned int)__a & ~__b;
1441 }
1442 
1443 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vandc(vector unsigned int __a,vector bool int __b)1444 vec_vandc(vector unsigned int __a, vector bool int __b) {
1445   return __a & ~(vector unsigned int)__b;
1446 }
1447 
vec_vandc(vector bool int __a,vector bool int __b)1448 static __inline__ vector bool int __ATTRS_o_ai vec_vandc(vector bool int __a,
1449                                                          vector bool int __b) {
1450   return __a & ~__b;
1451 }
1452 
vec_vandc(vector float __a,vector float __b)1453 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1454                                                       vector float __b) {
1455   vector unsigned int __res =
1456       (vector unsigned int)__a & ~(vector unsigned int)__b;
1457   return (vector float)__res;
1458 }
1459 
vec_vandc(vector bool int __a,vector float __b)1460 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector bool int __a,
1461                                                       vector float __b) {
1462   vector unsigned int __res =
1463       (vector unsigned int)__a & ~(vector unsigned int)__b;
1464   return (vector float)__res;
1465 }
1466 
vec_vandc(vector float __a,vector bool int __b)1467 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1468                                                       vector bool int __b) {
1469   vector unsigned int __res =
1470       (vector unsigned int)__a & ~(vector unsigned int)__b;
1471   return (vector float)__res;
1472 }
1473 
1474 #ifdef __VSX__
1475 static __inline__ vector signed long long __ATTRS_o_ai
vec_vandc(vector signed long long __a,vector signed long long __b)1476 vec_vandc(vector signed long long __a, vector signed long long __b) {
1477   return __a & ~__b;
1478 }
1479 
1480 static __inline__ vector signed long long __ATTRS_o_ai
vec_vandc(vector bool long long __a,vector signed long long __b)1481 vec_vandc(vector bool long long __a, vector signed long long __b) {
1482   return (vector signed long long)__a & ~__b;
1483 }
1484 
1485 static __inline__ vector signed long long __ATTRS_o_ai
vec_vandc(vector signed long long __a,vector bool long long __b)1486 vec_vandc(vector signed long long __a, vector bool long long __b) {
1487   return __a & ~(vector signed long long)__b;
1488 }
1489 
1490 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vandc(vector unsigned long long __a,vector unsigned long long __b)1491 vec_vandc(vector unsigned long long __a, vector unsigned long long __b) {
1492   return __a & ~__b;
1493 }
1494 
1495 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vandc(vector bool long long __a,vector unsigned long long __b)1496 vec_vandc(vector bool long long __a, vector unsigned long long __b) {
1497   return (vector unsigned long long)__a & ~__b;
1498 }
1499 
1500 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vandc(vector unsigned long long __a,vector bool long long __b)1501 vec_vandc(vector unsigned long long __a, vector bool long long __b) {
1502   return __a & ~(vector unsigned long long)__b;
1503 }
1504 
1505 static __inline__ vector bool long long __ATTRS_o_ai
vec_vandc(vector bool long long __a,vector bool long long __b)1506 vec_vandc(vector bool long long __a, vector bool long long __b) {
1507   return __a & ~__b;
1508 }
1509 #endif
1510 
1511 /* vec_avg */
1512 
1513 static __inline__ vector signed char __ATTRS_o_ai
vec_avg(vector signed char __a,vector signed char __b)1514 vec_avg(vector signed char __a, vector signed char __b) {
1515   return __builtin_altivec_vavgsb(__a, __b);
1516 }
1517 
1518 static __inline__ vector unsigned char __ATTRS_o_ai
vec_avg(vector unsigned char __a,vector unsigned char __b)1519 vec_avg(vector unsigned char __a, vector unsigned char __b) {
1520   return __builtin_altivec_vavgub(__a, __b);
1521 }
1522 
vec_avg(vector short __a,vector short __b)1523 static __inline__ vector short __ATTRS_o_ai vec_avg(vector short __a,
1524                                                     vector short __b) {
1525   return __builtin_altivec_vavgsh(__a, __b);
1526 }
1527 
1528 static __inline__ vector unsigned short __ATTRS_o_ai
vec_avg(vector unsigned short __a,vector unsigned short __b)1529 vec_avg(vector unsigned short __a, vector unsigned short __b) {
1530   return __builtin_altivec_vavguh(__a, __b);
1531 }
1532 
vec_avg(vector int __a,vector int __b)1533 static __inline__ vector int __ATTRS_o_ai vec_avg(vector int __a,
1534                                                   vector int __b) {
1535   return __builtin_altivec_vavgsw(__a, __b);
1536 }
1537 
1538 static __inline__ vector unsigned int __ATTRS_o_ai
vec_avg(vector unsigned int __a,vector unsigned int __b)1539 vec_avg(vector unsigned int __a, vector unsigned int __b) {
1540   return __builtin_altivec_vavguw(__a, __b);
1541 }
1542 
1543 /* vec_vavgsb */
1544 
1545 static __inline__ vector signed char __attribute__((__always_inline__))
vec_vavgsb(vector signed char __a,vector signed char __b)1546 vec_vavgsb(vector signed char __a, vector signed char __b) {
1547   return __builtin_altivec_vavgsb(__a, __b);
1548 }
1549 
1550 /* vec_vavgub */
1551 
1552 static __inline__ vector unsigned char __attribute__((__always_inline__))
vec_vavgub(vector unsigned char __a,vector unsigned char __b)1553 vec_vavgub(vector unsigned char __a, vector unsigned char __b) {
1554   return __builtin_altivec_vavgub(__a, __b);
1555 }
1556 
1557 /* vec_vavgsh */
1558 
1559 static __inline__ vector short __attribute__((__always_inline__))
vec_vavgsh(vector short __a,vector short __b)1560 vec_vavgsh(vector short __a, vector short __b) {
1561   return __builtin_altivec_vavgsh(__a, __b);
1562 }
1563 
1564 /* vec_vavguh */
1565 
1566 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vavguh(vector unsigned short __a,vector unsigned short __b)1567 vec_vavguh(vector unsigned short __a, vector unsigned short __b) {
1568   return __builtin_altivec_vavguh(__a, __b);
1569 }
1570 
1571 /* vec_vavgsw */
1572 
1573 static __inline__ vector int __attribute__((__always_inline__))
vec_vavgsw(vector int __a,vector int __b)1574 vec_vavgsw(vector int __a, vector int __b) {
1575   return __builtin_altivec_vavgsw(__a, __b);
1576 }
1577 
1578 /* vec_vavguw */
1579 
1580 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vavguw(vector unsigned int __a,vector unsigned int __b)1581 vec_vavguw(vector unsigned int __a, vector unsigned int __b) {
1582   return __builtin_altivec_vavguw(__a, __b);
1583 }
1584 
1585 /* vec_ceil */
1586 
vec_ceil(vector float __a)1587 static __inline__ vector float __ATTRS_o_ai vec_ceil(vector float __a) {
1588 #ifdef __VSX__
1589   return __builtin_vsx_xvrspip(__a);
1590 #else
1591   return __builtin_altivec_vrfip(__a);
1592 #endif
1593 }
1594 
1595 #ifdef __VSX__
vec_ceil(vector double __a)1596 static __inline__ vector double __ATTRS_o_ai vec_ceil(vector double __a) {
1597   return __builtin_vsx_xvrdpip(__a);
1598 }
1599 #endif
1600 
1601 /* vec_vrfip */
1602 
1603 static __inline__ vector float __attribute__((__always_inline__))
vec_vrfip(vector float __a)1604 vec_vrfip(vector float __a) {
1605   return __builtin_altivec_vrfip(__a);
1606 }
1607 
1608 /* vec_cmpb */
1609 
1610 static __inline__ vector int __attribute__((__always_inline__))
vec_cmpb(vector float __a,vector float __b)1611 vec_cmpb(vector float __a, vector float __b) {
1612   return __builtin_altivec_vcmpbfp(__a, __b);
1613 }
1614 
1615 /* vec_vcmpbfp */
1616 
1617 static __inline__ vector int __attribute__((__always_inline__))
vec_vcmpbfp(vector float __a,vector float __b)1618 vec_vcmpbfp(vector float __a, vector float __b) {
1619   return __builtin_altivec_vcmpbfp(__a, __b);
1620 }
1621 
1622 /* vec_cmpeq */
1623 
1624 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpeq(vector signed char __a,vector signed char __b)1625 vec_cmpeq(vector signed char __a, vector signed char __b) {
1626   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1627                                                       (vector char)__b);
1628 }
1629 
1630 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpeq(vector unsigned char __a,vector unsigned char __b)1631 vec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
1632   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1633                                                       (vector char)__b);
1634 }
1635 
1636 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpeq(vector bool char __a,vector bool char __b)1637 vec_cmpeq(vector bool char __a, vector bool char __b) {
1638   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1639                                                       (vector char)__b);
1640 }
1641 
vec_cmpeq(vector short __a,vector short __b)1642 static __inline__ vector bool short __ATTRS_o_ai vec_cmpeq(vector short __a,
1643                                                            vector short __b) {
1644   return (vector bool short)__builtin_altivec_vcmpequh(__a, __b);
1645 }
1646 
1647 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpeq(vector unsigned short __a,vector unsigned short __b)1648 vec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
1649   return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
1650                                                        (vector short)__b);
1651 }
1652 
1653 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpeq(vector bool short __a,vector bool short __b)1654 vec_cmpeq(vector bool short __a, vector bool short __b) {
1655   return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
1656                                                        (vector short)__b);
1657 }
1658 
vec_cmpeq(vector int __a,vector int __b)1659 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector int __a,
1660                                                          vector int __b) {
1661   return (vector bool int)__builtin_altivec_vcmpequw(__a, __b);
1662 }
1663 
1664 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpeq(vector unsigned int __a,vector unsigned int __b)1665 vec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
1666   return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
1667                                                      (vector int)__b);
1668 }
1669 
vec_cmpeq(vector bool int __a,vector bool int __b)1670 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector bool int __a,
1671                                                          vector bool int __b) {
1672   return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
1673                                                      (vector int)__b);
1674 }
1675 
1676 #ifdef __POWER8_VECTOR__
1677 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector signed long long __a,vector signed long long __b)1678 vec_cmpeq(vector signed long long __a, vector signed long long __b) {
1679   return (vector bool long long)__builtin_altivec_vcmpequd(__a, __b);
1680 }
1681 
1682 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector unsigned long long __a,vector unsigned long long __b)1683 vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
1684   return (vector bool long long)__builtin_altivec_vcmpequd(
1685       (vector long long)__a, (vector long long)__b);
1686 }
1687 
1688 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector bool long long __a,vector bool long long __b)1689 vec_cmpeq(vector bool long long __a, vector bool long long __b) {
1690   return (vector bool long long)__builtin_altivec_vcmpequd(
1691       (vector long long)__a, (vector long long)__b);
1692 }
1693 
1694 #endif
1695 
vec_cmpeq(vector float __a,vector float __b)1696 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector float __a,
1697                                                          vector float __b) {
1698 #ifdef __VSX__
1699   return (vector bool int)__builtin_vsx_xvcmpeqsp(__a, __b);
1700 #else
1701   return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b);
1702 #endif
1703 }
1704 
1705 #ifdef __VSX__
1706 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector double __a,vector double __b)1707 vec_cmpeq(vector double __a, vector double __b) {
1708   return (vector bool long long)__builtin_vsx_xvcmpeqdp(__a, __b);
1709 }
1710 #endif
1711 
1712 #ifdef __POWER10_VECTOR__
1713 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmpeq(vector signed __int128 __a,vector signed __int128 __b)1714 vec_cmpeq(vector signed __int128 __a, vector signed __int128 __b) {
1715   return (vector bool __int128)__builtin_altivec_vcmpequq(
1716       (vector bool __int128)__a, (vector bool __int128)__b);
1717 }
1718 
1719 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmpeq(vector unsigned __int128 __a,vector unsigned __int128 __b)1720 vec_cmpeq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
1721   return (vector bool __int128)__builtin_altivec_vcmpequq(
1722       (vector bool __int128)__a, (vector bool __int128)__b);
1723 }
1724 #endif
1725 
1726 #ifdef __POWER9_VECTOR__
1727 /* vec_cmpne */
1728 
1729 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpne(vector bool char __a,vector bool char __b)1730 vec_cmpne(vector bool char __a, vector bool char __b) {
1731   return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
1732                                                      (vector char)__b);
1733 }
1734 
1735 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpne(vector signed char __a,vector signed char __b)1736 vec_cmpne(vector signed char __a, vector signed char __b) {
1737   return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
1738                                                      (vector char)__b);
1739 }
1740 
1741 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpne(vector unsigned char __a,vector unsigned char __b)1742 vec_cmpne(vector unsigned char __a, vector unsigned char __b) {
1743   return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
1744                                                      (vector char)__b);
1745 }
1746 
1747 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpne(vector bool short __a,vector bool short __b)1748 vec_cmpne(vector bool short __a, vector bool short __b) {
1749   return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
1750                                                       (vector short)__b);
1751 }
1752 
1753 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpne(vector signed short __a,vector signed short __b)1754 vec_cmpne(vector signed short __a, vector signed short __b) {
1755   return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
1756                                                       (vector short)__b);
1757 }
1758 
1759 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpne(vector unsigned short __a,vector unsigned short __b)1760 vec_cmpne(vector unsigned short __a, vector unsigned short __b) {
1761   return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
1762                                                       (vector short)__b);
1763 }
1764 
1765 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpne(vector bool int __a,vector bool int __b)1766 vec_cmpne(vector bool int __a, vector bool int __b) {
1767   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1768                                                     (vector int)__b);
1769 }
1770 
1771 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpne(vector signed int __a,vector signed int __b)1772 vec_cmpne(vector signed int __a, vector signed int __b) {
1773   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1774                                                     (vector int)__b);
1775 }
1776 
1777 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpne(vector unsigned int __a,vector unsigned int __b)1778 vec_cmpne(vector unsigned int __a, vector unsigned int __b) {
1779   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1780                                                     (vector int)__b);
1781 }
1782 
1783 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpne(vector float __a,vector float __b)1784 vec_cmpne(vector float __a, vector float __b) {
1785   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1786                                                     (vector int)__b);
1787 }
1788 
1789 #ifdef __POWER10_VECTOR__
1790 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmpne(vector unsigned __int128 __a,vector unsigned __int128 __b)1791 vec_cmpne(vector unsigned __int128 __a, vector unsigned __int128 __b) {
1792   return (vector bool __int128) ~(__builtin_altivec_vcmpequq(
1793       (vector bool __int128)__a, (vector bool __int128)__b));
1794 }
1795 
1796 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmpne(vector signed __int128 __a,vector signed __int128 __b)1797 vec_cmpne(vector signed __int128 __a, vector signed __int128 __b) {
1798   return (vector bool __int128) ~(__builtin_altivec_vcmpequq(
1799       (vector bool __int128)__a, (vector bool __int128)__b));
1800 }
1801 #endif
1802 
1803 /* vec_cmpnez */
1804 
1805 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpnez(vector signed char __a,vector signed char __b)1806 vec_cmpnez(vector signed char __a, vector signed char __b) {
1807   return (vector bool char)__builtin_altivec_vcmpnezb((vector char)__a,
1808                                                       (vector char)__b);
1809 }
1810 
1811 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpnez(vector unsigned char __a,vector unsigned char __b)1812 vec_cmpnez(vector unsigned char __a, vector unsigned char __b) {
1813   return (vector bool char)__builtin_altivec_vcmpnezb((vector char)__a,
1814                                                       (vector char)__b);
1815 }
1816 
1817 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpnez(vector signed short __a,vector signed short __b)1818 vec_cmpnez(vector signed short __a, vector signed short __b) {
1819   return (vector bool short)__builtin_altivec_vcmpnezh((vector short)__a,
1820                                                        (vector short)__b);
1821 }
1822 
1823 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpnez(vector unsigned short __a,vector unsigned short __b)1824 vec_cmpnez(vector unsigned short __a, vector unsigned short __b) {
1825   return (vector bool short)__builtin_altivec_vcmpnezh((vector short)__a,
1826                                                        (vector short)__b);
1827 }
1828 
1829 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpnez(vector signed int __a,vector signed int __b)1830 vec_cmpnez(vector signed int __a, vector signed int __b) {
1831   return (vector bool int)__builtin_altivec_vcmpnezw((vector int)__a,
1832                                                      (vector int)__b);
1833 }
1834 
1835 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpnez(vector unsigned int __a,vector unsigned int __b)1836 vec_cmpnez(vector unsigned int __a, vector unsigned int __b) {
1837   return (vector bool int)__builtin_altivec_vcmpnezw((vector int)__a,
1838                                                      (vector int)__b);
1839 }
1840 
1841 static __inline__ signed int __ATTRS_o_ai
vec_cntlz_lsbb(vector signed char __a)1842 vec_cntlz_lsbb(vector signed char __a) {
1843 #ifdef __LITTLE_ENDIAN__
1844   return __builtin_altivec_vctzlsbb(__a);
1845 #else
1846   return __builtin_altivec_vclzlsbb(__a);
1847 #endif
1848 }
1849 
1850 static __inline__ signed int __ATTRS_o_ai
vec_cntlz_lsbb(vector unsigned char __a)1851 vec_cntlz_lsbb(vector unsigned char __a) {
1852 #ifdef __LITTLE_ENDIAN__
1853   return __builtin_altivec_vctzlsbb(__a);
1854 #else
1855   return __builtin_altivec_vclzlsbb(__a);
1856 #endif
1857 }
1858 
1859 static __inline__ signed int __ATTRS_o_ai
vec_cnttz_lsbb(vector signed char __a)1860 vec_cnttz_lsbb(vector signed char __a) {
1861 #ifdef __LITTLE_ENDIAN__
1862   return __builtin_altivec_vclzlsbb(__a);
1863 #else
1864   return __builtin_altivec_vctzlsbb(__a);
1865 #endif
1866 }
1867 
1868 static __inline__ signed int __ATTRS_o_ai
vec_cnttz_lsbb(vector unsigned char __a)1869 vec_cnttz_lsbb(vector unsigned char __a) {
1870 #ifdef __LITTLE_ENDIAN__
1871   return __builtin_altivec_vclzlsbb(__a);
1872 #else
1873   return __builtin_altivec_vctzlsbb(__a);
1874 #endif
1875 }
1876 
1877 static __inline__ vector unsigned int __ATTRS_o_ai
vec_parity_lsbb(vector unsigned int __a)1878 vec_parity_lsbb(vector unsigned int __a) {
1879   return __builtin_altivec_vprtybw(__a);
1880 }
1881 
1882 static __inline__ vector unsigned int __ATTRS_o_ai
vec_parity_lsbb(vector signed int __a)1883 vec_parity_lsbb(vector signed int __a) {
1884   return __builtin_altivec_vprtybw(__a);
1885 }
1886 
1887 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_parity_lsbb(vector unsigned __int128 __a)1888 vec_parity_lsbb(vector unsigned __int128 __a) {
1889   return __builtin_altivec_vprtybq(__a);
1890 }
1891 
1892 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_parity_lsbb(vector signed __int128 __a)1893 vec_parity_lsbb(vector signed __int128 __a) {
1894   return __builtin_altivec_vprtybq(__a);
1895 }
1896 
1897 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_parity_lsbb(vector unsigned long long __a)1898 vec_parity_lsbb(vector unsigned long long __a) {
1899   return __builtin_altivec_vprtybd(__a);
1900 }
1901 
1902 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_parity_lsbb(vector signed long long __a)1903 vec_parity_lsbb(vector signed long long __a) {
1904   return __builtin_altivec_vprtybd(__a);
1905 }
1906 
1907 #else
1908 /* vec_cmpne */
1909 
1910 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpne(vector bool char __a,vector bool char __b)1911 vec_cmpne(vector bool char __a, vector bool char __b) {
1912   return ~(vec_cmpeq(__a, __b));
1913 }
1914 
1915 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpne(vector signed char __a,vector signed char __b)1916 vec_cmpne(vector signed char __a, vector signed char __b) {
1917   return ~(vec_cmpeq(__a, __b));
1918 }
1919 
1920 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpne(vector unsigned char __a,vector unsigned char __b)1921 vec_cmpne(vector unsigned char __a, vector unsigned char __b) {
1922   return ~(vec_cmpeq(__a, __b));
1923 }
1924 
1925 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpne(vector bool short __a,vector bool short __b)1926 vec_cmpne(vector bool short __a, vector bool short __b) {
1927   return ~(vec_cmpeq(__a, __b));
1928 }
1929 
1930 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpne(vector signed short __a,vector signed short __b)1931 vec_cmpne(vector signed short __a, vector signed short __b) {
1932   return ~(vec_cmpeq(__a, __b));
1933 }
1934 
1935 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpne(vector unsigned short __a,vector unsigned short __b)1936 vec_cmpne(vector unsigned short __a, vector unsigned short __b) {
1937   return ~(vec_cmpeq(__a, __b));
1938 }
1939 
1940 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpne(vector bool int __a,vector bool int __b)1941 vec_cmpne(vector bool int __a, vector bool int __b) {
1942   return ~(vec_cmpeq(__a, __b));
1943 }
1944 
1945 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpne(vector signed int __a,vector signed int __b)1946 vec_cmpne(vector signed int __a, vector signed int __b) {
1947   return ~(vec_cmpeq(__a, __b));
1948 }
1949 
1950 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpne(vector unsigned int __a,vector unsigned int __b)1951 vec_cmpne(vector unsigned int __a, vector unsigned int __b) {
1952   return ~(vec_cmpeq(__a, __b));
1953 }
1954 
1955 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpne(vector float __a,vector float __b)1956 vec_cmpne(vector float __a, vector float __b) {
1957   return ~(vec_cmpeq(__a, __b));
1958 }
1959 #endif
1960 
1961 #ifdef __POWER8_VECTOR__
1962 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpne(vector bool long long __a,vector bool long long __b)1963 vec_cmpne(vector bool long long __a, vector bool long long __b) {
1964   return (vector bool long long)
1965     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1966 }
1967 
1968 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpne(vector signed long long __a,vector signed long long __b)1969 vec_cmpne(vector signed long long __a, vector signed long long __b) {
1970   return (vector bool long long)
1971     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1972 }
1973 
1974 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpne(vector unsigned long long __a,vector unsigned long long __b)1975 vec_cmpne(vector unsigned long long __a, vector unsigned long long __b) {
1976   return (vector bool long long)
1977     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1978 }
1979 #endif
1980 
1981 #ifdef __VSX__
1982 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpne(vector double __a,vector double __b)1983 vec_cmpne(vector double __a, vector double __b) {
1984   return (vector bool long long)
1985     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1986 }
1987 #endif
1988 
1989 /* vec_cmpgt */
1990 
1991 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpgt(vector signed char __a,vector signed char __b)1992 vec_cmpgt(vector signed char __a, vector signed char __b) {
1993   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1994 }
1995 
1996 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpgt(vector unsigned char __a,vector unsigned char __b)1997 vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
1998   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1999 }
2000 
vec_cmpgt(vector short __a,vector short __b)2001 static __inline__ vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a,
2002                                                            vector short __b) {
2003   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
2004 }
2005 
2006 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpgt(vector unsigned short __a,vector unsigned short __b)2007 vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
2008   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
2009 }
2010 
vec_cmpgt(vector int __a,vector int __b)2011 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a,
2012                                                          vector int __b) {
2013   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
2014 }
2015 
2016 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpgt(vector unsigned int __a,vector unsigned int __b)2017 vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
2018   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
2019 }
2020 
2021 #ifdef __POWER8_VECTOR__
2022 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpgt(vector signed long long __a,vector signed long long __b)2023 vec_cmpgt(vector signed long long __a, vector signed long long __b) {
2024   return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b);
2025 }
2026 
2027 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpgt(vector unsigned long long __a,vector unsigned long long __b)2028 vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
2029   return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b);
2030 }
2031 #endif
2032 
vec_cmpgt(vector float __a,vector float __b)2033 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a,
2034                                                          vector float __b) {
2035 #ifdef __VSX__
2036   return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b);
2037 #else
2038   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
2039 #endif
2040 }
2041 
2042 #ifdef __VSX__
2043 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpgt(vector double __a,vector double __b)2044 vec_cmpgt(vector double __a, vector double __b) {
2045   return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b);
2046 }
2047 #endif
2048 
2049 #ifdef __POWER10_VECTOR__
2050 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmpgt(vector signed __int128 __a,vector signed __int128 __b)2051 vec_cmpgt(vector signed __int128 __a, vector signed __int128 __b) {
2052   return (vector bool __int128)__builtin_altivec_vcmpgtsq(
2053       (vector bool __int128)__a, (vector bool __int128)__b);
2054 }
2055 
2056 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmpgt(vector unsigned __int128 __a,vector unsigned __int128 __b)2057 vec_cmpgt(vector unsigned __int128 __a, vector unsigned __int128 __b) {
2058   return (vector bool __int128)__builtin_altivec_vcmpgtuq(
2059       (vector bool __int128)__a, (vector bool __int128)__b);
2060 }
2061 #endif
2062 
2063 /* vec_cmpge */
2064 
2065 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpge(vector signed char __a,vector signed char __b)2066 vec_cmpge(vector signed char __a, vector signed char __b) {
2067   return ~(vec_cmpgt(__b, __a));
2068 }
2069 
2070 static __inline__ vector bool char __ATTRS_o_ai
vec_cmpge(vector unsigned char __a,vector unsigned char __b)2071 vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
2072   return ~(vec_cmpgt(__b, __a));
2073 }
2074 
2075 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpge(vector signed short __a,vector signed short __b)2076 vec_cmpge(vector signed short __a, vector signed short __b) {
2077   return ~(vec_cmpgt(__b, __a));
2078 }
2079 
2080 static __inline__ vector bool short __ATTRS_o_ai
vec_cmpge(vector unsigned short __a,vector unsigned short __b)2081 vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
2082   return ~(vec_cmpgt(__b, __a));
2083 }
2084 
2085 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpge(vector signed int __a,vector signed int __b)2086 vec_cmpge(vector signed int __a, vector signed int __b) {
2087   return ~(vec_cmpgt(__b, __a));
2088 }
2089 
2090 static __inline__ vector bool int __ATTRS_o_ai
vec_cmpge(vector unsigned int __a,vector unsigned int __b)2091 vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
2092   return ~(vec_cmpgt(__b, __a));
2093 }
2094 
vec_cmpge(vector float __a,vector float __b)2095 static __inline__ vector bool int __ATTRS_o_ai vec_cmpge(vector float __a,
2096                                                          vector float __b) {
2097 #ifdef __VSX__
2098   return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b);
2099 #else
2100   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
2101 #endif
2102 }
2103 
2104 #ifdef __VSX__
2105 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpge(vector double __a,vector double __b)2106 vec_cmpge(vector double __a, vector double __b) {
2107   return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b);
2108 }
2109 #endif
2110 
2111 #ifdef __POWER8_VECTOR__
2112 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpge(vector signed long long __a,vector signed long long __b)2113 vec_cmpge(vector signed long long __a, vector signed long long __b) {
2114   return ~(vec_cmpgt(__b, __a));
2115 }
2116 
2117 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpge(vector unsigned long long __a,vector unsigned long long __b)2118 vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
2119   return ~(vec_cmpgt(__b, __a));
2120 }
2121 #endif
2122 
2123 #ifdef __POWER10_VECTOR__
2124 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmpge(vector signed __int128 __a,vector signed __int128 __b)2125 vec_cmpge(vector signed __int128 __a, vector signed __int128 __b) {
2126   return ~(vec_cmpgt(__b, __a));
2127 }
2128 
2129 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmpge(vector unsigned __int128 __a,vector unsigned __int128 __b)2130 vec_cmpge(vector unsigned __int128 __a, vector unsigned __int128 __b) {
2131   return ~(vec_cmpgt(__b, __a));
2132 }
2133 #endif
2134 
2135 /* vec_vcmpgefp */
2136 
2137 static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgefp(vector float __a,vector float __b)2138 vec_vcmpgefp(vector float __a, vector float __b) {
2139   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
2140 }
2141 
2142 /* vec_vcmpgtsb */
2143 
2144 static __inline__ vector bool char __attribute__((__always_inline__))
vec_vcmpgtsb(vector signed char __a,vector signed char __b)2145 vec_vcmpgtsb(vector signed char __a, vector signed char __b) {
2146   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
2147 }
2148 
2149 /* vec_vcmpgtub */
2150 
2151 static __inline__ vector bool char __attribute__((__always_inline__))
vec_vcmpgtub(vector unsigned char __a,vector unsigned char __b)2152 vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) {
2153   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
2154 }
2155 
2156 /* vec_vcmpgtsh */
2157 
2158 static __inline__ vector bool short __attribute__((__always_inline__))
vec_vcmpgtsh(vector short __a,vector short __b)2159 vec_vcmpgtsh(vector short __a, vector short __b) {
2160   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
2161 }
2162 
2163 /* vec_vcmpgtuh */
2164 
2165 static __inline__ vector bool short __attribute__((__always_inline__))
vec_vcmpgtuh(vector unsigned short __a,vector unsigned short __b)2166 vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) {
2167   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
2168 }
2169 
2170 /* vec_vcmpgtsw */
2171 
2172 static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgtsw(vector int __a,vector int __b)2173 vec_vcmpgtsw(vector int __a, vector int __b) {
2174   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
2175 }
2176 
2177 /* vec_vcmpgtuw */
2178 
2179 static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgtuw(vector unsigned int __a,vector unsigned int __b)2180 vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) {
2181   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
2182 }
2183 
2184 /* vec_vcmpgtfp */
2185 
2186 static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgtfp(vector float __a,vector float __b)2187 vec_vcmpgtfp(vector float __a, vector float __b) {
2188   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
2189 }
2190 
2191 /* vec_cmple */
2192 
2193 static __inline__ vector bool char __ATTRS_o_ai
vec_cmple(vector signed char __a,vector signed char __b)2194 vec_cmple(vector signed char __a, vector signed char __b) {
2195   return vec_cmpge(__b, __a);
2196 }
2197 
2198 static __inline__ vector bool char __ATTRS_o_ai
vec_cmple(vector unsigned char __a,vector unsigned char __b)2199 vec_cmple(vector unsigned char __a, vector unsigned char __b) {
2200   return vec_cmpge(__b, __a);
2201 }
2202 
2203 static __inline__ vector bool short __ATTRS_o_ai
vec_cmple(vector signed short __a,vector signed short __b)2204 vec_cmple(vector signed short __a, vector signed short __b) {
2205   return vec_cmpge(__b, __a);
2206 }
2207 
2208 static __inline__ vector bool short __ATTRS_o_ai
vec_cmple(vector unsigned short __a,vector unsigned short __b)2209 vec_cmple(vector unsigned short __a, vector unsigned short __b) {
2210   return vec_cmpge(__b, __a);
2211 }
2212 
2213 static __inline__ vector bool int __ATTRS_o_ai
vec_cmple(vector signed int __a,vector signed int __b)2214 vec_cmple(vector signed int __a, vector signed int __b) {
2215   return vec_cmpge(__b, __a);
2216 }
2217 
2218 static __inline__ vector bool int __ATTRS_o_ai
vec_cmple(vector unsigned int __a,vector unsigned int __b)2219 vec_cmple(vector unsigned int __a, vector unsigned int __b) {
2220   return vec_cmpge(__b, __a);
2221 }
2222 
vec_cmple(vector float __a,vector float __b)2223 static __inline__ vector bool int __ATTRS_o_ai vec_cmple(vector float __a,
2224                                                          vector float __b) {
2225   return vec_cmpge(__b, __a);
2226 }
2227 
2228 #ifdef __VSX__
2229 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmple(vector double __a,vector double __b)2230 vec_cmple(vector double __a, vector double __b) {
2231   return vec_cmpge(__b, __a);
2232 }
2233 #endif
2234 
2235 #ifdef __POWER8_VECTOR__
2236 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmple(vector signed long long __a,vector signed long long __b)2237 vec_cmple(vector signed long long __a, vector signed long long __b) {
2238   return vec_cmpge(__b, __a);
2239 }
2240 
2241 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmple(vector unsigned long long __a,vector unsigned long long __b)2242 vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
2243   return vec_cmpge(__b, __a);
2244 }
2245 #endif
2246 
2247 #ifdef __POWER10_VECTOR__
2248 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmple(vector signed __int128 __a,vector signed __int128 __b)2249 vec_cmple(vector signed __int128 __a, vector signed __int128 __b) {
2250   return vec_cmpge(__b, __a);
2251 }
2252 
2253 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmple(vector unsigned __int128 __a,vector unsigned __int128 __b)2254 vec_cmple(vector unsigned __int128 __a, vector unsigned __int128 __b) {
2255   return vec_cmpge(__b, __a);
2256 }
2257 #endif
2258 
2259 /* vec_cmplt */
2260 
2261 static __inline__ vector bool char __ATTRS_o_ai
vec_cmplt(vector signed char __a,vector signed char __b)2262 vec_cmplt(vector signed char __a, vector signed char __b) {
2263   return vec_cmpgt(__b, __a);
2264 }
2265 
2266 static __inline__ vector bool char __ATTRS_o_ai
vec_cmplt(vector unsigned char __a,vector unsigned char __b)2267 vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
2268   return vec_cmpgt(__b, __a);
2269 }
2270 
vec_cmplt(vector short __a,vector short __b)2271 static __inline__ vector bool short __ATTRS_o_ai vec_cmplt(vector short __a,
2272                                                            vector short __b) {
2273   return vec_cmpgt(__b, __a);
2274 }
2275 
2276 static __inline__ vector bool short __ATTRS_o_ai
vec_cmplt(vector unsigned short __a,vector unsigned short __b)2277 vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
2278   return vec_cmpgt(__b, __a);
2279 }
2280 
vec_cmplt(vector int __a,vector int __b)2281 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector int __a,
2282                                                          vector int __b) {
2283   return vec_cmpgt(__b, __a);
2284 }
2285 
2286 static __inline__ vector bool int __ATTRS_o_ai
vec_cmplt(vector unsigned int __a,vector unsigned int __b)2287 vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
2288   return vec_cmpgt(__b, __a);
2289 }
2290 
vec_cmplt(vector float __a,vector float __b)2291 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector float __a,
2292                                                          vector float __b) {
2293   return vec_cmpgt(__b, __a);
2294 }
2295 
2296 #ifdef __VSX__
2297 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmplt(vector double __a,vector double __b)2298 vec_cmplt(vector double __a, vector double __b) {
2299   return vec_cmpgt(__b, __a);
2300 }
2301 #endif
2302 
2303 #ifdef __POWER10_VECTOR__
2304 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmplt(vector signed __int128 __a,vector signed __int128 __b)2305 vec_cmplt(vector signed __int128 __a, vector signed __int128 __b) {
2306   return vec_cmpgt(__b, __a);
2307 }
2308 
2309 static __inline__ vector bool __int128 __ATTRS_o_ai
vec_cmplt(vector unsigned __int128 __a,vector unsigned __int128 __b)2310 vec_cmplt(vector unsigned __int128 __a, vector unsigned __int128 __b) {
2311   return vec_cmpgt(__b, __a);
2312 }
2313 #endif
2314 
2315 #ifdef __POWER8_VECTOR__
2316 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmplt(vector signed long long __a,vector signed long long __b)2317 vec_cmplt(vector signed long long __a, vector signed long long __b) {
2318   return vec_cmpgt(__b, __a);
2319 }
2320 
2321 static __inline__ vector bool long long __ATTRS_o_ai
vec_cmplt(vector unsigned long long __a,vector unsigned long long __b)2322 vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
2323   return vec_cmpgt(__b, __a);
2324 }
2325 
2326 /* vec_popcnt */
2327 
2328 static __inline__ vector signed char __ATTRS_o_ai
vec_popcnt(vector signed char __a)2329 vec_popcnt(vector signed char __a) {
2330   return __builtin_altivec_vpopcntb(__a);
2331 }
2332 static __inline__ vector unsigned char __ATTRS_o_ai
vec_popcnt(vector unsigned char __a)2333 vec_popcnt(vector unsigned char __a) {
2334   return __builtin_altivec_vpopcntb(__a);
2335 }
2336 static __inline__ vector signed short __ATTRS_o_ai
vec_popcnt(vector signed short __a)2337 vec_popcnt(vector signed short __a) {
2338   return __builtin_altivec_vpopcnth(__a);
2339 }
2340 static __inline__ vector unsigned short __ATTRS_o_ai
vec_popcnt(vector unsigned short __a)2341 vec_popcnt(vector unsigned short __a) {
2342   return __builtin_altivec_vpopcnth(__a);
2343 }
2344 static __inline__ vector signed int __ATTRS_o_ai
vec_popcnt(vector signed int __a)2345 vec_popcnt(vector signed int __a) {
2346   return __builtin_altivec_vpopcntw(__a);
2347 }
2348 static __inline__ vector unsigned int __ATTRS_o_ai
vec_popcnt(vector unsigned int __a)2349 vec_popcnt(vector unsigned int __a) {
2350   return __builtin_altivec_vpopcntw(__a);
2351 }
2352 static __inline__ vector signed long long __ATTRS_o_ai
vec_popcnt(vector signed long long __a)2353 vec_popcnt(vector signed long long __a) {
2354   return __builtin_altivec_vpopcntd(__a);
2355 }
2356 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_popcnt(vector unsigned long long __a)2357 vec_popcnt(vector unsigned long long __a) {
2358   return __builtin_altivec_vpopcntd(__a);
2359 }
2360 
2361 /* vec_cntlz */
2362 
2363 static __inline__ vector signed char __ATTRS_o_ai
vec_cntlz(vector signed char __a)2364 vec_cntlz(vector signed char __a) {
2365   return __builtin_altivec_vclzb(__a);
2366 }
2367 static __inline__ vector unsigned char __ATTRS_o_ai
vec_cntlz(vector unsigned char __a)2368 vec_cntlz(vector unsigned char __a) {
2369   return __builtin_altivec_vclzb(__a);
2370 }
2371 static __inline__ vector signed short __ATTRS_o_ai
vec_cntlz(vector signed short __a)2372 vec_cntlz(vector signed short __a) {
2373   return __builtin_altivec_vclzh(__a);
2374 }
2375 static __inline__ vector unsigned short __ATTRS_o_ai
vec_cntlz(vector unsigned short __a)2376 vec_cntlz(vector unsigned short __a) {
2377   return __builtin_altivec_vclzh(__a);
2378 }
2379 static __inline__ vector signed int __ATTRS_o_ai
vec_cntlz(vector signed int __a)2380 vec_cntlz(vector signed int __a) {
2381   return __builtin_altivec_vclzw(__a);
2382 }
2383 static __inline__ vector unsigned int __ATTRS_o_ai
vec_cntlz(vector unsigned int __a)2384 vec_cntlz(vector unsigned int __a) {
2385   return __builtin_altivec_vclzw(__a);
2386 }
2387 static __inline__ vector signed long long __ATTRS_o_ai
vec_cntlz(vector signed long long __a)2388 vec_cntlz(vector signed long long __a) {
2389   return __builtin_altivec_vclzd(__a);
2390 }
2391 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_cntlz(vector unsigned long long __a)2392 vec_cntlz(vector unsigned long long __a) {
2393   return __builtin_altivec_vclzd(__a);
2394 }
2395 #endif
2396 
2397 #ifdef __POWER9_VECTOR__
2398 
2399 /* vec_cnttz */
2400 
2401 static __inline__ vector signed char __ATTRS_o_ai
vec_cnttz(vector signed char __a)2402 vec_cnttz(vector signed char __a) {
2403   return __builtin_altivec_vctzb(__a);
2404 }
2405 static __inline__ vector unsigned char __ATTRS_o_ai
vec_cnttz(vector unsigned char __a)2406 vec_cnttz(vector unsigned char __a) {
2407   return __builtin_altivec_vctzb(__a);
2408 }
2409 static __inline__ vector signed short __ATTRS_o_ai
vec_cnttz(vector signed short __a)2410 vec_cnttz(vector signed short __a) {
2411   return __builtin_altivec_vctzh(__a);
2412 }
2413 static __inline__ vector unsigned short __ATTRS_o_ai
vec_cnttz(vector unsigned short __a)2414 vec_cnttz(vector unsigned short __a) {
2415   return __builtin_altivec_vctzh(__a);
2416 }
2417 static __inline__ vector signed int __ATTRS_o_ai
vec_cnttz(vector signed int __a)2418 vec_cnttz(vector signed int __a) {
2419   return __builtin_altivec_vctzw(__a);
2420 }
2421 static __inline__ vector unsigned int __ATTRS_o_ai
vec_cnttz(vector unsigned int __a)2422 vec_cnttz(vector unsigned int __a) {
2423   return __builtin_altivec_vctzw(__a);
2424 }
2425 static __inline__ vector signed long long __ATTRS_o_ai
vec_cnttz(vector signed long long __a)2426 vec_cnttz(vector signed long long __a) {
2427   return __builtin_altivec_vctzd(__a);
2428 }
2429 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_cnttz(vector unsigned long long __a)2430 vec_cnttz(vector unsigned long long __a) {
2431   return __builtin_altivec_vctzd(__a);
2432 }
2433 
2434 /* vec_first_match_index */
2435 
2436 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_index(vector signed char __a,vector signed char __b)2437 vec_first_match_index(vector signed char __a, vector signed char __b) {
2438   vector unsigned long long __res =
2439 #ifdef __LITTLE_ENDIAN__
2440     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2441 #else
2442     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2443 #endif
2444   if (__res[0] == 64) {
2445     return (__res[1] + 64) >> 3;
2446   }
2447   return __res[0] >> 3;
2448 }
2449 
2450 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_index(vector unsigned char __a,vector unsigned char __b)2451 vec_first_match_index(vector unsigned char __a, vector unsigned char __b) {
2452   vector unsigned long long __res =
2453 #ifdef __LITTLE_ENDIAN__
2454     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2455 #else
2456     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2457 #endif
2458   if (__res[0] == 64) {
2459     return (__res[1] + 64) >> 3;
2460   }
2461   return __res[0] >> 3;
2462 }
2463 
2464 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_index(vector signed short __a,vector signed short __b)2465 vec_first_match_index(vector signed short __a, vector signed short __b) {
2466   vector unsigned long long __res =
2467 #ifdef __LITTLE_ENDIAN__
2468     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2469 #else
2470     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2471 #endif
2472   if (__res[0] == 64) {
2473     return (__res[1] + 64) >> 4;
2474   }
2475   return __res[0] >> 4;
2476 }
2477 
2478 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_index(vector unsigned short __a,vector unsigned short __b)2479 vec_first_match_index(vector unsigned short __a, vector unsigned short __b) {
2480   vector unsigned long long __res =
2481 #ifdef __LITTLE_ENDIAN__
2482     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2483 #else
2484     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2485 #endif
2486   if (__res[0] == 64) {
2487     return (__res[1] + 64) >> 4;
2488   }
2489   return __res[0] >> 4;
2490 }
2491 
2492 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_index(vector signed int __a,vector signed int __b)2493 vec_first_match_index(vector signed int __a, vector signed int __b) {
2494   vector unsigned long long __res =
2495 #ifdef __LITTLE_ENDIAN__
2496     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2497 #else
2498     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2499 #endif
2500   if (__res[0] == 64) {
2501     return (__res[1] + 64) >> 5;
2502   }
2503   return __res[0] >> 5;
2504 }
2505 
2506 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_index(vector unsigned int __a,vector unsigned int __b)2507 vec_first_match_index(vector unsigned int __a, vector unsigned int __b) {
2508   vector unsigned long long __res =
2509 #ifdef __LITTLE_ENDIAN__
2510     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2511 #else
2512     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2513 #endif
2514   if (__res[0] == 64) {
2515     return (__res[1] + 64) >> 5;
2516   }
2517   return __res[0] >> 5;
2518 }
2519 
2520 /* vec_first_match_or_eos_index */
2521 
2522 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_or_eos_index(vector signed char __a,vector signed char __b)2523 vec_first_match_or_eos_index(vector signed char __a, vector signed char __b) {
2524   /* Compare the result of the comparison of two vectors with either and OR the
2525      result. Either the elements are equal or one will equal the comparison
2526      result if either is zero.
2527   */
2528   vector bool char __tmp1 = vec_cmpeq(__a, __b);
2529   vector bool char __tmp2 = __tmp1 |
2530                             vec_cmpeq((vector signed char)__tmp1, __a) |
2531                             vec_cmpeq((vector signed char)__tmp1, __b);
2532 
2533   vector unsigned long long __res =
2534 #ifdef __LITTLE_ENDIAN__
2535       vec_cnttz((vector unsigned long long)__tmp2);
2536 #else
2537       vec_cntlz((vector unsigned long long)__tmp2);
2538 #endif
2539   if (__res[0] == 64) {
2540     return (__res[1] + 64) >> 3;
2541   }
2542   return __res[0] >> 3;
2543 }
2544 
2545 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_or_eos_index(vector unsigned char __a,vector unsigned char __b)2546 vec_first_match_or_eos_index(vector unsigned char __a,
2547                              vector unsigned char __b) {
2548   vector bool char __tmp1 = vec_cmpeq(__a, __b);
2549   vector bool char __tmp2 = __tmp1 |
2550                             vec_cmpeq((vector unsigned char)__tmp1, __a) |
2551                             vec_cmpeq((vector unsigned char)__tmp1, __b);
2552 
2553   vector unsigned long long __res =
2554 #ifdef __LITTLE_ENDIAN__
2555       vec_cnttz((vector unsigned long long)__tmp2);
2556 #else
2557       vec_cntlz((vector unsigned long long)__tmp2);
2558 #endif
2559   if (__res[0] == 64) {
2560     return (__res[1] + 64) >> 3;
2561   }
2562   return __res[0] >> 3;
2563 }
2564 
2565 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_or_eos_index(vector signed short __a,vector signed short __b)2566 vec_first_match_or_eos_index(vector signed short __a, vector signed short __b) {
2567   vector bool short __tmp1 = vec_cmpeq(__a, __b);
2568   vector bool short __tmp2 = __tmp1 |
2569                              vec_cmpeq((vector signed short)__tmp1, __a) |
2570                              vec_cmpeq((vector signed short)__tmp1, __b);
2571 
2572   vector unsigned long long __res =
2573 #ifdef __LITTLE_ENDIAN__
2574       vec_cnttz((vector unsigned long long)__tmp2);
2575 #else
2576       vec_cntlz((vector unsigned long long)__tmp2);
2577 #endif
2578   if (__res[0] == 64) {
2579     return (__res[1] + 64) >> 4;
2580   }
2581   return __res[0] >> 4;
2582 }
2583 
2584 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_or_eos_index(vector unsigned short __a,vector unsigned short __b)2585 vec_first_match_or_eos_index(vector unsigned short __a,
2586                              vector unsigned short __b) {
2587   vector bool short __tmp1 = vec_cmpeq(__a, __b);
2588   vector bool short __tmp2 = __tmp1 |
2589                              vec_cmpeq((vector unsigned short)__tmp1, __a) |
2590                              vec_cmpeq((vector unsigned short)__tmp1, __b);
2591 
2592   vector unsigned long long __res =
2593 #ifdef __LITTLE_ENDIAN__
2594       vec_cnttz((vector unsigned long long)__tmp2);
2595 #else
2596       vec_cntlz((vector unsigned long long)__tmp2);
2597 #endif
2598   if (__res[0] == 64) {
2599     return (__res[1] + 64) >> 4;
2600   }
2601   return __res[0] >> 4;
2602 }
2603 
2604 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_or_eos_index(vector signed int __a,vector signed int __b)2605 vec_first_match_or_eos_index(vector signed int __a, vector signed int __b) {
2606   vector bool int __tmp1 = vec_cmpeq(__a, __b);
2607   vector bool int __tmp2 = __tmp1 | vec_cmpeq((vector signed int)__tmp1, __a) |
2608                            vec_cmpeq((vector signed int)__tmp1, __b);
2609 
2610   vector unsigned long long __res =
2611 #ifdef __LITTLE_ENDIAN__
2612       vec_cnttz((vector unsigned long long)__tmp2);
2613 #else
2614       vec_cntlz((vector unsigned long long)__tmp2);
2615 #endif
2616   if (__res[0] == 64) {
2617     return (__res[1] + 64) >> 5;
2618   }
2619   return __res[0] >> 5;
2620 }
2621 
2622 static __inline__ unsigned __ATTRS_o_ai
vec_first_match_or_eos_index(vector unsigned int __a,vector unsigned int __b)2623 vec_first_match_or_eos_index(vector unsigned int __a, vector unsigned int __b) {
2624   vector bool int __tmp1 = vec_cmpeq(__a, __b);
2625   vector bool int __tmp2 = __tmp1 |
2626                            vec_cmpeq((vector unsigned int)__tmp1, __a) |
2627                            vec_cmpeq((vector unsigned int)__tmp1, __b);
2628 
2629   vector unsigned long long __res =
2630 #ifdef __LITTLE_ENDIAN__
2631     vec_cnttz((vector unsigned long long)__tmp2);
2632 #else
2633     vec_cntlz((vector unsigned long long)__tmp2);
2634 #endif
2635   if (__res[0] == 64) {
2636     return (__res[1] + 64) >> 5;
2637   }
2638   return __res[0] >> 5;
2639 }
2640 
2641 /* vec_first_mismatch_index */
2642 
2643 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_index(vector signed char __a,vector signed char __b)2644 vec_first_mismatch_index(vector signed char __a, vector signed char __b) {
2645   vector unsigned long long __res =
2646 #ifdef __LITTLE_ENDIAN__
2647     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2648 #else
2649     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2650 #endif
2651   if (__res[0] == 64) {
2652     return (__res[1] + 64) >> 3;
2653   }
2654   return __res[0] >> 3;
2655 }
2656 
2657 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_index(vector unsigned char __a,vector unsigned char __b)2658 vec_first_mismatch_index(vector unsigned char __a, vector unsigned char __b) {
2659   vector unsigned long long __res =
2660 #ifdef __LITTLE_ENDIAN__
2661     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2662 #else
2663     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2664 #endif
2665   if (__res[0] == 64) {
2666     return (__res[1] + 64) >> 3;
2667   }
2668   return __res[0] >> 3;
2669 }
2670 
2671 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_index(vector signed short __a,vector signed short __b)2672 vec_first_mismatch_index(vector signed short __a, vector signed short __b) {
2673   vector unsigned long long __res =
2674 #ifdef __LITTLE_ENDIAN__
2675     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2676 #else
2677     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2678 #endif
2679   if (__res[0] == 64) {
2680     return (__res[1] + 64) >> 4;
2681   }
2682   return __res[0] >> 4;
2683 }
2684 
2685 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_index(vector unsigned short __a,vector unsigned short __b)2686 vec_first_mismatch_index(vector unsigned short __a, vector unsigned short __b) {
2687   vector unsigned long long __res =
2688 #ifdef __LITTLE_ENDIAN__
2689     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2690 #else
2691     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2692 #endif
2693   if (__res[0] == 64) {
2694     return (__res[1] + 64) >> 4;
2695   }
2696   return __res[0] >> 4;
2697 }
2698 
2699 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_index(vector signed int __a,vector signed int __b)2700 vec_first_mismatch_index(vector signed int __a, vector signed int __b) {
2701   vector unsigned long long __res =
2702 #ifdef __LITTLE_ENDIAN__
2703     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2704 #else
2705     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2706 #endif
2707   if (__res[0] == 64) {
2708     return (__res[1] + 64) >> 5;
2709   }
2710   return __res[0] >> 5;
2711 }
2712 
2713 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_index(vector unsigned int __a,vector unsigned int __b)2714 vec_first_mismatch_index(vector unsigned int __a, vector unsigned int __b) {
2715   vector unsigned long long __res =
2716 #ifdef __LITTLE_ENDIAN__
2717     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2718 #else
2719     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2720 #endif
2721   if (__res[0] == 64) {
2722     return (__res[1] + 64) >> 5;
2723   }
2724   return __res[0] >> 5;
2725 }
2726 
2727 /* vec_first_mismatch_or_eos_index */
2728 
2729 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_or_eos_index(vector signed char __a,vector signed char __b)2730 vec_first_mismatch_or_eos_index(vector signed char __a,
2731                                 vector signed char __b) {
2732   vector unsigned long long __res =
2733 #ifdef __LITTLE_ENDIAN__
2734     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2735 #else
2736     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2737 #endif
2738   if (__res[0] == 64) {
2739     return (__res[1] + 64) >> 3;
2740   }
2741   return __res[0] >> 3;
2742 }
2743 
2744 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_or_eos_index(vector unsigned char __a,vector unsigned char __b)2745 vec_first_mismatch_or_eos_index(vector unsigned char __a,
2746                                 vector unsigned char __b) {
2747   vector unsigned long long __res =
2748 #ifdef __LITTLE_ENDIAN__
2749     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2750 #else
2751     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2752 #endif
2753   if (__res[0] == 64) {
2754     return (__res[1] + 64) >> 3;
2755   }
2756   return __res[0] >> 3;
2757 }
2758 
2759 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_or_eos_index(vector signed short __a,vector signed short __b)2760 vec_first_mismatch_or_eos_index(vector signed short __a,
2761                                 vector signed short __b) {
2762   vector unsigned long long __res =
2763 #ifdef __LITTLE_ENDIAN__
2764     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2765 #else
2766     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2767 #endif
2768   if (__res[0] == 64) {
2769     return (__res[1] + 64) >> 4;
2770   }
2771   return __res[0] >> 4;
2772 }
2773 
2774 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_or_eos_index(vector unsigned short __a,vector unsigned short __b)2775 vec_first_mismatch_or_eos_index(vector unsigned short __a,
2776                                 vector unsigned short __b) {
2777   vector unsigned long long __res =
2778 #ifdef __LITTLE_ENDIAN__
2779     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2780 #else
2781     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2782 #endif
2783   if (__res[0] == 64) {
2784     return (__res[1] + 64) >> 4;
2785   }
2786   return __res[0] >> 4;
2787 }
2788 
2789 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_or_eos_index(vector signed int __a,vector signed int __b)2790 vec_first_mismatch_or_eos_index(vector signed int __a, vector signed int __b) {
2791   vector unsigned long long __res =
2792 #ifdef __LITTLE_ENDIAN__
2793     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2794 #else
2795     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2796 #endif
2797   if (__res[0] == 64) {
2798     return (__res[1] + 64) >> 5;
2799   }
2800   return __res[0] >> 5;
2801 }
2802 
2803 static __inline__ unsigned __ATTRS_o_ai
vec_first_mismatch_or_eos_index(vector unsigned int __a,vector unsigned int __b)2804 vec_first_mismatch_or_eos_index(vector unsigned int __a,
2805                                 vector unsigned int __b) {
2806   vector unsigned long long __res =
2807 #ifdef __LITTLE_ENDIAN__
2808     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2809 #else
2810     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2811 #endif
2812   if (__res[0] == 64) {
2813     return (__res[1] + 64) >> 5;
2814   }
2815   return __res[0] >> 5;
2816 }
2817 
2818 static __inline__ vector double  __ATTRS_o_ai
vec_insert_exp(vector double __a,vector unsigned long long __b)2819 vec_insert_exp(vector double __a, vector unsigned long long __b) {
2820   return __builtin_vsx_xviexpdp((vector unsigned long long)__a,__b);
2821 }
2822 
2823 static __inline__ vector double  __ATTRS_o_ai
vec_insert_exp(vector unsigned long long __a,vector unsigned long long __b)2824 vec_insert_exp(vector unsigned long long __a, vector unsigned long long __b) {
2825   return __builtin_vsx_xviexpdp(__a,__b);
2826 }
2827 
2828 static __inline__ vector float  __ATTRS_o_ai
vec_insert_exp(vector float __a,vector unsigned int __b)2829 vec_insert_exp(vector float __a, vector unsigned int __b) {
2830   return __builtin_vsx_xviexpsp((vector unsigned int)__a,__b);
2831 }
2832 
2833 static __inline__ vector float  __ATTRS_o_ai
vec_insert_exp(vector unsigned int __a,vector unsigned int __b)2834 vec_insert_exp(vector unsigned int __a, vector unsigned int __b) {
2835   return __builtin_vsx_xviexpsp(__a,__b);
2836 }
2837 
2838 #if defined(__powerpc64__)
vec_xl_len(const signed char * __a,size_t __b)2839 static __inline__ vector signed char __ATTRS_o_ai vec_xl_len(const signed char *__a,
2840                                                              size_t __b) {
2841   return (vector signed char)__builtin_vsx_lxvl(__a, (__b << 56));
2842 }
2843 
2844 static __inline__ vector unsigned char __ATTRS_o_ai
vec_xl_len(const unsigned char * __a,size_t __b)2845 vec_xl_len(const unsigned char *__a, size_t __b) {
2846   return (vector unsigned char)__builtin_vsx_lxvl(__a, (__b << 56));
2847 }
2848 
vec_xl_len(const signed short * __a,size_t __b)2849 static __inline__ vector signed short __ATTRS_o_ai vec_xl_len(const signed short *__a,
2850                                                               size_t __b) {
2851   return (vector signed short)__builtin_vsx_lxvl(__a, (__b << 56));
2852 }
2853 
2854 static __inline__ vector unsigned short __ATTRS_o_ai
vec_xl_len(const unsigned short * __a,size_t __b)2855 vec_xl_len(const unsigned short *__a, size_t __b) {
2856   return (vector unsigned short)__builtin_vsx_lxvl(__a, (__b << 56));
2857 }
2858 
vec_xl_len(const signed int * __a,size_t __b)2859 static __inline__ vector signed int __ATTRS_o_ai vec_xl_len(const signed int *__a,
2860                                                             size_t __b) {
2861   return (vector signed int)__builtin_vsx_lxvl(__a, (__b << 56));
2862 }
2863 
vec_xl_len(const unsigned int * __a,size_t __b)2864 static __inline__ vector unsigned int __ATTRS_o_ai vec_xl_len(const unsigned int *__a,
2865                                                               size_t __b) {
2866   return (vector unsigned int)__builtin_vsx_lxvl(__a, (__b << 56));
2867 }
2868 
vec_xl_len(const float * __a,size_t __b)2869 static __inline__ vector float __ATTRS_o_ai vec_xl_len(const float *__a, size_t __b) {
2870   return (vector float)__builtin_vsx_lxvl(__a, (__b << 56));
2871 }
2872 
2873 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_xl_len(const signed __int128 * __a,size_t __b)2874 vec_xl_len(const signed __int128 *__a, size_t __b) {
2875   return (vector signed __int128)__builtin_vsx_lxvl(__a, (__b << 56));
2876 }
2877 
2878 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_len(const unsigned __int128 * __a,size_t __b)2879 vec_xl_len(const unsigned __int128 *__a, size_t __b) {
2880   return (vector unsigned __int128)__builtin_vsx_lxvl(__a, (__b << 56));
2881 }
2882 
2883 static __inline__ vector signed long long __ATTRS_o_ai
vec_xl_len(const signed long long * __a,size_t __b)2884 vec_xl_len(const signed long long *__a, size_t __b) {
2885   return (vector signed long long)__builtin_vsx_lxvl(__a, (__b << 56));
2886 }
2887 
2888 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xl_len(const unsigned long long * __a,size_t __b)2889 vec_xl_len(const unsigned long long *__a, size_t __b) {
2890   return (vector unsigned long long)__builtin_vsx_lxvl(__a, (__b << 56));
2891 }
2892 
vec_xl_len(const double * __a,size_t __b)2893 static __inline__ vector double __ATTRS_o_ai vec_xl_len(const double *__a,
2894                                                         size_t __b) {
2895   return (vector double)__builtin_vsx_lxvl(__a, (__b << 56));
2896 }
2897 
2898 static __inline__ vector unsigned char __ATTRS_o_ai
vec_xl_len_r(const unsigned char * __a,size_t __b)2899 vec_xl_len_r(const unsigned char *__a, size_t __b) {
2900   vector unsigned char __res =
2901       (vector unsigned char)__builtin_vsx_lxvll(__a, (__b << 56));
2902 #ifdef __LITTLE_ENDIAN__
2903   vector unsigned char __mask =
2904       (vector unsigned char)__builtin_altivec_lvsr(16 - __b, (int *)NULL);
2905   __res = (vector unsigned char)__builtin_altivec_vperm_4si(
2906       (vector int)__res, (vector int)__res, __mask);
2907 #endif
2908   return __res;
2909 }
2910 
2911 // vec_xst_len
vec_xst_len(vector unsigned char __a,unsigned char * __b,size_t __c)2912 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned char __a,
2913                                                 unsigned char *__b,
2914                                                 size_t __c) {
2915   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2916 }
2917 
vec_xst_len(vector signed char __a,signed char * __b,size_t __c)2918 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed char __a,
2919                                                 signed char *__b, size_t __c) {
2920   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2921 }
2922 
vec_xst_len(vector signed short __a,signed short * __b,size_t __c)2923 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed short __a,
2924                                                 signed short *__b, size_t __c) {
2925   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2926 }
2927 
vec_xst_len(vector unsigned short __a,unsigned short * __b,size_t __c)2928 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned short __a,
2929                                                 unsigned short *__b,
2930                                                 size_t __c) {
2931   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2932 }
2933 
vec_xst_len(vector signed int __a,signed int * __b,size_t __c)2934 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed int __a,
2935                                                 signed int *__b, size_t __c) {
2936   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2937 }
2938 
vec_xst_len(vector unsigned int __a,unsigned int * __b,size_t __c)2939 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned int __a,
2940                                                 unsigned int *__b, size_t __c) {
2941   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2942 }
2943 
vec_xst_len(vector float __a,float * __b,size_t __c)2944 static __inline__ void __ATTRS_o_ai vec_xst_len(vector float __a, float *__b,
2945                                                 size_t __c) {
2946   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2947 }
2948 
vec_xst_len(vector signed __int128 __a,signed __int128 * __b,size_t __c)2949 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed __int128 __a,
2950                                                 signed __int128 *__b,
2951                                                 size_t __c) {
2952   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2953 }
2954 
vec_xst_len(vector unsigned __int128 __a,unsigned __int128 * __b,size_t __c)2955 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned __int128 __a,
2956                                                 unsigned __int128 *__b,
2957                                                 size_t __c) {
2958   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2959 }
2960 
vec_xst_len(vector signed long long __a,signed long long * __b,size_t __c)2961 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed long long __a,
2962                                                 signed long long *__b,
2963                                                 size_t __c) {
2964   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2965 }
2966 
vec_xst_len(vector unsigned long long __a,unsigned long long * __b,size_t __c)2967 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned long long __a,
2968                                                 unsigned long long *__b,
2969                                                 size_t __c) {
2970   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2971 }
2972 
vec_xst_len(vector double __a,double * __b,size_t __c)2973 static __inline__ void __ATTRS_o_ai vec_xst_len(vector double __a, double *__b,
2974                                                 size_t __c) {
2975   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2976 }
2977 
vec_xst_len_r(vector unsigned char __a,unsigned char * __b,size_t __c)2978 static __inline__ void __ATTRS_o_ai vec_xst_len_r(vector unsigned char __a,
2979                                                   unsigned char *__b,
2980                                                   size_t __c) {
2981 #ifdef __LITTLE_ENDIAN__
2982   vector unsigned char __mask =
2983       (vector unsigned char)__builtin_altivec_lvsl(16 - __c, (int *)NULL);
2984   vector unsigned char __res =
2985       __builtin_altivec_vperm_4si((vector int)__a, (vector int)__a, __mask);
2986   return __builtin_vsx_stxvll((vector int)__res, __b, (__c << 56));
2987 #else
2988   return __builtin_vsx_stxvll((vector int)__a, __b, (__c << 56));
2989 #endif
2990 }
2991 #endif
2992 #endif
2993 
2994 /* vec_cpsgn */
2995 
2996 #ifdef __VSX__
vec_cpsgn(vector float __a,vector float __b)2997 static __inline__ vector float __ATTRS_o_ai vec_cpsgn(vector float __a,
2998                                                       vector float __b) {
2999   return __builtin_vsx_xvcpsgnsp(__b, __a);
3000 }
3001 
vec_cpsgn(vector double __a,vector double __b)3002 static __inline__ vector double __ATTRS_o_ai vec_cpsgn(vector double __a,
3003                                                        vector double __b) {
3004   return __builtin_vsx_xvcpsgndp(__b, __a);
3005 }
3006 #endif
3007 
3008 /* vec_ctf */
3009 
3010 #ifdef __VSX__
3011 #define vec_ctf(__a, __b)                                                      \
3012   _Generic((__a), vector int                                                   \
3013            : (vector float)__builtin_altivec_vcfsx((vector int)(__a), (__b)),  \
3014              vector unsigned int                                               \
3015            : (vector float)__builtin_altivec_vcfux((vector unsigned int)(__a), \
3016                                                    (__b)),                     \
3017              vector unsigned long long                                         \
3018            : (__builtin_convertvector((vector unsigned long long)(__a),        \
3019                                       vector double) *                         \
3020               (vector double)(vector unsigned long long)((0x3ffULL - (__b))    \
3021                                                          << 52)),              \
3022              vector signed long long                                           \
3023            : (__builtin_convertvector((vector signed long long)(__a),          \
3024                                       vector double) *                         \
3025               (vector double)(vector unsigned long long)((0x3ffULL - (__b))    \
3026                                                          << 52)))
3027 #else
3028 #define vec_ctf(__a, __b)                                                      \
3029   _Generic((__a), vector int                                                   \
3030            : (vector float)__builtin_altivec_vcfsx((vector int)(__a), (__b)),  \
3031              vector unsigned int                                               \
3032            : (vector float)__builtin_altivec_vcfux((vector unsigned int)(__a), \
3033                                                    (__b)))
3034 #endif
3035 
3036 /* vec_vcfsx */
3037 
3038 #define vec_vcfux __builtin_altivec_vcfux
3039 
3040 /* vec_vcfux */
3041 
3042 #define vec_vcfsx(__a, __b) __builtin_altivec_vcfsx((vector int)(__a), (__b))
3043 
3044 /* vec_cts */
3045 
3046 #ifdef __VSX__
3047 #define vec_cts(__a, __b)                                                      \
3048   _Generic((__a), vector float                                                 \
3049            : __builtin_altivec_vctsxs((vector float)(__a), (__b)),             \
3050              vector double                                                     \
3051            : __extension__({                                                   \
3052              vector double __ret =                                             \
3053                  (vector double)(__a) *                                        \
3054                  (vector double)(vector unsigned long long)((0x3ffULL + (__b)) \
3055                                                             << 52);            \
3056              __builtin_convertvector(__ret, vector signed long long);          \
3057            }))
3058 #else
3059 #define vec_cts __builtin_altivec_vctsxs
3060 #endif
3061 
3062 /* vec_vctsxs */
3063 
3064 #define vec_vctsxs __builtin_altivec_vctsxs
3065 
3066 /* vec_ctu */
3067 
3068 #ifdef __VSX__
3069 #define vec_ctu(__a, __b)                                                      \
3070   _Generic((__a), vector float                                                 \
3071            : __builtin_altivec_vctuxs((vector float)(__a), (__b)),             \
3072              vector double                                                     \
3073            : __extension__({                                                   \
3074              vector double __ret =                                             \
3075                  (vector double)(__a) *                                        \
3076                  (vector double)(vector unsigned long long)((0x3ffULL + __b)   \
3077                                                             << 52);            \
3078              __builtin_convertvector(__ret, vector unsigned long long);        \
3079            }))
3080 #else
3081 #define vec_ctu __builtin_altivec_vctuxs
3082 #endif
3083 
3084 /* vec_vctuxs */
3085 
3086 #define vec_vctuxs __builtin_altivec_vctuxs
3087 
3088 /* vec_signext */
3089 
3090 #ifdef __POWER9_VECTOR__
3091 static __inline__ vector signed int __ATTRS_o_ai
vec_signexti(vector signed char __a)3092 vec_signexti(vector signed char __a) {
3093   return __builtin_altivec_vextsb2w(__a);
3094 }
3095 
3096 static __inline__ vector signed int __ATTRS_o_ai
vec_signexti(vector signed short __a)3097 vec_signexti(vector signed short __a) {
3098   return __builtin_altivec_vextsh2w(__a);
3099 }
3100 
3101 static __inline__ vector signed long long __ATTRS_o_ai
vec_signextll(vector signed char __a)3102 vec_signextll(vector signed char __a) {
3103   return __builtin_altivec_vextsb2d(__a);
3104 }
3105 
3106 static __inline__ vector signed long long __ATTRS_o_ai
vec_signextll(vector signed short __a)3107 vec_signextll(vector signed short __a) {
3108   return __builtin_altivec_vextsh2d(__a);
3109 }
3110 
3111 static __inline__ vector signed long long __ATTRS_o_ai
vec_signextll(vector signed int __a)3112 vec_signextll(vector signed int __a) {
3113   return __builtin_altivec_vextsw2d(__a);
3114 }
3115 #endif
3116 
3117 #ifdef __POWER10_VECTOR__
3118 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_signextq(vector signed long long __a)3119 vec_signextq(vector signed long long __a) {
3120   return __builtin_altivec_vextsd2q(__a);
3121 }
3122 #endif
3123 
3124 /* vec_signed */
3125 
3126 static __inline__ vector signed int __ATTRS_o_ai
3127 vec_sld(vector signed int, vector signed int, unsigned const int __c);
3128 
3129 static __inline__ vector signed int __ATTRS_o_ai
vec_signed(vector float __a)3130 vec_signed(vector float __a) {
3131   return __builtin_convertvector(__a, vector signed int);
3132 }
3133 
3134 #ifdef __VSX__
3135 static __inline__ vector signed long long __ATTRS_o_ai
vec_signed(vector double __a)3136 vec_signed(vector double __a) {
3137   return __builtin_convertvector(__a, vector signed long long);
3138 }
3139 
3140 static __inline__ vector signed int __attribute__((__always_inline__))
vec_signed2(vector double __a,vector double __b)3141 vec_signed2(vector double __a, vector double __b) {
3142   return (vector signed int) { __a[0], __a[1], __b[0], __b[1] };
3143 }
3144 
3145 static __inline__ vector signed int __ATTRS_o_ai
vec_signede(vector double __a)3146 vec_signede(vector double __a) {
3147 #ifdef __LITTLE_ENDIAN__
3148   vector signed int __ret = __builtin_vsx_xvcvdpsxws(__a);
3149   return vec_sld(__ret, __ret, 12);
3150 #else
3151   return __builtin_vsx_xvcvdpsxws(__a);
3152 #endif
3153 }
3154 
3155 static __inline__ vector signed int __ATTRS_o_ai
vec_signedo(vector double __a)3156 vec_signedo(vector double __a) {
3157 #ifdef __LITTLE_ENDIAN__
3158   return __builtin_vsx_xvcvdpsxws(__a);
3159 #else
3160   vector signed int __ret = __builtin_vsx_xvcvdpsxws(__a);
3161   return vec_sld(__ret, __ret, 12);
3162 #endif
3163 }
3164 #endif
3165 
3166 /* vec_unsigned */
3167 
3168 static __inline__ vector unsigned int __ATTRS_o_ai
3169 vec_sld(vector unsigned int, vector unsigned int, unsigned const int __c);
3170 
3171 static __inline__ vector unsigned int __ATTRS_o_ai
vec_unsigned(vector float __a)3172 vec_unsigned(vector float __a) {
3173   return __builtin_convertvector(__a, vector unsigned int);
3174 }
3175 
3176 #ifdef __VSX__
3177 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_unsigned(vector double __a)3178 vec_unsigned(vector double __a) {
3179   return __builtin_convertvector(__a, vector unsigned long long);
3180 }
3181 
3182 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_unsigned2(vector double __a,vector double __b)3183 vec_unsigned2(vector double __a, vector double __b) {
3184   return (vector unsigned int) { __a[0], __a[1], __b[0], __b[1] };
3185 }
3186 
3187 static __inline__ vector unsigned int __ATTRS_o_ai
vec_unsignede(vector double __a)3188 vec_unsignede(vector double __a) {
3189 #ifdef __LITTLE_ENDIAN__
3190   vector unsigned int __ret = __builtin_vsx_xvcvdpuxws(__a);
3191   return vec_sld(__ret, __ret, 12);
3192 #else
3193   return __builtin_vsx_xvcvdpuxws(__a);
3194 #endif
3195 }
3196 
3197 static __inline__ vector unsigned int __ATTRS_o_ai
vec_unsignedo(vector double __a)3198 vec_unsignedo(vector double __a) {
3199 #ifdef __LITTLE_ENDIAN__
3200   return __builtin_vsx_xvcvdpuxws(__a);
3201 #else
3202   vector unsigned int __ret = __builtin_vsx_xvcvdpuxws(__a);
3203   return vec_sld(__ret, __ret, 12);
3204 #endif
3205 }
3206 #endif
3207 
3208 /* vec_float */
3209 
3210 static __inline__ vector float __ATTRS_o_ai
3211 vec_sld(vector float, vector float, unsigned const int __c);
3212 
3213 static __inline__ vector float __ATTRS_o_ai
vec_float(vector signed int __a)3214 vec_float(vector signed int __a) {
3215   return __builtin_convertvector(__a, vector float);
3216 }
3217 
3218 static __inline__ vector float __ATTRS_o_ai
vec_float(vector unsigned int __a)3219 vec_float(vector unsigned int __a) {
3220   return __builtin_convertvector(__a, vector float);
3221 }
3222 
3223 #ifdef __VSX__
3224 static __inline__ vector float __ATTRS_o_ai
vec_float2(vector signed long long __a,vector signed long long __b)3225 vec_float2(vector signed long long __a, vector signed long long __b) {
3226   return (vector float) { __a[0], __a[1], __b[0], __b[1] };
3227 }
3228 
3229 static __inline__ vector float __ATTRS_o_ai
vec_float2(vector unsigned long long __a,vector unsigned long long __b)3230 vec_float2(vector unsigned long long __a, vector unsigned long long __b) {
3231   return (vector float) { __a[0], __a[1], __b[0], __b[1] };
3232 }
3233 
3234 static __inline__ vector float __ATTRS_o_ai
vec_float2(vector double __a,vector double __b)3235 vec_float2(vector double __a, vector double __b) {
3236   return (vector float) { __a[0], __a[1], __b[0], __b[1] };
3237 }
3238 
3239 static __inline__ vector float __ATTRS_o_ai
vec_floate(vector signed long long __a)3240 vec_floate(vector signed long long __a) {
3241 #ifdef __LITTLE_ENDIAN__
3242   vector float __ret = __builtin_vsx_xvcvsxdsp(__a);
3243   return vec_sld(__ret, __ret, 12);
3244 #else
3245   return __builtin_vsx_xvcvsxdsp(__a);
3246 #endif
3247 }
3248 
3249 static __inline__ vector float __ATTRS_o_ai
vec_floate(vector unsigned long long __a)3250 vec_floate(vector unsigned long long __a) {
3251 #ifdef __LITTLE_ENDIAN__
3252   vector float __ret = __builtin_vsx_xvcvuxdsp(__a);
3253   return vec_sld(__ret, __ret, 12);
3254 #else
3255   return __builtin_vsx_xvcvuxdsp(__a);
3256 #endif
3257 }
3258 
3259 static __inline__ vector float __ATTRS_o_ai
vec_floate(vector double __a)3260 vec_floate(vector double __a) {
3261 #ifdef __LITTLE_ENDIAN__
3262   vector float __ret = __builtin_vsx_xvcvdpsp(__a);
3263   return vec_sld(__ret, __ret, 12);
3264 #else
3265   return __builtin_vsx_xvcvdpsp(__a);
3266 #endif
3267 }
3268 
3269 static __inline__ vector float __ATTRS_o_ai
vec_floato(vector signed long long __a)3270 vec_floato(vector signed long long __a) {
3271 #ifdef __LITTLE_ENDIAN__
3272   return __builtin_vsx_xvcvsxdsp(__a);
3273 #else
3274   vector float __ret = __builtin_vsx_xvcvsxdsp(__a);
3275   return vec_sld(__ret, __ret, 12);
3276 #endif
3277 }
3278 
3279 static __inline__ vector float __ATTRS_o_ai
vec_floato(vector unsigned long long __a)3280 vec_floato(vector unsigned long long __a) {
3281 #ifdef __LITTLE_ENDIAN__
3282   return __builtin_vsx_xvcvuxdsp(__a);
3283 #else
3284   vector float __ret = __builtin_vsx_xvcvuxdsp(__a);
3285   return vec_sld(__ret, __ret, 12);
3286 #endif
3287 }
3288 
3289 static __inline__ vector float __ATTRS_o_ai
vec_floato(vector double __a)3290 vec_floato(vector double __a) {
3291 #ifdef __LITTLE_ENDIAN__
3292   return __builtin_vsx_xvcvdpsp(__a);
3293 #else
3294   vector float __ret = __builtin_vsx_xvcvdpsp(__a);
3295   return vec_sld(__ret, __ret, 12);
3296 #endif
3297 }
3298 #endif
3299 
3300 /* vec_double */
3301 
3302 #ifdef __VSX__
3303 static __inline__ vector double __ATTRS_o_ai
vec_double(vector signed long long __a)3304 vec_double(vector signed long long __a) {
3305   return __builtin_convertvector(__a, vector double);
3306 }
3307 
3308 static __inline__ vector double __ATTRS_o_ai
vec_double(vector unsigned long long __a)3309 vec_double(vector unsigned long long __a) {
3310   return __builtin_convertvector(__a, vector double);
3311 }
3312 
3313 static __inline__ vector double __ATTRS_o_ai
vec_doublee(vector signed int __a)3314 vec_doublee(vector signed int __a) {
3315 #ifdef __LITTLE_ENDIAN__
3316   return __builtin_vsx_xvcvsxwdp(vec_sld(__a, __a, 4));
3317 #else
3318   return __builtin_vsx_xvcvsxwdp(__a);
3319 #endif
3320 }
3321 
3322 static __inline__ vector double __ATTRS_o_ai
vec_doublee(vector unsigned int __a)3323 vec_doublee(vector unsigned int __a) {
3324 #ifdef __LITTLE_ENDIAN__
3325   return __builtin_vsx_xvcvuxwdp(vec_sld(__a, __a, 4));
3326 #else
3327   return __builtin_vsx_xvcvuxwdp(__a);
3328 #endif
3329 }
3330 
3331 static __inline__ vector double __ATTRS_o_ai
vec_doublee(vector float __a)3332 vec_doublee(vector float __a) {
3333 #ifdef __LITTLE_ENDIAN__
3334   return __builtin_vsx_xvcvspdp(vec_sld(__a, __a, 4));
3335 #else
3336   return __builtin_vsx_xvcvspdp(__a);
3337 #endif
3338 }
3339 
3340 static __inline__ vector double __ATTRS_o_ai
vec_doubleh(vector signed int __a)3341 vec_doubleh(vector signed int __a) {
3342   vector double __ret = {__a[0], __a[1]};
3343   return __ret;
3344 }
3345 
3346 static __inline__ vector double __ATTRS_o_ai
vec_doubleh(vector unsigned int __a)3347 vec_doubleh(vector unsigned int __a) {
3348   vector double __ret = {__a[0], __a[1]};
3349   return __ret;
3350 }
3351 
3352 static __inline__ vector double __ATTRS_o_ai
vec_doubleh(vector float __a)3353 vec_doubleh(vector float __a) {
3354   vector double __ret = {__a[0], __a[1]};
3355   return __ret;
3356 }
3357 
3358 static __inline__ vector double __ATTRS_o_ai
vec_doublel(vector signed int __a)3359 vec_doublel(vector signed int __a) {
3360   vector double __ret = {__a[2], __a[3]};
3361   return __ret;
3362 }
3363 
3364 static __inline__ vector double __ATTRS_o_ai
vec_doublel(vector unsigned int __a)3365 vec_doublel(vector unsigned int __a) {
3366   vector double __ret = {__a[2], __a[3]};
3367   return __ret;
3368 }
3369 
3370 static __inline__ vector double __ATTRS_o_ai
vec_doublel(vector float __a)3371 vec_doublel(vector float __a) {
3372   vector double __ret = {__a[2], __a[3]};
3373   return __ret;
3374 }
3375 
3376 static __inline__ vector double __ATTRS_o_ai
vec_doubleo(vector signed int __a)3377 vec_doubleo(vector signed int __a) {
3378 #ifdef __LITTLE_ENDIAN__
3379   return __builtin_vsx_xvcvsxwdp(__a);
3380 #else
3381   return __builtin_vsx_xvcvsxwdp(vec_sld(__a, __a, 4));
3382 #endif
3383 }
3384 
3385 static __inline__ vector double __ATTRS_o_ai
vec_doubleo(vector unsigned int __a)3386 vec_doubleo(vector unsigned int __a) {
3387 #ifdef __LITTLE_ENDIAN__
3388   return __builtin_vsx_xvcvuxwdp(__a);
3389 #else
3390   return __builtin_vsx_xvcvuxwdp(vec_sld(__a, __a, 4));
3391 #endif
3392 }
3393 
3394 static __inline__ vector double __ATTRS_o_ai
vec_doubleo(vector float __a)3395 vec_doubleo(vector float __a) {
3396 #ifdef __LITTLE_ENDIAN__
3397   return __builtin_vsx_xvcvspdp(__a);
3398 #else
3399   return __builtin_vsx_xvcvspdp(vec_sld(__a, __a, 4));
3400 #endif
3401 }
3402 #endif
3403 
3404 /* vec_div */
3405 
3406 /* Integer vector divides (vectors are scalarized, elements divided
3407    and the vectors reassembled).
3408 */
3409 static __inline__ vector signed char __ATTRS_o_ai
vec_div(vector signed char __a,vector signed char __b)3410 vec_div(vector signed char __a, vector signed char __b) {
3411   return __a / __b;
3412 }
3413 
3414 static __inline__ vector unsigned char __ATTRS_o_ai
vec_div(vector unsigned char __a,vector unsigned char __b)3415 vec_div(vector unsigned char __a, vector unsigned char __b) {
3416   return __a / __b;
3417 }
3418 
3419 static __inline__ vector signed short __ATTRS_o_ai
vec_div(vector signed short __a,vector signed short __b)3420 vec_div(vector signed short __a, vector signed short __b) {
3421   return __a / __b;
3422 }
3423 
3424 static __inline__ vector unsigned short __ATTRS_o_ai
vec_div(vector unsigned short __a,vector unsigned short __b)3425 vec_div(vector unsigned short __a, vector unsigned short __b) {
3426   return __a / __b;
3427 }
3428 
3429 static __inline__ vector signed int __ATTRS_o_ai
vec_div(vector signed int __a,vector signed int __b)3430 vec_div(vector signed int __a, vector signed int __b) {
3431   return __a / __b;
3432 }
3433 
3434 static __inline__ vector unsigned int __ATTRS_o_ai
vec_div(vector unsigned int __a,vector unsigned int __b)3435 vec_div(vector unsigned int __a, vector unsigned int __b) {
3436   return __a / __b;
3437 }
3438 
3439 #ifdef __VSX__
3440 static __inline__ vector signed long long __ATTRS_o_ai
vec_div(vector signed long long __a,vector signed long long __b)3441 vec_div(vector signed long long __a, vector signed long long __b) {
3442   return __a / __b;
3443 }
3444 
3445 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_div(vector unsigned long long __a,vector unsigned long long __b)3446 vec_div(vector unsigned long long __a, vector unsigned long long __b) {
3447   return __a / __b;
3448 }
3449 
vec_div(vector float __a,vector float __b)3450 static __inline__ vector float __ATTRS_o_ai vec_div(vector float __a,
3451                                                     vector float __b) {
3452   return __a / __b;
3453 }
3454 
vec_div(vector double __a,vector double __b)3455 static __inline__ vector double __ATTRS_o_ai vec_div(vector double __a,
3456                                                      vector double __b) {
3457   return __a / __b;
3458 }
3459 #endif
3460 
3461 /* vec_dive */
3462 
3463 #ifdef __POWER10_VECTOR__
3464 static __inline__ vector signed int __ATTRS_o_ai
vec_dive(vector signed int __a,vector signed int __b)3465 vec_dive(vector signed int __a, vector signed int __b) {
3466   return __builtin_altivec_vdivesw(__a, __b);
3467 }
3468 
3469 static __inline__ vector unsigned int __ATTRS_o_ai
vec_dive(vector unsigned int __a,vector unsigned int __b)3470 vec_dive(vector unsigned int __a, vector unsigned int __b) {
3471   return __builtin_altivec_vdiveuw(__a, __b);
3472 }
3473 
3474 static __inline__ vector signed long long __ATTRS_o_ai
vec_dive(vector signed long long __a,vector signed long long __b)3475 vec_dive(vector signed long long __a, vector signed long long __b) {
3476   return __builtin_altivec_vdivesd(__a, __b);
3477 }
3478 
3479 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_dive(vector unsigned long long __a,vector unsigned long long __b)3480 vec_dive(vector unsigned long long __a, vector unsigned long long __b) {
3481   return __builtin_altivec_vdiveud(__a, __b);
3482 }
3483 
3484 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_dive(vector unsigned __int128 __a,vector unsigned __int128 __b)3485 vec_dive(vector unsigned __int128 __a, vector unsigned __int128 __b) {
3486   return __builtin_altivec_vdiveuq(__a, __b);
3487 }
3488 
3489 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_dive(vector signed __int128 __a,vector signed __int128 __b)3490 vec_dive(vector signed __int128 __a, vector signed __int128 __b) {
3491   return __builtin_altivec_vdivesq(__a, __b);
3492 }
3493 #endif
3494 
3495 #ifdef __POWER10_VECTOR__
3496 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_div(vector unsigned __int128 __a,vector unsigned __int128 __b)3497 vec_div(vector unsigned __int128 __a, vector unsigned __int128 __b) {
3498   return __a / __b;
3499 }
3500 
3501 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_div(vector signed __int128 __a,vector signed __int128 __b)3502 vec_div(vector signed __int128 __a, vector signed __int128 __b) {
3503   return __a / __b;
3504 }
3505 #endif /* __POWER10_VECTOR__ */
3506 
3507 /* vec_xvtdiv */
3508 
3509 #ifdef __VSX__
vec_test_swdiv(vector double __a,vector double __b)3510 static __inline__ int __ATTRS_o_ai vec_test_swdiv(vector double __a,
3511                                                   vector double __b) {
3512   return __builtin_vsx_xvtdivdp(__a, __b);
3513 }
3514 
vec_test_swdivs(vector float __a,vector float __b)3515 static __inline__ int __ATTRS_o_ai vec_test_swdivs(vector float __a,
3516                                                    vector float __b) {
3517   return __builtin_vsx_xvtdivsp(__a, __b);
3518 }
3519 #endif
3520 
3521 /* vec_dss */
3522 
3523 #define vec_dss __builtin_altivec_dss
3524 
3525 /* vec_dssall */
3526 
vec_dssall(void)3527 static __inline__ void __attribute__((__always_inline__)) vec_dssall(void) {
3528   __builtin_altivec_dssall();
3529 }
3530 
3531 /* vec_dst */
3532 #define vec_dst(__PTR, __CW, __STR) \
3533   __builtin_altivec_dst((const void *)(__PTR), (__CW), (__STR))
3534 
3535 /* vec_dstst */
3536 #define vec_dstst(__PTR, __CW, __STR) \
3537   __builtin_altivec_dstst((const void *)(__PTR), (__CW), (__STR))
3538 
3539 /* vec_dststt */
3540 #define vec_dststt(__PTR, __CW, __STR) \
3541   __builtin_altivec_dststt((const void *)(__PTR), (__CW), (__STR))
3542 
3543 /* vec_dstt */
3544 #define vec_dstt(__PTR, __CW, __STR) \
3545   __builtin_altivec_dstt((const void *)(__PTR), (__CW), (__STR))
3546 
3547 /* vec_eqv */
3548 
3549 #ifdef __POWER8_VECTOR__
3550 static __inline__ vector signed char __ATTRS_o_ai
vec_eqv(vector signed char __a,vector signed char __b)3551 vec_eqv(vector signed char __a, vector signed char __b) {
3552   return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
3553                                                   (vector unsigned int)__b);
3554 }
3555 
3556 static __inline__ vector unsigned char __ATTRS_o_ai
vec_eqv(vector unsigned char __a,vector unsigned char __b)3557 vec_eqv(vector unsigned char __a, vector unsigned char __b) {
3558   return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
3559                                                     (vector unsigned int)__b);
3560 }
3561 
vec_eqv(vector bool char __a,vector bool char __b)3562 static __inline__ vector bool char __ATTRS_o_ai vec_eqv(vector bool char __a,
3563                                                         vector bool char __b) {
3564   return (vector bool char)__builtin_vsx_xxleqv((vector unsigned int)__a,
3565                                                 (vector unsigned int)__b);
3566 }
3567 
3568 static __inline__ vector signed short __ATTRS_o_ai
vec_eqv(vector signed short __a,vector signed short __b)3569 vec_eqv(vector signed short __a, vector signed short __b) {
3570   return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
3571                                                    (vector unsigned int)__b);
3572 }
3573 
3574 static __inline__ vector unsigned short __ATTRS_o_ai
vec_eqv(vector unsigned short __a,vector unsigned short __b)3575 vec_eqv(vector unsigned short __a, vector unsigned short __b) {
3576   return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
3577                                                      (vector unsigned int)__b);
3578 }
3579 
3580 static __inline__ vector bool short __ATTRS_o_ai
vec_eqv(vector bool short __a,vector bool short __b)3581 vec_eqv(vector bool short __a, vector bool short __b) {
3582   return (vector bool short)__builtin_vsx_xxleqv((vector unsigned int)__a,
3583                                                  (vector unsigned int)__b);
3584 }
3585 
3586 static __inline__ vector signed int __ATTRS_o_ai
vec_eqv(vector signed int __a,vector signed int __b)3587 vec_eqv(vector signed int __a, vector signed int __b) {
3588   return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
3589                                                  (vector unsigned int)__b);
3590 }
3591 
3592 static __inline__ vector unsigned int __ATTRS_o_ai
vec_eqv(vector unsigned int __a,vector unsigned int __b)3593 vec_eqv(vector unsigned int __a, vector unsigned int __b) {
3594   return __builtin_vsx_xxleqv(__a, __b);
3595 }
3596 
vec_eqv(vector bool int __a,vector bool int __b)3597 static __inline__ vector bool int __ATTRS_o_ai vec_eqv(vector bool int __a,
3598                                                        vector bool int __b) {
3599   return (vector bool int)__builtin_vsx_xxleqv((vector unsigned int)__a,
3600                                                (vector unsigned int)__b);
3601 }
3602 
3603 static __inline__ vector signed long long __ATTRS_o_ai
vec_eqv(vector signed long long __a,vector signed long long __b)3604 vec_eqv(vector signed long long __a, vector signed long long __b) {
3605   return (vector signed long long)__builtin_vsx_xxleqv(
3606       (vector unsigned int)__a, (vector unsigned int)__b);
3607 }
3608 
3609 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_eqv(vector unsigned long long __a,vector unsigned long long __b)3610 vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
3611   return (vector unsigned long long)__builtin_vsx_xxleqv(
3612       (vector unsigned int)__a, (vector unsigned int)__b);
3613 }
3614 
3615 static __inline__ vector bool long long __ATTRS_o_ai
vec_eqv(vector bool long long __a,vector bool long long __b)3616 vec_eqv(vector bool long long __a, vector bool long long __b) {
3617   return (vector bool long long)__builtin_vsx_xxleqv((vector unsigned int)__a,
3618                                                      (vector unsigned int)__b);
3619 }
3620 
vec_eqv(vector float __a,vector float __b)3621 static __inline__ vector float __ATTRS_o_ai vec_eqv(vector float __a,
3622                                                     vector float __b) {
3623   return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
3624                                             (vector unsigned int)__b);
3625 }
3626 
vec_eqv(vector double __a,vector double __b)3627 static __inline__ vector double __ATTRS_o_ai vec_eqv(vector double __a,
3628                                                      vector double __b) {
3629   return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
3630                                              (vector unsigned int)__b);
3631 }
3632 #endif
3633 
3634 /* vec_expte */
3635 
3636 static __inline__ vector float __attribute__((__always_inline__))
vec_expte(vector float __a)3637 vec_expte(vector float __a) {
3638   return __builtin_altivec_vexptefp(__a);
3639 }
3640 
3641 /* vec_vexptefp */
3642 
3643 static __inline__ vector float __attribute__((__always_inline__))
vec_vexptefp(vector float __a)3644 vec_vexptefp(vector float __a) {
3645   return __builtin_altivec_vexptefp(__a);
3646 }
3647 
3648 /* vec_floor */
3649 
vec_floor(vector float __a)3650 static __inline__ vector float __ATTRS_o_ai vec_floor(vector float __a) {
3651 #ifdef __VSX__
3652   return __builtin_vsx_xvrspim(__a);
3653 #else
3654   return __builtin_altivec_vrfim(__a);
3655 #endif
3656 }
3657 
3658 #ifdef __VSX__
vec_floor(vector double __a)3659 static __inline__ vector double __ATTRS_o_ai vec_floor(vector double __a) {
3660   return __builtin_vsx_xvrdpim(__a);
3661 }
3662 #endif
3663 
3664 /* vec_vrfim */
3665 
3666 static __inline__ vector float __attribute__((__always_inline__))
vec_vrfim(vector float __a)3667 vec_vrfim(vector float __a) {
3668   return __builtin_altivec_vrfim(__a);
3669 }
3670 
3671 /* vec_ld */
3672 
3673 static __inline__ vector signed char __ATTRS_o_ai
vec_ld(int __a,const vector signed char * __b)3674 vec_ld(int __a, const vector signed char *__b) {
3675   return (vector signed char)__builtin_altivec_lvx(__a, __b);
3676 }
3677 
3678 static __inline__ vector signed char __ATTRS_o_ai
vec_ld(int __a,const signed char * __b)3679 vec_ld(int __a, const signed char *__b) {
3680   return (vector signed char)__builtin_altivec_lvx(__a, __b);
3681 }
3682 
3683 static __inline__ vector unsigned char __ATTRS_o_ai
vec_ld(int __a,const vector unsigned char * __b)3684 vec_ld(int __a, const vector unsigned char *__b) {
3685   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3686 }
3687 
3688 static __inline__ vector unsigned char __ATTRS_o_ai
vec_ld(int __a,const unsigned char * __b)3689 vec_ld(int __a, const unsigned char *__b) {
3690   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3691 }
3692 
3693 static __inline__ vector bool char __ATTRS_o_ai
vec_ld(int __a,const vector bool char * __b)3694 vec_ld(int __a, const vector bool char *__b) {
3695   return (vector bool char)__builtin_altivec_lvx(__a, __b);
3696 }
3697 
vec_ld(int __a,const vector short * __b)3698 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a,
3699                                                    const vector short *__b) {
3700   return (vector short)__builtin_altivec_lvx(__a, __b);
3701 }
3702 
vec_ld(int __a,const short * __b)3703 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) {
3704   return (vector short)__builtin_altivec_lvx(__a, __b);
3705 }
3706 
3707 static __inline__ vector unsigned short __ATTRS_o_ai
vec_ld(int __a,const vector unsigned short * __b)3708 vec_ld(int __a, const vector unsigned short *__b) {
3709   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3710 }
3711 
3712 static __inline__ vector unsigned short __ATTRS_o_ai
vec_ld(int __a,const unsigned short * __b)3713 vec_ld(int __a, const unsigned short *__b) {
3714   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3715 }
3716 
3717 static __inline__ vector bool short __ATTRS_o_ai
vec_ld(int __a,const vector bool short * __b)3718 vec_ld(int __a, const vector bool short *__b) {
3719   return (vector bool short)__builtin_altivec_lvx(__a, __b);
3720 }
3721 
vec_ld(int __a,const vector pixel * __b)3722 static __inline__ vector pixel __ATTRS_o_ai vec_ld(int __a,
3723                                                    const vector pixel *__b) {
3724   return (vector pixel)__builtin_altivec_lvx(__a, __b);
3725 }
3726 
vec_ld(int __a,const vector int * __b)3727 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a,
3728                                                  const vector int *__b) {
3729   return (vector int)__builtin_altivec_lvx(__a, __b);
3730 }
3731 
vec_ld(int __a,const int * __b)3732 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) {
3733   return (vector int)__builtin_altivec_lvx(__a, __b);
3734 }
3735 
3736 static __inline__ vector unsigned int __ATTRS_o_ai
vec_ld(int __a,const vector unsigned int * __b)3737 vec_ld(int __a, const vector unsigned int *__b) {
3738   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3739 }
3740 
3741 static __inline__ vector unsigned int __ATTRS_o_ai
vec_ld(int __a,const unsigned int * __b)3742 vec_ld(int __a, const unsigned int *__b) {
3743   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3744 }
3745 
3746 static __inline__ vector bool int __ATTRS_o_ai
vec_ld(int __a,const vector bool int * __b)3747 vec_ld(int __a, const vector bool int *__b) {
3748   return (vector bool int)__builtin_altivec_lvx(__a, __b);
3749 }
3750 
vec_ld(int __a,const vector float * __b)3751 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a,
3752                                                    const vector float *__b) {
3753   return (vector float)__builtin_altivec_lvx(__a, __b);
3754 }
3755 
vec_ld(int __a,const float * __b)3756 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) {
3757   return (vector float)__builtin_altivec_lvx(__a, __b);
3758 }
3759 
3760 /* vec_lvx */
3761 
3762 static __inline__ vector signed char __ATTRS_o_ai
vec_lvx(int __a,const vector signed char * __b)3763 vec_lvx(int __a, const vector signed char *__b) {
3764   return (vector signed char)__builtin_altivec_lvx(__a, __b);
3765 }
3766 
3767 static __inline__ vector signed char __ATTRS_o_ai
vec_lvx(int __a,const signed char * __b)3768 vec_lvx(int __a, const signed char *__b) {
3769   return (vector signed char)__builtin_altivec_lvx(__a, __b);
3770 }
3771 
3772 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvx(int __a,const vector unsigned char * __b)3773 vec_lvx(int __a, const vector unsigned char *__b) {
3774   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3775 }
3776 
3777 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvx(int __a,const unsigned char * __b)3778 vec_lvx(int __a, const unsigned char *__b) {
3779   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3780 }
3781 
3782 static __inline__ vector bool char __ATTRS_o_ai
vec_lvx(int __a,const vector bool char * __b)3783 vec_lvx(int __a, const vector bool char *__b) {
3784   return (vector bool char)__builtin_altivec_lvx(__a, __b);
3785 }
3786 
vec_lvx(int __a,const vector short * __b)3787 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a,
3788                                                     const vector short *__b) {
3789   return (vector short)__builtin_altivec_lvx(__a, __b);
3790 }
3791 
vec_lvx(int __a,const short * __b)3792 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) {
3793   return (vector short)__builtin_altivec_lvx(__a, __b);
3794 }
3795 
3796 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvx(int __a,const vector unsigned short * __b)3797 vec_lvx(int __a, const vector unsigned short *__b) {
3798   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3799 }
3800 
3801 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvx(int __a,const unsigned short * __b)3802 vec_lvx(int __a, const unsigned short *__b) {
3803   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3804 }
3805 
3806 static __inline__ vector bool short __ATTRS_o_ai
vec_lvx(int __a,const vector bool short * __b)3807 vec_lvx(int __a, const vector bool short *__b) {
3808   return (vector bool short)__builtin_altivec_lvx(__a, __b);
3809 }
3810 
vec_lvx(int __a,const vector pixel * __b)3811 static __inline__ vector pixel __ATTRS_o_ai vec_lvx(int __a,
3812                                                     const vector pixel *__b) {
3813   return (vector pixel)__builtin_altivec_lvx(__a, __b);
3814 }
3815 
vec_lvx(int __a,const vector int * __b)3816 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a,
3817                                                   const vector int *__b) {
3818   return (vector int)__builtin_altivec_lvx(__a, __b);
3819 }
3820 
vec_lvx(int __a,const int * __b)3821 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) {
3822   return (vector int)__builtin_altivec_lvx(__a, __b);
3823 }
3824 
3825 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvx(int __a,const vector unsigned int * __b)3826 vec_lvx(int __a, const vector unsigned int *__b) {
3827   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3828 }
3829 
3830 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvx(int __a,const unsigned int * __b)3831 vec_lvx(int __a, const unsigned int *__b) {
3832   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3833 }
3834 
3835 static __inline__ vector bool int __ATTRS_o_ai
vec_lvx(int __a,const vector bool int * __b)3836 vec_lvx(int __a, const vector bool int *__b) {
3837   return (vector bool int)__builtin_altivec_lvx(__a, __b);
3838 }
3839 
vec_lvx(int __a,const vector float * __b)3840 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a,
3841                                                     const vector float *__b) {
3842   return (vector float)__builtin_altivec_lvx(__a, __b);
3843 }
3844 
vec_lvx(int __a,const float * __b)3845 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) {
3846   return (vector float)__builtin_altivec_lvx(__a, __b);
3847 }
3848 
3849 /* vec_lde */
3850 
3851 static __inline__ vector signed char __ATTRS_o_ai
vec_lde(int __a,const signed char * __b)3852 vec_lde(int __a, const signed char *__b) {
3853   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
3854 }
3855 
3856 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lde(int __a,const unsigned char * __b)3857 vec_lde(int __a, const unsigned char *__b) {
3858   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
3859 }
3860 
vec_lde(int __a,const short * __b)3861 static __inline__ vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) {
3862   return (vector short)__builtin_altivec_lvehx(__a, __b);
3863 }
3864 
3865 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lde(int __a,const unsigned short * __b)3866 vec_lde(int __a, const unsigned short *__b) {
3867   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
3868 }
3869 
vec_lde(int __a,const int * __b)3870 static __inline__ vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) {
3871   return (vector int)__builtin_altivec_lvewx(__a, __b);
3872 }
3873 
3874 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lde(int __a,const unsigned int * __b)3875 vec_lde(int __a, const unsigned int *__b) {
3876   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
3877 }
3878 
vec_lde(int __a,const float * __b)3879 static __inline__ vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) {
3880   return (vector float)__builtin_altivec_lvewx(__a, __b);
3881 }
3882 
3883 /* vec_lvebx */
3884 
3885 static __inline__ vector signed char __ATTRS_o_ai
vec_lvebx(int __a,const signed char * __b)3886 vec_lvebx(int __a, const signed char *__b) {
3887   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
3888 }
3889 
3890 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvebx(int __a,const unsigned char * __b)3891 vec_lvebx(int __a, const unsigned char *__b) {
3892   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
3893 }
3894 
3895 /* vec_lvehx */
3896 
vec_lvehx(int __a,const short * __b)3897 static __inline__ vector short __ATTRS_o_ai vec_lvehx(int __a,
3898                                                       const short *__b) {
3899   return (vector short)__builtin_altivec_lvehx(__a, __b);
3900 }
3901 
3902 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvehx(int __a,const unsigned short * __b)3903 vec_lvehx(int __a, const unsigned short *__b) {
3904   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
3905 }
3906 
3907 /* vec_lvewx */
3908 
vec_lvewx(int __a,const int * __b)3909 static __inline__ vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) {
3910   return (vector int)__builtin_altivec_lvewx(__a, __b);
3911 }
3912 
3913 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvewx(int __a,const unsigned int * __b)3914 vec_lvewx(int __a, const unsigned int *__b) {
3915   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
3916 }
3917 
vec_lvewx(int __a,const float * __b)3918 static __inline__ vector float __ATTRS_o_ai vec_lvewx(int __a,
3919                                                       const float *__b) {
3920   return (vector float)__builtin_altivec_lvewx(__a, __b);
3921 }
3922 
3923 /* vec_ldl */
3924 
3925 static __inline__ vector signed char __ATTRS_o_ai
vec_ldl(int __a,const vector signed char * __b)3926 vec_ldl(int __a, const vector signed char *__b) {
3927   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3928 }
3929 
3930 static __inline__ vector signed char __ATTRS_o_ai
vec_ldl(int __a,const signed char * __b)3931 vec_ldl(int __a, const signed char *__b) {
3932   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3933 }
3934 
3935 static __inline__ vector unsigned char __ATTRS_o_ai
vec_ldl(int __a,const vector unsigned char * __b)3936 vec_ldl(int __a, const vector unsigned char *__b) {
3937   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3938 }
3939 
3940 static __inline__ vector unsigned char __ATTRS_o_ai
vec_ldl(int __a,const unsigned char * __b)3941 vec_ldl(int __a, const unsigned char *__b) {
3942   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3943 }
3944 
3945 static __inline__ vector bool char __ATTRS_o_ai
vec_ldl(int __a,const vector bool char * __b)3946 vec_ldl(int __a, const vector bool char *__b) {
3947   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
3948 }
3949 
vec_ldl(int __a,const vector short * __b)3950 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a,
3951                                                     const vector short *__b) {
3952   return (vector short)__builtin_altivec_lvxl(__a, __b);
3953 }
3954 
vec_ldl(int __a,const short * __b)3955 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) {
3956   return (vector short)__builtin_altivec_lvxl(__a, __b);
3957 }
3958 
3959 static __inline__ vector unsigned short __ATTRS_o_ai
vec_ldl(int __a,const vector unsigned short * __b)3960 vec_ldl(int __a, const vector unsigned short *__b) {
3961   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3962 }
3963 
3964 static __inline__ vector unsigned short __ATTRS_o_ai
vec_ldl(int __a,const unsigned short * __b)3965 vec_ldl(int __a, const unsigned short *__b) {
3966   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3967 }
3968 
3969 static __inline__ vector bool short __ATTRS_o_ai
vec_ldl(int __a,const vector bool short * __b)3970 vec_ldl(int __a, const vector bool short *__b) {
3971   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
3972 }
3973 
vec_ldl(int __a,const vector pixel * __b)3974 static __inline__ vector pixel __ATTRS_o_ai vec_ldl(int __a,
3975                                                     const vector pixel *__b) {
3976   return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
3977 }
3978 
vec_ldl(int __a,const vector int * __b)3979 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a,
3980                                                   const vector int *__b) {
3981   return (vector int)__builtin_altivec_lvxl(__a, __b);
3982 }
3983 
vec_ldl(int __a,const int * __b)3984 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) {
3985   return (vector int)__builtin_altivec_lvxl(__a, __b);
3986 }
3987 
3988 static __inline__ vector unsigned int __ATTRS_o_ai
vec_ldl(int __a,const vector unsigned int * __b)3989 vec_ldl(int __a, const vector unsigned int *__b) {
3990   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3991 }
3992 
3993 static __inline__ vector unsigned int __ATTRS_o_ai
vec_ldl(int __a,const unsigned int * __b)3994 vec_ldl(int __a, const unsigned int *__b) {
3995   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3996 }
3997 
3998 static __inline__ vector bool int __ATTRS_o_ai
vec_ldl(int __a,const vector bool int * __b)3999 vec_ldl(int __a, const vector bool int *__b) {
4000   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
4001 }
4002 
vec_ldl(int __a,const vector float * __b)4003 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a,
4004                                                     const vector float *__b) {
4005   return (vector float)__builtin_altivec_lvxl(__a, __b);
4006 }
4007 
vec_ldl(int __a,const float * __b)4008 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) {
4009   return (vector float)__builtin_altivec_lvxl(__a, __b);
4010 }
4011 
4012 /* vec_lvxl */
4013 
4014 static __inline__ vector signed char __ATTRS_o_ai
vec_lvxl(int __a,const vector signed char * __b)4015 vec_lvxl(int __a, const vector signed char *__b) {
4016   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
4017 }
4018 
4019 static __inline__ vector signed char __ATTRS_o_ai
vec_lvxl(int __a,const signed char * __b)4020 vec_lvxl(int __a, const signed char *__b) {
4021   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
4022 }
4023 
4024 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvxl(int __a,const vector unsigned char * __b)4025 vec_lvxl(int __a, const vector unsigned char *__b) {
4026   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
4027 }
4028 
4029 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvxl(int __a,const unsigned char * __b)4030 vec_lvxl(int __a, const unsigned char *__b) {
4031   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
4032 }
4033 
4034 static __inline__ vector bool char __ATTRS_o_ai
vec_lvxl(int __a,const vector bool char * __b)4035 vec_lvxl(int __a, const vector bool char *__b) {
4036   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
4037 }
4038 
vec_lvxl(int __a,const vector short * __b)4039 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
4040                                                      const vector short *__b) {
4041   return (vector short)__builtin_altivec_lvxl(__a, __b);
4042 }
4043 
vec_lvxl(int __a,const short * __b)4044 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
4045                                                      const short *__b) {
4046   return (vector short)__builtin_altivec_lvxl(__a, __b);
4047 }
4048 
4049 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvxl(int __a,const vector unsigned short * __b)4050 vec_lvxl(int __a, const vector unsigned short *__b) {
4051   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
4052 }
4053 
4054 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvxl(int __a,const unsigned short * __b)4055 vec_lvxl(int __a, const unsigned short *__b) {
4056   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
4057 }
4058 
4059 static __inline__ vector bool short __ATTRS_o_ai
vec_lvxl(int __a,const vector bool short * __b)4060 vec_lvxl(int __a, const vector bool short *__b) {
4061   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
4062 }
4063 
vec_lvxl(int __a,const vector pixel * __b)4064 static __inline__ vector pixel __ATTRS_o_ai vec_lvxl(int __a,
4065                                                      const vector pixel *__b) {
4066   return (vector pixel)__builtin_altivec_lvxl(__a, __b);
4067 }
4068 
vec_lvxl(int __a,const vector int * __b)4069 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a,
4070                                                    const vector int *__b) {
4071   return (vector int)__builtin_altivec_lvxl(__a, __b);
4072 }
4073 
vec_lvxl(int __a,const int * __b)4074 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) {
4075   return (vector int)__builtin_altivec_lvxl(__a, __b);
4076 }
4077 
4078 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvxl(int __a,const vector unsigned int * __b)4079 vec_lvxl(int __a, const vector unsigned int *__b) {
4080   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
4081 }
4082 
4083 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvxl(int __a,const unsigned int * __b)4084 vec_lvxl(int __a, const unsigned int *__b) {
4085   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
4086 }
4087 
4088 static __inline__ vector bool int __ATTRS_o_ai
vec_lvxl(int __a,const vector bool int * __b)4089 vec_lvxl(int __a, const vector bool int *__b) {
4090   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
4091 }
4092 
vec_lvxl(int __a,const vector float * __b)4093 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
4094                                                      const vector float *__b) {
4095   return (vector float)__builtin_altivec_lvxl(__a, __b);
4096 }
4097 
vec_lvxl(int __a,const float * __b)4098 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
4099                                                      const float *__b) {
4100   return (vector float)__builtin_altivec_lvxl(__a, __b);
4101 }
4102 
4103 /* vec_loge */
4104 
4105 static __inline__ vector float __attribute__((__always_inline__))
vec_loge(vector float __a)4106 vec_loge(vector float __a) {
4107   return __builtin_altivec_vlogefp(__a);
4108 }
4109 
4110 /* vec_vlogefp */
4111 
4112 static __inline__ vector float __attribute__((__always_inline__))
vec_vlogefp(vector float __a)4113 vec_vlogefp(vector float __a) {
4114   return __builtin_altivec_vlogefp(__a);
4115 }
4116 
4117 /* vec_lvsl */
4118 
4119 #ifdef __LITTLE_ENDIAN__
4120 static __inline__ vector unsigned char __ATTRS_o_ai
4121     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const signed char * __b)4122 loads/stores"))) vec_lvsl(int __a, const signed char *__b) {
4123   vector unsigned char mask =
4124       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4125   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4126                                   7,  6,  5,  4,  3,  2,  1, 0};
4127   return vec_perm(mask, mask, reverse);
4128 }
4129 #else
4130 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const signed char * __b)4131 vec_lvsl(int __a, const signed char *__b) {
4132   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4133 }
4134 #endif
4135 
4136 #ifdef __LITTLE_ENDIAN__
4137 static __inline__ vector unsigned char __ATTRS_o_ai
4138     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const unsigned char * __b)4139 loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) {
4140   vector unsigned char mask =
4141       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4142   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4143                                   7,  6,  5,  4,  3,  2,  1, 0};
4144   return vec_perm(mask, mask, reverse);
4145 }
4146 #else
4147 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const unsigned char * __b)4148 vec_lvsl(int __a, const unsigned char *__b) {
4149   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4150 }
4151 #endif
4152 
4153 #ifdef __LITTLE_ENDIAN__
4154 static __inline__ vector unsigned char __ATTRS_o_ai
4155     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const short * __b)4156 loads/stores"))) vec_lvsl(int __a, const short *__b) {
4157   vector unsigned char mask =
4158       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4159   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4160                                   7,  6,  5,  4,  3,  2,  1, 0};
4161   return vec_perm(mask, mask, reverse);
4162 }
4163 #else
vec_lvsl(int __a,const short * __b)4164 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
4165                                                              const short *__b) {
4166   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4167 }
4168 #endif
4169 
4170 #ifdef __LITTLE_ENDIAN__
4171 static __inline__ vector unsigned char __ATTRS_o_ai
4172     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const unsigned short * __b)4173 loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) {
4174   vector unsigned char mask =
4175       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4176   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4177                                   7,  6,  5,  4,  3,  2,  1, 0};
4178   return vec_perm(mask, mask, reverse);
4179 }
4180 #else
4181 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const unsigned short * __b)4182 vec_lvsl(int __a, const unsigned short *__b) {
4183   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4184 }
4185 #endif
4186 
4187 #ifdef __LITTLE_ENDIAN__
4188 static __inline__ vector unsigned char __ATTRS_o_ai
4189     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const int * __b)4190 loads/stores"))) vec_lvsl(int __a, const int *__b) {
4191   vector unsigned char mask =
4192       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4193   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4194                                   7,  6,  5,  4,  3,  2,  1, 0};
4195   return vec_perm(mask, mask, reverse);
4196 }
4197 #else
vec_lvsl(int __a,const int * __b)4198 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
4199                                                              const int *__b) {
4200   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4201 }
4202 #endif
4203 
4204 #ifdef __LITTLE_ENDIAN__
4205 static __inline__ vector unsigned char __ATTRS_o_ai
4206     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const unsigned int * __b)4207 loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) {
4208   vector unsigned char mask =
4209       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4210   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4211                                   7,  6,  5,  4,  3,  2,  1, 0};
4212   return vec_perm(mask, mask, reverse);
4213 }
4214 #else
4215 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const unsigned int * __b)4216 vec_lvsl(int __a, const unsigned int *__b) {
4217   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4218 }
4219 #endif
4220 
4221 #ifdef __LITTLE_ENDIAN__
4222 static __inline__ vector unsigned char __ATTRS_o_ai
4223     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const float * __b)4224 loads/stores"))) vec_lvsl(int __a, const float *__b) {
4225   vector unsigned char mask =
4226       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4227   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4228                                   7,  6,  5,  4,  3,  2,  1, 0};
4229   return vec_perm(mask, mask, reverse);
4230 }
4231 #else
vec_lvsl(int __a,const float * __b)4232 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
4233                                                              const float *__b) {
4234   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4235 }
4236 #endif
4237 
4238 /* vec_lvsr */
4239 
4240 #ifdef __LITTLE_ENDIAN__
4241 static __inline__ vector unsigned char __ATTRS_o_ai
4242     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const signed char * __b)4243 loads/stores"))) vec_lvsr(int __a, const signed char *__b) {
4244   vector unsigned char mask =
4245       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4246   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4247                                   7,  6,  5,  4,  3,  2,  1, 0};
4248   return vec_perm(mask, mask, reverse);
4249 }
4250 #else
4251 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const signed char * __b)4252 vec_lvsr(int __a, const signed char *__b) {
4253   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4254 }
4255 #endif
4256 
4257 #ifdef __LITTLE_ENDIAN__
4258 static __inline__ vector unsigned char __ATTRS_o_ai
4259     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const unsigned char * __b)4260 loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) {
4261   vector unsigned char mask =
4262       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4263   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4264                                   7,  6,  5,  4,  3,  2,  1, 0};
4265   return vec_perm(mask, mask, reverse);
4266 }
4267 #else
4268 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const unsigned char * __b)4269 vec_lvsr(int __a, const unsigned char *__b) {
4270   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4271 }
4272 #endif
4273 
4274 #ifdef __LITTLE_ENDIAN__
4275 static __inline__ vector unsigned char __ATTRS_o_ai
4276     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const short * __b)4277 loads/stores"))) vec_lvsr(int __a, const short *__b) {
4278   vector unsigned char mask =
4279       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4280   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4281                                   7,  6,  5,  4,  3,  2,  1, 0};
4282   return vec_perm(mask, mask, reverse);
4283 }
4284 #else
vec_lvsr(int __a,const short * __b)4285 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
4286                                                              const short *__b) {
4287   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4288 }
4289 #endif
4290 
4291 #ifdef __LITTLE_ENDIAN__
4292 static __inline__ vector unsigned char __ATTRS_o_ai
4293     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const unsigned short * __b)4294 loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) {
4295   vector unsigned char mask =
4296       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4297   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4298                                   7,  6,  5,  4,  3,  2,  1, 0};
4299   return vec_perm(mask, mask, reverse);
4300 }
4301 #else
4302 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const unsigned short * __b)4303 vec_lvsr(int __a, const unsigned short *__b) {
4304   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4305 }
4306 #endif
4307 
4308 #ifdef __LITTLE_ENDIAN__
4309 static __inline__ vector unsigned char __ATTRS_o_ai
4310     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const int * __b)4311 loads/stores"))) vec_lvsr(int __a, const int *__b) {
4312   vector unsigned char mask =
4313       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4314   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4315                                   7,  6,  5,  4,  3,  2,  1, 0};
4316   return vec_perm(mask, mask, reverse);
4317 }
4318 #else
vec_lvsr(int __a,const int * __b)4319 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
4320                                                              const int *__b) {
4321   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4322 }
4323 #endif
4324 
4325 #ifdef __LITTLE_ENDIAN__
4326 static __inline__ vector unsigned char __ATTRS_o_ai
4327     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const unsigned int * __b)4328 loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) {
4329   vector unsigned char mask =
4330       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4331   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4332                                   7,  6,  5,  4,  3,  2,  1, 0};
4333   return vec_perm(mask, mask, reverse);
4334 }
4335 #else
4336 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const unsigned int * __b)4337 vec_lvsr(int __a, const unsigned int *__b) {
4338   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4339 }
4340 #endif
4341 
4342 #ifdef __LITTLE_ENDIAN__
4343 static __inline__ vector unsigned char __ATTRS_o_ai
4344     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const float * __b)4345 loads/stores"))) vec_lvsr(int __a, const float *__b) {
4346   vector unsigned char mask =
4347       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4348   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4349                                   7,  6,  5,  4,  3,  2,  1, 0};
4350   return vec_perm(mask, mask, reverse);
4351 }
4352 #else
vec_lvsr(int __a,const float * __b)4353 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
4354                                                              const float *__b) {
4355   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4356 }
4357 #endif
4358 
4359 /* vec_madd */
4360 static __inline__ vector signed short __ATTRS_o_ai
4361 vec_mladd(vector signed short, vector signed short, vector signed short);
4362 static __inline__ vector signed short __ATTRS_o_ai
4363 vec_mladd(vector signed short, vector unsigned short, vector unsigned short);
4364 static __inline__ vector signed short __ATTRS_o_ai
4365 vec_mladd(vector unsigned short, vector signed short, vector signed short);
4366 static __inline__ vector unsigned short __ATTRS_o_ai
4367 vec_mladd(vector unsigned short, vector unsigned short, vector unsigned short);
4368 
vec_madd(vector signed short __a,vector signed short __b,vector signed short __c)4369 static __inline__ vector signed short __ATTRS_o_ai vec_madd(
4370     vector signed short __a, vector signed short __b, vector signed short __c) {
4371   return vec_mladd(__a, __b, __c);
4372 }
4373 
4374 static __inline__ vector signed short __ATTRS_o_ai
vec_madd(vector signed short __a,vector unsigned short __b,vector unsigned short __c)4375 vec_madd(vector signed short __a, vector unsigned short __b,
4376          vector unsigned short __c) {
4377   return vec_mladd(__a, __b, __c);
4378 }
4379 
4380 static __inline__ vector signed short __ATTRS_o_ai
vec_madd(vector unsigned short __a,vector signed short __b,vector signed short __c)4381 vec_madd(vector unsigned short __a, vector signed short __b,
4382          vector signed short __c) {
4383   return vec_mladd(__a, __b, __c);
4384 }
4385 
4386 static __inline__ vector unsigned short __ATTRS_o_ai
vec_madd(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)4387 vec_madd(vector unsigned short __a, vector unsigned short __b,
4388          vector unsigned short __c) {
4389   return vec_mladd(__a, __b, __c);
4390 }
4391 
vec_madd(vector float __a,vector float __b,vector float __c)4392 static __inline__ vector float __ATTRS_o_ai vec_madd(vector float __a,
4393                                                      vector float __b,
4394                                                      vector float __c) {
4395 #ifdef __VSX__
4396   return __builtin_vsx_xvmaddasp(__a, __b, __c);
4397 #else
4398   return __builtin_altivec_vmaddfp(__a, __b, __c);
4399 #endif
4400 }
4401 
4402 #ifdef __VSX__
vec_madd(vector double __a,vector double __b,vector double __c)4403 static __inline__ vector double __ATTRS_o_ai vec_madd(vector double __a,
4404                                                       vector double __b,
4405                                                       vector double __c) {
4406   return __builtin_vsx_xvmaddadp(__a, __b, __c);
4407 }
4408 #endif
4409 
4410 /* vec_vmaddfp */
4411 
4412 static __inline__ vector float __attribute__((__always_inline__))
vec_vmaddfp(vector float __a,vector float __b,vector float __c)4413 vec_vmaddfp(vector float __a, vector float __b, vector float __c) {
4414   return __builtin_altivec_vmaddfp(__a, __b, __c);
4415 }
4416 
4417 /* vec_madds */
4418 
4419 static __inline__ vector signed short __attribute__((__always_inline__))
vec_madds(vector signed short __a,vector signed short __b,vector signed short __c)4420 vec_madds(vector signed short __a, vector signed short __b,
4421           vector signed short __c) {
4422   return __builtin_altivec_vmhaddshs(__a, __b, __c);
4423 }
4424 
4425 /* vec_vmhaddshs */
4426 static __inline__ vector signed short __attribute__((__always_inline__))
vec_vmhaddshs(vector signed short __a,vector signed short __b,vector signed short __c)4427 vec_vmhaddshs(vector signed short __a, vector signed short __b,
4428               vector signed short __c) {
4429   return __builtin_altivec_vmhaddshs(__a, __b, __c);
4430 }
4431 
4432 /* vec_msub */
4433 
4434 #ifdef __VSX__
vec_msub(vector float __a,vector float __b,vector float __c)4435 static __inline__ vector float __ATTRS_o_ai vec_msub(vector float __a,
4436                                                      vector float __b,
4437                                                      vector float __c) {
4438   return __builtin_vsx_xvmsubasp(__a, __b, __c);
4439 }
4440 
vec_msub(vector double __a,vector double __b,vector double __c)4441 static __inline__ vector double __ATTRS_o_ai vec_msub(vector double __a,
4442                                                       vector double __b,
4443                                                       vector double __c) {
4444   return __builtin_vsx_xvmsubadp(__a, __b, __c);
4445 }
4446 #endif
4447 
4448 /* vec_max */
4449 
4450 static __inline__ vector signed char __ATTRS_o_ai
vec_max(vector signed char __a,vector signed char __b)4451 vec_max(vector signed char __a, vector signed char __b) {
4452   return __builtin_altivec_vmaxsb(__a, __b);
4453 }
4454 
4455 static __inline__ vector signed char __ATTRS_o_ai
vec_max(vector bool char __a,vector signed char __b)4456 vec_max(vector bool char __a, vector signed char __b) {
4457   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
4458 }
4459 
4460 static __inline__ vector signed char __ATTRS_o_ai
vec_max(vector signed char __a,vector bool char __b)4461 vec_max(vector signed char __a, vector bool char __b) {
4462   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
4463 }
4464 
4465 static __inline__ vector unsigned char __ATTRS_o_ai
vec_max(vector unsigned char __a,vector unsigned char __b)4466 vec_max(vector unsigned char __a, vector unsigned char __b) {
4467   return __builtin_altivec_vmaxub(__a, __b);
4468 }
4469 
4470 static __inline__ vector unsigned char __ATTRS_o_ai
vec_max(vector bool char __a,vector unsigned char __b)4471 vec_max(vector bool char __a, vector unsigned char __b) {
4472   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
4473 }
4474 
4475 static __inline__ vector unsigned char __ATTRS_o_ai
vec_max(vector unsigned char __a,vector bool char __b)4476 vec_max(vector unsigned char __a, vector bool char __b) {
4477   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
4478 }
4479 
vec_max(vector short __a,vector short __b)4480 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
4481                                                     vector short __b) {
4482   return __builtin_altivec_vmaxsh(__a, __b);
4483 }
4484 
vec_max(vector bool short __a,vector short __b)4485 static __inline__ vector short __ATTRS_o_ai vec_max(vector bool short __a,
4486                                                     vector short __b) {
4487   return __builtin_altivec_vmaxsh((vector short)__a, __b);
4488 }
4489 
vec_max(vector short __a,vector bool short __b)4490 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
4491                                                     vector bool short __b) {
4492   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
4493 }
4494 
4495 static __inline__ vector unsigned short __ATTRS_o_ai
vec_max(vector unsigned short __a,vector unsigned short __b)4496 vec_max(vector unsigned short __a, vector unsigned short __b) {
4497   return __builtin_altivec_vmaxuh(__a, __b);
4498 }
4499 
4500 static __inline__ vector unsigned short __ATTRS_o_ai
vec_max(vector bool short __a,vector unsigned short __b)4501 vec_max(vector bool short __a, vector unsigned short __b) {
4502   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
4503 }
4504 
4505 static __inline__ vector unsigned short __ATTRS_o_ai
vec_max(vector unsigned short __a,vector bool short __b)4506 vec_max(vector unsigned short __a, vector bool short __b) {
4507   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
4508 }
4509 
vec_max(vector int __a,vector int __b)4510 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
4511                                                   vector int __b) {
4512   return __builtin_altivec_vmaxsw(__a, __b);
4513 }
4514 
vec_max(vector bool int __a,vector int __b)4515 static __inline__ vector int __ATTRS_o_ai vec_max(vector bool int __a,
4516                                                   vector int __b) {
4517   return __builtin_altivec_vmaxsw((vector int)__a, __b);
4518 }
4519 
vec_max(vector int __a,vector bool int __b)4520 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
4521                                                   vector bool int __b) {
4522   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
4523 }
4524 
4525 static __inline__ vector unsigned int __ATTRS_o_ai
vec_max(vector unsigned int __a,vector unsigned int __b)4526 vec_max(vector unsigned int __a, vector unsigned int __b) {
4527   return __builtin_altivec_vmaxuw(__a, __b);
4528 }
4529 
4530 static __inline__ vector unsigned int __ATTRS_o_ai
vec_max(vector bool int __a,vector unsigned int __b)4531 vec_max(vector bool int __a, vector unsigned int __b) {
4532   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
4533 }
4534 
4535 static __inline__ vector unsigned int __ATTRS_o_ai
vec_max(vector unsigned int __a,vector bool int __b)4536 vec_max(vector unsigned int __a, vector bool int __b) {
4537   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
4538 }
4539 
4540 #ifdef __POWER8_VECTOR__
4541 static __inline__ vector signed long long __ATTRS_o_ai
vec_max(vector signed long long __a,vector signed long long __b)4542 vec_max(vector signed long long __a, vector signed long long __b) {
4543   return __builtin_altivec_vmaxsd(__a, __b);
4544 }
4545 
4546 static __inline__ vector signed long long __ATTRS_o_ai
vec_max(vector bool long long __a,vector signed long long __b)4547 vec_max(vector bool long long __a, vector signed long long __b) {
4548   return __builtin_altivec_vmaxsd((vector signed long long)__a, __b);
4549 }
4550 
4551 static __inline__ vector signed long long __ATTRS_o_ai
vec_max(vector signed long long __a,vector bool long long __b)4552 vec_max(vector signed long long __a, vector bool long long __b) {
4553   return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b);
4554 }
4555 
4556 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_max(vector unsigned long long __a,vector unsigned long long __b)4557 vec_max(vector unsigned long long __a, vector unsigned long long __b) {
4558   return __builtin_altivec_vmaxud(__a, __b);
4559 }
4560 
4561 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_max(vector bool long long __a,vector unsigned long long __b)4562 vec_max(vector bool long long __a, vector unsigned long long __b) {
4563   return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b);
4564 }
4565 
4566 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_max(vector unsigned long long __a,vector bool long long __b)4567 vec_max(vector unsigned long long __a, vector bool long long __b) {
4568   return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b);
4569 }
4570 #endif
4571 
vec_max(vector float __a,vector float __b)4572 static __inline__ vector float __ATTRS_o_ai vec_max(vector float __a,
4573                                                     vector float __b) {
4574 #ifdef __VSX__
4575   return __builtin_vsx_xvmaxsp(__a, __b);
4576 #else
4577   return __builtin_altivec_vmaxfp(__a, __b);
4578 #endif
4579 }
4580 
4581 #ifdef __VSX__
vec_max(vector double __a,vector double __b)4582 static __inline__ vector double __ATTRS_o_ai vec_max(vector double __a,
4583                                                      vector double __b) {
4584   return __builtin_vsx_xvmaxdp(__a, __b);
4585 }
4586 #endif
4587 
4588 /* vec_vmaxsb */
4589 
4590 static __inline__ vector signed char __ATTRS_o_ai
vec_vmaxsb(vector signed char __a,vector signed char __b)4591 vec_vmaxsb(vector signed char __a, vector signed char __b) {
4592   return __builtin_altivec_vmaxsb(__a, __b);
4593 }
4594 
4595 static __inline__ vector signed char __ATTRS_o_ai
vec_vmaxsb(vector bool char __a,vector signed char __b)4596 vec_vmaxsb(vector bool char __a, vector signed char __b) {
4597   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
4598 }
4599 
4600 static __inline__ vector signed char __ATTRS_o_ai
vec_vmaxsb(vector signed char __a,vector bool char __b)4601 vec_vmaxsb(vector signed char __a, vector bool char __b) {
4602   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
4603 }
4604 
4605 /* vec_vmaxub */
4606 
4607 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmaxub(vector unsigned char __a,vector unsigned char __b)4608 vec_vmaxub(vector unsigned char __a, vector unsigned char __b) {
4609   return __builtin_altivec_vmaxub(__a, __b);
4610 }
4611 
4612 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmaxub(vector bool char __a,vector unsigned char __b)4613 vec_vmaxub(vector bool char __a, vector unsigned char __b) {
4614   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
4615 }
4616 
4617 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmaxub(vector unsigned char __a,vector bool char __b)4618 vec_vmaxub(vector unsigned char __a, vector bool char __b) {
4619   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
4620 }
4621 
4622 /* vec_vmaxsh */
4623 
vec_vmaxsh(vector short __a,vector short __b)4624 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
4625                                                        vector short __b) {
4626   return __builtin_altivec_vmaxsh(__a, __b);
4627 }
4628 
vec_vmaxsh(vector bool short __a,vector short __b)4629 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a,
4630                                                        vector short __b) {
4631   return __builtin_altivec_vmaxsh((vector short)__a, __b);
4632 }
4633 
vec_vmaxsh(vector short __a,vector bool short __b)4634 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
4635                                                        vector bool short __b) {
4636   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
4637 }
4638 
4639 /* vec_vmaxuh */
4640 
4641 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmaxuh(vector unsigned short __a,vector unsigned short __b)4642 vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) {
4643   return __builtin_altivec_vmaxuh(__a, __b);
4644 }
4645 
4646 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmaxuh(vector bool short __a,vector unsigned short __b)4647 vec_vmaxuh(vector bool short __a, vector unsigned short __b) {
4648   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
4649 }
4650 
4651 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmaxuh(vector unsigned short __a,vector bool short __b)4652 vec_vmaxuh(vector unsigned short __a, vector bool short __b) {
4653   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
4654 }
4655 
4656 /* vec_vmaxsw */
4657 
vec_vmaxsw(vector int __a,vector int __b)4658 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
4659                                                      vector int __b) {
4660   return __builtin_altivec_vmaxsw(__a, __b);
4661 }
4662 
vec_vmaxsw(vector bool int __a,vector int __b)4663 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a,
4664                                                      vector int __b) {
4665   return __builtin_altivec_vmaxsw((vector int)__a, __b);
4666 }
4667 
vec_vmaxsw(vector int __a,vector bool int __b)4668 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
4669                                                      vector bool int __b) {
4670   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
4671 }
4672 
4673 /* vec_vmaxuw */
4674 
4675 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmaxuw(vector unsigned int __a,vector unsigned int __b)4676 vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) {
4677   return __builtin_altivec_vmaxuw(__a, __b);
4678 }
4679 
4680 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmaxuw(vector bool int __a,vector unsigned int __b)4681 vec_vmaxuw(vector bool int __a, vector unsigned int __b) {
4682   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
4683 }
4684 
4685 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmaxuw(vector unsigned int __a,vector bool int __b)4686 vec_vmaxuw(vector unsigned int __a, vector bool int __b) {
4687   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
4688 }
4689 
4690 /* vec_vmaxfp */
4691 
4692 static __inline__ vector float __attribute__((__always_inline__))
vec_vmaxfp(vector float __a,vector float __b)4693 vec_vmaxfp(vector float __a, vector float __b) {
4694 #ifdef __VSX__
4695   return __builtin_vsx_xvmaxsp(__a, __b);
4696 #else
4697   return __builtin_altivec_vmaxfp(__a, __b);
4698 #endif
4699 }
4700 
4701 /* vec_mergeh */
4702 
4703 static __inline__ vector signed char __ATTRS_o_ai
vec_mergeh(vector signed char __a,vector signed char __b)4704 vec_mergeh(vector signed char __a, vector signed char __b) {
4705   return vec_perm(__a, __b,
4706                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4707                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4708                                          0x06, 0x16, 0x07, 0x17));
4709 }
4710 
4711 static __inline__ vector unsigned char __ATTRS_o_ai
vec_mergeh(vector unsigned char __a,vector unsigned char __b)4712 vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
4713   return vec_perm(__a, __b,
4714                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4715                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4716                                          0x06, 0x16, 0x07, 0x17));
4717 }
4718 
4719 static __inline__ vector bool char __ATTRS_o_ai
vec_mergeh(vector bool char __a,vector bool char __b)4720 vec_mergeh(vector bool char __a, vector bool char __b) {
4721   return vec_perm(__a, __b,
4722                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4723                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4724                                          0x06, 0x16, 0x07, 0x17));
4725 }
4726 
vec_mergeh(vector short __a,vector short __b)4727 static __inline__ vector short __ATTRS_o_ai vec_mergeh(vector short __a,
4728                                                        vector short __b) {
4729   return vec_perm(__a, __b,
4730                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4731                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4732                                          0x06, 0x07, 0x16, 0x17));
4733 }
4734 
4735 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mergeh(vector unsigned short __a,vector unsigned short __b)4736 vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
4737   return vec_perm(__a, __b,
4738                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4739                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4740                                          0x06, 0x07, 0x16, 0x17));
4741 }
4742 
4743 static __inline__ vector bool short __ATTRS_o_ai
vec_mergeh(vector bool short __a,vector bool short __b)4744 vec_mergeh(vector bool short __a, vector bool short __b) {
4745   return vec_perm(__a, __b,
4746                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4747                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4748                                          0x06, 0x07, 0x16, 0x17));
4749 }
4750 
vec_mergeh(vector pixel __a,vector pixel __b)4751 static __inline__ vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a,
4752                                                        vector pixel __b) {
4753   return vec_perm(__a, __b,
4754                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4755                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4756                                          0x06, 0x07, 0x16, 0x17));
4757 }
4758 
vec_mergeh(vector int __a,vector int __b)4759 static __inline__ vector int __ATTRS_o_ai vec_mergeh(vector int __a,
4760                                                      vector int __b) {
4761   return vec_perm(__a, __b,
4762                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4763                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4764                                          0x14, 0x15, 0x16, 0x17));
4765 }
4766 
4767 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergeh(vector unsigned int __a,vector unsigned int __b)4768 vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
4769   return vec_perm(__a, __b,
4770                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4771                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4772                                          0x14, 0x15, 0x16, 0x17));
4773 }
4774 
vec_mergeh(vector bool int __a,vector bool int __b)4775 static __inline__ vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a,
4776                                                           vector bool int __b) {
4777   return vec_perm(__a, __b,
4778                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4779                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4780                                          0x14, 0x15, 0x16, 0x17));
4781 }
4782 
vec_mergeh(vector float __a,vector float __b)4783 static __inline__ vector float __ATTRS_o_ai vec_mergeh(vector float __a,
4784                                                        vector float __b) {
4785   return vec_perm(__a, __b,
4786                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4787                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4788                                          0x14, 0x15, 0x16, 0x17));
4789 }
4790 
4791 #ifdef __VSX__
4792 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeh(vector signed long long __a,vector signed long long __b)4793 vec_mergeh(vector signed long long __a, vector signed long long __b) {
4794   return vec_perm(__a, __b,
4795                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4796                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4797                                          0x14, 0x15, 0x16, 0x17));
4798 }
4799 
4800 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeh(vector signed long long __a,vector bool long long __b)4801 vec_mergeh(vector signed long long __a, vector bool long long __b) {
4802   return vec_perm(__a, (vector signed long long)__b,
4803                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4804                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4805                                          0x14, 0x15, 0x16, 0x17));
4806 }
4807 
4808 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector signed long long __b)4809 vec_mergeh(vector bool long long __a, vector signed long long __b) {
4810   return vec_perm((vector signed long long)__a, __b,
4811                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4812                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4813                                          0x14, 0x15, 0x16, 0x17));
4814 }
4815 
4816 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeh(vector unsigned long long __a,vector unsigned long long __b)4817 vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
4818   return vec_perm(__a, __b,
4819                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4820                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4821                                          0x14, 0x15, 0x16, 0x17));
4822 }
4823 
4824 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeh(vector unsigned long long __a,vector bool long long __b)4825 vec_mergeh(vector unsigned long long __a, vector bool long long __b) {
4826   return vec_perm(__a, (vector unsigned long long)__b,
4827                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4828                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4829                                          0x14, 0x15, 0x16, 0x17));
4830 }
4831 
4832 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector unsigned long long __b)4833 vec_mergeh(vector bool long long __a, vector unsigned long long __b) {
4834   return vec_perm((vector unsigned long long)__a, __b,
4835                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4836                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4837                                          0x14, 0x15, 0x16, 0x17));
4838 }
4839 
4840 static __inline__ vector bool long long __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector bool long long __b)4841 vec_mergeh(vector bool long long __a, vector bool long long __b) {
4842   return vec_perm(__a, __b,
4843                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4844                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4845                                          0x14, 0x15, 0x16, 0x17));
4846 }
4847 
vec_mergeh(vector double __a,vector double __b)4848 static __inline__ vector double __ATTRS_o_ai vec_mergeh(vector double __a,
4849                                                         vector double __b) {
4850   return vec_perm(__a, __b,
4851                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4852                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4853                                          0x14, 0x15, 0x16, 0x17));
4854 }
4855 static __inline__ vector double __ATTRS_o_ai
vec_mergeh(vector double __a,vector bool long long __b)4856 vec_mergeh(vector double __a, vector bool long long __b) {
4857   return vec_perm(__a, (vector double)__b,
4858                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4859                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4860                                          0x14, 0x15, 0x16, 0x17));
4861 }
4862 static __inline__ vector double __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector double __b)4863 vec_mergeh(vector bool long long __a, vector double __b) {
4864   return vec_perm((vector double)__a, __b,
4865                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4866                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4867                                          0x14, 0x15, 0x16, 0x17));
4868 }
4869 #endif
4870 
4871 /* vec_vmrghb */
4872 
4873 #define __builtin_altivec_vmrghb vec_vmrghb
4874 
4875 static __inline__ vector signed char __ATTRS_o_ai
vec_vmrghb(vector signed char __a,vector signed char __b)4876 vec_vmrghb(vector signed char __a, vector signed char __b) {
4877   return vec_perm(__a, __b,
4878                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4879                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4880                                          0x06, 0x16, 0x07, 0x17));
4881 }
4882 
4883 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmrghb(vector unsigned char __a,vector unsigned char __b)4884 vec_vmrghb(vector unsigned char __a, vector unsigned char __b) {
4885   return vec_perm(__a, __b,
4886                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4887                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4888                                          0x06, 0x16, 0x07, 0x17));
4889 }
4890 
4891 static __inline__ vector bool char __ATTRS_o_ai
vec_vmrghb(vector bool char __a,vector bool char __b)4892 vec_vmrghb(vector bool char __a, vector bool char __b) {
4893   return vec_perm(__a, __b,
4894                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4895                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4896                                          0x06, 0x16, 0x07, 0x17));
4897 }
4898 
4899 /* vec_vmrghh */
4900 
4901 #define __builtin_altivec_vmrghh vec_vmrghh
4902 
vec_vmrghh(vector short __a,vector short __b)4903 static __inline__ vector short __ATTRS_o_ai vec_vmrghh(vector short __a,
4904                                                        vector short __b) {
4905   return vec_perm(__a, __b,
4906                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4907                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4908                                          0x06, 0x07, 0x16, 0x17));
4909 }
4910 
4911 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmrghh(vector unsigned short __a,vector unsigned short __b)4912 vec_vmrghh(vector unsigned short __a, vector unsigned short __b) {
4913   return vec_perm(__a, __b,
4914                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4915                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4916                                          0x06, 0x07, 0x16, 0x17));
4917 }
4918 
4919 static __inline__ vector bool short __ATTRS_o_ai
vec_vmrghh(vector bool short __a,vector bool short __b)4920 vec_vmrghh(vector bool short __a, vector bool short __b) {
4921   return vec_perm(__a, __b,
4922                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4923                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4924                                          0x06, 0x07, 0x16, 0x17));
4925 }
4926 
vec_vmrghh(vector pixel __a,vector pixel __b)4927 static __inline__ vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a,
4928                                                        vector pixel __b) {
4929   return vec_perm(__a, __b,
4930                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4931                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4932                                          0x06, 0x07, 0x16, 0x17));
4933 }
4934 
4935 /* vec_vmrghw */
4936 
4937 #define __builtin_altivec_vmrghw vec_vmrghw
4938 
vec_vmrghw(vector int __a,vector int __b)4939 static __inline__ vector int __ATTRS_o_ai vec_vmrghw(vector int __a,
4940                                                      vector int __b) {
4941   return vec_perm(__a, __b,
4942                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4943                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4944                                          0x14, 0x15, 0x16, 0x17));
4945 }
4946 
4947 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmrghw(vector unsigned int __a,vector unsigned int __b)4948 vec_vmrghw(vector unsigned int __a, vector unsigned int __b) {
4949   return vec_perm(__a, __b,
4950                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4951                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4952                                          0x14, 0x15, 0x16, 0x17));
4953 }
4954 
vec_vmrghw(vector bool int __a,vector bool int __b)4955 static __inline__ vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a,
4956                                                           vector bool int __b) {
4957   return vec_perm(__a, __b,
4958                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4959                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4960                                          0x14, 0x15, 0x16, 0x17));
4961 }
4962 
vec_vmrghw(vector float __a,vector float __b)4963 static __inline__ vector float __ATTRS_o_ai vec_vmrghw(vector float __a,
4964                                                        vector float __b) {
4965   return vec_perm(__a, __b,
4966                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4967                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4968                                          0x14, 0x15, 0x16, 0x17));
4969 }
4970 
4971 /* vec_mergel */
4972 
4973 static __inline__ vector signed char __ATTRS_o_ai
vec_mergel(vector signed char __a,vector signed char __b)4974 vec_mergel(vector signed char __a, vector signed char __b) {
4975   return vec_perm(__a, __b,
4976                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4977                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4978                                          0x0E, 0x1E, 0x0F, 0x1F));
4979 }
4980 
4981 static __inline__ vector unsigned char __ATTRS_o_ai
vec_mergel(vector unsigned char __a,vector unsigned char __b)4982 vec_mergel(vector unsigned char __a, vector unsigned char __b) {
4983   return vec_perm(__a, __b,
4984                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4985                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4986                                          0x0E, 0x1E, 0x0F, 0x1F));
4987 }
4988 
4989 static __inline__ vector bool char __ATTRS_o_ai
vec_mergel(vector bool char __a,vector bool char __b)4990 vec_mergel(vector bool char __a, vector bool char __b) {
4991   return vec_perm(__a, __b,
4992                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4993                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4994                                          0x0E, 0x1E, 0x0F, 0x1F));
4995 }
4996 
vec_mergel(vector short __a,vector short __b)4997 static __inline__ vector short __ATTRS_o_ai vec_mergel(vector short __a,
4998                                                        vector short __b) {
4999   return vec_perm(__a, __b,
5000                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
5001                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
5002                                          0x0E, 0x0F, 0x1E, 0x1F));
5003 }
5004 
5005 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mergel(vector unsigned short __a,vector unsigned short __b)5006 vec_mergel(vector unsigned short __a, vector unsigned short __b) {
5007   return vec_perm(__a, __b,
5008                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
5009                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
5010                                          0x0E, 0x0F, 0x1E, 0x1F));
5011 }
5012 
5013 static __inline__ vector bool short __ATTRS_o_ai
vec_mergel(vector bool short __a,vector bool short __b)5014 vec_mergel(vector bool short __a, vector bool short __b) {
5015   return vec_perm(__a, __b,
5016                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
5017                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
5018                                          0x0E, 0x0F, 0x1E, 0x1F));
5019 }
5020 
vec_mergel(vector pixel __a,vector pixel __b)5021 static __inline__ vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a,
5022                                                        vector pixel __b) {
5023   return vec_perm(__a, __b,
5024                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
5025                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
5026                                          0x0E, 0x0F, 0x1E, 0x1F));
5027 }
5028 
vec_mergel(vector int __a,vector int __b)5029 static __inline__ vector int __ATTRS_o_ai vec_mergel(vector int __a,
5030                                                      vector int __b) {
5031   return vec_perm(__a, __b,
5032                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5033                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5034                                          0x1C, 0x1D, 0x1E, 0x1F));
5035 }
5036 
5037 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergel(vector unsigned int __a,vector unsigned int __b)5038 vec_mergel(vector unsigned int __a, vector unsigned int __b) {
5039   return vec_perm(__a, __b,
5040                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5041                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5042                                          0x1C, 0x1D, 0x1E, 0x1F));
5043 }
5044 
vec_mergel(vector bool int __a,vector bool int __b)5045 static __inline__ vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a,
5046                                                           vector bool int __b) {
5047   return vec_perm(__a, __b,
5048                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5049                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5050                                          0x1C, 0x1D, 0x1E, 0x1F));
5051 }
5052 
vec_mergel(vector float __a,vector float __b)5053 static __inline__ vector float __ATTRS_o_ai vec_mergel(vector float __a,
5054                                                        vector float __b) {
5055   return vec_perm(__a, __b,
5056                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5057                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5058                                          0x1C, 0x1D, 0x1E, 0x1F));
5059 }
5060 
5061 #ifdef __VSX__
5062 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergel(vector signed long long __a,vector signed long long __b)5063 vec_mergel(vector signed long long __a, vector signed long long __b) {
5064   return vec_perm(__a, __b,
5065                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5066                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5067                                          0x1C, 0x1D, 0x1E, 0x1F));
5068 }
5069 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergel(vector signed long long __a,vector bool long long __b)5070 vec_mergel(vector signed long long __a, vector bool long long __b) {
5071   return vec_perm(__a, (vector signed long long)__b,
5072                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5073                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5074                                          0x1C, 0x1D, 0x1E, 0x1F));
5075 }
5076 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector signed long long __b)5077 vec_mergel(vector bool long long __a, vector signed long long __b) {
5078   return vec_perm((vector signed long long)__a, __b,
5079                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5080                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5081                                          0x1C, 0x1D, 0x1E, 0x1F));
5082 }
5083 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergel(vector unsigned long long __a,vector unsigned long long __b)5084 vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
5085   return vec_perm(__a, __b,
5086                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5087                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5088                                          0x1C, 0x1D, 0x1E, 0x1F));
5089 }
5090 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergel(vector unsigned long long __a,vector bool long long __b)5091 vec_mergel(vector unsigned long long __a, vector bool long long __b) {
5092   return vec_perm(__a, (vector unsigned long long)__b,
5093                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5094                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5095                                          0x1C, 0x1D, 0x1E, 0x1F));
5096 }
5097 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector unsigned long long __b)5098 vec_mergel(vector bool long long __a, vector unsigned long long __b) {
5099   return vec_perm((vector unsigned long long)__a, __b,
5100                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5101                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5102                                          0x1C, 0x1D, 0x1E, 0x1F));
5103 }
5104 static __inline__ vector bool long long __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector bool long long __b)5105 vec_mergel(vector bool long long __a, vector bool long long __b) {
5106   return vec_perm(__a, __b,
5107                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5108                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5109                                          0x1C, 0x1D, 0x1E, 0x1F));
5110 }
vec_mergel(vector double __a,vector double __b)5111 static __inline__ vector double __ATTRS_o_ai vec_mergel(vector double __a,
5112                                                         vector double __b) {
5113   return vec_perm(__a, __b,
5114                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5115                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5116                                          0x1C, 0x1D, 0x1E, 0x1F));
5117 }
5118 static __inline__ vector double __ATTRS_o_ai
vec_mergel(vector double __a,vector bool long long __b)5119 vec_mergel(vector double __a, vector bool long long __b) {
5120   return vec_perm(__a, (vector double)__b,
5121                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5122                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5123                                          0x1C, 0x1D, 0x1E, 0x1F));
5124 }
5125 static __inline__ vector double __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector double __b)5126 vec_mergel(vector bool long long __a, vector double __b) {
5127   return vec_perm((vector double)__a, __b,
5128                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
5129                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
5130                                          0x1C, 0x1D, 0x1E, 0x1F));
5131 }
5132 #endif
5133 
5134 /* vec_vmrglb */
5135 
5136 #define __builtin_altivec_vmrglb vec_vmrglb
5137 
5138 static __inline__ vector signed char __ATTRS_o_ai
vec_vmrglb(vector signed char __a,vector signed char __b)5139 vec_vmrglb(vector signed char __a, vector signed char __b) {
5140   return vec_perm(__a, __b,
5141                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
5142                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
5143                                          0x0E, 0x1E, 0x0F, 0x1F));
5144 }
5145 
5146 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmrglb(vector unsigned char __a,vector unsigned char __b)5147 vec_vmrglb(vector unsigned char __a, vector unsigned char __b) {
5148   return vec_perm(__a, __b,
5149                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
5150                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
5151                                          0x0E, 0x1E, 0x0F, 0x1F));
5152 }
5153 
5154 static __inline__ vector bool char __ATTRS_o_ai
vec_vmrglb(vector bool char __a,vector bool char __b)5155 vec_vmrglb(vector bool char __a, vector bool char __b) {
5156   return vec_perm(__a, __b,
5157                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
5158                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
5159                                          0x0E, 0x1E, 0x0F, 0x1F));
5160 }
5161 
5162 /* vec_vmrglh */
5163 
5164 #define __builtin_altivec_vmrglh vec_vmrglh
5165 
vec_vmrglh(vector short __a,vector short __b)5166 static __inline__ vector short __ATTRS_o_ai vec_vmrglh(vector short __a,
5167                                                        vector short __b) {
5168   return vec_perm(__a, __b,
5169                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
5170                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
5171                                          0x0E, 0x0F, 0x1E, 0x1F));
5172 }
5173 
5174 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmrglh(vector unsigned short __a,vector unsigned short __b)5175 vec_vmrglh(vector unsigned short __a, vector unsigned short __b) {
5176   return vec_perm(__a, __b,
5177                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
5178                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
5179                                          0x0E, 0x0F, 0x1E, 0x1F));
5180 }
5181 
5182 static __inline__ vector bool short __ATTRS_o_ai
vec_vmrglh(vector bool short __a,vector bool short __b)5183 vec_vmrglh(vector bool short __a, vector bool short __b) {
5184   return vec_perm(__a, __b,
5185                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
5186                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
5187                                          0x0E, 0x0F, 0x1E, 0x1F));
5188 }
5189 
vec_vmrglh(vector pixel __a,vector pixel __b)5190 static __inline__ vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a,
5191                                                        vector pixel __b) {
5192   return vec_perm(__a, __b,
5193                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
5194                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
5195                                          0x0E, 0x0F, 0x1E, 0x1F));
5196 }
5197 
5198 /* vec_vmrglw */
5199 
5200 #define __builtin_altivec_vmrglw vec_vmrglw
5201 
vec_vmrglw(vector int __a,vector int __b)5202 static __inline__ vector int __ATTRS_o_ai vec_vmrglw(vector int __a,
5203                                                      vector int __b) {
5204   return vec_perm(__a, __b,
5205                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5206                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5207                                          0x1C, 0x1D, 0x1E, 0x1F));
5208 }
5209 
5210 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmrglw(vector unsigned int __a,vector unsigned int __b)5211 vec_vmrglw(vector unsigned int __a, vector unsigned int __b) {
5212   return vec_perm(__a, __b,
5213                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5214                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5215                                          0x1C, 0x1D, 0x1E, 0x1F));
5216 }
5217 
vec_vmrglw(vector bool int __a,vector bool int __b)5218 static __inline__ vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a,
5219                                                           vector bool int __b) {
5220   return vec_perm(__a, __b,
5221                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5222                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5223                                          0x1C, 0x1D, 0x1E, 0x1F));
5224 }
5225 
vec_vmrglw(vector float __a,vector float __b)5226 static __inline__ vector float __ATTRS_o_ai vec_vmrglw(vector float __a,
5227                                                        vector float __b) {
5228   return vec_perm(__a, __b,
5229                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5230                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5231                                          0x1C, 0x1D, 0x1E, 0x1F));
5232 }
5233 
5234 #ifdef __POWER8_VECTOR__
5235 /* vec_mergee */
5236 
vec_mergee(vector bool int __a,vector bool int __b)5237 static __inline__ vector bool int __ATTRS_o_ai vec_mergee(vector bool int __a,
5238                                                           vector bool int __b) {
5239   return vec_perm(__a, __b,
5240                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5241                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5242                                          0x18, 0x19, 0x1A, 0x1B));
5243 }
5244 
5245 static __inline__ vector signed int __ATTRS_o_ai
vec_mergee(vector signed int __a,vector signed int __b)5246 vec_mergee(vector signed int __a, vector signed int __b) {
5247   return vec_perm(__a, __b,
5248                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5249                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5250                                          0x18, 0x19, 0x1A, 0x1B));
5251 }
5252 
5253 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergee(vector unsigned int __a,vector unsigned int __b)5254 vec_mergee(vector unsigned int __a, vector unsigned int __b) {
5255   return vec_perm(__a, __b,
5256                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5257                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5258                                          0x18, 0x19, 0x1A, 0x1B));
5259 }
5260 
5261 static __inline__ vector bool long long __ATTRS_o_ai
vec_mergee(vector bool long long __a,vector bool long long __b)5262 vec_mergee(vector bool long long __a, vector bool long long __b) {
5263   return vec_mergeh(__a, __b);
5264 }
5265 
5266 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergee(vector signed long long __a,vector signed long long __b)5267 vec_mergee(vector signed long long __a, vector signed long long __b) {
5268   return vec_mergeh(__a, __b);
5269 }
5270 
5271 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergee(vector unsigned long long __a,vector unsigned long long __b)5272 vec_mergee(vector unsigned long long __a, vector unsigned long long __b) {
5273   return vec_mergeh(__a, __b);
5274 }
5275 
5276 static __inline__ vector float __ATTRS_o_ai
vec_mergee(vector float __a,vector float __b)5277 vec_mergee(vector float __a, vector float __b) {
5278   return vec_perm(__a, __b,
5279                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5280                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5281                                          0x18, 0x19, 0x1A, 0x1B));
5282 }
5283 
5284 static __inline__ vector double __ATTRS_o_ai
vec_mergee(vector double __a,vector double __b)5285 vec_mergee(vector double __a, vector double __b) {
5286   return vec_mergeh(__a, __b);
5287 }
5288 
5289 /* vec_mergeo */
5290 
vec_mergeo(vector bool int __a,vector bool int __b)5291 static __inline__ vector bool int __ATTRS_o_ai vec_mergeo(vector bool int __a,
5292                                                           vector bool int __b) {
5293   return vec_perm(__a, __b,
5294                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5295                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5296                                          0x1C, 0x1D, 0x1E, 0x1F));
5297 }
5298 
5299 static __inline__ vector signed int __ATTRS_o_ai
vec_mergeo(vector signed int __a,vector signed int __b)5300 vec_mergeo(vector signed int __a, vector signed int __b) {
5301   return vec_perm(__a, __b,
5302                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5303                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5304                                          0x1C, 0x1D, 0x1E, 0x1F));
5305 }
5306 
5307 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergeo(vector unsigned int __a,vector unsigned int __b)5308 vec_mergeo(vector unsigned int __a, vector unsigned int __b) {
5309   return vec_perm(__a, __b,
5310                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5311                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5312                                          0x1C, 0x1D, 0x1E, 0x1F));
5313 }
5314 
5315 static __inline__ vector bool long long __ATTRS_o_ai
vec_mergeo(vector bool long long __a,vector bool long long __b)5316 vec_mergeo(vector bool long long __a, vector bool long long __b) {
5317   return vec_mergel(__a, __b);
5318 }
5319 
5320 static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeo(vector signed long long __a,vector signed long long __b)5321 vec_mergeo(vector signed long long __a, vector signed long long __b) {
5322   return vec_mergel(__a, __b);
5323 }
5324 
5325 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeo(vector unsigned long long __a,vector unsigned long long __b)5326 vec_mergeo(vector unsigned long long __a, vector unsigned long long __b) {
5327   return vec_mergel(__a, __b);
5328 }
5329 
5330 static __inline__ vector float __ATTRS_o_ai
vec_mergeo(vector float __a,vector float __b)5331 vec_mergeo(vector float __a, vector float __b) {
5332   return vec_perm(__a, __b,
5333                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5334                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5335                                          0x1C, 0x1D, 0x1E, 0x1F));
5336 }
5337 
5338 static __inline__ vector double __ATTRS_o_ai
vec_mergeo(vector double __a,vector double __b)5339 vec_mergeo(vector double __a, vector double __b) {
5340   return vec_mergel(__a, __b);
5341 }
5342 
5343 #endif
5344 
5345 /* vec_mfvscr */
5346 
5347 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_mfvscr(void)5348 vec_mfvscr(void) {
5349   return __builtin_altivec_mfvscr();
5350 }
5351 
5352 /* vec_min */
5353 
5354 static __inline__ vector signed char __ATTRS_o_ai
vec_min(vector signed char __a,vector signed char __b)5355 vec_min(vector signed char __a, vector signed char __b) {
5356   return __builtin_altivec_vminsb(__a, __b);
5357 }
5358 
5359 static __inline__ vector signed char __ATTRS_o_ai
vec_min(vector bool char __a,vector signed char __b)5360 vec_min(vector bool char __a, vector signed char __b) {
5361   return __builtin_altivec_vminsb((vector signed char)__a, __b);
5362 }
5363 
5364 static __inline__ vector signed char __ATTRS_o_ai
vec_min(vector signed char __a,vector bool char __b)5365 vec_min(vector signed char __a, vector bool char __b) {
5366   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
5367 }
5368 
5369 static __inline__ vector unsigned char __ATTRS_o_ai
vec_min(vector unsigned char __a,vector unsigned char __b)5370 vec_min(vector unsigned char __a, vector unsigned char __b) {
5371   return __builtin_altivec_vminub(__a, __b);
5372 }
5373 
5374 static __inline__ vector unsigned char __ATTRS_o_ai
vec_min(vector bool char __a,vector unsigned char __b)5375 vec_min(vector bool char __a, vector unsigned char __b) {
5376   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
5377 }
5378 
5379 static __inline__ vector unsigned char __ATTRS_o_ai
vec_min(vector unsigned char __a,vector bool char __b)5380 vec_min(vector unsigned char __a, vector bool char __b) {
5381   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
5382 }
5383 
vec_min(vector short __a,vector short __b)5384 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
5385                                                     vector short __b) {
5386   return __builtin_altivec_vminsh(__a, __b);
5387 }
5388 
vec_min(vector bool short __a,vector short __b)5389 static __inline__ vector short __ATTRS_o_ai vec_min(vector bool short __a,
5390                                                     vector short __b) {
5391   return __builtin_altivec_vminsh((vector short)__a, __b);
5392 }
5393 
vec_min(vector short __a,vector bool short __b)5394 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
5395                                                     vector bool short __b) {
5396   return __builtin_altivec_vminsh(__a, (vector short)__b);
5397 }
5398 
5399 static __inline__ vector unsigned short __ATTRS_o_ai
vec_min(vector unsigned short __a,vector unsigned short __b)5400 vec_min(vector unsigned short __a, vector unsigned short __b) {
5401   return __builtin_altivec_vminuh(__a, __b);
5402 }
5403 
5404 static __inline__ vector unsigned short __ATTRS_o_ai
vec_min(vector bool short __a,vector unsigned short __b)5405 vec_min(vector bool short __a, vector unsigned short __b) {
5406   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
5407 }
5408 
5409 static __inline__ vector unsigned short __ATTRS_o_ai
vec_min(vector unsigned short __a,vector bool short __b)5410 vec_min(vector unsigned short __a, vector bool short __b) {
5411   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
5412 }
5413 
vec_min(vector int __a,vector int __b)5414 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
5415                                                   vector int __b) {
5416   return __builtin_altivec_vminsw(__a, __b);
5417 }
5418 
vec_min(vector bool int __a,vector int __b)5419 static __inline__ vector int __ATTRS_o_ai vec_min(vector bool int __a,
5420                                                   vector int __b) {
5421   return __builtin_altivec_vminsw((vector int)__a, __b);
5422 }
5423 
vec_min(vector int __a,vector bool int __b)5424 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
5425                                                   vector bool int __b) {
5426   return __builtin_altivec_vminsw(__a, (vector int)__b);
5427 }
5428 
5429 static __inline__ vector unsigned int __ATTRS_o_ai
vec_min(vector unsigned int __a,vector unsigned int __b)5430 vec_min(vector unsigned int __a, vector unsigned int __b) {
5431   return __builtin_altivec_vminuw(__a, __b);
5432 }
5433 
5434 static __inline__ vector unsigned int __ATTRS_o_ai
vec_min(vector bool int __a,vector unsigned int __b)5435 vec_min(vector bool int __a, vector unsigned int __b) {
5436   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
5437 }
5438 
5439 static __inline__ vector unsigned int __ATTRS_o_ai
vec_min(vector unsigned int __a,vector bool int __b)5440 vec_min(vector unsigned int __a, vector bool int __b) {
5441   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
5442 }
5443 
5444 #ifdef __POWER8_VECTOR__
5445 static __inline__ vector signed long long __ATTRS_o_ai
vec_min(vector signed long long __a,vector signed long long __b)5446 vec_min(vector signed long long __a, vector signed long long __b) {
5447   return __builtin_altivec_vminsd(__a, __b);
5448 }
5449 
5450 static __inline__ vector signed long long __ATTRS_o_ai
vec_min(vector bool long long __a,vector signed long long __b)5451 vec_min(vector bool long long __a, vector signed long long __b) {
5452   return __builtin_altivec_vminsd((vector signed long long)__a, __b);
5453 }
5454 
5455 static __inline__ vector signed long long __ATTRS_o_ai
vec_min(vector signed long long __a,vector bool long long __b)5456 vec_min(vector signed long long __a, vector bool long long __b) {
5457   return __builtin_altivec_vminsd(__a, (vector signed long long)__b);
5458 }
5459 
5460 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_min(vector unsigned long long __a,vector unsigned long long __b)5461 vec_min(vector unsigned long long __a, vector unsigned long long __b) {
5462   return __builtin_altivec_vminud(__a, __b);
5463 }
5464 
5465 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_min(vector bool long long __a,vector unsigned long long __b)5466 vec_min(vector bool long long __a, vector unsigned long long __b) {
5467   return __builtin_altivec_vminud((vector unsigned long long)__a, __b);
5468 }
5469 
5470 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_min(vector unsigned long long __a,vector bool long long __b)5471 vec_min(vector unsigned long long __a, vector bool long long __b) {
5472   return __builtin_altivec_vminud(__a, (vector unsigned long long)__b);
5473 }
5474 #endif
5475 
vec_min(vector float __a,vector float __b)5476 static __inline__ vector float __ATTRS_o_ai vec_min(vector float __a,
5477                                                     vector float __b) {
5478 #ifdef __VSX__
5479   return __builtin_vsx_xvminsp(__a, __b);
5480 #else
5481   return __builtin_altivec_vminfp(__a, __b);
5482 #endif
5483 }
5484 
5485 #ifdef __VSX__
vec_min(vector double __a,vector double __b)5486 static __inline__ vector double __ATTRS_o_ai vec_min(vector double __a,
5487                                                      vector double __b) {
5488   return __builtin_vsx_xvmindp(__a, __b);
5489 }
5490 #endif
5491 
5492 /* vec_vminsb */
5493 
5494 static __inline__ vector signed char __ATTRS_o_ai
vec_vminsb(vector signed char __a,vector signed char __b)5495 vec_vminsb(vector signed char __a, vector signed char __b) {
5496   return __builtin_altivec_vminsb(__a, __b);
5497 }
5498 
5499 static __inline__ vector signed char __ATTRS_o_ai
vec_vminsb(vector bool char __a,vector signed char __b)5500 vec_vminsb(vector bool char __a, vector signed char __b) {
5501   return __builtin_altivec_vminsb((vector signed char)__a, __b);
5502 }
5503 
5504 static __inline__ vector signed char __ATTRS_o_ai
vec_vminsb(vector signed char __a,vector bool char __b)5505 vec_vminsb(vector signed char __a, vector bool char __b) {
5506   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
5507 }
5508 
5509 /* vec_vminub */
5510 
5511 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vminub(vector unsigned char __a,vector unsigned char __b)5512 vec_vminub(vector unsigned char __a, vector unsigned char __b) {
5513   return __builtin_altivec_vminub(__a, __b);
5514 }
5515 
5516 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vminub(vector bool char __a,vector unsigned char __b)5517 vec_vminub(vector bool char __a, vector unsigned char __b) {
5518   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
5519 }
5520 
5521 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vminub(vector unsigned char __a,vector bool char __b)5522 vec_vminub(vector unsigned char __a, vector bool char __b) {
5523   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
5524 }
5525 
5526 /* vec_vminsh */
5527 
vec_vminsh(vector short __a,vector short __b)5528 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
5529                                                        vector short __b) {
5530   return __builtin_altivec_vminsh(__a, __b);
5531 }
5532 
vec_vminsh(vector bool short __a,vector short __b)5533 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector bool short __a,
5534                                                        vector short __b) {
5535   return __builtin_altivec_vminsh((vector short)__a, __b);
5536 }
5537 
vec_vminsh(vector short __a,vector bool short __b)5538 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
5539                                                        vector bool short __b) {
5540   return __builtin_altivec_vminsh(__a, (vector short)__b);
5541 }
5542 
5543 /* vec_vminuh */
5544 
5545 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vminuh(vector unsigned short __a,vector unsigned short __b)5546 vec_vminuh(vector unsigned short __a, vector unsigned short __b) {
5547   return __builtin_altivec_vminuh(__a, __b);
5548 }
5549 
5550 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vminuh(vector bool short __a,vector unsigned short __b)5551 vec_vminuh(vector bool short __a, vector unsigned short __b) {
5552   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
5553 }
5554 
5555 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vminuh(vector unsigned short __a,vector bool short __b)5556 vec_vminuh(vector unsigned short __a, vector bool short __b) {
5557   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
5558 }
5559 
5560 /* vec_vminsw */
5561 
vec_vminsw(vector int __a,vector int __b)5562 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
5563                                                      vector int __b) {
5564   return __builtin_altivec_vminsw(__a, __b);
5565 }
5566 
vec_vminsw(vector bool int __a,vector int __b)5567 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector bool int __a,
5568                                                      vector int __b) {
5569   return __builtin_altivec_vminsw((vector int)__a, __b);
5570 }
5571 
vec_vminsw(vector int __a,vector bool int __b)5572 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
5573                                                      vector bool int __b) {
5574   return __builtin_altivec_vminsw(__a, (vector int)__b);
5575 }
5576 
5577 /* vec_vminuw */
5578 
5579 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vminuw(vector unsigned int __a,vector unsigned int __b)5580 vec_vminuw(vector unsigned int __a, vector unsigned int __b) {
5581   return __builtin_altivec_vminuw(__a, __b);
5582 }
5583 
5584 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vminuw(vector bool int __a,vector unsigned int __b)5585 vec_vminuw(vector bool int __a, vector unsigned int __b) {
5586   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
5587 }
5588 
5589 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vminuw(vector unsigned int __a,vector bool int __b)5590 vec_vminuw(vector unsigned int __a, vector bool int __b) {
5591   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
5592 }
5593 
5594 /* vec_vminfp */
5595 
5596 static __inline__ vector float __attribute__((__always_inline__))
vec_vminfp(vector float __a,vector float __b)5597 vec_vminfp(vector float __a, vector float __b) {
5598 #ifdef __VSX__
5599   return __builtin_vsx_xvminsp(__a, __b);
5600 #else
5601   return __builtin_altivec_vminfp(__a, __b);
5602 #endif
5603 }
5604 
5605 /* vec_mladd */
5606 
5607 #define __builtin_altivec_vmladduhm vec_mladd
5608 
vec_mladd(vector short __a,vector short __b,vector short __c)5609 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector short __a,
5610                                                       vector short __b,
5611                                                       vector short __c) {
5612   return __a * __b + __c;
5613 }
5614 
vec_mladd(vector short __a,vector unsigned short __b,vector unsigned short __c)5615 static __inline__ vector short __ATTRS_o_ai vec_mladd(
5616     vector short __a, vector unsigned short __b, vector unsigned short __c) {
5617   return __a * (vector short)__b + (vector short)__c;
5618 }
5619 
vec_mladd(vector unsigned short __a,vector short __b,vector short __c)5620 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
5621                                                       vector short __b,
5622                                                       vector short __c) {
5623   return (vector short)__a * __b + __c;
5624 }
5625 
5626 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mladd(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)5627 vec_mladd(vector unsigned short __a, vector unsigned short __b,
5628           vector unsigned short __c) {
5629   return __a * __b + __c;
5630 }
5631 
5632 /* vec_vmladduhm */
5633 
vec_vmladduhm(vector short __a,vector short __b,vector short __c)5634 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
5635                                                           vector short __b,
5636                                                           vector short __c) {
5637   return __a * __b + __c;
5638 }
5639 
vec_vmladduhm(vector short __a,vector unsigned short __b,vector unsigned short __c)5640 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(
5641     vector short __a, vector unsigned short __b, vector unsigned short __c) {
5642   return __a * (vector short)__b + (vector short)__c;
5643 }
5644 
5645 static __inline__ vector short __ATTRS_o_ai
vec_vmladduhm(vector unsigned short __a,vector short __b,vector short __c)5646 vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) {
5647   return (vector short)__a * __b + __c;
5648 }
5649 
5650 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmladduhm(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)5651 vec_vmladduhm(vector unsigned short __a, vector unsigned short __b,
5652               vector unsigned short __c) {
5653   return __a * __b + __c;
5654 }
5655 
5656 /* vec_mradds */
5657 
5658 static __inline__ vector short __attribute__((__always_inline__))
vec_mradds(vector short __a,vector short __b,vector short __c)5659 vec_mradds(vector short __a, vector short __b, vector short __c) {
5660   return __builtin_altivec_vmhraddshs(__a, __b, __c);
5661 }
5662 
5663 /* vec_vmhraddshs */
5664 
5665 static __inline__ vector short __attribute__((__always_inline__))
vec_vmhraddshs(vector short __a,vector short __b,vector short __c)5666 vec_vmhraddshs(vector short __a, vector short __b, vector short __c) {
5667   return __builtin_altivec_vmhraddshs(__a, __b, __c);
5668 }
5669 
5670 /* vec_msum */
5671 
vec_msum(vector signed char __a,vector unsigned char __b,vector int __c)5672 static __inline__ vector int __ATTRS_o_ai vec_msum(vector signed char __a,
5673                                                    vector unsigned char __b,
5674                                                    vector int __c) {
5675   return __builtin_altivec_vmsummbm(__a, __b, __c);
5676 }
5677 
5678 static __inline__ vector unsigned int __ATTRS_o_ai
vec_msum(vector unsigned char __a,vector unsigned char __b,vector unsigned int __c)5679 vec_msum(vector unsigned char __a, vector unsigned char __b,
5680          vector unsigned int __c) {
5681   return __builtin_altivec_vmsumubm(__a, __b, __c);
5682 }
5683 
vec_msum(vector short __a,vector short __b,vector int __c)5684 static __inline__ vector int __ATTRS_o_ai vec_msum(vector short __a,
5685                                                    vector short __b,
5686                                                    vector int __c) {
5687   return __builtin_altivec_vmsumshm(__a, __b, __c);
5688 }
5689 
5690 static __inline__ vector unsigned int __ATTRS_o_ai
vec_msum(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)5691 vec_msum(vector unsigned short __a, vector unsigned short __b,
5692          vector unsigned int __c) {
5693   return __builtin_altivec_vmsumuhm(__a, __b, __c);
5694 }
5695 
5696 /* vec_msumc */
5697 
5698 #ifdef __POWER10_VECTOR__
5699 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_msumc(vector unsigned long long __a,vector unsigned long long __b,vector unsigned __int128 __c)5700 vec_msumc(vector unsigned long long __a, vector unsigned long long __b,
5701           vector unsigned __int128 __c) {
5702   return __builtin_altivec_vmsumcud(__a, __b, __c);
5703 }
5704 #endif
5705 
5706 /* vec_vmsummbm */
5707 
5708 static __inline__ vector int __attribute__((__always_inline__))
vec_vmsummbm(vector signed char __a,vector unsigned char __b,vector int __c)5709 vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) {
5710   return __builtin_altivec_vmsummbm(__a, __b, __c);
5711 }
5712 
5713 /* vec_vmsumubm */
5714 
5715 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmsumubm(vector unsigned char __a,vector unsigned char __b,vector unsigned int __c)5716 vec_vmsumubm(vector unsigned char __a, vector unsigned char __b,
5717              vector unsigned int __c) {
5718   return __builtin_altivec_vmsumubm(__a, __b, __c);
5719 }
5720 
5721 /* vec_vmsumshm */
5722 
5723 static __inline__ vector int __attribute__((__always_inline__))
vec_vmsumshm(vector short __a,vector short __b,vector int __c)5724 vec_vmsumshm(vector short __a, vector short __b, vector int __c) {
5725   return __builtin_altivec_vmsumshm(__a, __b, __c);
5726 }
5727 
5728 /* vec_vmsumuhm */
5729 
5730 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmsumuhm(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)5731 vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b,
5732              vector unsigned int __c) {
5733   return __builtin_altivec_vmsumuhm(__a, __b, __c);
5734 }
5735 
5736 /* vec_msums */
5737 
vec_msums(vector short __a,vector short __b,vector int __c)5738 static __inline__ vector int __ATTRS_o_ai vec_msums(vector short __a,
5739                                                     vector short __b,
5740                                                     vector int __c) {
5741   return __builtin_altivec_vmsumshs(__a, __b, __c);
5742 }
5743 
5744 static __inline__ vector unsigned int __ATTRS_o_ai
vec_msums(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)5745 vec_msums(vector unsigned short __a, vector unsigned short __b,
5746           vector unsigned int __c) {
5747   return __builtin_altivec_vmsumuhs(__a, __b, __c);
5748 }
5749 
5750 /* vec_vmsumshs */
5751 
5752 static __inline__ vector int __attribute__((__always_inline__))
vec_vmsumshs(vector short __a,vector short __b,vector int __c)5753 vec_vmsumshs(vector short __a, vector short __b, vector int __c) {
5754   return __builtin_altivec_vmsumshs(__a, __b, __c);
5755 }
5756 
5757 /* vec_vmsumuhs */
5758 
5759 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmsumuhs(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)5760 vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b,
5761              vector unsigned int __c) {
5762   return __builtin_altivec_vmsumuhs(__a, __b, __c);
5763 }
5764 
5765 /* vec_mtvscr */
5766 
vec_mtvscr(vector signed char __a)5767 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector signed char __a) {
5768   __builtin_altivec_mtvscr((vector int)__a);
5769 }
5770 
vec_mtvscr(vector unsigned char __a)5771 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) {
5772   __builtin_altivec_mtvscr((vector int)__a);
5773 }
5774 
vec_mtvscr(vector bool char __a)5775 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool char __a) {
5776   __builtin_altivec_mtvscr((vector int)__a);
5777 }
5778 
vec_mtvscr(vector short __a)5779 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector short __a) {
5780   __builtin_altivec_mtvscr((vector int)__a);
5781 }
5782 
vec_mtvscr(vector unsigned short __a)5783 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) {
5784   __builtin_altivec_mtvscr((vector int)__a);
5785 }
5786 
vec_mtvscr(vector bool short __a)5787 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool short __a) {
5788   __builtin_altivec_mtvscr((vector int)__a);
5789 }
5790 
vec_mtvscr(vector pixel __a)5791 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector pixel __a) {
5792   __builtin_altivec_mtvscr((vector int)__a);
5793 }
5794 
vec_mtvscr(vector int __a)5795 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector int __a) {
5796   __builtin_altivec_mtvscr((vector int)__a);
5797 }
5798 
vec_mtvscr(vector unsigned int __a)5799 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) {
5800   __builtin_altivec_mtvscr((vector int)__a);
5801 }
5802 
vec_mtvscr(vector bool int __a)5803 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool int __a) {
5804   __builtin_altivec_mtvscr((vector int)__a);
5805 }
5806 
vec_mtvscr(vector float __a)5807 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector float __a) {
5808   __builtin_altivec_mtvscr((vector int)__a);
5809 }
5810 
5811 /* vec_mul */
5812 
5813 /* Integer vector multiplication will involve multiplication of the odd/even
5814    elements separately, then truncating the results and moving to the
5815    result vector.
5816 */
5817 static __inline__ vector signed char __ATTRS_o_ai
vec_mul(vector signed char __a,vector signed char __b)5818 vec_mul(vector signed char __a, vector signed char __b) {
5819   return __a * __b;
5820 }
5821 
5822 static __inline__ vector unsigned char __ATTRS_o_ai
vec_mul(vector unsigned char __a,vector unsigned char __b)5823 vec_mul(vector unsigned char __a, vector unsigned char __b) {
5824   return __a * __b;
5825 }
5826 
5827 static __inline__ vector signed short __ATTRS_o_ai
vec_mul(vector signed short __a,vector signed short __b)5828 vec_mul(vector signed short __a, vector signed short __b) {
5829   return __a * __b;
5830 }
5831 
5832 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mul(vector unsigned short __a,vector unsigned short __b)5833 vec_mul(vector unsigned short __a, vector unsigned short __b) {
5834   return __a * __b;
5835 }
5836 
5837 static __inline__ vector signed int __ATTRS_o_ai
vec_mul(vector signed int __a,vector signed int __b)5838 vec_mul(vector signed int __a, vector signed int __b) {
5839   return __a * __b;
5840 }
5841 
5842 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mul(vector unsigned int __a,vector unsigned int __b)5843 vec_mul(vector unsigned int __a, vector unsigned int __b) {
5844   return __a * __b;
5845 }
5846 
5847 #ifdef __VSX__
5848 static __inline__ vector signed long long __ATTRS_o_ai
vec_mul(vector signed long long __a,vector signed long long __b)5849 vec_mul(vector signed long long __a, vector signed long long __b) {
5850   return __a * __b;
5851 }
5852 
5853 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mul(vector unsigned long long __a,vector unsigned long long __b)5854 vec_mul(vector unsigned long long __a, vector unsigned long long __b) {
5855   return __a * __b;
5856 }
5857 #endif
5858 
vec_mul(vector float __a,vector float __b)5859 static __inline__ vector float __ATTRS_o_ai vec_mul(vector float __a,
5860                                                     vector float __b) {
5861   return __a * __b;
5862 }
5863 
5864 #ifdef __VSX__
vec_mul(vector double __a,vector double __b)5865 static __inline__ vector double __ATTRS_o_ai vec_mul(vector double __a,
5866                                                      vector double __b) {
5867   return __a * __b;
5868 }
5869 #endif
5870 
5871 /* The vmulos* and vmules* instructions have a big endian bias, so
5872    we must reverse the meaning of "even" and "odd" for little endian.  */
5873 
5874 /* vec_mule */
5875 
vec_mule(vector signed char __a,vector signed char __b)5876 static __inline__ vector short __ATTRS_o_ai vec_mule(vector signed char __a,
5877                                                      vector signed char __b) {
5878 #ifdef __LITTLE_ENDIAN__
5879   return __builtin_altivec_vmulosb(__a, __b);
5880 #else
5881   return __builtin_altivec_vmulesb(__a, __b);
5882 #endif
5883 }
5884 
5885 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mule(vector unsigned char __a,vector unsigned char __b)5886 vec_mule(vector unsigned char __a, vector unsigned char __b) {
5887 #ifdef __LITTLE_ENDIAN__
5888   return __builtin_altivec_vmuloub(__a, __b);
5889 #else
5890   return __builtin_altivec_vmuleub(__a, __b);
5891 #endif
5892 }
5893 
vec_mule(vector short __a,vector short __b)5894 static __inline__ vector int __ATTRS_o_ai vec_mule(vector short __a,
5895                                                    vector short __b) {
5896 #ifdef __LITTLE_ENDIAN__
5897   return __builtin_altivec_vmulosh(__a, __b);
5898 #else
5899   return __builtin_altivec_vmulesh(__a, __b);
5900 #endif
5901 }
5902 
5903 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mule(vector unsigned short __a,vector unsigned short __b)5904 vec_mule(vector unsigned short __a, vector unsigned short __b) {
5905 #ifdef __LITTLE_ENDIAN__
5906   return __builtin_altivec_vmulouh(__a, __b);
5907 #else
5908   return __builtin_altivec_vmuleuh(__a, __b);
5909 #endif
5910 }
5911 
5912 #ifdef __POWER8_VECTOR__
5913 static __inline__ vector signed long long __ATTRS_o_ai
vec_mule(vector signed int __a,vector signed int __b)5914 vec_mule(vector signed int __a, vector signed int __b) {
5915 #ifdef __LITTLE_ENDIAN__
5916   return __builtin_altivec_vmulosw(__a, __b);
5917 #else
5918   return __builtin_altivec_vmulesw(__a, __b);
5919 #endif
5920 }
5921 
5922 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mule(vector unsigned int __a,vector unsigned int __b)5923 vec_mule(vector unsigned int __a, vector unsigned int __b) {
5924 #ifdef __LITTLE_ENDIAN__
5925   return __builtin_altivec_vmulouw(__a, __b);
5926 #else
5927   return __builtin_altivec_vmuleuw(__a, __b);
5928 #endif
5929 }
5930 #endif
5931 
5932 #ifdef __POWER10_VECTOR__
5933 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_mule(vector signed long long __a,vector signed long long __b)5934 vec_mule(vector signed long long __a, vector signed long long __b) {
5935 #ifdef __LITTLE_ENDIAN__
5936   return __builtin_altivec_vmulosd(__a, __b);
5937 #else
5938   return __builtin_altivec_vmulesd(__a, __b);
5939 #endif
5940 }
5941 
5942 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_mule(vector unsigned long long __a,vector unsigned long long __b)5943 vec_mule(vector unsigned long long __a, vector unsigned long long __b) {
5944 #ifdef __LITTLE_ENDIAN__
5945   return __builtin_altivec_vmuloud(__a, __b);
5946 #else
5947   return __builtin_altivec_vmuleud(__a, __b);
5948 #endif
5949 }
5950 #endif
5951 
5952 /* vec_vmulesb */
5953 
5954 static __inline__ vector short __attribute__((__always_inline__))
vec_vmulesb(vector signed char __a,vector signed char __b)5955 vec_vmulesb(vector signed char __a, vector signed char __b) {
5956 #ifdef __LITTLE_ENDIAN__
5957   return __builtin_altivec_vmulosb(__a, __b);
5958 #else
5959   return __builtin_altivec_vmulesb(__a, __b);
5960 #endif
5961 }
5962 
5963 /* vec_vmuleub */
5964 
5965 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vmuleub(vector unsigned char __a,vector unsigned char __b)5966 vec_vmuleub(vector unsigned char __a, vector unsigned char __b) {
5967 #ifdef __LITTLE_ENDIAN__
5968   return __builtin_altivec_vmuloub(__a, __b);
5969 #else
5970   return __builtin_altivec_vmuleub(__a, __b);
5971 #endif
5972 }
5973 
5974 /* vec_vmulesh */
5975 
5976 static __inline__ vector int __attribute__((__always_inline__))
vec_vmulesh(vector short __a,vector short __b)5977 vec_vmulesh(vector short __a, vector short __b) {
5978 #ifdef __LITTLE_ENDIAN__
5979   return __builtin_altivec_vmulosh(__a, __b);
5980 #else
5981   return __builtin_altivec_vmulesh(__a, __b);
5982 #endif
5983 }
5984 
5985 /* vec_vmuleuh */
5986 
5987 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmuleuh(vector unsigned short __a,vector unsigned short __b)5988 vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) {
5989 #ifdef __LITTLE_ENDIAN__
5990   return __builtin_altivec_vmulouh(__a, __b);
5991 #else
5992   return __builtin_altivec_vmuleuh(__a, __b);
5993 #endif
5994 }
5995 
5996 /* vec_mulh */
5997 
5998 #ifdef __POWER10_VECTOR__
5999 static __inline__ vector signed int __ATTRS_o_ai
vec_mulh(vector signed int __a,vector signed int __b)6000 vec_mulh(vector signed int __a, vector signed int __b) {
6001   return __builtin_altivec_vmulhsw(__a, __b);
6002 }
6003 
6004 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mulh(vector unsigned int __a,vector unsigned int __b)6005 vec_mulh(vector unsigned int __a, vector unsigned int __b) {
6006   return __builtin_altivec_vmulhuw(__a, __b);
6007 }
6008 
6009 static __inline__ vector signed long long __ATTRS_o_ai
vec_mulh(vector signed long long __a,vector signed long long __b)6010 vec_mulh(vector signed long long __a, vector signed long long __b) {
6011   return __builtin_altivec_vmulhsd(__a, __b);
6012 }
6013 
6014 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mulh(vector unsigned long long __a,vector unsigned long long __b)6015 vec_mulh(vector unsigned long long __a, vector unsigned long long __b) {
6016   return __builtin_altivec_vmulhud(__a, __b);
6017 }
6018 #endif
6019 
6020 /* vec_mulo */
6021 
vec_mulo(vector signed char __a,vector signed char __b)6022 static __inline__ vector short __ATTRS_o_ai vec_mulo(vector signed char __a,
6023                                                      vector signed char __b) {
6024 #ifdef __LITTLE_ENDIAN__
6025   return __builtin_altivec_vmulesb(__a, __b);
6026 #else
6027   return __builtin_altivec_vmulosb(__a, __b);
6028 #endif
6029 }
6030 
6031 static __inline__ vector unsigned short __ATTRS_o_ai
vec_mulo(vector unsigned char __a,vector unsigned char __b)6032 vec_mulo(vector unsigned char __a, vector unsigned char __b) {
6033 #ifdef __LITTLE_ENDIAN__
6034   return __builtin_altivec_vmuleub(__a, __b);
6035 #else
6036   return __builtin_altivec_vmuloub(__a, __b);
6037 #endif
6038 }
6039 
vec_mulo(vector short __a,vector short __b)6040 static __inline__ vector int __ATTRS_o_ai vec_mulo(vector short __a,
6041                                                    vector short __b) {
6042 #ifdef __LITTLE_ENDIAN__
6043   return __builtin_altivec_vmulesh(__a, __b);
6044 #else
6045   return __builtin_altivec_vmulosh(__a, __b);
6046 #endif
6047 }
6048 
6049 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mulo(vector unsigned short __a,vector unsigned short __b)6050 vec_mulo(vector unsigned short __a, vector unsigned short __b) {
6051 #ifdef __LITTLE_ENDIAN__
6052   return __builtin_altivec_vmuleuh(__a, __b);
6053 #else
6054   return __builtin_altivec_vmulouh(__a, __b);
6055 #endif
6056 }
6057 
6058 #ifdef __POWER8_VECTOR__
6059 static __inline__ vector signed long long __ATTRS_o_ai
vec_mulo(vector signed int __a,vector signed int __b)6060 vec_mulo(vector signed int __a, vector signed int __b) {
6061 #ifdef __LITTLE_ENDIAN__
6062   return __builtin_altivec_vmulesw(__a, __b);
6063 #else
6064   return __builtin_altivec_vmulosw(__a, __b);
6065 #endif
6066 }
6067 
6068 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mulo(vector unsigned int __a,vector unsigned int __b)6069 vec_mulo(vector unsigned int __a, vector unsigned int __b) {
6070 #ifdef __LITTLE_ENDIAN__
6071   return __builtin_altivec_vmuleuw(__a, __b);
6072 #else
6073   return __builtin_altivec_vmulouw(__a, __b);
6074 #endif
6075 }
6076 #endif
6077 
6078 #ifdef __POWER10_VECTOR__
6079 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_mulo(vector signed long long __a,vector signed long long __b)6080 vec_mulo(vector signed long long __a, vector signed long long __b) {
6081 #ifdef __LITTLE_ENDIAN__
6082   return __builtin_altivec_vmulesd(__a, __b);
6083 #else
6084   return __builtin_altivec_vmulosd(__a, __b);
6085 #endif
6086 }
6087 
6088 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_mulo(vector unsigned long long __a,vector unsigned long long __b)6089 vec_mulo(vector unsigned long long __a, vector unsigned long long __b) {
6090 #ifdef __LITTLE_ENDIAN__
6091   return __builtin_altivec_vmuleud(__a, __b);
6092 #else
6093   return __builtin_altivec_vmuloud(__a, __b);
6094 #endif
6095 }
6096 #endif
6097 
6098 /* vec_vmulosb */
6099 
6100 static __inline__ vector short __attribute__((__always_inline__))
vec_vmulosb(vector signed char __a,vector signed char __b)6101 vec_vmulosb(vector signed char __a, vector signed char __b) {
6102 #ifdef __LITTLE_ENDIAN__
6103   return __builtin_altivec_vmulesb(__a, __b);
6104 #else
6105   return __builtin_altivec_vmulosb(__a, __b);
6106 #endif
6107 }
6108 
6109 /* vec_vmuloub */
6110 
6111 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vmuloub(vector unsigned char __a,vector unsigned char __b)6112 vec_vmuloub(vector unsigned char __a, vector unsigned char __b) {
6113 #ifdef __LITTLE_ENDIAN__
6114   return __builtin_altivec_vmuleub(__a, __b);
6115 #else
6116   return __builtin_altivec_vmuloub(__a, __b);
6117 #endif
6118 }
6119 
6120 /* vec_vmulosh */
6121 
6122 static __inline__ vector int __attribute__((__always_inline__))
vec_vmulosh(vector short __a,vector short __b)6123 vec_vmulosh(vector short __a, vector short __b) {
6124 #ifdef __LITTLE_ENDIAN__
6125   return __builtin_altivec_vmulesh(__a, __b);
6126 #else
6127   return __builtin_altivec_vmulosh(__a, __b);
6128 #endif
6129 }
6130 
6131 /* vec_vmulouh */
6132 
6133 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmulouh(vector unsigned short __a,vector unsigned short __b)6134 vec_vmulouh(vector unsigned short __a, vector unsigned short __b) {
6135 #ifdef __LITTLE_ENDIAN__
6136   return __builtin_altivec_vmuleuh(__a, __b);
6137 #else
6138   return __builtin_altivec_vmulouh(__a, __b);
6139 #endif
6140 }
6141 
6142 /*  vec_nand */
6143 
6144 #ifdef __POWER8_VECTOR__
6145 static __inline__ vector signed char __ATTRS_o_ai
vec_nand(vector signed char __a,vector signed char __b)6146 vec_nand(vector signed char __a, vector signed char __b) {
6147   return ~(__a & __b);
6148 }
6149 
6150 static __inline__ vector signed char __ATTRS_o_ai
vec_nand(vector signed char __a,vector bool char __b)6151 vec_nand(vector signed char __a, vector bool char __b) {
6152   return ~(__a & __b);
6153 }
6154 
6155 static __inline__ vector signed char __ATTRS_o_ai
vec_nand(vector bool char __a,vector signed char __b)6156 vec_nand(vector bool char __a, vector signed char __b) {
6157   return ~(__a & __b);
6158 }
6159 
6160 static __inline__ vector unsigned char __ATTRS_o_ai
vec_nand(vector unsigned char __a,vector unsigned char __b)6161 vec_nand(vector unsigned char __a, vector unsigned char __b) {
6162   return ~(__a & __b);
6163 }
6164 
6165 static __inline__ vector unsigned char __ATTRS_o_ai
vec_nand(vector unsigned char __a,vector bool char __b)6166 vec_nand(vector unsigned char __a, vector bool char __b) {
6167   return ~(__a & __b);
6168 }
6169 
6170 static __inline__ vector unsigned char __ATTRS_o_ai
vec_nand(vector bool char __a,vector unsigned char __b)6171 vec_nand(vector bool char __a, vector unsigned char __b) {
6172   return ~(__a & __b);
6173 }
6174 
vec_nand(vector bool char __a,vector bool char __b)6175 static __inline__ vector bool char __ATTRS_o_ai vec_nand(vector bool char __a,
6176                                                          vector bool char __b) {
6177   return ~(__a & __b);
6178 }
6179 
6180 static __inline__ vector signed short __ATTRS_o_ai
vec_nand(vector signed short __a,vector signed short __b)6181 vec_nand(vector signed short __a, vector signed short __b) {
6182   return ~(__a & __b);
6183 }
6184 
6185 static __inline__ vector signed short __ATTRS_o_ai
vec_nand(vector signed short __a,vector bool short __b)6186 vec_nand(vector signed short __a, vector bool short __b) {
6187   return ~(__a & __b);
6188 }
6189 
6190 static __inline__ vector signed short __ATTRS_o_ai
vec_nand(vector bool short __a,vector signed short __b)6191 vec_nand(vector bool short __a, vector signed short __b) {
6192   return ~(__a & __b);
6193 }
6194 
6195 static __inline__ vector unsigned short __ATTRS_o_ai
vec_nand(vector unsigned short __a,vector unsigned short __b)6196 vec_nand(vector unsigned short __a, vector unsigned short __b) {
6197   return ~(__a & __b);
6198 }
6199 
6200 static __inline__ vector unsigned short __ATTRS_o_ai
vec_nand(vector unsigned short __a,vector bool short __b)6201 vec_nand(vector unsigned short __a, vector bool short __b) {
6202   return ~(__a & __b);
6203 }
6204 
6205 static __inline__ vector bool short __ATTRS_o_ai
vec_nand(vector bool short __a,vector bool short __b)6206 vec_nand(vector bool short __a, vector bool short __b) {
6207   return ~(__a & __b);
6208 }
6209 
6210 static __inline__ vector signed int __ATTRS_o_ai
vec_nand(vector signed int __a,vector signed int __b)6211 vec_nand(vector signed int __a, vector signed int __b) {
6212   return ~(__a & __b);
6213 }
6214 
vec_nand(vector signed int __a,vector bool int __b)6215 static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
6216                                                           vector bool int __b) {
6217   return ~(__a & __b);
6218 }
6219 
6220 static __inline__ vector signed int __ATTRS_o_ai
vec_nand(vector bool int __a,vector signed int __b)6221 vec_nand(vector bool int __a, vector signed int __b) {
6222   return ~(__a & __b);
6223 }
6224 
6225 static __inline__ vector unsigned int __ATTRS_o_ai
vec_nand(vector unsigned int __a,vector unsigned int __b)6226 vec_nand(vector unsigned int __a, vector unsigned int __b) {
6227   return ~(__a & __b);
6228 }
6229 
6230 static __inline__ vector unsigned int __ATTRS_o_ai
vec_nand(vector unsigned int __a,vector bool int __b)6231 vec_nand(vector unsigned int __a, vector bool int __b) {
6232   return ~(__a & __b);
6233 }
6234 
6235 static __inline__ vector unsigned int __ATTRS_o_ai
vec_nand(vector bool int __a,vector unsigned int __b)6236 vec_nand(vector bool int __a, vector unsigned int __b) {
6237   return ~(__a & __b);
6238 }
6239 
vec_nand(vector bool int __a,vector bool int __b)6240 static __inline__ vector bool int __ATTRS_o_ai vec_nand(vector bool int __a,
6241                                                         vector bool int __b) {
6242   return ~(__a & __b);
6243 }
6244 
6245 static __inline__ vector float __ATTRS_o_ai
vec_nand(vector float __a,vector float __b)6246 vec_nand(vector float __a, vector float __b) {
6247   return (vector float)(~((vector unsigned int)__a &
6248                           (vector unsigned int)__b));
6249 }
6250 
6251 static __inline__ vector signed long long __ATTRS_o_ai
vec_nand(vector signed long long __a,vector signed long long __b)6252 vec_nand(vector signed long long __a, vector signed long long __b) {
6253   return ~(__a & __b);
6254 }
6255 
6256 static __inline__ vector signed long long __ATTRS_o_ai
vec_nand(vector signed long long __a,vector bool long long __b)6257 vec_nand(vector signed long long __a, vector bool long long __b) {
6258   return ~(__a & __b);
6259 }
6260 
6261 static __inline__ vector signed long long __ATTRS_o_ai
vec_nand(vector bool long long __a,vector signed long long __b)6262 vec_nand(vector bool long long __a, vector signed long long __b) {
6263   return ~(__a & __b);
6264 }
6265 
6266 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nand(vector unsigned long long __a,vector unsigned long long __b)6267 vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
6268   return ~(__a & __b);
6269 }
6270 
6271 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nand(vector unsigned long long __a,vector bool long long __b)6272 vec_nand(vector unsigned long long __a, vector bool long long __b) {
6273   return ~(__a & __b);
6274 }
6275 
6276 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nand(vector bool long long __a,vector unsigned long long __b)6277 vec_nand(vector bool long long __a, vector unsigned long long __b) {
6278   return ~(__a & __b);
6279 }
6280 
6281 static __inline__ vector bool long long __ATTRS_o_ai
vec_nand(vector bool long long __a,vector bool long long __b)6282 vec_nand(vector bool long long __a, vector bool long long __b) {
6283   return ~(__a & __b);
6284 }
6285 
6286 static __inline__ vector double __ATTRS_o_ai
vec_nand(vector double __a,vector double __b)6287 vec_nand(vector double __a, vector double __b) {
6288   return (vector double)(~((vector unsigned long long)__a &
6289                            (vector unsigned long long)__b));
6290 }
6291 
6292 #endif
6293 
6294 /* vec_nmadd */
6295 
6296 #ifdef __VSX__
vec_nmadd(vector float __a,vector float __b,vector float __c)6297 static __inline__ vector float __ATTRS_o_ai vec_nmadd(vector float __a,
6298                                                       vector float __b,
6299                                                       vector float __c) {
6300   return __builtin_vsx_xvnmaddasp(__a, __b, __c);
6301 }
6302 
vec_nmadd(vector double __a,vector double __b,vector double __c)6303 static __inline__ vector double __ATTRS_o_ai vec_nmadd(vector double __a,
6304                                                        vector double __b,
6305                                                        vector double __c) {
6306   return __builtin_vsx_xvnmaddadp(__a, __b, __c);
6307 }
6308 #endif
6309 
6310 /* vec_nmsub */
6311 
vec_nmsub(vector float __a,vector float __b,vector float __c)6312 static __inline__ vector float __ATTRS_o_ai vec_nmsub(vector float __a,
6313                                                       vector float __b,
6314                                                       vector float __c) {
6315 #ifdef __VSX__
6316   return __builtin_vsx_xvnmsubasp(__a, __b, __c);
6317 #else
6318   return __builtin_altivec_vnmsubfp(__a, __b, __c);
6319 #endif
6320 }
6321 
6322 #ifdef __VSX__
vec_nmsub(vector double __a,vector double __b,vector double __c)6323 static __inline__ vector double __ATTRS_o_ai vec_nmsub(vector double __a,
6324                                                        vector double __b,
6325                                                        vector double __c) {
6326   return __builtin_vsx_xvnmsubadp(__a, __b, __c);
6327 }
6328 #endif
6329 
6330 /* vec_vnmsubfp */
6331 
6332 static __inline__ vector float __attribute__((__always_inline__))
vec_vnmsubfp(vector float __a,vector float __b,vector float __c)6333 vec_vnmsubfp(vector float __a, vector float __b, vector float __c) {
6334   return __builtin_altivec_vnmsubfp(__a, __b, __c);
6335 }
6336 
6337 /* vec_nor */
6338 
6339 #define __builtin_altivec_vnor vec_nor
6340 
6341 static __inline__ vector signed char __ATTRS_o_ai
vec_nor(vector signed char __a,vector signed char __b)6342 vec_nor(vector signed char __a, vector signed char __b) {
6343   return ~(__a | __b);
6344 }
6345 
6346 static __inline__ vector unsigned char __ATTRS_o_ai
vec_nor(vector unsigned char __a,vector unsigned char __b)6347 vec_nor(vector unsigned char __a, vector unsigned char __b) {
6348   return ~(__a | __b);
6349 }
6350 
vec_nor(vector bool char __a,vector bool char __b)6351 static __inline__ vector bool char __ATTRS_o_ai vec_nor(vector bool char __a,
6352                                                         vector bool char __b) {
6353   return ~(__a | __b);
6354 }
6355 
vec_nor(vector short __a,vector short __b)6356 static __inline__ vector short __ATTRS_o_ai vec_nor(vector short __a,
6357                                                     vector short __b) {
6358   return ~(__a | __b);
6359 }
6360 
6361 static __inline__ vector unsigned short __ATTRS_o_ai
vec_nor(vector unsigned short __a,vector unsigned short __b)6362 vec_nor(vector unsigned short __a, vector unsigned short __b) {
6363   return ~(__a | __b);
6364 }
6365 
6366 static __inline__ vector bool short __ATTRS_o_ai
vec_nor(vector bool short __a,vector bool short __b)6367 vec_nor(vector bool short __a, vector bool short __b) {
6368   return ~(__a | __b);
6369 }
6370 
vec_nor(vector int __a,vector int __b)6371 static __inline__ vector int __ATTRS_o_ai vec_nor(vector int __a,
6372                                                   vector int __b) {
6373   return ~(__a | __b);
6374 }
6375 
6376 static __inline__ vector unsigned int __ATTRS_o_ai
vec_nor(vector unsigned int __a,vector unsigned int __b)6377 vec_nor(vector unsigned int __a, vector unsigned int __b) {
6378   return ~(__a | __b);
6379 }
6380 
vec_nor(vector bool int __a,vector bool int __b)6381 static __inline__ vector bool int __ATTRS_o_ai vec_nor(vector bool int __a,
6382                                                        vector bool int __b) {
6383   return ~(__a | __b);
6384 }
6385 
vec_nor(vector float __a,vector float __b)6386 static __inline__ vector float __ATTRS_o_ai vec_nor(vector float __a,
6387                                                     vector float __b) {
6388   vector unsigned int __res =
6389       ~((vector unsigned int)__a | (vector unsigned int)__b);
6390   return (vector float)__res;
6391 }
6392 
6393 #ifdef __VSX__
vec_nor(vector double __a,vector double __b)6394 static __inline__ vector double __ATTRS_o_ai vec_nor(vector double __a,
6395                                                      vector double __b) {
6396   vector unsigned long long __res =
6397       ~((vector unsigned long long)__a | (vector unsigned long long)__b);
6398   return (vector double)__res;
6399 }
6400 #endif
6401 
6402 /* vec_vnor */
6403 
6404 static __inline__ vector signed char __ATTRS_o_ai
vec_vnor(vector signed char __a,vector signed char __b)6405 vec_vnor(vector signed char __a, vector signed char __b) {
6406   return ~(__a | __b);
6407 }
6408 
6409 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vnor(vector unsigned char __a,vector unsigned char __b)6410 vec_vnor(vector unsigned char __a, vector unsigned char __b) {
6411   return ~(__a | __b);
6412 }
6413 
vec_vnor(vector bool char __a,vector bool char __b)6414 static __inline__ vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a,
6415                                                          vector bool char __b) {
6416   return ~(__a | __b);
6417 }
6418 
vec_vnor(vector short __a,vector short __b)6419 static __inline__ vector short __ATTRS_o_ai vec_vnor(vector short __a,
6420                                                      vector short __b) {
6421   return ~(__a | __b);
6422 }
6423 
6424 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vnor(vector unsigned short __a,vector unsigned short __b)6425 vec_vnor(vector unsigned short __a, vector unsigned short __b) {
6426   return ~(__a | __b);
6427 }
6428 
6429 static __inline__ vector bool short __ATTRS_o_ai
vec_vnor(vector bool short __a,vector bool short __b)6430 vec_vnor(vector bool short __a, vector bool short __b) {
6431   return ~(__a | __b);
6432 }
6433 
vec_vnor(vector int __a,vector int __b)6434 static __inline__ vector int __ATTRS_o_ai vec_vnor(vector int __a,
6435                                                    vector int __b) {
6436   return ~(__a | __b);
6437 }
6438 
6439 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vnor(vector unsigned int __a,vector unsigned int __b)6440 vec_vnor(vector unsigned int __a, vector unsigned int __b) {
6441   return ~(__a | __b);
6442 }
6443 
vec_vnor(vector bool int __a,vector bool int __b)6444 static __inline__ vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a,
6445                                                         vector bool int __b) {
6446   return ~(__a | __b);
6447 }
6448 
vec_vnor(vector float __a,vector float __b)6449 static __inline__ vector float __ATTRS_o_ai vec_vnor(vector float __a,
6450                                                      vector float __b) {
6451   vector unsigned int __res =
6452       ~((vector unsigned int)__a | (vector unsigned int)__b);
6453   return (vector float)__res;
6454 }
6455 
6456 #ifdef __VSX__
6457 static __inline__ vector signed long long __ATTRS_o_ai
vec_nor(vector signed long long __a,vector signed long long __b)6458 vec_nor(vector signed long long __a, vector signed long long __b) {
6459   return ~(__a | __b);
6460 }
6461 
6462 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nor(vector unsigned long long __a,vector unsigned long long __b)6463 vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
6464   return ~(__a | __b);
6465 }
6466 
6467 static __inline__ vector bool long long __ATTRS_o_ai
vec_nor(vector bool long long __a,vector bool long long __b)6468 vec_nor(vector bool long long __a, vector bool long long __b) {
6469   return ~(__a | __b);
6470 }
6471 #endif
6472 
6473 /* vec_or */
6474 
6475 #define __builtin_altivec_vor vec_or
6476 
6477 static __inline__ vector signed char __ATTRS_o_ai
vec_or(vector signed char __a,vector signed char __b)6478 vec_or(vector signed char __a, vector signed char __b) {
6479   return __a | __b;
6480 }
6481 
6482 static __inline__ vector signed char __ATTRS_o_ai
vec_or(vector bool char __a,vector signed char __b)6483 vec_or(vector bool char __a, vector signed char __b) {
6484   return (vector signed char)__a | __b;
6485 }
6486 
vec_or(vector signed char __a,vector bool char __b)6487 static __inline__ vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
6488                                                          vector bool char __b) {
6489   return __a | (vector signed char)__b;
6490 }
6491 
6492 static __inline__ vector unsigned char __ATTRS_o_ai
vec_or(vector unsigned char __a,vector unsigned char __b)6493 vec_or(vector unsigned char __a, vector unsigned char __b) {
6494   return __a | __b;
6495 }
6496 
6497 static __inline__ vector unsigned char __ATTRS_o_ai
vec_or(vector bool char __a,vector unsigned char __b)6498 vec_or(vector bool char __a, vector unsigned char __b) {
6499   return (vector unsigned char)__a | __b;
6500 }
6501 
6502 static __inline__ vector unsigned char __ATTRS_o_ai
vec_or(vector unsigned char __a,vector bool char __b)6503 vec_or(vector unsigned char __a, vector bool char __b) {
6504   return __a | (vector unsigned char)__b;
6505 }
6506 
vec_or(vector bool char __a,vector bool char __b)6507 static __inline__ vector bool char __ATTRS_o_ai vec_or(vector bool char __a,
6508                                                        vector bool char __b) {
6509   return __a | __b;
6510 }
6511 
vec_or(vector short __a,vector short __b)6512 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
6513                                                    vector short __b) {
6514   return __a | __b;
6515 }
6516 
vec_or(vector bool short __a,vector short __b)6517 static __inline__ vector short __ATTRS_o_ai vec_or(vector bool short __a,
6518                                                    vector short __b) {
6519   return (vector short)__a | __b;
6520 }
6521 
vec_or(vector short __a,vector bool short __b)6522 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
6523                                                    vector bool short __b) {
6524   return __a | (vector short)__b;
6525 }
6526 
6527 static __inline__ vector unsigned short __ATTRS_o_ai
vec_or(vector unsigned short __a,vector unsigned short __b)6528 vec_or(vector unsigned short __a, vector unsigned short __b) {
6529   return __a | __b;
6530 }
6531 
6532 static __inline__ vector unsigned short __ATTRS_o_ai
vec_or(vector bool short __a,vector unsigned short __b)6533 vec_or(vector bool short __a, vector unsigned short __b) {
6534   return (vector unsigned short)__a | __b;
6535 }
6536 
6537 static __inline__ vector unsigned short __ATTRS_o_ai
vec_or(vector unsigned short __a,vector bool short __b)6538 vec_or(vector unsigned short __a, vector bool short __b) {
6539   return __a | (vector unsigned short)__b;
6540 }
6541 
vec_or(vector bool short __a,vector bool short __b)6542 static __inline__ vector bool short __ATTRS_o_ai vec_or(vector bool short __a,
6543                                                         vector bool short __b) {
6544   return __a | __b;
6545 }
6546 
vec_or(vector int __a,vector int __b)6547 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
6548                                                  vector int __b) {
6549   return __a | __b;
6550 }
6551 
vec_or(vector bool int __a,vector int __b)6552 static __inline__ vector int __ATTRS_o_ai vec_or(vector bool int __a,
6553                                                  vector int __b) {
6554   return (vector int)__a | __b;
6555 }
6556 
vec_or(vector int __a,vector bool int __b)6557 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
6558                                                  vector bool int __b) {
6559   return __a | (vector int)__b;
6560 }
6561 
6562 static __inline__ vector unsigned int __ATTRS_o_ai
vec_or(vector unsigned int __a,vector unsigned int __b)6563 vec_or(vector unsigned int __a, vector unsigned int __b) {
6564   return __a | __b;
6565 }
6566 
6567 static __inline__ vector unsigned int __ATTRS_o_ai
vec_or(vector bool int __a,vector unsigned int __b)6568 vec_or(vector bool int __a, vector unsigned int __b) {
6569   return (vector unsigned int)__a | __b;
6570 }
6571 
6572 static __inline__ vector unsigned int __ATTRS_o_ai
vec_or(vector unsigned int __a,vector bool int __b)6573 vec_or(vector unsigned int __a, vector bool int __b) {
6574   return __a | (vector unsigned int)__b;
6575 }
6576 
vec_or(vector bool int __a,vector bool int __b)6577 static __inline__ vector bool int __ATTRS_o_ai vec_or(vector bool int __a,
6578                                                       vector bool int __b) {
6579   return __a | __b;
6580 }
6581 
vec_or(vector float __a,vector float __b)6582 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
6583                                                    vector float __b) {
6584   vector unsigned int __res =
6585       (vector unsigned int)__a | (vector unsigned int)__b;
6586   return (vector float)__res;
6587 }
6588 
vec_or(vector bool int __a,vector float __b)6589 static __inline__ vector float __ATTRS_o_ai vec_or(vector bool int __a,
6590                                                    vector float __b) {
6591   vector unsigned int __res =
6592       (vector unsigned int)__a | (vector unsigned int)__b;
6593   return (vector float)__res;
6594 }
6595 
vec_or(vector float __a,vector bool int __b)6596 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
6597                                                    vector bool int __b) {
6598   vector unsigned int __res =
6599       (vector unsigned int)__a | (vector unsigned int)__b;
6600   return (vector float)__res;
6601 }
6602 
6603 #ifdef __VSX__
vec_or(vector bool long long __a,vector double __b)6604 static __inline__ vector double __ATTRS_o_ai vec_or(vector bool long long __a,
6605                                                     vector double __b) {
6606   return (vector double)((vector unsigned long long)__a |
6607                          (vector unsigned long long)__b);
6608 }
6609 
vec_or(vector double __a,vector bool long long __b)6610 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
6611                                                     vector bool long long __b) {
6612   return (vector double)((vector unsigned long long)__a |
6613                          (vector unsigned long long)__b);
6614 }
6615 
vec_or(vector double __a,vector double __b)6616 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
6617                                                     vector double __b) {
6618   return (vector double)((vector unsigned long long)__a |
6619                          (vector unsigned long long)__b);
6620 }
6621 
6622 static __inline__ vector signed long long __ATTRS_o_ai
vec_or(vector signed long long __a,vector signed long long __b)6623 vec_or(vector signed long long __a, vector signed long long __b) {
6624   return __a | __b;
6625 }
6626 
6627 static __inline__ vector signed long long __ATTRS_o_ai
vec_or(vector bool long long __a,vector signed long long __b)6628 vec_or(vector bool long long __a, vector signed long long __b) {
6629   return (vector signed long long)__a | __b;
6630 }
6631 
6632 static __inline__ vector signed long long __ATTRS_o_ai
vec_or(vector signed long long __a,vector bool long long __b)6633 vec_or(vector signed long long __a, vector bool long long __b) {
6634   return __a | (vector signed long long)__b;
6635 }
6636 
6637 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_or(vector unsigned long long __a,vector unsigned long long __b)6638 vec_or(vector unsigned long long __a, vector unsigned long long __b) {
6639   return __a | __b;
6640 }
6641 
6642 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_or(vector bool long long __a,vector unsigned long long __b)6643 vec_or(vector bool long long __a, vector unsigned long long __b) {
6644   return (vector unsigned long long)__a | __b;
6645 }
6646 
6647 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_or(vector unsigned long long __a,vector bool long long __b)6648 vec_or(vector unsigned long long __a, vector bool long long __b) {
6649   return __a | (vector unsigned long long)__b;
6650 }
6651 
6652 static __inline__ vector bool long long __ATTRS_o_ai
vec_or(vector bool long long __a,vector bool long long __b)6653 vec_or(vector bool long long __a, vector bool long long __b) {
6654   return __a | __b;
6655 }
6656 #endif
6657 
6658 #ifdef __POWER8_VECTOR__
6659 static __inline__ vector signed char __ATTRS_o_ai
vec_orc(vector signed char __a,vector signed char __b)6660 vec_orc(vector signed char __a, vector signed char __b) {
6661   return __a | ~__b;
6662 }
6663 
6664 static __inline__ vector signed char __ATTRS_o_ai
vec_orc(vector signed char __a,vector bool char __b)6665 vec_orc(vector signed char __a, vector bool char __b) {
6666   return __a | ~__b;
6667 }
6668 
6669 static __inline__ vector signed char __ATTRS_o_ai
vec_orc(vector bool char __a,vector signed char __b)6670 vec_orc(vector bool char __a, vector signed char __b) {
6671   return __a | ~__b;
6672 }
6673 
6674 static __inline__ vector unsigned char __ATTRS_o_ai
vec_orc(vector unsigned char __a,vector unsigned char __b)6675 vec_orc(vector unsigned char __a, vector unsigned char __b) {
6676   return __a | ~__b;
6677 }
6678 
6679 static __inline__ vector unsigned char __ATTRS_o_ai
vec_orc(vector unsigned char __a,vector bool char __b)6680 vec_orc(vector unsigned char __a, vector bool char __b) {
6681   return __a | ~__b;
6682 }
6683 
6684 static __inline__ vector unsigned char __ATTRS_o_ai
vec_orc(vector bool char __a,vector unsigned char __b)6685 vec_orc(vector bool char __a, vector unsigned char __b) {
6686   return __a | ~__b;
6687 }
6688 
vec_orc(vector bool char __a,vector bool char __b)6689 static __inline__ vector bool char __ATTRS_o_ai vec_orc(vector bool char __a,
6690                                                         vector bool char __b) {
6691   return __a | ~__b;
6692 }
6693 
6694 static __inline__ vector signed short __ATTRS_o_ai
vec_orc(vector signed short __a,vector signed short __b)6695 vec_orc(vector signed short __a, vector signed short __b) {
6696   return __a | ~__b;
6697 }
6698 
6699 static __inline__ vector signed short __ATTRS_o_ai
vec_orc(vector signed short __a,vector bool short __b)6700 vec_orc(vector signed short __a, vector bool short __b) {
6701   return __a | ~__b;
6702 }
6703 
6704 static __inline__ vector signed short __ATTRS_o_ai
vec_orc(vector bool short __a,vector signed short __b)6705 vec_orc(vector bool short __a, vector signed short __b) {
6706   return __a | ~__b;
6707 }
6708 
6709 static __inline__ vector unsigned short __ATTRS_o_ai
vec_orc(vector unsigned short __a,vector unsigned short __b)6710 vec_orc(vector unsigned short __a, vector unsigned short __b) {
6711   return __a | ~__b;
6712 }
6713 
6714 static __inline__ vector unsigned short __ATTRS_o_ai
vec_orc(vector unsigned short __a,vector bool short __b)6715 vec_orc(vector unsigned short __a, vector bool short __b) {
6716   return __a | ~__b;
6717 }
6718 
6719 static __inline__ vector unsigned short __ATTRS_o_ai
vec_orc(vector bool short __a,vector unsigned short __b)6720 vec_orc(vector bool short __a, vector unsigned short __b) {
6721   return __a | ~__b;
6722 }
6723 
6724 static __inline__ vector bool short __ATTRS_o_ai
vec_orc(vector bool short __a,vector bool short __b)6725 vec_orc(vector bool short __a, vector bool short __b) {
6726   return __a | ~__b;
6727 }
6728 
6729 static __inline__ vector signed int __ATTRS_o_ai
vec_orc(vector signed int __a,vector signed int __b)6730 vec_orc(vector signed int __a, vector signed int __b) {
6731   return __a | ~__b;
6732 }
6733 
vec_orc(vector signed int __a,vector bool int __b)6734 static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
6735                                                          vector bool int __b) {
6736   return __a | ~__b;
6737 }
6738 
6739 static __inline__ vector signed int __ATTRS_o_ai
vec_orc(vector bool int __a,vector signed int __b)6740 vec_orc(vector bool int __a, vector signed int __b) {
6741   return __a | ~__b;
6742 }
6743 
6744 static __inline__ vector unsigned int __ATTRS_o_ai
vec_orc(vector unsigned int __a,vector unsigned int __b)6745 vec_orc(vector unsigned int __a, vector unsigned int __b) {
6746   return __a | ~__b;
6747 }
6748 
6749 static __inline__ vector unsigned int __ATTRS_o_ai
vec_orc(vector unsigned int __a,vector bool int __b)6750 vec_orc(vector unsigned int __a, vector bool int __b) {
6751   return __a | ~__b;
6752 }
6753 
6754 static __inline__ vector unsigned int __ATTRS_o_ai
vec_orc(vector bool int __a,vector unsigned int __b)6755 vec_orc(vector bool int __a, vector unsigned int __b) {
6756   return __a | ~__b;
6757 }
6758 
vec_orc(vector bool int __a,vector bool int __b)6759 static __inline__ vector bool int __ATTRS_o_ai vec_orc(vector bool int __a,
6760                                                        vector bool int __b) {
6761   return __a | ~__b;
6762 }
6763 
6764 static __inline__ vector float __ATTRS_o_ai
vec_orc(vector bool int __a,vector float __b)6765 vec_orc(vector bool int __a, vector float __b) {
6766  return (vector float)(__a | ~(vector unsigned int)__b);
6767 }
6768 
6769 static __inline__ vector float __ATTRS_o_ai
vec_orc(vector float __a,vector bool int __b)6770 vec_orc(vector float __a, vector bool int __b) {
6771   return (vector float)((vector unsigned int)__a | ~__b);
6772 }
6773 
6774 static __inline__ vector signed long long __ATTRS_o_ai
vec_orc(vector signed long long __a,vector signed long long __b)6775 vec_orc(vector signed long long __a, vector signed long long __b) {
6776   return __a | ~__b;
6777 }
6778 
6779 static __inline__ vector signed long long __ATTRS_o_ai
vec_orc(vector signed long long __a,vector bool long long __b)6780 vec_orc(vector signed long long __a, vector bool long long __b) {
6781   return __a | ~__b;
6782 }
6783 
6784 static __inline__ vector signed long long __ATTRS_o_ai
vec_orc(vector bool long long __a,vector signed long long __b)6785 vec_orc(vector bool long long __a, vector signed long long __b) {
6786   return __a | ~__b;
6787 }
6788 
6789 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_orc(vector unsigned long long __a,vector unsigned long long __b)6790 vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
6791   return __a | ~__b;
6792 }
6793 
6794 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_orc(vector unsigned long long __a,vector bool long long __b)6795 vec_orc(vector unsigned long long __a, vector bool long long __b) {
6796   return __a | ~__b;
6797 }
6798 
6799 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_orc(vector bool long long __a,vector unsigned long long __b)6800 vec_orc(vector bool long long __a, vector unsigned long long __b) {
6801   return __a | ~__b;
6802 }
6803 
6804 static __inline__ vector bool long long __ATTRS_o_ai
vec_orc(vector bool long long __a,vector bool long long __b)6805 vec_orc(vector bool long long __a, vector bool long long __b) {
6806   return __a | ~__b;
6807 }
6808 
6809 static __inline__ vector double __ATTRS_o_ai
vec_orc(vector double __a,vector bool long long __b)6810 vec_orc(vector double __a, vector bool long long __b) {
6811   return (vector double)((vector unsigned long long)__a | ~__b);
6812 }
6813 
6814 static __inline__ vector double __ATTRS_o_ai
vec_orc(vector bool long long __a,vector double __b)6815 vec_orc(vector bool long long __a, vector double __b) {
6816   return (vector double)(__a | ~(vector unsigned long long)__b);
6817 }
6818 #endif
6819 
6820 /* vec_vor */
6821 
6822 static __inline__ vector signed char __ATTRS_o_ai
vec_vor(vector signed char __a,vector signed char __b)6823 vec_vor(vector signed char __a, vector signed char __b) {
6824   return __a | __b;
6825 }
6826 
6827 static __inline__ vector signed char __ATTRS_o_ai
vec_vor(vector bool char __a,vector signed char __b)6828 vec_vor(vector bool char __a, vector signed char __b) {
6829   return (vector signed char)__a | __b;
6830 }
6831 
6832 static __inline__ vector signed char __ATTRS_o_ai
vec_vor(vector signed char __a,vector bool char __b)6833 vec_vor(vector signed char __a, vector bool char __b) {
6834   return __a | (vector signed char)__b;
6835 }
6836 
6837 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vor(vector unsigned char __a,vector unsigned char __b)6838 vec_vor(vector unsigned char __a, vector unsigned char __b) {
6839   return __a | __b;
6840 }
6841 
6842 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vor(vector bool char __a,vector unsigned char __b)6843 vec_vor(vector bool char __a, vector unsigned char __b) {
6844   return (vector unsigned char)__a | __b;
6845 }
6846 
6847 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vor(vector unsigned char __a,vector bool char __b)6848 vec_vor(vector unsigned char __a, vector bool char __b) {
6849   return __a | (vector unsigned char)__b;
6850 }
6851 
vec_vor(vector bool char __a,vector bool char __b)6852 static __inline__ vector bool char __ATTRS_o_ai vec_vor(vector bool char __a,
6853                                                         vector bool char __b) {
6854   return __a | __b;
6855 }
6856 
vec_vor(vector short __a,vector short __b)6857 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
6858                                                     vector short __b) {
6859   return __a | __b;
6860 }
6861 
vec_vor(vector bool short __a,vector short __b)6862 static __inline__ vector short __ATTRS_o_ai vec_vor(vector bool short __a,
6863                                                     vector short __b) {
6864   return (vector short)__a | __b;
6865 }
6866 
vec_vor(vector short __a,vector bool short __b)6867 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
6868                                                     vector bool short __b) {
6869   return __a | (vector short)__b;
6870 }
6871 
6872 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vor(vector unsigned short __a,vector unsigned short __b)6873 vec_vor(vector unsigned short __a, vector unsigned short __b) {
6874   return __a | __b;
6875 }
6876 
6877 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vor(vector bool short __a,vector unsigned short __b)6878 vec_vor(vector bool short __a, vector unsigned short __b) {
6879   return (vector unsigned short)__a | __b;
6880 }
6881 
6882 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vor(vector unsigned short __a,vector bool short __b)6883 vec_vor(vector unsigned short __a, vector bool short __b) {
6884   return __a | (vector unsigned short)__b;
6885 }
6886 
6887 static __inline__ vector bool short __ATTRS_o_ai
vec_vor(vector bool short __a,vector bool short __b)6888 vec_vor(vector bool short __a, vector bool short __b) {
6889   return __a | __b;
6890 }
6891 
vec_vor(vector int __a,vector int __b)6892 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
6893                                                   vector int __b) {
6894   return __a | __b;
6895 }
6896 
vec_vor(vector bool int __a,vector int __b)6897 static __inline__ vector int __ATTRS_o_ai vec_vor(vector bool int __a,
6898                                                   vector int __b) {
6899   return (vector int)__a | __b;
6900 }
6901 
vec_vor(vector int __a,vector bool int __b)6902 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
6903                                                   vector bool int __b) {
6904   return __a | (vector int)__b;
6905 }
6906 
6907 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vor(vector unsigned int __a,vector unsigned int __b)6908 vec_vor(vector unsigned int __a, vector unsigned int __b) {
6909   return __a | __b;
6910 }
6911 
6912 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vor(vector bool int __a,vector unsigned int __b)6913 vec_vor(vector bool int __a, vector unsigned int __b) {
6914   return (vector unsigned int)__a | __b;
6915 }
6916 
6917 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vor(vector unsigned int __a,vector bool int __b)6918 vec_vor(vector unsigned int __a, vector bool int __b) {
6919   return __a | (vector unsigned int)__b;
6920 }
6921 
vec_vor(vector bool int __a,vector bool int __b)6922 static __inline__ vector bool int __ATTRS_o_ai vec_vor(vector bool int __a,
6923                                                        vector bool int __b) {
6924   return __a | __b;
6925 }
6926 
vec_vor(vector float __a,vector float __b)6927 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
6928                                                     vector float __b) {
6929   vector unsigned int __res =
6930       (vector unsigned int)__a | (vector unsigned int)__b;
6931   return (vector float)__res;
6932 }
6933 
vec_vor(vector bool int __a,vector float __b)6934 static __inline__ vector float __ATTRS_o_ai vec_vor(vector bool int __a,
6935                                                     vector float __b) {
6936   vector unsigned int __res =
6937       (vector unsigned int)__a | (vector unsigned int)__b;
6938   return (vector float)__res;
6939 }
6940 
vec_vor(vector float __a,vector bool int __b)6941 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
6942                                                     vector bool int __b) {
6943   vector unsigned int __res =
6944       (vector unsigned int)__a | (vector unsigned int)__b;
6945   return (vector float)__res;
6946 }
6947 
6948 #ifdef __VSX__
6949 static __inline__ vector signed long long __ATTRS_o_ai
vec_vor(vector signed long long __a,vector signed long long __b)6950 vec_vor(vector signed long long __a, vector signed long long __b) {
6951   return __a | __b;
6952 }
6953 
6954 static __inline__ vector signed long long __ATTRS_o_ai
vec_vor(vector bool long long __a,vector signed long long __b)6955 vec_vor(vector bool long long __a, vector signed long long __b) {
6956   return (vector signed long long)__a | __b;
6957 }
6958 
6959 static __inline__ vector signed long long __ATTRS_o_ai
vec_vor(vector signed long long __a,vector bool long long __b)6960 vec_vor(vector signed long long __a, vector bool long long __b) {
6961   return __a | (vector signed long long)__b;
6962 }
6963 
6964 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vor(vector unsigned long long __a,vector unsigned long long __b)6965 vec_vor(vector unsigned long long __a, vector unsigned long long __b) {
6966   return __a | __b;
6967 }
6968 
6969 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vor(vector bool long long __a,vector unsigned long long __b)6970 vec_vor(vector bool long long __a, vector unsigned long long __b) {
6971   return (vector unsigned long long)__a | __b;
6972 }
6973 
6974 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vor(vector unsigned long long __a,vector bool long long __b)6975 vec_vor(vector unsigned long long __a, vector bool long long __b) {
6976   return __a | (vector unsigned long long)__b;
6977 }
6978 
6979 static __inline__ vector bool long long __ATTRS_o_ai
vec_vor(vector bool long long __a,vector bool long long __b)6980 vec_vor(vector bool long long __a, vector bool long long __b) {
6981   return __a | __b;
6982 }
6983 #endif
6984 
6985 /* vec_pack */
6986 
6987 /* The various vector pack instructions have a big-endian bias, so for
6988    little endian we must handle reversed element numbering.  */
6989 
6990 static __inline__ vector signed char __ATTRS_o_ai
vec_pack(vector signed short __a,vector signed short __b)6991 vec_pack(vector signed short __a, vector signed short __b) {
6992 #ifdef __LITTLE_ENDIAN__
6993   return (vector signed char)vec_perm(
6994       __a, __b,
6995       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6996                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6997 #else
6998   return (vector signed char)vec_perm(
6999       __a, __b,
7000       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
7001                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
7002 #endif
7003 }
7004 
7005 static __inline__ vector unsigned char __ATTRS_o_ai
vec_pack(vector unsigned short __a,vector unsigned short __b)7006 vec_pack(vector unsigned short __a, vector unsigned short __b) {
7007 #ifdef __LITTLE_ENDIAN__
7008   return (vector unsigned char)vec_perm(
7009       __a, __b,
7010       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
7011                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
7012 #else
7013   return (vector unsigned char)vec_perm(
7014       __a, __b,
7015       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
7016                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
7017 #endif
7018 }
7019 
7020 static __inline__ vector bool char __ATTRS_o_ai
vec_pack(vector bool short __a,vector bool short __b)7021 vec_pack(vector bool short __a, vector bool short __b) {
7022 #ifdef __LITTLE_ENDIAN__
7023   return (vector bool char)vec_perm(
7024       __a, __b,
7025       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
7026                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
7027 #else
7028   return (vector bool char)vec_perm(
7029       __a, __b,
7030       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
7031                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
7032 #endif
7033 }
7034 
vec_pack(vector int __a,vector int __b)7035 static __inline__ vector short __ATTRS_o_ai vec_pack(vector int __a,
7036                                                      vector int __b) {
7037 #ifdef __LITTLE_ENDIAN__
7038   return (vector short)vec_perm(
7039       __a, __b,
7040       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
7041                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
7042 #else
7043   return (vector short)vec_perm(
7044       __a, __b,
7045       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
7046                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
7047 #endif
7048 }
7049 
7050 static __inline__ vector unsigned short __ATTRS_o_ai
vec_pack(vector unsigned int __a,vector unsigned int __b)7051 vec_pack(vector unsigned int __a, vector unsigned int __b) {
7052 #ifdef __LITTLE_ENDIAN__
7053   return (vector unsigned short)vec_perm(
7054       __a, __b,
7055       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
7056                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
7057 #else
7058   return (vector unsigned short)vec_perm(
7059       __a, __b,
7060       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
7061                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
7062 #endif
7063 }
7064 
vec_pack(vector bool int __a,vector bool int __b)7065 static __inline__ vector bool short __ATTRS_o_ai vec_pack(vector bool int __a,
7066                                                           vector bool int __b) {
7067 #ifdef __LITTLE_ENDIAN__
7068   return (vector bool short)vec_perm(
7069       __a, __b,
7070       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
7071                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
7072 #else
7073   return (vector bool short)vec_perm(
7074       __a, __b,
7075       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
7076                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
7077 #endif
7078 }
7079 
7080 #ifdef __VSX__
7081 static __inline__ vector signed int __ATTRS_o_ai
vec_pack(vector signed long long __a,vector signed long long __b)7082 vec_pack(vector signed long long __a, vector signed long long __b) {
7083 #ifdef __LITTLE_ENDIAN__
7084   return (vector signed int)vec_perm(
7085       __a, __b,
7086       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
7087                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
7088 #else
7089   return (vector signed int)vec_perm(
7090       __a, __b,
7091       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
7092                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
7093 #endif
7094 }
7095 static __inline__ vector unsigned int __ATTRS_o_ai
vec_pack(vector unsigned long long __a,vector unsigned long long __b)7096 vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
7097 #ifdef __LITTLE_ENDIAN__
7098   return (vector unsigned int)vec_perm(
7099       __a, __b,
7100       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
7101                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
7102 #else
7103   return (vector unsigned int)vec_perm(
7104       __a, __b,
7105       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
7106                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
7107 #endif
7108 }
7109 
7110 static __inline__ vector bool int __ATTRS_o_ai
vec_pack(vector bool long long __a,vector bool long long __b)7111 vec_pack(vector bool long long __a, vector bool long long __b) {
7112 #ifdef __LITTLE_ENDIAN__
7113   return (vector bool int)vec_perm(
7114       __a, __b,
7115       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
7116                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
7117 #else
7118   return (vector bool int)vec_perm(
7119       __a, __b,
7120       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
7121                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
7122 #endif
7123 }
7124 
7125 static __inline__ vector float __ATTRS_o_ai
vec_pack(vector double __a,vector double __b)7126 vec_pack(vector double __a, vector double __b) {
7127   return (vector float) (__a[0], __a[1], __b[0], __b[1]);
7128 }
7129 #endif
7130 
7131 #ifdef __POWER9_VECTOR__
7132 static __inline__ vector unsigned short __ATTRS_o_ai
vec_pack_to_short_fp32(vector float __a,vector float __b)7133 vec_pack_to_short_fp32(vector float __a, vector float __b) {
7134   vector float __resa = __builtin_vsx_xvcvsphp(__a);
7135   vector float __resb = __builtin_vsx_xvcvsphp(__b);
7136 #ifdef __LITTLE_ENDIAN__
7137   return (vector unsigned short)vec_mergee(__resa, __resb);
7138 #else
7139   return (vector unsigned short)vec_mergeo(__resa, __resb);
7140 #endif
7141 }
7142 
7143 #endif
7144 /* vec_vpkuhum */
7145 
7146 #define __builtin_altivec_vpkuhum vec_vpkuhum
7147 
7148 static __inline__ vector signed char __ATTRS_o_ai
vec_vpkuhum(vector signed short __a,vector signed short __b)7149 vec_vpkuhum(vector signed short __a, vector signed short __b) {
7150 #ifdef __LITTLE_ENDIAN__
7151   return (vector signed char)vec_perm(
7152       __a, __b,
7153       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
7154                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
7155 #else
7156   return (vector signed char)vec_perm(
7157       __a, __b,
7158       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
7159                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
7160 #endif
7161 }
7162 
7163 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vpkuhum(vector unsigned short __a,vector unsigned short __b)7164 vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) {
7165 #ifdef __LITTLE_ENDIAN__
7166   return (vector unsigned char)vec_perm(
7167       __a, __b,
7168       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
7169                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
7170 #else
7171   return (vector unsigned char)vec_perm(
7172       __a, __b,
7173       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
7174                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
7175 #endif
7176 }
7177 
7178 static __inline__ vector bool char __ATTRS_o_ai
vec_vpkuhum(vector bool short __a,vector bool short __b)7179 vec_vpkuhum(vector bool short __a, vector bool short __b) {
7180 #ifdef __LITTLE_ENDIAN__
7181   return (vector bool char)vec_perm(
7182       __a, __b,
7183       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
7184                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
7185 #else
7186   return (vector bool char)vec_perm(
7187       __a, __b,
7188       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
7189                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
7190 #endif
7191 }
7192 
7193 /* vec_vpkuwum */
7194 
7195 #define __builtin_altivec_vpkuwum vec_vpkuwum
7196 
vec_vpkuwum(vector int __a,vector int __b)7197 static __inline__ vector short __ATTRS_o_ai vec_vpkuwum(vector int __a,
7198                                                         vector int __b) {
7199 #ifdef __LITTLE_ENDIAN__
7200   return (vector short)vec_perm(
7201       __a, __b,
7202       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
7203                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
7204 #else
7205   return (vector short)vec_perm(
7206       __a, __b,
7207       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
7208                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
7209 #endif
7210 }
7211 
7212 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vpkuwum(vector unsigned int __a,vector unsigned int __b)7213 vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) {
7214 #ifdef __LITTLE_ENDIAN__
7215   return (vector unsigned short)vec_perm(
7216       __a, __b,
7217       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
7218                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
7219 #else
7220   return (vector unsigned short)vec_perm(
7221       __a, __b,
7222       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
7223                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
7224 #endif
7225 }
7226 
7227 static __inline__ vector bool short __ATTRS_o_ai
vec_vpkuwum(vector bool int __a,vector bool int __b)7228 vec_vpkuwum(vector bool int __a, vector bool int __b) {
7229 #ifdef __LITTLE_ENDIAN__
7230   return (vector bool short)vec_perm(
7231       __a, __b,
7232       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
7233                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
7234 #else
7235   return (vector bool short)vec_perm(
7236       __a, __b,
7237       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
7238                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
7239 #endif
7240 }
7241 
7242 /* vec_vpkudum */
7243 
7244 #ifdef __POWER8_VECTOR__
7245 #define __builtin_altivec_vpkudum vec_vpkudum
7246 
vec_vpkudum(vector long long __a,vector long long __b)7247 static __inline__ vector int __ATTRS_o_ai vec_vpkudum(vector long long __a,
7248                                                       vector long long __b) {
7249 #ifdef __LITTLE_ENDIAN__
7250   return (vector int)vec_perm(
7251       __a, __b,
7252       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
7253                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
7254 #else
7255   return (vector int)vec_perm(
7256       __a, __b,
7257       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
7258                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
7259 #endif
7260 }
7261 
7262 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vpkudum(vector unsigned long long __a,vector unsigned long long __b)7263 vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) {
7264 #ifdef __LITTLE_ENDIAN__
7265   return (vector unsigned int)vec_perm(
7266       __a, __b,
7267       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
7268                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
7269 #else
7270   return (vector unsigned int)vec_perm(
7271       __a, __b,
7272       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
7273                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
7274 #endif
7275 }
7276 
7277 static __inline__ vector bool int __ATTRS_o_ai
vec_vpkudum(vector bool long long __a,vector bool long long __b)7278 vec_vpkudum(vector bool long long __a, vector bool long long __b) {
7279 #ifdef __LITTLE_ENDIAN__
7280   return (vector bool int)vec_perm(
7281       (vector long long)__a, (vector long long)__b,
7282       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
7283                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
7284 #else
7285   return (vector bool int)vec_perm(
7286       (vector long long)__a, (vector long long)__b,
7287       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
7288                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
7289 #endif
7290 }
7291 #endif
7292 
7293 /* vec_packpx */
7294 
7295 static __inline__ vector pixel __attribute__((__always_inline__))
vec_packpx(vector unsigned int __a,vector unsigned int __b)7296 vec_packpx(vector unsigned int __a, vector unsigned int __b) {
7297 #ifdef __LITTLE_ENDIAN__
7298   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
7299 #else
7300   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
7301 #endif
7302 }
7303 
7304 /* vec_vpkpx */
7305 
7306 static __inline__ vector pixel __attribute__((__always_inline__))
vec_vpkpx(vector unsigned int __a,vector unsigned int __b)7307 vec_vpkpx(vector unsigned int __a, vector unsigned int __b) {
7308 #ifdef __LITTLE_ENDIAN__
7309   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
7310 #else
7311   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
7312 #endif
7313 }
7314 
7315 /* vec_packs */
7316 
vec_packs(vector short __a,vector short __b)7317 static __inline__ vector signed char __ATTRS_o_ai vec_packs(vector short __a,
7318                                                             vector short __b) {
7319 #ifdef __LITTLE_ENDIAN__
7320   return __builtin_altivec_vpkshss(__b, __a);
7321 #else
7322   return __builtin_altivec_vpkshss(__a, __b);
7323 #endif
7324 }
7325 
7326 static __inline__ vector unsigned char __ATTRS_o_ai
vec_packs(vector unsigned short __a,vector unsigned short __b)7327 vec_packs(vector unsigned short __a, vector unsigned short __b) {
7328 #ifdef __LITTLE_ENDIAN__
7329   return __builtin_altivec_vpkuhus(__b, __a);
7330 #else
7331   return __builtin_altivec_vpkuhus(__a, __b);
7332 #endif
7333 }
7334 
vec_packs(vector int __a,vector int __b)7335 static __inline__ vector signed short __ATTRS_o_ai vec_packs(vector int __a,
7336                                                              vector int __b) {
7337 #ifdef __LITTLE_ENDIAN__
7338   return __builtin_altivec_vpkswss(__b, __a);
7339 #else
7340   return __builtin_altivec_vpkswss(__a, __b);
7341 #endif
7342 }
7343 
7344 static __inline__ vector unsigned short __ATTRS_o_ai
vec_packs(vector unsigned int __a,vector unsigned int __b)7345 vec_packs(vector unsigned int __a, vector unsigned int __b) {
7346 #ifdef __LITTLE_ENDIAN__
7347   return __builtin_altivec_vpkuwus(__b, __a);
7348 #else
7349   return __builtin_altivec_vpkuwus(__a, __b);
7350 #endif
7351 }
7352 
7353 #ifdef __POWER8_VECTOR__
vec_packs(vector long long __a,vector long long __b)7354 static __inline__ vector int __ATTRS_o_ai vec_packs(vector long long __a,
7355                                                     vector long long __b) {
7356 #ifdef __LITTLE_ENDIAN__
7357   return __builtin_altivec_vpksdss(__b, __a);
7358 #else
7359   return __builtin_altivec_vpksdss(__a, __b);
7360 #endif
7361 }
7362 
7363 static __inline__ vector unsigned int __ATTRS_o_ai
vec_packs(vector unsigned long long __a,vector unsigned long long __b)7364 vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
7365 #ifdef __LITTLE_ENDIAN__
7366   return __builtin_altivec_vpkudus(__b, __a);
7367 #else
7368   return __builtin_altivec_vpkudus(__a, __b);
7369 #endif
7370 }
7371 #endif
7372 
7373 /* vec_vpkshss */
7374 
7375 static __inline__ vector signed char __attribute__((__always_inline__))
vec_vpkshss(vector short __a,vector short __b)7376 vec_vpkshss(vector short __a, vector short __b) {
7377 #ifdef __LITTLE_ENDIAN__
7378   return __builtin_altivec_vpkshss(__b, __a);
7379 #else
7380   return __builtin_altivec_vpkshss(__a, __b);
7381 #endif
7382 }
7383 
7384 /* vec_vpksdss */
7385 
7386 #ifdef __POWER8_VECTOR__
vec_vpksdss(vector long long __a,vector long long __b)7387 static __inline__ vector int __ATTRS_o_ai vec_vpksdss(vector long long __a,
7388                                                       vector long long __b) {
7389 #ifdef __LITTLE_ENDIAN__
7390   return __builtin_altivec_vpksdss(__b, __a);
7391 #else
7392   return __builtin_altivec_vpksdss(__a, __b);
7393 #endif
7394 }
7395 #endif
7396 
7397 /* vec_vpkuhus */
7398 
7399 static __inline__ vector unsigned char __attribute__((__always_inline__))
vec_vpkuhus(vector unsigned short __a,vector unsigned short __b)7400 vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) {
7401 #ifdef __LITTLE_ENDIAN__
7402   return __builtin_altivec_vpkuhus(__b, __a);
7403 #else
7404   return __builtin_altivec_vpkuhus(__a, __b);
7405 #endif
7406 }
7407 
7408 /* vec_vpkudus */
7409 
7410 #ifdef __POWER8_VECTOR__
7411 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vpkudus(vector unsigned long long __a,vector unsigned long long __b)7412 vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) {
7413 #ifdef __LITTLE_ENDIAN__
7414   return __builtin_altivec_vpkudus(__b, __a);
7415 #else
7416   return __builtin_altivec_vpkudus(__a, __b);
7417 #endif
7418 }
7419 #endif
7420 
7421 /* vec_vpkswss */
7422 
7423 static __inline__ vector signed short __attribute__((__always_inline__))
vec_vpkswss(vector int __a,vector int __b)7424 vec_vpkswss(vector int __a, vector int __b) {
7425 #ifdef __LITTLE_ENDIAN__
7426   return __builtin_altivec_vpkswss(__b, __a);
7427 #else
7428   return __builtin_altivec_vpkswss(__a, __b);
7429 #endif
7430 }
7431 
7432 /* vec_vpkuwus */
7433 
7434 static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vpkuwus(vector unsigned int __a,vector unsigned int __b)7435 vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) {
7436 #ifdef __LITTLE_ENDIAN__
7437   return __builtin_altivec_vpkuwus(__b, __a);
7438 #else
7439   return __builtin_altivec_vpkuwus(__a, __b);
7440 #endif
7441 }
7442 
7443 /* vec_packsu */
7444 
7445 static __inline__ vector unsigned char __ATTRS_o_ai
vec_packsu(vector short __a,vector short __b)7446 vec_packsu(vector short __a, vector short __b) {
7447 #ifdef __LITTLE_ENDIAN__
7448   return __builtin_altivec_vpkshus(__b, __a);
7449 #else
7450   return __builtin_altivec_vpkshus(__a, __b);
7451 #endif
7452 }
7453 
7454 static __inline__ vector unsigned char __ATTRS_o_ai
vec_packsu(vector unsigned short __a,vector unsigned short __b)7455 vec_packsu(vector unsigned short __a, vector unsigned short __b) {
7456 #ifdef __LITTLE_ENDIAN__
7457   return __builtin_altivec_vpkuhus(__b, __a);
7458 #else
7459   return __builtin_altivec_vpkuhus(__a, __b);
7460 #endif
7461 }
7462 
7463 static __inline__ vector unsigned short __ATTRS_o_ai
vec_packsu(vector int __a,vector int __b)7464 vec_packsu(vector int __a, vector int __b) {
7465 #ifdef __LITTLE_ENDIAN__
7466   return __builtin_altivec_vpkswus(__b, __a);
7467 #else
7468   return __builtin_altivec_vpkswus(__a, __b);
7469 #endif
7470 }
7471 
7472 static __inline__ vector unsigned short __ATTRS_o_ai
vec_packsu(vector unsigned int __a,vector unsigned int __b)7473 vec_packsu(vector unsigned int __a, vector unsigned int __b) {
7474 #ifdef __LITTLE_ENDIAN__
7475   return __builtin_altivec_vpkuwus(__b, __a);
7476 #else
7477   return __builtin_altivec_vpkuwus(__a, __b);
7478 #endif
7479 }
7480 
7481 #ifdef __POWER8_VECTOR__
7482 static __inline__ vector unsigned int __ATTRS_o_ai
vec_packsu(vector long long __a,vector long long __b)7483 vec_packsu(vector long long __a, vector long long __b) {
7484 #ifdef __LITTLE_ENDIAN__
7485   return __builtin_altivec_vpksdus(__b, __a);
7486 #else
7487   return __builtin_altivec_vpksdus(__a, __b);
7488 #endif
7489 }
7490 
7491 static __inline__ vector unsigned int __ATTRS_o_ai
vec_packsu(vector unsigned long long __a,vector unsigned long long __b)7492 vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
7493 #ifdef __LITTLE_ENDIAN__
7494   return __builtin_altivec_vpkudus(__b, __a);
7495 #else
7496   return __builtin_altivec_vpkudus(__a, __b);
7497 #endif
7498 }
7499 #endif
7500 
7501 /* vec_vpkshus */
7502 
7503 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vpkshus(vector short __a,vector short __b)7504 vec_vpkshus(vector short __a, vector short __b) {
7505 #ifdef __LITTLE_ENDIAN__
7506   return __builtin_altivec_vpkshus(__b, __a);
7507 #else
7508   return __builtin_altivec_vpkshus(__a, __b);
7509 #endif
7510 }
7511 
7512 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vpkshus(vector unsigned short __a,vector unsigned short __b)7513 vec_vpkshus(vector unsigned short __a, vector unsigned short __b) {
7514 #ifdef __LITTLE_ENDIAN__
7515   return __builtin_altivec_vpkuhus(__b, __a);
7516 #else
7517   return __builtin_altivec_vpkuhus(__a, __b);
7518 #endif
7519 }
7520 
7521 /* vec_vpkswus */
7522 
7523 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vpkswus(vector int __a,vector int __b)7524 vec_vpkswus(vector int __a, vector int __b) {
7525 #ifdef __LITTLE_ENDIAN__
7526   return __builtin_altivec_vpkswus(__b, __a);
7527 #else
7528   return __builtin_altivec_vpkswus(__a, __b);
7529 #endif
7530 }
7531 
7532 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vpkswus(vector unsigned int __a,vector unsigned int __b)7533 vec_vpkswus(vector unsigned int __a, vector unsigned int __b) {
7534 #ifdef __LITTLE_ENDIAN__
7535   return __builtin_altivec_vpkuwus(__b, __a);
7536 #else
7537   return __builtin_altivec_vpkuwus(__a, __b);
7538 #endif
7539 }
7540 
7541 /* vec_vpksdus */
7542 
7543 #ifdef __POWER8_VECTOR__
7544 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vpksdus(vector long long __a,vector long long __b)7545 vec_vpksdus(vector long long __a, vector long long __b) {
7546 #ifdef __LITTLE_ENDIAN__
7547   return __builtin_altivec_vpksdus(__b, __a);
7548 #else
7549   return __builtin_altivec_vpksdus(__a, __b);
7550 #endif
7551 }
7552 #endif
7553 
7554 /* vec_perm */
7555 
7556 // The vperm instruction is defined architecturally with a big-endian bias.
7557 // For little endian, we swap the input operands and invert the permute
7558 // control vector.  Only the rightmost 5 bits matter, so we could use
7559 // a vector of all 31s instead of all 255s to perform the inversion.
7560 // However, when the PCV is not a constant, using 255 has an advantage
7561 // in that the vec_xor can be recognized as a vec_nor (and for P8 and
7562 // later, possibly a vec_nand).
7563 
vec_perm(vector signed char __a,vector signed char __b,vector unsigned char __c)7564 static __inline__ vector signed char __ATTRS_o_ai vec_perm(
7565     vector signed char __a, vector signed char __b, vector unsigned char __c) {
7566 #ifdef __LITTLE_ENDIAN__
7567   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7568                               255, 255, 255, 255, 255, 255, 255, 255};
7569   __d = vec_xor(__c, __d);
7570   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b,
7571                                                          (vector int)__a, __d);
7572 #else
7573   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a,
7574                                                          (vector int)__b, __c);
7575 #endif
7576 }
7577 
7578 static __inline__ vector unsigned char __ATTRS_o_ai
vec_perm(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)7579 vec_perm(vector unsigned char __a, vector unsigned char __b,
7580          vector unsigned char __c) {
7581 #ifdef __LITTLE_ENDIAN__
7582   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7583                               255, 255, 255, 255, 255, 255, 255, 255};
7584   __d = vec_xor(__c, __d);
7585   return (vector unsigned char)__builtin_altivec_vperm_4si(
7586       (vector int)__b, (vector int)__a, __d);
7587 #else
7588   return (vector unsigned char)__builtin_altivec_vperm_4si(
7589       (vector int)__a, (vector int)__b, __c);
7590 #endif
7591 }
7592 
7593 static __inline__ vector bool char __ATTRS_o_ai
vec_perm(vector bool char __a,vector bool char __b,vector unsigned char __c)7594 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) {
7595 #ifdef __LITTLE_ENDIAN__
7596   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7597                               255, 255, 255, 255, 255, 255, 255, 255};
7598   __d = vec_xor(__c, __d);
7599   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b,
7600                                                        (vector int)__a, __d);
7601 #else
7602   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a,
7603                                                        (vector int)__b, __c);
7604 #endif
7605 }
7606 
vec_perm(vector signed short __a,vector signed short __b,vector unsigned char __c)7607 static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
7608                                                      vector signed short __b,
7609                                                      vector unsigned char __c) {
7610 #ifdef __LITTLE_ENDIAN__
7611   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7612                               255, 255, 255, 255, 255, 255, 255, 255};
7613   __d = vec_xor(__c, __d);
7614   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b,
7615                                                           (vector int)__a, __d);
7616 #else
7617   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a,
7618                                                           (vector int)__b, __c);
7619 #endif
7620 }
7621 
7622 static __inline__ vector unsigned short __ATTRS_o_ai
vec_perm(vector unsigned short __a,vector unsigned short __b,vector unsigned char __c)7623 vec_perm(vector unsigned short __a, vector unsigned short __b,
7624          vector unsigned char __c) {
7625 #ifdef __LITTLE_ENDIAN__
7626   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7627                               255, 255, 255, 255, 255, 255, 255, 255};
7628   __d = vec_xor(__c, __d);
7629   return (vector unsigned short)__builtin_altivec_vperm_4si(
7630       (vector int)__b, (vector int)__a, __d);
7631 #else
7632   return (vector unsigned short)__builtin_altivec_vperm_4si(
7633       (vector int)__a, (vector int)__b, __c);
7634 #endif
7635 }
7636 
vec_perm(vector bool short __a,vector bool short __b,vector unsigned char __c)7637 static __inline__ vector bool short __ATTRS_o_ai vec_perm(
7638     vector bool short __a, vector bool short __b, vector unsigned char __c) {
7639 #ifdef __LITTLE_ENDIAN__
7640   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7641                               255, 255, 255, 255, 255, 255, 255, 255};
7642   __d = vec_xor(__c, __d);
7643   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b,
7644                                                         (vector int)__a, __d);
7645 #else
7646   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a,
7647                                                         (vector int)__b, __c);
7648 #endif
7649 }
7650 
vec_perm(vector pixel __a,vector pixel __b,vector unsigned char __c)7651 static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
7652                                                      vector pixel __b,
7653                                                      vector unsigned char __c) {
7654 #ifdef __LITTLE_ENDIAN__
7655   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7656                               255, 255, 255, 255, 255, 255, 255, 255};
7657   __d = vec_xor(__c, __d);
7658   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b,
7659                                                    (vector int)__a, __d);
7660 #else
7661   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a,
7662                                                    (vector int)__b, __c);
7663 #endif
7664 }
7665 
vec_perm(vector signed int __a,vector signed int __b,vector unsigned char __c)7666 static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
7667                                                    vector signed int __b,
7668                                                    vector unsigned char __c) {
7669 #ifdef __LITTLE_ENDIAN__
7670   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7671                               255, 255, 255, 255, 255, 255, 255, 255};
7672   __d = vec_xor(__c, __d);
7673   return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d);
7674 #else
7675   return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c);
7676 #endif
7677 }
7678 
7679 static __inline__ vector unsigned int __ATTRS_o_ai
vec_perm(vector unsigned int __a,vector unsigned int __b,vector unsigned char __c)7680 vec_perm(vector unsigned int __a, vector unsigned int __b,
7681          vector unsigned char __c) {
7682 #ifdef __LITTLE_ENDIAN__
7683   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7684                               255, 255, 255, 255, 255, 255, 255, 255};
7685   __d = vec_xor(__c, __d);
7686   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b,
7687                                                           (vector int)__a, __d);
7688 #else
7689   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a,
7690                                                           (vector int)__b, __c);
7691 #endif
7692 }
7693 
7694 static __inline__ vector bool int __ATTRS_o_ai
vec_perm(vector bool int __a,vector bool int __b,vector unsigned char __c)7695 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
7696 #ifdef __LITTLE_ENDIAN__
7697   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7698                               255, 255, 255, 255, 255, 255, 255, 255};
7699   __d = vec_xor(__c, __d);
7700   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b,
7701                                                       (vector int)__a, __d);
7702 #else
7703   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a,
7704                                                       (vector int)__b, __c);
7705 #endif
7706 }
7707 
vec_perm(vector float __a,vector float __b,vector unsigned char __c)7708 static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
7709                                                      vector float __b,
7710                                                      vector unsigned char __c) {
7711 #ifdef __LITTLE_ENDIAN__
7712   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7713                               255, 255, 255, 255, 255, 255, 255, 255};
7714   __d = vec_xor(__c, __d);
7715   return (vector float)__builtin_altivec_vperm_4si((vector int)__b,
7716                                                    (vector int)__a, __d);
7717 #else
7718   return (vector float)__builtin_altivec_vperm_4si((vector int)__a,
7719                                                    (vector int)__b, __c);
7720 #endif
7721 }
7722 
7723 #ifdef __VSX__
7724 static __inline__ vector long long __ATTRS_o_ai
vec_perm(vector signed long long __a,vector signed long long __b,vector unsigned char __c)7725 vec_perm(vector signed long long __a, vector signed long long __b,
7726          vector unsigned char __c) {
7727 #ifdef __LITTLE_ENDIAN__
7728   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7729                               255, 255, 255, 255, 255, 255, 255, 255};
7730   __d = vec_xor(__c, __d);
7731   return (vector signed long long)__builtin_altivec_vperm_4si(
7732       (vector int)__b, (vector int)__a, __d);
7733 #else
7734   return (vector signed long long)__builtin_altivec_vperm_4si(
7735       (vector int)__a, (vector int)__b, __c);
7736 #endif
7737 }
7738 
7739 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)7740 vec_perm(vector unsigned long long __a, vector unsigned long long __b,
7741          vector unsigned char __c) {
7742 #ifdef __LITTLE_ENDIAN__
7743   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7744                               255, 255, 255, 255, 255, 255, 255, 255};
7745   __d = vec_xor(__c, __d);
7746   return (vector unsigned long long)__builtin_altivec_vperm_4si(
7747       (vector int)__b, (vector int)__a, __d);
7748 #else
7749   return (vector unsigned long long)__builtin_altivec_vperm_4si(
7750       (vector int)__a, (vector int)__b, __c);
7751 #endif
7752 }
7753 
7754 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)7755 vec_perm(vector bool long long __a, vector bool long long __b,
7756          vector unsigned char __c) {
7757 #ifdef __LITTLE_ENDIAN__
7758   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7759                               255, 255, 255, 255, 255, 255, 255, 255};
7760   __d = vec_xor(__c, __d);
7761   return (vector bool long long)__builtin_altivec_vperm_4si(
7762       (vector int)__b, (vector int)__a, __d);
7763 #else
7764   return (vector bool long long)__builtin_altivec_vperm_4si(
7765       (vector int)__a, (vector int)__b, __c);
7766 #endif
7767 }
7768 
7769 static __inline__ vector double __ATTRS_o_ai
vec_perm(vector double __a,vector double __b,vector unsigned char __c)7770 vec_perm(vector double __a, vector double __b, vector unsigned char __c) {
7771 #ifdef __LITTLE_ENDIAN__
7772   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7773                               255, 255, 255, 255, 255, 255, 255, 255};
7774   __d = vec_xor(__c, __d);
7775   return (vector double)__builtin_altivec_vperm_4si((vector int)__b,
7776                                                     (vector int)__a, __d);
7777 #else
7778   return (vector double)__builtin_altivec_vperm_4si((vector int)__a,
7779                                                     (vector int)__b, __c);
7780 #endif
7781 }
7782 #endif
7783 
7784 /* vec_vperm */
7785 
vec_vperm(vector signed char __a,vector signed char __b,vector unsigned char __c)7786 static __inline__ vector signed char __ATTRS_o_ai vec_vperm(
7787     vector signed char __a, vector signed char __b, vector unsigned char __c) {
7788   return vec_perm(__a, __b, __c);
7789 }
7790 
7791 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vperm(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)7792 vec_vperm(vector unsigned char __a, vector unsigned char __b,
7793           vector unsigned char __c) {
7794   return vec_perm(__a, __b, __c);
7795 }
7796 
vec_vperm(vector bool char __a,vector bool char __b,vector unsigned char __c)7797 static __inline__ vector bool char __ATTRS_o_ai vec_vperm(
7798     vector bool char __a, vector bool char __b, vector unsigned char __c) {
7799   return vec_perm(__a, __b, __c);
7800 }
7801 
7802 static __inline__ vector short __ATTRS_o_ai
vec_vperm(vector short __a,vector short __b,vector unsigned char __c)7803 vec_vperm(vector short __a, vector short __b, vector unsigned char __c) {
7804   return vec_perm(__a, __b, __c);
7805 }
7806 
7807 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vperm(vector unsigned short __a,vector unsigned short __b,vector unsigned char __c)7808 vec_vperm(vector unsigned short __a, vector unsigned short __b,
7809           vector unsigned char __c) {
7810   return vec_perm(__a, __b, __c);
7811 }
7812 
vec_vperm(vector bool short __a,vector bool short __b,vector unsigned char __c)7813 static __inline__ vector bool short __ATTRS_o_ai vec_vperm(
7814     vector bool short __a, vector bool short __b, vector unsigned char __c) {
7815   return vec_perm(__a, __b, __c);
7816 }
7817 
7818 static __inline__ vector pixel __ATTRS_o_ai
vec_vperm(vector pixel __a,vector pixel __b,vector unsigned char __c)7819 vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) {
7820   return vec_perm(__a, __b, __c);
7821 }
7822 
vec_vperm(vector int __a,vector int __b,vector unsigned char __c)7823 static __inline__ vector int __ATTRS_o_ai vec_vperm(vector int __a,
7824                                                     vector int __b,
7825                                                     vector unsigned char __c) {
7826   return vec_perm(__a, __b, __c);
7827 }
7828 
7829 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vperm(vector unsigned int __a,vector unsigned int __b,vector unsigned char __c)7830 vec_vperm(vector unsigned int __a, vector unsigned int __b,
7831           vector unsigned char __c) {
7832   return vec_perm(__a, __b, __c);
7833 }
7834 
7835 static __inline__ vector bool int __ATTRS_o_ai
vec_vperm(vector bool int __a,vector bool int __b,vector unsigned char __c)7836 vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
7837   return vec_perm(__a, __b, __c);
7838 }
7839 
7840 static __inline__ vector float __ATTRS_o_ai
vec_vperm(vector float __a,vector float __b,vector unsigned char __c)7841 vec_vperm(vector float __a, vector float __b, vector unsigned char __c) {
7842   return vec_perm(__a, __b, __c);
7843 }
7844 
7845 #ifdef __VSX__
vec_vperm(vector long long __a,vector long long __b,vector unsigned char __c)7846 static __inline__ vector long long __ATTRS_o_ai vec_vperm(
7847     vector long long __a, vector long long __b, vector unsigned char __c) {
7848   return vec_perm(__a, __b, __c);
7849 }
7850 
7851 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)7852 vec_vperm(vector unsigned long long __a, vector unsigned long long __b,
7853           vector unsigned char __c) {
7854   return vec_perm(__a, __b, __c);
7855 }
7856 
7857 static __inline__ vector double __ATTRS_o_ai
vec_vperm(vector double __a,vector double __b,vector unsigned char __c)7858 vec_vperm(vector double __a, vector double __b, vector unsigned char __c) {
7859   return vec_perm(__a, __b, __c);
7860 }
7861 #endif
7862 
7863 /* vec_re */
7864 
vec_re(vector float __a)7865 static __inline__ vector float __ATTRS_o_ai vec_re(vector float __a) {
7866 #ifdef __VSX__
7867   return __builtin_vsx_xvresp(__a);
7868 #else
7869   return __builtin_altivec_vrefp(__a);
7870 #endif
7871 }
7872 
7873 #ifdef __VSX__
vec_re(vector double __a)7874 static __inline__ vector double __ATTRS_o_ai vec_re(vector double __a) {
7875   return __builtin_vsx_xvredp(__a);
7876 }
7877 #endif
7878 
7879 /* vec_vrefp */
7880 
7881 static __inline__ vector float __attribute__((__always_inline__))
vec_vrefp(vector float __a)7882 vec_vrefp(vector float __a) {
7883   return __builtin_altivec_vrefp(__a);
7884 }
7885 
7886 /* vec_rl */
7887 
7888 static __inline__ vector signed char __ATTRS_o_ai
vec_rl(vector signed char __a,vector unsigned char __b)7889 vec_rl(vector signed char __a, vector unsigned char __b) {
7890   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
7891 }
7892 
7893 static __inline__ vector unsigned char __ATTRS_o_ai
vec_rl(vector unsigned char __a,vector unsigned char __b)7894 vec_rl(vector unsigned char __a, vector unsigned char __b) {
7895   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
7896 }
7897 
vec_rl(vector short __a,vector unsigned short __b)7898 static __inline__ vector short __ATTRS_o_ai vec_rl(vector short __a,
7899                                                    vector unsigned short __b) {
7900   return __builtin_altivec_vrlh(__a, __b);
7901 }
7902 
7903 static __inline__ vector unsigned short __ATTRS_o_ai
vec_rl(vector unsigned short __a,vector unsigned short __b)7904 vec_rl(vector unsigned short __a, vector unsigned short __b) {
7905   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
7906 }
7907 
vec_rl(vector int __a,vector unsigned int __b)7908 static __inline__ vector int __ATTRS_o_ai vec_rl(vector int __a,
7909                                                  vector unsigned int __b) {
7910   return __builtin_altivec_vrlw(__a, __b);
7911 }
7912 
7913 static __inline__ vector unsigned int __ATTRS_o_ai
vec_rl(vector unsigned int __a,vector unsigned int __b)7914 vec_rl(vector unsigned int __a, vector unsigned int __b) {
7915   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
7916 }
7917 
7918 #ifdef __POWER8_VECTOR__
7919 static __inline__ vector signed long long __ATTRS_o_ai
vec_rl(vector signed long long __a,vector unsigned long long __b)7920 vec_rl(vector signed long long __a, vector unsigned long long __b) {
7921   return __builtin_altivec_vrld(__a, __b);
7922 }
7923 
7924 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_rl(vector unsigned long long __a,vector unsigned long long __b)7925 vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
7926   return __builtin_altivec_vrld(__a, __b);
7927 }
7928 #endif
7929 
7930 #ifdef __POWER10_VECTOR__
7931 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_rl(vector signed __int128 __a,vector unsigned __int128 __b)7932 vec_rl(vector signed __int128 __a, vector unsigned __int128 __b) {
7933   return (__b << __a)|(__b >> ((__CHAR_BIT__ * sizeof(vector signed __int128)) - __a));
7934 }
7935 
7936 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_rl(vector unsigned __int128 __a,vector unsigned __int128 __b)7937 vec_rl(vector unsigned __int128 __a, vector unsigned __int128 __b) {
7938   return (__b << __a)|(__b >> ((__CHAR_BIT__ * sizeof(vector unsigned __int128)) - __a));
7939 }
7940 #endif
7941 
7942 /* vec_rlmi */
7943 #ifdef __POWER9_VECTOR__
7944 static __inline__ vector unsigned int __ATTRS_o_ai
vec_rlmi(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)7945 vec_rlmi(vector unsigned int __a, vector unsigned int __b,
7946          vector unsigned int __c) {
7947   return __builtin_altivec_vrlwmi(__a, __c, __b);
7948 }
7949 
7950 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_rlmi(vector unsigned long long __a,vector unsigned long long __b,vector unsigned long long __c)7951 vec_rlmi(vector unsigned long long __a, vector unsigned long long __b,
7952          vector unsigned long long __c) {
7953   return __builtin_altivec_vrldmi(__a, __c, __b);
7954 }
7955 #endif
7956 
7957 #ifdef __POWER10_VECTOR__
7958 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_rlmi(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)7959 vec_rlmi(vector unsigned __int128 __a, vector unsigned __int128 __b,
7960          vector unsigned __int128 __c) {
7961   return __builtin_altivec_vrlqmi(__a, __c, __b);
7962 }
7963 
7964 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_rlmi(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)7965 vec_rlmi(vector signed __int128 __a, vector signed __int128 __b,
7966          vector signed __int128 __c) {
7967   return __builtin_altivec_vrlqmi(__a, __c, __b);
7968 }
7969 #endif
7970 
7971 /* vec_rlnm */
7972 #ifdef __POWER9_VECTOR__
7973 static __inline__ vector unsigned int __ATTRS_o_ai
vec_rlnm(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)7974 vec_rlnm(vector unsigned int __a, vector unsigned int __b,
7975          vector unsigned int __c) {
7976   vector unsigned int OneByte = { 0x8, 0x8, 0x8, 0x8 };
7977   return __builtin_altivec_vrlwnm(__a, ((__c << OneByte) | __b));
7978 }
7979 
7980 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_rlnm(vector unsigned long long __a,vector unsigned long long __b,vector unsigned long long __c)7981 vec_rlnm(vector unsigned long long __a, vector unsigned long long __b,
7982          vector unsigned long long __c) {
7983   vector unsigned long long OneByte = { 0x8, 0x8 };
7984   return __builtin_altivec_vrldnm(__a, ((__c << OneByte) | __b));
7985 }
7986 #endif
7987 
7988 #ifdef __POWER10_VECTOR__
7989 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_rlnm(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)7990 vec_rlnm(vector unsigned __int128 __a, vector unsigned __int128 __b,
7991          vector unsigned __int128 __c) {
7992   // Merge __b and __c using an appropriate shuffle.
7993   vector unsigned char TmpB = (vector unsigned char)__b;
7994   vector unsigned char TmpC = (vector unsigned char)__c;
7995   vector unsigned char MaskAndShift =
7996 #ifdef __LITTLE_ENDIAN__
7997       __builtin_shufflevector(TmpB, TmpC, -1, -1, -1, -1, -1, -1, -1, -1, 16, 0,
7998                               1, -1, -1, -1, -1, -1);
7999 #else
8000       __builtin_shufflevector(TmpB, TmpC, -1, -1, -1, -1, -1, 31, 30, 15, -1,
8001                               -1, -1, -1, -1, -1, -1, -1);
8002 #endif
8003    return __builtin_altivec_vrlqnm(__a, (vector unsigned __int128) MaskAndShift);
8004 }
8005 
8006 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_rlnm(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)8007 vec_rlnm(vector signed __int128 __a, vector signed __int128 __b,
8008          vector signed __int128 __c) {
8009   // Merge __b and __c using an appropriate shuffle.
8010   vector unsigned char TmpB = (vector unsigned char)__b;
8011   vector unsigned char TmpC = (vector unsigned char)__c;
8012   vector unsigned char MaskAndShift =
8013 #ifdef __LITTLE_ENDIAN__
8014       __builtin_shufflevector(TmpB, TmpC, -1, -1, -1, -1, -1, -1, -1, -1, 16, 0,
8015                               1, -1, -1, -1, -1, -1);
8016 #else
8017       __builtin_shufflevector(TmpB, TmpC, -1, -1, -1, -1, -1, 31, 30, 15, -1,
8018                               -1, -1, -1, -1, -1, -1, -1);
8019 #endif
8020   return __builtin_altivec_vrlqnm(__a, (vector unsigned __int128) MaskAndShift);
8021 }
8022 #endif
8023 
8024 /* vec_vrlb */
8025 
8026 static __inline__ vector signed char __ATTRS_o_ai
vec_vrlb(vector signed char __a,vector unsigned char __b)8027 vec_vrlb(vector signed char __a, vector unsigned char __b) {
8028   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
8029 }
8030 
8031 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vrlb(vector unsigned char __a,vector unsigned char __b)8032 vec_vrlb(vector unsigned char __a, vector unsigned char __b) {
8033   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
8034 }
8035 
8036 /* vec_vrlh */
8037 
8038 static __inline__ vector short __ATTRS_o_ai
vec_vrlh(vector short __a,vector unsigned short __b)8039 vec_vrlh(vector short __a, vector unsigned short __b) {
8040   return __builtin_altivec_vrlh(__a, __b);
8041 }
8042 
8043 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vrlh(vector unsigned short __a,vector unsigned short __b)8044 vec_vrlh(vector unsigned short __a, vector unsigned short __b) {
8045   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
8046 }
8047 
8048 /* vec_vrlw */
8049 
vec_vrlw(vector int __a,vector unsigned int __b)8050 static __inline__ vector int __ATTRS_o_ai vec_vrlw(vector int __a,
8051                                                    vector unsigned int __b) {
8052   return __builtin_altivec_vrlw(__a, __b);
8053 }
8054 
8055 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vrlw(vector unsigned int __a,vector unsigned int __b)8056 vec_vrlw(vector unsigned int __a, vector unsigned int __b) {
8057   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
8058 }
8059 
8060 /* vec_round */
8061 
vec_round(vector float __a)8062 static __inline__ vector float __ATTRS_o_ai vec_round(vector float __a) {
8063 #ifdef __VSX__
8064   return __builtin_vsx_xvrspi(__a);
8065 #else
8066   return __builtin_altivec_vrfin(__a);
8067 #endif
8068 }
8069 
8070 #ifdef __VSX__
vec_round(vector double __a)8071 static __inline__ vector double __ATTRS_o_ai vec_round(vector double __a) {
8072   return __builtin_vsx_xvrdpi(__a);
8073 }
8074 
8075 /* vec_rint */
8076 
vec_rint(vector float __a)8077 static __inline__ vector float __ATTRS_o_ai vec_rint(vector float __a) {
8078   return __builtin_vsx_xvrspic(__a);
8079 }
8080 
vec_rint(vector double __a)8081 static __inline__ vector double __ATTRS_o_ai vec_rint(vector double __a) {
8082   return __builtin_vsx_xvrdpic(__a);
8083 }
8084 
8085 /* vec_nearbyint */
8086 
vec_nearbyint(vector float __a)8087 static __inline__ vector float __ATTRS_o_ai vec_nearbyint(vector float __a) {
8088   return __builtin_vsx_xvrspi(__a);
8089 }
8090 
vec_nearbyint(vector double __a)8091 static __inline__ vector double __ATTRS_o_ai vec_nearbyint(vector double __a) {
8092   return __builtin_vsx_xvrdpi(__a);
8093 }
8094 #endif
8095 
8096 /* vec_vrfin */
8097 
8098 static __inline__ vector float __attribute__((__always_inline__))
vec_vrfin(vector float __a)8099 vec_vrfin(vector float __a) {
8100   return __builtin_altivec_vrfin(__a);
8101 }
8102 
8103 /* vec_sqrt */
8104 
8105 #ifdef __VSX__
vec_sqrt(vector float __a)8106 static __inline__ vector float __ATTRS_o_ai vec_sqrt(vector float __a) {
8107   return __builtin_vsx_xvsqrtsp(__a);
8108 }
8109 
vec_sqrt(vector double __a)8110 static __inline__ vector double __ATTRS_o_ai vec_sqrt(vector double __a) {
8111   return __builtin_vsx_xvsqrtdp(__a);
8112 }
8113 #endif
8114 
8115 /* vec_rsqrte */
8116 
vec_rsqrte(vector float __a)8117 static __inline__ vector float __ATTRS_o_ai vec_rsqrte(vector float __a) {
8118 #ifdef __VSX__
8119   return __builtin_vsx_xvrsqrtesp(__a);
8120 #else
8121   return __builtin_altivec_vrsqrtefp(__a);
8122 #endif
8123 }
8124 
8125 #ifdef __VSX__
vec_rsqrte(vector double __a)8126 static __inline__ vector double __ATTRS_o_ai vec_rsqrte(vector double __a) {
8127   return __builtin_vsx_xvrsqrtedp(__a);
8128 }
8129 #endif
8130 
8131 /* vec_vrsqrtefp */
8132 
8133 static __inline__ __vector float __attribute__((__always_inline__))
vec_vrsqrtefp(vector float __a)8134 vec_vrsqrtefp(vector float __a) {
8135   return __builtin_altivec_vrsqrtefp(__a);
8136 }
8137 
8138 /* vec_xvtsqrt */
8139 
8140 #ifdef __VSX__
vec_test_swsqrt(vector double __a)8141 static __inline__ int __ATTRS_o_ai vec_test_swsqrt(vector double __a) {
8142   return __builtin_vsx_xvtsqrtdp(__a);
8143 }
8144 
vec_test_swsqrts(vector float __a)8145 static __inline__ int __ATTRS_o_ai vec_test_swsqrts(vector float __a) {
8146   return __builtin_vsx_xvtsqrtsp(__a);
8147 }
8148 #endif
8149 
8150 /* vec_sel */
8151 
8152 #define __builtin_altivec_vsel_4si vec_sel
8153 
vec_sel(vector signed char __a,vector signed char __b,vector unsigned char __c)8154 static __inline__ vector signed char __ATTRS_o_ai vec_sel(
8155     vector signed char __a, vector signed char __b, vector unsigned char __c) {
8156   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
8157 }
8158 
8159 static __inline__ vector signed char __ATTRS_o_ai
vec_sel(vector signed char __a,vector signed char __b,vector bool char __c)8160 vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
8161   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
8162 }
8163 
8164 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sel(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)8165 vec_sel(vector unsigned char __a, vector unsigned char __b,
8166         vector unsigned char __c) {
8167   return (__a & ~__c) | (__b & __c);
8168 }
8169 
vec_sel(vector unsigned char __a,vector unsigned char __b,vector bool char __c)8170 static __inline__ vector unsigned char __ATTRS_o_ai vec_sel(
8171     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
8172   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
8173 }
8174 
8175 static __inline__ vector bool char __ATTRS_o_ai
vec_sel(vector bool char __a,vector bool char __b,vector unsigned char __c)8176 vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
8177   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
8178 }
8179 
vec_sel(vector bool char __a,vector bool char __b,vector bool char __c)8180 static __inline__ vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
8181                                                         vector bool char __b,
8182                                                         vector bool char __c) {
8183   return (__a & ~__c) | (__b & __c);
8184 }
8185 
vec_sel(vector short __a,vector short __b,vector unsigned short __c)8186 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
8187                                                     vector short __b,
8188                                                     vector unsigned short __c) {
8189   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
8190 }
8191 
vec_sel(vector short __a,vector short __b,vector bool short __c)8192 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
8193                                                     vector short __b,
8194                                                     vector bool short __c) {
8195   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
8196 }
8197 
8198 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sel(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)8199 vec_sel(vector unsigned short __a, vector unsigned short __b,
8200         vector unsigned short __c) {
8201   return (__a & ~__c) | (__b & __c);
8202 }
8203 
8204 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sel(vector unsigned short __a,vector unsigned short __b,vector bool short __c)8205 vec_sel(vector unsigned short __a, vector unsigned short __b,
8206         vector bool short __c) {
8207   return (__a & ~(vector unsigned short)__c) |
8208          (__b & (vector unsigned short)__c);
8209 }
8210 
vec_sel(vector bool short __a,vector bool short __b,vector unsigned short __c)8211 static __inline__ vector bool short __ATTRS_o_ai vec_sel(
8212     vector bool short __a, vector bool short __b, vector unsigned short __c) {
8213   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
8214 }
8215 
8216 static __inline__ vector bool short __ATTRS_o_ai
vec_sel(vector bool short __a,vector bool short __b,vector bool short __c)8217 vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
8218   return (__a & ~__c) | (__b & __c);
8219 }
8220 
vec_sel(vector int __a,vector int __b,vector unsigned int __c)8221 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
8222                                                   vector int __b,
8223                                                   vector unsigned int __c) {
8224   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
8225 }
8226 
vec_sel(vector int __a,vector int __b,vector bool int __c)8227 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
8228                                                   vector int __b,
8229                                                   vector bool int __c) {
8230   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
8231 }
8232 
vec_sel(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)8233 static __inline__ vector unsigned int __ATTRS_o_ai vec_sel(
8234     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
8235   return (__a & ~__c) | (__b & __c);
8236 }
8237 
8238 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sel(vector unsigned int __a,vector unsigned int __b,vector bool int __c)8239 vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
8240   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
8241 }
8242 
8243 static __inline__ vector bool int __ATTRS_o_ai
vec_sel(vector bool int __a,vector bool int __b,vector unsigned int __c)8244 vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
8245   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
8246 }
8247 
vec_sel(vector bool int __a,vector bool int __b,vector bool int __c)8248 static __inline__ vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
8249                                                        vector bool int __b,
8250                                                        vector bool int __c) {
8251   return (__a & ~__c) | (__b & __c);
8252 }
8253 
vec_sel(vector float __a,vector float __b,vector unsigned int __c)8254 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
8255                                                     vector float __b,
8256                                                     vector unsigned int __c) {
8257   vector int __res = ((vector int)__a & ~(vector int)__c) |
8258                      ((vector int)__b & (vector int)__c);
8259   return (vector float)__res;
8260 }
8261 
vec_sel(vector float __a,vector float __b,vector bool int __c)8262 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
8263                                                     vector float __b,
8264                                                     vector bool int __c) {
8265   vector int __res = ((vector int)__a & ~(vector int)__c) |
8266                      ((vector int)__b & (vector int)__c);
8267   return (vector float)__res;
8268 }
8269 
8270 #ifdef __VSX__
8271 static __inline__ vector double __ATTRS_o_ai
vec_sel(vector double __a,vector double __b,vector bool long long __c)8272 vec_sel(vector double __a, vector double __b, vector bool long long __c) {
8273   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
8274                            ((vector long long)__b & (vector long long)__c);
8275   return (vector double)__res;
8276 }
8277 
8278 static __inline__ vector double __ATTRS_o_ai
vec_sel(vector double __a,vector double __b,vector unsigned long long __c)8279 vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
8280   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
8281                            ((vector long long)__b & (vector long long)__c);
8282   return (vector double)__res;
8283 }
8284 
8285 static __inline__ vector bool long long __ATTRS_o_ai
vec_sel(vector bool long long __a,vector bool long long __b,vector bool long long __c)8286 vec_sel(vector bool long long __a, vector bool long long __b,
8287         vector bool long long __c) {
8288   return (__a & ~__c) | (__b & __c);
8289 }
8290 
8291 static __inline__ vector bool long long __ATTRS_o_ai
vec_sel(vector bool long long __a,vector bool long long __b,vector unsigned long long __c)8292 vec_sel(vector bool long long __a, vector bool long long __b,
8293         vector unsigned long long __c) {
8294   return (__a & ~(vector bool long long)__c) |
8295          (__b & (vector bool long long)__c);
8296 }
8297 
8298 static __inline__ vector signed long long __ATTRS_o_ai
vec_sel(vector signed long long __a,vector signed long long __b,vector bool long long __c)8299 vec_sel(vector signed long long __a, vector signed long long __b,
8300         vector bool long long __c) {
8301   return (__a & ~(vector signed long long)__c) |
8302          (__b & (vector signed long long)__c);
8303 }
8304 
8305 static __inline__ vector signed long long __ATTRS_o_ai
vec_sel(vector signed long long __a,vector signed long long __b,vector unsigned long long __c)8306 vec_sel(vector signed long long __a, vector signed long long __b,
8307         vector unsigned long long __c) {
8308   return (__a & ~(vector signed long long)__c) |
8309          (__b & (vector signed long long)__c);
8310 }
8311 
8312 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sel(vector unsigned long long __a,vector unsigned long long __b,vector bool long long __c)8313 vec_sel(vector unsigned long long __a, vector unsigned long long __b,
8314         vector bool long long __c) {
8315   return (__a & ~(vector unsigned long long)__c) |
8316          (__b & (vector unsigned long long)__c);
8317 }
8318 
8319 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sel(vector unsigned long long __a,vector unsigned long long __b,vector unsigned long long __c)8320 vec_sel(vector unsigned long long __a, vector unsigned long long __b,
8321         vector unsigned long long __c) {
8322   return (__a & ~__c) | (__b & __c);
8323 }
8324 #endif
8325 
8326 /* vec_vsel */
8327 
vec_vsel(vector signed char __a,vector signed char __b,vector unsigned char __c)8328 static __inline__ vector signed char __ATTRS_o_ai vec_vsel(
8329     vector signed char __a, vector signed char __b, vector unsigned char __c) {
8330   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
8331 }
8332 
8333 static __inline__ vector signed char __ATTRS_o_ai
vec_vsel(vector signed char __a,vector signed char __b,vector bool char __c)8334 vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) {
8335   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
8336 }
8337 
8338 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsel(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)8339 vec_vsel(vector unsigned char __a, vector unsigned char __b,
8340          vector unsigned char __c) {
8341   return (__a & ~__c) | (__b & __c);
8342 }
8343 
vec_vsel(vector unsigned char __a,vector unsigned char __b,vector bool char __c)8344 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsel(
8345     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
8346   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
8347 }
8348 
8349 static __inline__ vector bool char __ATTRS_o_ai
vec_vsel(vector bool char __a,vector bool char __b,vector unsigned char __c)8350 vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
8351   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
8352 }
8353 
vec_vsel(vector bool char __a,vector bool char __b,vector bool char __c)8354 static __inline__ vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
8355                                                          vector bool char __b,
8356                                                          vector bool char __c) {
8357   return (__a & ~__c) | (__b & __c);
8358 }
8359 
8360 static __inline__ vector short __ATTRS_o_ai
vec_vsel(vector short __a,vector short __b,vector unsigned short __c)8361 vec_vsel(vector short __a, vector short __b, vector unsigned short __c) {
8362   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
8363 }
8364 
vec_vsel(vector short __a,vector short __b,vector bool short __c)8365 static __inline__ vector short __ATTRS_o_ai vec_vsel(vector short __a,
8366                                                      vector short __b,
8367                                                      vector bool short __c) {
8368   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
8369 }
8370 
8371 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsel(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)8372 vec_vsel(vector unsigned short __a, vector unsigned short __b,
8373          vector unsigned short __c) {
8374   return (__a & ~__c) | (__b & __c);
8375 }
8376 
8377 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsel(vector unsigned short __a,vector unsigned short __b,vector bool short __c)8378 vec_vsel(vector unsigned short __a, vector unsigned short __b,
8379          vector bool short __c) {
8380   return (__a & ~(vector unsigned short)__c) |
8381          (__b & (vector unsigned short)__c);
8382 }
8383 
vec_vsel(vector bool short __a,vector bool short __b,vector unsigned short __c)8384 static __inline__ vector bool short __ATTRS_o_ai vec_vsel(
8385     vector bool short __a, vector bool short __b, vector unsigned short __c) {
8386   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
8387 }
8388 
8389 static __inline__ vector bool short __ATTRS_o_ai
vec_vsel(vector bool short __a,vector bool short __b,vector bool short __c)8390 vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) {
8391   return (__a & ~__c) | (__b & __c);
8392 }
8393 
vec_vsel(vector int __a,vector int __b,vector unsigned int __c)8394 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
8395                                                    vector int __b,
8396                                                    vector unsigned int __c) {
8397   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
8398 }
8399 
vec_vsel(vector int __a,vector int __b,vector bool int __c)8400 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
8401                                                    vector int __b,
8402                                                    vector bool int __c) {
8403   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
8404 }
8405 
vec_vsel(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)8406 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
8407     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
8408   return (__a & ~__c) | (__b & __c);
8409 }
8410 
vec_vsel(vector unsigned int __a,vector unsigned int __b,vector bool int __c)8411 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
8412     vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
8413   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
8414 }
8415 
8416 static __inline__ vector bool int __ATTRS_o_ai
vec_vsel(vector bool int __a,vector bool int __b,vector unsigned int __c)8417 vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
8418   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
8419 }
8420 
vec_vsel(vector bool int __a,vector bool int __b,vector bool int __c)8421 static __inline__ vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
8422                                                         vector bool int __b,
8423                                                         vector bool int __c) {
8424   return (__a & ~__c) | (__b & __c);
8425 }
8426 
vec_vsel(vector float __a,vector float __b,vector unsigned int __c)8427 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
8428                                                      vector float __b,
8429                                                      vector unsigned int __c) {
8430   vector int __res = ((vector int)__a & ~(vector int)__c) |
8431                      ((vector int)__b & (vector int)__c);
8432   return (vector float)__res;
8433 }
8434 
vec_vsel(vector float __a,vector float __b,vector bool int __c)8435 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
8436                                                      vector float __b,
8437                                                      vector bool int __c) {
8438   vector int __res = ((vector int)__a & ~(vector int)__c) |
8439                      ((vector int)__b & (vector int)__c);
8440   return (vector float)__res;
8441 }
8442 
8443 /* vec_sl */
8444 
8445 // vec_sl does modulo arithmetic on __b first, so __b is allowed to be more
8446 // than the length of __a.
8447 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sl(vector unsigned char __a,vector unsigned char __b)8448 vec_sl(vector unsigned char __a, vector unsigned char __b) {
8449   return __a << (__b %
8450                  (vector unsigned char)(sizeof(unsigned char) * __CHAR_BIT__));
8451 }
8452 
8453 static __inline__ vector signed char __ATTRS_o_ai
vec_sl(vector signed char __a,vector unsigned char __b)8454 vec_sl(vector signed char __a, vector unsigned char __b) {
8455   return (vector signed char)vec_sl((vector unsigned char)__a, __b);
8456 }
8457 
8458 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sl(vector unsigned short __a,vector unsigned short __b)8459 vec_sl(vector unsigned short __a, vector unsigned short __b) {
8460   return __a << (__b % (vector unsigned short)(sizeof(unsigned short) *
8461                                                __CHAR_BIT__));
8462 }
8463 
vec_sl(vector short __a,vector unsigned short __b)8464 static __inline__ vector short __ATTRS_o_ai vec_sl(vector short __a,
8465                                                    vector unsigned short __b) {
8466   return (vector short)vec_sl((vector unsigned short)__a, __b);
8467 }
8468 
8469 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sl(vector unsigned int __a,vector unsigned int __b)8470 vec_sl(vector unsigned int __a, vector unsigned int __b) {
8471   return __a << (__b %
8472                  (vector unsigned int)(sizeof(unsigned int) * __CHAR_BIT__));
8473 }
8474 
vec_sl(vector int __a,vector unsigned int __b)8475 static __inline__ vector int __ATTRS_o_ai vec_sl(vector int __a,
8476                                                  vector unsigned int __b) {
8477   return (vector int)vec_sl((vector unsigned int)__a, __b);
8478 }
8479 
8480 #ifdef __POWER8_VECTOR__
8481 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sl(vector unsigned long long __a,vector unsigned long long __b)8482 vec_sl(vector unsigned long long __a, vector unsigned long long __b) {
8483   return __a << (__b % (vector unsigned long long)(sizeof(unsigned long long) *
8484                                                    __CHAR_BIT__));
8485 }
8486 
8487 static __inline__ vector long long __ATTRS_o_ai
vec_sl(vector long long __a,vector unsigned long long __b)8488 vec_sl(vector long long __a, vector unsigned long long __b) {
8489   return (vector long long)vec_sl((vector unsigned long long)__a, __b);
8490 }
8491 #endif
8492 
8493 /* vec_vslb */
8494 
8495 #define __builtin_altivec_vslb vec_vslb
8496 
8497 static __inline__ vector signed char __ATTRS_o_ai
vec_vslb(vector signed char __a,vector unsigned char __b)8498 vec_vslb(vector signed char __a, vector unsigned char __b) {
8499   return vec_sl(__a, __b);
8500 }
8501 
8502 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vslb(vector unsigned char __a,vector unsigned char __b)8503 vec_vslb(vector unsigned char __a, vector unsigned char __b) {
8504   return vec_sl(__a, __b);
8505 }
8506 
8507 /* vec_vslh */
8508 
8509 #define __builtin_altivec_vslh vec_vslh
8510 
8511 static __inline__ vector short __ATTRS_o_ai
vec_vslh(vector short __a,vector unsigned short __b)8512 vec_vslh(vector short __a, vector unsigned short __b) {
8513   return vec_sl(__a, __b);
8514 }
8515 
8516 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vslh(vector unsigned short __a,vector unsigned short __b)8517 vec_vslh(vector unsigned short __a, vector unsigned short __b) {
8518   return vec_sl(__a, __b);
8519 }
8520 
8521 /* vec_vslw */
8522 
8523 #define __builtin_altivec_vslw vec_vslw
8524 
vec_vslw(vector int __a,vector unsigned int __b)8525 static __inline__ vector int __ATTRS_o_ai vec_vslw(vector int __a,
8526                                                    vector unsigned int __b) {
8527   return vec_sl(__a, __b);
8528 }
8529 
8530 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vslw(vector unsigned int __a,vector unsigned int __b)8531 vec_vslw(vector unsigned int __a, vector unsigned int __b) {
8532   return vec_sl(__a, __b);
8533 }
8534 
8535 /* vec_sld */
8536 
8537 #define __builtin_altivec_vsldoi_4si vec_sld
8538 
vec_sld(vector signed char __a,vector signed char __b,unsigned const int __c)8539 static __inline__ vector signed char __ATTRS_o_ai vec_sld(
8540     vector signed char __a, vector signed char __b, unsigned const int __c) {
8541   unsigned char __d = __c & 0x0F;
8542 #ifdef __LITTLE_ENDIAN__
8543   return vec_perm(
8544       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8545                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8546                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8547                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8548 #else
8549   return vec_perm(
8550       __a, __b,
8551       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8552                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8553                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8554 #endif
8555 }
8556 
8557 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sld(vector unsigned char __a,vector unsigned char __b,unsigned const int __c)8558 vec_sld(vector unsigned char __a, vector unsigned char __b,
8559         unsigned const int __c) {
8560   unsigned char __d = __c & 0x0F;
8561 #ifdef __LITTLE_ENDIAN__
8562   return vec_perm(
8563       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8564                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8565                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8566                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8567 #else
8568   return vec_perm(
8569       __a, __b,
8570       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8571                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8572                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8573 #endif
8574 }
8575 
8576 static __inline__ vector bool char __ATTRS_o_ai
vec_sld(vector bool char __a,vector bool char __b,unsigned const int __c)8577 vec_sld(vector bool char __a, vector bool char __b, unsigned const int __c) {
8578   unsigned char __d = __c & 0x0F;
8579 #ifdef __LITTLE_ENDIAN__
8580   return vec_perm(
8581       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8582                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8583                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8584                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8585 #else
8586   return vec_perm(
8587       __a, __b,
8588       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8589                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8590                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8591 #endif
8592 }
8593 
vec_sld(vector signed short __a,vector signed short __b,unsigned const int __c)8594 static __inline__ vector signed short __ATTRS_o_ai vec_sld(
8595     vector signed short __a, vector signed short __b, unsigned const int __c) {
8596   unsigned char __d = __c & 0x0F;
8597 #ifdef __LITTLE_ENDIAN__
8598   return vec_perm(
8599       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8600                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8601                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8602                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8603 #else
8604   return vec_perm(
8605       __a, __b,
8606       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8607                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8608                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8609 #endif
8610 }
8611 
8612 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sld(vector unsigned short __a,vector unsigned short __b,unsigned const int __c)8613 vec_sld(vector unsigned short __a, vector unsigned short __b,
8614         unsigned const int __c) {
8615   unsigned char __d = __c & 0x0F;
8616 #ifdef __LITTLE_ENDIAN__
8617   return vec_perm(
8618       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8619                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8620                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8621                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8622 #else
8623   return vec_perm(
8624       __a, __b,
8625       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8626                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8627                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8628 #endif
8629 }
8630 
8631 static __inline__ vector bool short __ATTRS_o_ai
vec_sld(vector bool short __a,vector bool short __b,unsigned const int __c)8632 vec_sld(vector bool short __a, vector bool short __b, unsigned const int __c) {
8633   unsigned char __d = __c & 0x0F;
8634 #ifdef __LITTLE_ENDIAN__
8635   return vec_perm(
8636       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8637                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8638                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8639                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8640 #else
8641   return vec_perm(
8642       __a, __b,
8643       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8644                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8645                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8646 #endif
8647 }
8648 
vec_sld(vector pixel __a,vector pixel __b,unsigned const int __c)8649 static __inline__ vector pixel __ATTRS_o_ai vec_sld(vector pixel __a,
8650                                                     vector pixel __b,
8651                                                     unsigned const int __c) {
8652   unsigned char __d = __c & 0x0F;
8653 #ifdef __LITTLE_ENDIAN__
8654   return vec_perm(
8655       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8656                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8657                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8658                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8659 #else
8660   return vec_perm(
8661       __a, __b,
8662       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8663                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8664                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8665 #endif
8666 }
8667 
8668 static __inline__ vector signed int __ATTRS_o_ai
vec_sld(vector signed int __a,vector signed int __b,unsigned const int __c)8669 vec_sld(vector signed int __a, vector signed int __b, unsigned const int __c) {
8670   unsigned char __d = __c & 0x0F;
8671 #ifdef __LITTLE_ENDIAN__
8672   return vec_perm(
8673       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8674                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8675                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8676                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8677 #else
8678   return vec_perm(
8679       __a, __b,
8680       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8681                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8682                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8683 #endif
8684 }
8685 
vec_sld(vector unsigned int __a,vector unsigned int __b,unsigned const int __c)8686 static __inline__ vector unsigned int __ATTRS_o_ai vec_sld(
8687     vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
8688   unsigned char __d = __c & 0x0F;
8689 #ifdef __LITTLE_ENDIAN__
8690   return vec_perm(
8691       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8692                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8693                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8694                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8695 #else
8696   return vec_perm(
8697       __a, __b,
8698       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8699                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8700                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8701 #endif
8702 }
8703 
vec_sld(vector bool int __a,vector bool int __b,unsigned const int __c)8704 static __inline__ vector bool int __ATTRS_o_ai vec_sld(vector bool int __a,
8705                                                        vector bool int __b,
8706                                                        unsigned const int __c) {
8707   unsigned char __d = __c & 0x0F;
8708 #ifdef __LITTLE_ENDIAN__
8709   return vec_perm(
8710       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8711                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8712                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8713                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8714 #else
8715   return vec_perm(
8716       __a, __b,
8717       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8718                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8719                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8720 #endif
8721 }
8722 
vec_sld(vector float __a,vector float __b,unsigned const int __c)8723 static __inline__ vector float __ATTRS_o_ai vec_sld(vector float __a,
8724                                                     vector float __b,
8725                                                     unsigned const int __c) {
8726   unsigned char __d = __c & 0x0F;
8727 #ifdef __LITTLE_ENDIAN__
8728   return vec_perm(
8729       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8730                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8731                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8732                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8733 #else
8734   return vec_perm(
8735       __a, __b,
8736       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8737                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8738                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8739 #endif
8740 }
8741 
8742 #ifdef __VSX__
8743 static __inline__ vector bool long long __ATTRS_o_ai
vec_sld(vector bool long long __a,vector bool long long __b,unsigned const int __c)8744 vec_sld(vector bool long long __a, vector bool long long __b,
8745         unsigned const int __c) {
8746   unsigned char __d = __c & 0x0F;
8747 #ifdef __LITTLE_ENDIAN__
8748   return vec_perm(
8749       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8750                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8751                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8752                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8753 #else
8754   return vec_perm(
8755       __a, __b,
8756       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8757                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8758                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8759 #endif
8760 }
8761 
8762 static __inline__ vector signed long long __ATTRS_o_ai
vec_sld(vector signed long long __a,vector signed long long __b,unsigned const int __c)8763 vec_sld(vector signed long long __a, vector signed long long __b,
8764         unsigned const int __c) {
8765   unsigned char __d = __c & 0x0F;
8766 #ifdef __LITTLE_ENDIAN__
8767   return vec_perm(
8768       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8769                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8770                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8771                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8772 #else
8773   return vec_perm(
8774       __a, __b,
8775       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8776                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8777                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8778 #endif
8779 }
8780 
8781 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sld(vector unsigned long long __a,vector unsigned long long __b,unsigned const int __c)8782 vec_sld(vector unsigned long long __a, vector unsigned long long __b,
8783         unsigned const int __c) {
8784   unsigned char __d = __c & 0x0F;
8785 #ifdef __LITTLE_ENDIAN__
8786   return vec_perm(
8787       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8788                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8789                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8790                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8791 #else
8792   return vec_perm(
8793       __a, __b,
8794       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8795                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8796                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8797 #endif
8798 }
8799 
vec_sld(vector double __a,vector double __b,unsigned const int __c)8800 static __inline__ vector double __ATTRS_o_ai vec_sld(vector double __a,
8801                                                      vector double __b,
8802                                                      unsigned const int __c) {
8803   unsigned char __d = __c & 0x0F;
8804 #ifdef __LITTLE_ENDIAN__
8805   return vec_perm(
8806       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8807                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8808                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8809                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8810 #else
8811   return vec_perm(
8812       __a, __b,
8813       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8814                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8815                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8816 #endif
8817 }
8818 #endif
8819 
8820 /* vec_sldw */
vec_sldw(vector signed char __a,vector signed char __b,unsigned const int __c)8821 static __inline__ vector signed char __ATTRS_o_ai vec_sldw(
8822     vector signed char __a, vector signed char __b, unsigned const int __c) {
8823   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8824 }
8825 
8826 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sldw(vector unsigned char __a,vector unsigned char __b,unsigned const int __c)8827 vec_sldw(vector unsigned char __a, vector unsigned char __b,
8828          unsigned const int __c) {
8829   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8830 }
8831 
vec_sldw(vector signed short __a,vector signed short __b,unsigned const int __c)8832 static __inline__ vector signed short __ATTRS_o_ai vec_sldw(
8833     vector signed short __a, vector signed short __b, unsigned const int __c) {
8834   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8835 }
8836 
8837 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sldw(vector unsigned short __a,vector unsigned short __b,unsigned const int __c)8838 vec_sldw(vector unsigned short __a, vector unsigned short __b,
8839          unsigned const int __c) {
8840   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8841 }
8842 
8843 static __inline__ vector signed int __ATTRS_o_ai
vec_sldw(vector signed int __a,vector signed int __b,unsigned const int __c)8844 vec_sldw(vector signed int __a, vector signed int __b, unsigned const int __c) {
8845   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8846 }
8847 
vec_sldw(vector unsigned int __a,vector unsigned int __b,unsigned const int __c)8848 static __inline__ vector unsigned int __ATTRS_o_ai vec_sldw(
8849     vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
8850   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8851 }
8852 
8853 #ifdef __VSX__
8854 static __inline__ vector signed long long __ATTRS_o_ai
vec_sldw(vector signed long long __a,vector signed long long __b,unsigned const int __c)8855 vec_sldw(vector signed long long __a, vector signed long long __b,
8856          unsigned const int __c) {
8857   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8858 }
8859 
8860 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sldw(vector unsigned long long __a,vector unsigned long long __b,unsigned const int __c)8861 vec_sldw(vector unsigned long long __a, vector unsigned long long __b,
8862          unsigned const int __c) {
8863   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8864 }
8865 #endif
8866 
8867 #ifdef __POWER9_VECTOR__
8868 /* vec_slv */
8869 static __inline__ vector unsigned char __ATTRS_o_ai
vec_slv(vector unsigned char __a,vector unsigned char __b)8870 vec_slv(vector unsigned char __a, vector unsigned char __b) {
8871   return __builtin_altivec_vslv(__a, __b);
8872 }
8873 
8874 /* vec_srv */
8875 static __inline__ vector unsigned char __ATTRS_o_ai
vec_srv(vector unsigned char __a,vector unsigned char __b)8876 vec_srv(vector unsigned char __a, vector unsigned char __b) {
8877   return __builtin_altivec_vsrv(__a, __b);
8878 }
8879 #endif
8880 
8881 /* vec_vsldoi */
8882 
8883 static __inline__ vector signed char __ATTRS_o_ai
vec_vsldoi(vector signed char __a,vector signed char __b,unsigned char __c)8884 vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) {
8885   unsigned char __d = __c & 0x0F;
8886 #ifdef __LITTLE_ENDIAN__
8887   return vec_perm(
8888       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8889                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8890                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8891                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8892 #else
8893   return vec_perm(
8894       __a, __b,
8895       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8896                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8897                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8898 #endif
8899 }
8900 
vec_vsldoi(vector unsigned char __a,vector unsigned char __b,unsigned char __c)8901 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsldoi(
8902     vector unsigned char __a, vector unsigned char __b, unsigned char __c) {
8903   unsigned char __d = __c & 0x0F;
8904 #ifdef __LITTLE_ENDIAN__
8905   return vec_perm(
8906       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8907                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8908                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8909                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8910 #else
8911   return vec_perm(
8912       __a, __b,
8913       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8914                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8915                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8916 #endif
8917 }
8918 
vec_vsldoi(vector short __a,vector short __b,unsigned char __c)8919 static __inline__ vector short __ATTRS_o_ai vec_vsldoi(vector short __a,
8920                                                        vector short __b,
8921                                                        unsigned char __c) {
8922   unsigned char __d = __c & 0x0F;
8923 #ifdef __LITTLE_ENDIAN__
8924   return vec_perm(
8925       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8926                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8927                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8928                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8929 #else
8930   return vec_perm(
8931       __a, __b,
8932       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8933                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8934                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8935 #endif
8936 }
8937 
vec_vsldoi(vector unsigned short __a,vector unsigned short __b,unsigned char __c)8938 static __inline__ vector unsigned short __ATTRS_o_ai vec_vsldoi(
8939     vector unsigned short __a, vector unsigned short __b, unsigned char __c) {
8940   unsigned char __d = __c & 0x0F;
8941 #ifdef __LITTLE_ENDIAN__
8942   return vec_perm(
8943       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8944                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8945                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8946                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8947 #else
8948   return vec_perm(
8949       __a, __b,
8950       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8951                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8952                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8953 #endif
8954 }
8955 
vec_vsldoi(vector pixel __a,vector pixel __b,unsigned char __c)8956 static __inline__ vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a,
8957                                                        vector pixel __b,
8958                                                        unsigned char __c) {
8959   unsigned char __d = __c & 0x0F;
8960 #ifdef __LITTLE_ENDIAN__
8961   return vec_perm(
8962       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8963                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8964                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8965                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8966 #else
8967   return vec_perm(
8968       __a, __b,
8969       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8970                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8971                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8972 #endif
8973 }
8974 
vec_vsldoi(vector int __a,vector int __b,unsigned char __c)8975 static __inline__ vector int __ATTRS_o_ai vec_vsldoi(vector int __a,
8976                                                      vector int __b,
8977                                                      unsigned char __c) {
8978   unsigned char __d = __c & 0x0F;
8979 #ifdef __LITTLE_ENDIAN__
8980   return vec_perm(
8981       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8982                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8983                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8984                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8985 #else
8986   return vec_perm(
8987       __a, __b,
8988       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8989                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8990                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8991 #endif
8992 }
8993 
vec_vsldoi(vector unsigned int __a,vector unsigned int __b,unsigned char __c)8994 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsldoi(
8995     vector unsigned int __a, vector unsigned int __b, unsigned char __c) {
8996   unsigned char __d = __c & 0x0F;
8997 #ifdef __LITTLE_ENDIAN__
8998   return vec_perm(
8999       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
9000                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
9001                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
9002                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
9003 #else
9004   return vec_perm(
9005       __a, __b,
9006       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
9007                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
9008                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
9009 #endif
9010 }
9011 
vec_vsldoi(vector float __a,vector float __b,unsigned char __c)9012 static __inline__ vector float __ATTRS_o_ai vec_vsldoi(vector float __a,
9013                                                        vector float __b,
9014                                                        unsigned char __c) {
9015   unsigned char __d = __c & 0x0F;
9016 #ifdef __LITTLE_ENDIAN__
9017   return vec_perm(
9018       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
9019                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
9020                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
9021                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
9022 #else
9023   return vec_perm(
9024       __a, __b,
9025       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
9026                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
9027                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
9028 #endif
9029 }
9030 
9031 /* vec_sll */
9032 
9033 static __inline__ vector signed char __ATTRS_o_ai
vec_sll(vector signed char __a,vector unsigned char __b)9034 vec_sll(vector signed char __a, vector unsigned char __b) {
9035   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
9036                                                    (vector int)__b);
9037 }
9038 
9039 static __inline__ vector signed char __ATTRS_o_ai
vec_sll(vector signed char __a,vector unsigned short __b)9040 vec_sll(vector signed char __a, vector unsigned short __b) {
9041   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
9042                                                    (vector int)__b);
9043 }
9044 
9045 static __inline__ vector signed char __ATTRS_o_ai
vec_sll(vector signed char __a,vector unsigned int __b)9046 vec_sll(vector signed char __a, vector unsigned int __b) {
9047   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
9048                                                    (vector int)__b);
9049 }
9050 
9051 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sll(vector unsigned char __a,vector unsigned char __b)9052 vec_sll(vector unsigned char __a, vector unsigned char __b) {
9053   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
9054                                                      (vector int)__b);
9055 }
9056 
9057 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sll(vector unsigned char __a,vector unsigned short __b)9058 vec_sll(vector unsigned char __a, vector unsigned short __b) {
9059   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
9060                                                      (vector int)__b);
9061 }
9062 
9063 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sll(vector unsigned char __a,vector unsigned int __b)9064 vec_sll(vector unsigned char __a, vector unsigned int __b) {
9065   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
9066                                                      (vector int)__b);
9067 }
9068 
9069 static __inline__ vector bool char __ATTRS_o_ai
vec_sll(vector bool char __a,vector unsigned char __b)9070 vec_sll(vector bool char __a, vector unsigned char __b) {
9071   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
9072                                                  (vector int)__b);
9073 }
9074 
9075 static __inline__ vector bool char __ATTRS_o_ai
vec_sll(vector bool char __a,vector unsigned short __b)9076 vec_sll(vector bool char __a, vector unsigned short __b) {
9077   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
9078                                                  (vector int)__b);
9079 }
9080 
9081 static __inline__ vector bool char __ATTRS_o_ai
vec_sll(vector bool char __a,vector unsigned int __b)9082 vec_sll(vector bool char __a, vector unsigned int __b) {
9083   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
9084                                                  (vector int)__b);
9085 }
9086 
vec_sll(vector short __a,vector unsigned char __b)9087 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
9088                                                     vector unsigned char __b) {
9089   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9090 }
9091 
vec_sll(vector short __a,vector unsigned short __b)9092 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
9093                                                     vector unsigned short __b) {
9094   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9095 }
9096 
vec_sll(vector short __a,vector unsigned int __b)9097 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
9098                                                     vector unsigned int __b) {
9099   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9100 }
9101 
9102 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sll(vector unsigned short __a,vector unsigned char __b)9103 vec_sll(vector unsigned short __a, vector unsigned char __b) {
9104   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
9105                                                       (vector int)__b);
9106 }
9107 
9108 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sll(vector unsigned short __a,vector unsigned short __b)9109 vec_sll(vector unsigned short __a, vector unsigned short __b) {
9110   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
9111                                                       (vector int)__b);
9112 }
9113 
9114 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sll(vector unsigned short __a,vector unsigned int __b)9115 vec_sll(vector unsigned short __a, vector unsigned int __b) {
9116   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
9117                                                       (vector int)__b);
9118 }
9119 
9120 static __inline__ vector bool short __ATTRS_o_ai
vec_sll(vector bool short __a,vector unsigned char __b)9121 vec_sll(vector bool short __a, vector unsigned char __b) {
9122   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
9123                                                   (vector int)__b);
9124 }
9125 
9126 static __inline__ vector bool short __ATTRS_o_ai
vec_sll(vector bool short __a,vector unsigned short __b)9127 vec_sll(vector bool short __a, vector unsigned short __b) {
9128   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
9129                                                   (vector int)__b);
9130 }
9131 
9132 static __inline__ vector bool short __ATTRS_o_ai
vec_sll(vector bool short __a,vector unsigned int __b)9133 vec_sll(vector bool short __a, vector unsigned int __b) {
9134   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
9135                                                   (vector int)__b);
9136 }
9137 
vec_sll(vector pixel __a,vector unsigned char __b)9138 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
9139                                                     vector unsigned char __b) {
9140   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9141 }
9142 
vec_sll(vector pixel __a,vector unsigned short __b)9143 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
9144                                                     vector unsigned short __b) {
9145   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9146 }
9147 
vec_sll(vector pixel __a,vector unsigned int __b)9148 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
9149                                                     vector unsigned int __b) {
9150   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9151 }
9152 
vec_sll(vector int __a,vector unsigned char __b)9153 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
9154                                                   vector unsigned char __b) {
9155   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
9156 }
9157 
vec_sll(vector int __a,vector unsigned short __b)9158 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
9159                                                   vector unsigned short __b) {
9160   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
9161 }
9162 
vec_sll(vector int __a,vector unsigned int __b)9163 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
9164                                                   vector unsigned int __b) {
9165   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
9166 }
9167 
9168 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sll(vector unsigned int __a,vector unsigned char __b)9169 vec_sll(vector unsigned int __a, vector unsigned char __b) {
9170   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
9171                                                     (vector int)__b);
9172 }
9173 
9174 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sll(vector unsigned int __a,vector unsigned short __b)9175 vec_sll(vector unsigned int __a, vector unsigned short __b) {
9176   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
9177                                                     (vector int)__b);
9178 }
9179 
9180 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sll(vector unsigned int __a,vector unsigned int __b)9181 vec_sll(vector unsigned int __a, vector unsigned int __b) {
9182   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
9183                                                     (vector int)__b);
9184 }
9185 
9186 static __inline__ vector bool int __ATTRS_o_ai
vec_sll(vector bool int __a,vector unsigned char __b)9187 vec_sll(vector bool int __a, vector unsigned char __b) {
9188   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
9189                                                 (vector int)__b);
9190 }
9191 
9192 static __inline__ vector bool int __ATTRS_o_ai
vec_sll(vector bool int __a,vector unsigned short __b)9193 vec_sll(vector bool int __a, vector unsigned short __b) {
9194   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
9195                                                 (vector int)__b);
9196 }
9197 
9198 static __inline__ vector bool int __ATTRS_o_ai
vec_sll(vector bool int __a,vector unsigned int __b)9199 vec_sll(vector bool int __a, vector unsigned int __b) {
9200   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
9201                                                 (vector int)__b);
9202 }
9203 
9204 #ifdef __VSX__
9205 static __inline__ vector signed long long __ATTRS_o_ai
vec_sll(vector signed long long __a,vector unsigned char __b)9206 vec_sll(vector signed long long __a, vector unsigned char __b) {
9207   return (vector signed long long)__builtin_altivec_vsl((vector int)__a,
9208                                                         (vector int)__b);
9209 }
9210 
9211 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sll(vector unsigned long long __a,vector unsigned char __b)9212 vec_sll(vector unsigned long long __a, vector unsigned char __b) {
9213   return (vector unsigned long long)__builtin_altivec_vsl((vector int)__a,
9214                                                           (vector int)__b);
9215 }
9216 #endif
9217 
9218 /* vec_vsl */
9219 
9220 static __inline__ vector signed char __ATTRS_o_ai
vec_vsl(vector signed char __a,vector unsigned char __b)9221 vec_vsl(vector signed char __a, vector unsigned char __b) {
9222   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
9223                                                    (vector int)__b);
9224 }
9225 
9226 static __inline__ vector signed char __ATTRS_o_ai
vec_vsl(vector signed char __a,vector unsigned short __b)9227 vec_vsl(vector signed char __a, vector unsigned short __b) {
9228   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
9229                                                    (vector int)__b);
9230 }
9231 
9232 static __inline__ vector signed char __ATTRS_o_ai
vec_vsl(vector signed char __a,vector unsigned int __b)9233 vec_vsl(vector signed char __a, vector unsigned int __b) {
9234   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
9235                                                    (vector int)__b);
9236 }
9237 
9238 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsl(vector unsigned char __a,vector unsigned char __b)9239 vec_vsl(vector unsigned char __a, vector unsigned char __b) {
9240   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
9241                                                      (vector int)__b);
9242 }
9243 
9244 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsl(vector unsigned char __a,vector unsigned short __b)9245 vec_vsl(vector unsigned char __a, vector unsigned short __b) {
9246   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
9247                                                      (vector int)__b);
9248 }
9249 
9250 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsl(vector unsigned char __a,vector unsigned int __b)9251 vec_vsl(vector unsigned char __a, vector unsigned int __b) {
9252   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
9253                                                      (vector int)__b);
9254 }
9255 
9256 static __inline__ vector bool char __ATTRS_o_ai
vec_vsl(vector bool char __a,vector unsigned char __b)9257 vec_vsl(vector bool char __a, vector unsigned char __b) {
9258   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
9259                                                  (vector int)__b);
9260 }
9261 
9262 static __inline__ vector bool char __ATTRS_o_ai
vec_vsl(vector bool char __a,vector unsigned short __b)9263 vec_vsl(vector bool char __a, vector unsigned short __b) {
9264   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
9265                                                  (vector int)__b);
9266 }
9267 
9268 static __inline__ vector bool char __ATTRS_o_ai
vec_vsl(vector bool char __a,vector unsigned int __b)9269 vec_vsl(vector bool char __a, vector unsigned int __b) {
9270   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
9271                                                  (vector int)__b);
9272 }
9273 
vec_vsl(vector short __a,vector unsigned char __b)9274 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
9275                                                     vector unsigned char __b) {
9276   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9277 }
9278 
vec_vsl(vector short __a,vector unsigned short __b)9279 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
9280                                                     vector unsigned short __b) {
9281   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9282 }
9283 
vec_vsl(vector short __a,vector unsigned int __b)9284 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
9285                                                     vector unsigned int __b) {
9286   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9287 }
9288 
9289 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsl(vector unsigned short __a,vector unsigned char __b)9290 vec_vsl(vector unsigned short __a, vector unsigned char __b) {
9291   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
9292                                                       (vector int)__b);
9293 }
9294 
9295 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsl(vector unsigned short __a,vector unsigned short __b)9296 vec_vsl(vector unsigned short __a, vector unsigned short __b) {
9297   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
9298                                                       (vector int)__b);
9299 }
9300 
9301 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsl(vector unsigned short __a,vector unsigned int __b)9302 vec_vsl(vector unsigned short __a, vector unsigned int __b) {
9303   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
9304                                                       (vector int)__b);
9305 }
9306 
9307 static __inline__ vector bool short __ATTRS_o_ai
vec_vsl(vector bool short __a,vector unsigned char __b)9308 vec_vsl(vector bool short __a, vector unsigned char __b) {
9309   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
9310                                                   (vector int)__b);
9311 }
9312 
9313 static __inline__ vector bool short __ATTRS_o_ai
vec_vsl(vector bool short __a,vector unsigned short __b)9314 vec_vsl(vector bool short __a, vector unsigned short __b) {
9315   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
9316                                                   (vector int)__b);
9317 }
9318 
9319 static __inline__ vector bool short __ATTRS_o_ai
vec_vsl(vector bool short __a,vector unsigned int __b)9320 vec_vsl(vector bool short __a, vector unsigned int __b) {
9321   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
9322                                                   (vector int)__b);
9323 }
9324 
vec_vsl(vector pixel __a,vector unsigned char __b)9325 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
9326                                                     vector unsigned char __b) {
9327   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9328 }
9329 
vec_vsl(vector pixel __a,vector unsigned short __b)9330 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
9331                                                     vector unsigned short __b) {
9332   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9333 }
9334 
vec_vsl(vector pixel __a,vector unsigned int __b)9335 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
9336                                                     vector unsigned int __b) {
9337   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
9338 }
9339 
vec_vsl(vector int __a,vector unsigned char __b)9340 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
9341                                                   vector unsigned char __b) {
9342   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
9343 }
9344 
vec_vsl(vector int __a,vector unsigned short __b)9345 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
9346                                                   vector unsigned short __b) {
9347   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
9348 }
9349 
vec_vsl(vector int __a,vector unsigned int __b)9350 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
9351                                                   vector unsigned int __b) {
9352   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
9353 }
9354 
9355 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsl(vector unsigned int __a,vector unsigned char __b)9356 vec_vsl(vector unsigned int __a, vector unsigned char __b) {
9357   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
9358                                                     (vector int)__b);
9359 }
9360 
9361 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsl(vector unsigned int __a,vector unsigned short __b)9362 vec_vsl(vector unsigned int __a, vector unsigned short __b) {
9363   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
9364                                                     (vector int)__b);
9365 }
9366 
9367 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsl(vector unsigned int __a,vector unsigned int __b)9368 vec_vsl(vector unsigned int __a, vector unsigned int __b) {
9369   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
9370                                                     (vector int)__b);
9371 }
9372 
9373 static __inline__ vector bool int __ATTRS_o_ai
vec_vsl(vector bool int __a,vector unsigned char __b)9374 vec_vsl(vector bool int __a, vector unsigned char __b) {
9375   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
9376                                                 (vector int)__b);
9377 }
9378 
9379 static __inline__ vector bool int __ATTRS_o_ai
vec_vsl(vector bool int __a,vector unsigned short __b)9380 vec_vsl(vector bool int __a, vector unsigned short __b) {
9381   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
9382                                                 (vector int)__b);
9383 }
9384 
9385 static __inline__ vector bool int __ATTRS_o_ai
vec_vsl(vector bool int __a,vector unsigned int __b)9386 vec_vsl(vector bool int __a, vector unsigned int __b) {
9387   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
9388                                                 (vector int)__b);
9389 }
9390 
9391 /* vec_slo */
9392 
9393 static __inline__ vector signed char __ATTRS_o_ai
vec_slo(vector signed char __a,vector signed char __b)9394 vec_slo(vector signed char __a, vector signed char __b) {
9395   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
9396                                                     (vector int)__b);
9397 }
9398 
9399 static __inline__ vector signed char __ATTRS_o_ai
vec_slo(vector signed char __a,vector unsigned char __b)9400 vec_slo(vector signed char __a, vector unsigned char __b) {
9401   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
9402                                                     (vector int)__b);
9403 }
9404 
9405 static __inline__ vector unsigned char __ATTRS_o_ai
vec_slo(vector unsigned char __a,vector signed char __b)9406 vec_slo(vector unsigned char __a, vector signed char __b) {
9407   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9408                                                       (vector int)__b);
9409 }
9410 
9411 static __inline__ vector unsigned char __ATTRS_o_ai
vec_slo(vector unsigned char __a,vector unsigned char __b)9412 vec_slo(vector unsigned char __a, vector unsigned char __b) {
9413   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9414                                                       (vector int)__b);
9415 }
9416 
vec_slo(vector short __a,vector signed char __b)9417 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
9418                                                     vector signed char __b) {
9419   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9420 }
9421 
vec_slo(vector short __a,vector unsigned char __b)9422 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
9423                                                     vector unsigned char __b) {
9424   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9425 }
9426 
9427 static __inline__ vector unsigned short __ATTRS_o_ai
vec_slo(vector unsigned short __a,vector signed char __b)9428 vec_slo(vector unsigned short __a, vector signed char __b) {
9429   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9430                                                        (vector int)__b);
9431 }
9432 
9433 static __inline__ vector unsigned short __ATTRS_o_ai
vec_slo(vector unsigned short __a,vector unsigned char __b)9434 vec_slo(vector unsigned short __a, vector unsigned char __b) {
9435   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9436                                                        (vector int)__b);
9437 }
9438 
vec_slo(vector pixel __a,vector signed char __b)9439 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
9440                                                     vector signed char __b) {
9441   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9442 }
9443 
vec_slo(vector pixel __a,vector unsigned char __b)9444 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
9445                                                     vector unsigned char __b) {
9446   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9447 }
9448 
vec_slo(vector int __a,vector signed char __b)9449 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
9450                                                   vector signed char __b) {
9451   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9452 }
9453 
vec_slo(vector int __a,vector unsigned char __b)9454 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
9455                                                   vector unsigned char __b) {
9456   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9457 }
9458 
9459 static __inline__ vector unsigned int __ATTRS_o_ai
vec_slo(vector unsigned int __a,vector signed char __b)9460 vec_slo(vector unsigned int __a, vector signed char __b) {
9461   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9462                                                      (vector int)__b);
9463 }
9464 
9465 static __inline__ vector unsigned int __ATTRS_o_ai
vec_slo(vector unsigned int __a,vector unsigned char __b)9466 vec_slo(vector unsigned int __a, vector unsigned char __b) {
9467   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9468                                                      (vector int)__b);
9469 }
9470 
vec_slo(vector float __a,vector signed char __b)9471 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
9472                                                     vector signed char __b) {
9473   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9474 }
9475 
vec_slo(vector float __a,vector unsigned char __b)9476 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
9477                                                     vector unsigned char __b) {
9478   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9479 }
9480 
9481 #ifdef __VSX__
9482 static __inline__ vector signed long long __ATTRS_o_ai
vec_slo(vector signed long long __a,vector signed char __b)9483 vec_slo(vector signed long long __a, vector signed char __b) {
9484   return (vector signed long long)__builtin_altivec_vslo((vector int)__a,
9485                                                          (vector int)__b);
9486 }
9487 
9488 static __inline__ vector signed long long __ATTRS_o_ai
vec_slo(vector signed long long __a,vector unsigned char __b)9489 vec_slo(vector signed long long __a, vector unsigned char __b) {
9490   return (vector signed long long)__builtin_altivec_vslo((vector int)__a,
9491                                                          (vector int)__b);
9492 }
9493 
9494 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_slo(vector unsigned long long __a,vector signed char __b)9495 vec_slo(vector unsigned long long __a, vector signed char __b) {
9496   return (vector unsigned long long)__builtin_altivec_vslo((vector int)__a,
9497                                                            (vector int)__b);
9498 }
9499 
9500 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_slo(vector unsigned long long __a,vector unsigned char __b)9501 vec_slo(vector unsigned long long __a, vector unsigned char __b) {
9502   return (vector unsigned long long)__builtin_altivec_vslo((vector int)__a,
9503                                                            (vector int)__b);
9504 }
9505 #endif
9506 
9507 /* vec_vslo */
9508 
9509 static __inline__ vector signed char __ATTRS_o_ai
vec_vslo(vector signed char __a,vector signed char __b)9510 vec_vslo(vector signed char __a, vector signed char __b) {
9511   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
9512                                                     (vector int)__b);
9513 }
9514 
9515 static __inline__ vector signed char __ATTRS_o_ai
vec_vslo(vector signed char __a,vector unsigned char __b)9516 vec_vslo(vector signed char __a, vector unsigned char __b) {
9517   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
9518                                                     (vector int)__b);
9519 }
9520 
9521 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vslo(vector unsigned char __a,vector signed char __b)9522 vec_vslo(vector unsigned char __a, vector signed char __b) {
9523   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9524                                                       (vector int)__b);
9525 }
9526 
9527 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vslo(vector unsigned char __a,vector unsigned char __b)9528 vec_vslo(vector unsigned char __a, vector unsigned char __b) {
9529   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9530                                                       (vector int)__b);
9531 }
9532 
vec_vslo(vector short __a,vector signed char __b)9533 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
9534                                                      vector signed char __b) {
9535   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9536 }
9537 
vec_vslo(vector short __a,vector unsigned char __b)9538 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
9539                                                      vector unsigned char __b) {
9540   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9541 }
9542 
9543 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vslo(vector unsigned short __a,vector signed char __b)9544 vec_vslo(vector unsigned short __a, vector signed char __b) {
9545   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9546                                                        (vector int)__b);
9547 }
9548 
9549 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vslo(vector unsigned short __a,vector unsigned char __b)9550 vec_vslo(vector unsigned short __a, vector unsigned char __b) {
9551   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9552                                                        (vector int)__b);
9553 }
9554 
vec_vslo(vector pixel __a,vector signed char __b)9555 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
9556                                                      vector signed char __b) {
9557   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9558 }
9559 
vec_vslo(vector pixel __a,vector unsigned char __b)9560 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
9561                                                      vector unsigned char __b) {
9562   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9563 }
9564 
vec_vslo(vector int __a,vector signed char __b)9565 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
9566                                                    vector signed char __b) {
9567   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9568 }
9569 
vec_vslo(vector int __a,vector unsigned char __b)9570 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
9571                                                    vector unsigned char __b) {
9572   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9573 }
9574 
9575 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vslo(vector unsigned int __a,vector signed char __b)9576 vec_vslo(vector unsigned int __a, vector signed char __b) {
9577   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9578                                                      (vector int)__b);
9579 }
9580 
9581 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vslo(vector unsigned int __a,vector unsigned char __b)9582 vec_vslo(vector unsigned int __a, vector unsigned char __b) {
9583   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9584                                                      (vector int)__b);
9585 }
9586 
vec_vslo(vector float __a,vector signed char __b)9587 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
9588                                                      vector signed char __b) {
9589   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9590 }
9591 
vec_vslo(vector float __a,vector unsigned char __b)9592 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
9593                                                      vector unsigned char __b) {
9594   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9595 }
9596 
9597 /* vec_splat */
9598 
9599 static __inline__ vector signed char __ATTRS_o_ai
vec_splat(vector signed char __a,unsigned const int __b)9600 vec_splat(vector signed char __a, unsigned const int __b) {
9601   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
9602 }
9603 
9604 static __inline__ vector unsigned char __ATTRS_o_ai
vec_splat(vector unsigned char __a,unsigned const int __b)9605 vec_splat(vector unsigned char __a, unsigned const int __b) {
9606   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
9607 }
9608 
9609 static __inline__ vector bool char __ATTRS_o_ai
vec_splat(vector bool char __a,unsigned const int __b)9610 vec_splat(vector bool char __a, unsigned const int __b) {
9611   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
9612 }
9613 
9614 static __inline__ vector signed short __ATTRS_o_ai
vec_splat(vector signed short __a,unsigned const int __b)9615 vec_splat(vector signed short __a, unsigned const int __b) {
9616   unsigned char b0 = (__b & 0x07) * 2;
9617   unsigned char b1 = b0 + 1;
9618   return vec_perm(__a, __a,
9619                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9620                                          b0, b1, b0, b1, b0, b1));
9621 }
9622 
9623 static __inline__ vector unsigned short __ATTRS_o_ai
vec_splat(vector unsigned short __a,unsigned const int __b)9624 vec_splat(vector unsigned short __a, unsigned const int __b) {
9625   unsigned char b0 = (__b & 0x07) * 2;
9626   unsigned char b1 = b0 + 1;
9627   return vec_perm(__a, __a,
9628                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9629                                          b0, b1, b0, b1, b0, b1));
9630 }
9631 
9632 static __inline__ vector bool short __ATTRS_o_ai
vec_splat(vector bool short __a,unsigned const int __b)9633 vec_splat(vector bool short __a, unsigned const int __b) {
9634   unsigned char b0 = (__b & 0x07) * 2;
9635   unsigned char b1 = b0 + 1;
9636   return vec_perm(__a, __a,
9637                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9638                                          b0, b1, b0, b1, b0, b1));
9639 }
9640 
vec_splat(vector pixel __a,unsigned const int __b)9641 static __inline__ vector pixel __ATTRS_o_ai vec_splat(vector pixel __a,
9642                                                       unsigned const int __b) {
9643   unsigned char b0 = (__b & 0x07) * 2;
9644   unsigned char b1 = b0 + 1;
9645   return vec_perm(__a, __a,
9646                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9647                                          b0, b1, b0, b1, b0, b1));
9648 }
9649 
9650 static __inline__ vector signed int __ATTRS_o_ai
vec_splat(vector signed int __a,unsigned const int __b)9651 vec_splat(vector signed int __a, unsigned const int __b) {
9652   unsigned char b0 = (__b & 0x03) * 4;
9653   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9654   return vec_perm(__a, __a,
9655                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9656                                          b2, b3, b0, b1, b2, b3));
9657 }
9658 
9659 static __inline__ vector unsigned int __ATTRS_o_ai
vec_splat(vector unsigned int __a,unsigned const int __b)9660 vec_splat(vector unsigned int __a, unsigned const int __b) {
9661   unsigned char b0 = (__b & 0x03) * 4;
9662   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9663   return vec_perm(__a, __a,
9664                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9665                                          b2, b3, b0, b1, b2, b3));
9666 }
9667 
9668 static __inline__ vector bool int __ATTRS_o_ai
vec_splat(vector bool int __a,unsigned const int __b)9669 vec_splat(vector bool int __a, unsigned const int __b) {
9670   unsigned char b0 = (__b & 0x03) * 4;
9671   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9672   return vec_perm(__a, __a,
9673                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9674                                          b2, b3, b0, b1, b2, b3));
9675 }
9676 
vec_splat(vector float __a,unsigned const int __b)9677 static __inline__ vector float __ATTRS_o_ai vec_splat(vector float __a,
9678                                                       unsigned const int __b) {
9679   unsigned char b0 = (__b & 0x03) * 4;
9680   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9681   return vec_perm(__a, __a,
9682                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9683                                          b2, b3, b0, b1, b2, b3));
9684 }
9685 
9686 #ifdef __VSX__
vec_splat(vector double __a,unsigned const int __b)9687 static __inline__ vector double __ATTRS_o_ai vec_splat(vector double __a,
9688                                                        unsigned const int __b) {
9689   unsigned char b0 = (__b & 0x01) * 8;
9690   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9691                 b6 = b0 + 6, b7 = b0 + 7;
9692   return vec_perm(__a, __a,
9693                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9694                                          b2, b3, b4, b5, b6, b7));
9695 }
9696 static __inline__ vector bool long long __ATTRS_o_ai
vec_splat(vector bool long long __a,unsigned const int __b)9697 vec_splat(vector bool long long __a, unsigned const int __b) {
9698   unsigned char b0 = (__b & 0x01) * 8;
9699   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9700                 b6 = b0 + 6, b7 = b0 + 7;
9701   return vec_perm(__a, __a,
9702                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9703                                          b2, b3, b4, b5, b6, b7));
9704 }
9705 static __inline__ vector signed long long __ATTRS_o_ai
vec_splat(vector signed long long __a,unsigned const int __b)9706 vec_splat(vector signed long long __a, unsigned const int __b) {
9707   unsigned char b0 = (__b & 0x01) * 8;
9708   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9709                 b6 = b0 + 6, b7 = b0 + 7;
9710   return vec_perm(__a, __a,
9711                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9712                                          b2, b3, b4, b5, b6, b7));
9713 }
9714 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_splat(vector unsigned long long __a,unsigned const int __b)9715 vec_splat(vector unsigned long long __a, unsigned const int __b) {
9716   unsigned char b0 = (__b & 0x01) * 8;
9717   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9718                 b6 = b0 + 6, b7 = b0 + 7;
9719   return vec_perm(__a, __a,
9720                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9721                                          b2, b3, b4, b5, b6, b7));
9722 }
9723 #endif
9724 
9725 /* vec_vspltb */
9726 
9727 #define __builtin_altivec_vspltb vec_vspltb
9728 
9729 static __inline__ vector signed char __ATTRS_o_ai
vec_vspltb(vector signed char __a,unsigned char __b)9730 vec_vspltb(vector signed char __a, unsigned char __b) {
9731   return vec_perm(__a, __a, (vector unsigned char)(__b));
9732 }
9733 
9734 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vspltb(vector unsigned char __a,unsigned char __b)9735 vec_vspltb(vector unsigned char __a, unsigned char __b) {
9736   return vec_perm(__a, __a, (vector unsigned char)(__b));
9737 }
9738 
vec_vspltb(vector bool char __a,unsigned char __b)9739 static __inline__ vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a,
9740                                                            unsigned char __b) {
9741   return vec_perm(__a, __a, (vector unsigned char)(__b));
9742 }
9743 
9744 /* vec_vsplth */
9745 
9746 #define __builtin_altivec_vsplth vec_vsplth
9747 
vec_vsplth(vector short __a,unsigned char __b)9748 static __inline__ vector short __ATTRS_o_ai vec_vsplth(vector short __a,
9749                                                        unsigned char __b) {
9750   __b *= 2;
9751   unsigned char b1 = __b + 1;
9752   return vec_perm(__a, __a,
9753                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9754                                          __b, b1, __b, b1, __b, b1, __b, b1));
9755 }
9756 
9757 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsplth(vector unsigned short __a,unsigned char __b)9758 vec_vsplth(vector unsigned short __a, unsigned char __b) {
9759   __b *= 2;
9760   unsigned char b1 = __b + 1;
9761   return vec_perm(__a, __a,
9762                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9763                                          __b, b1, __b, b1, __b, b1, __b, b1));
9764 }
9765 
9766 static __inline__ vector bool short __ATTRS_o_ai
vec_vsplth(vector bool short __a,unsigned char __b)9767 vec_vsplth(vector bool short __a, unsigned char __b) {
9768   __b *= 2;
9769   unsigned char b1 = __b + 1;
9770   return vec_perm(__a, __a,
9771                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9772                                          __b, b1, __b, b1, __b, b1, __b, b1));
9773 }
9774 
vec_vsplth(vector pixel __a,unsigned char __b)9775 static __inline__ vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a,
9776                                                        unsigned char __b) {
9777   __b *= 2;
9778   unsigned char b1 = __b + 1;
9779   return vec_perm(__a, __a,
9780                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9781                                          __b, b1, __b, b1, __b, b1, __b, b1));
9782 }
9783 
9784 /* vec_vspltw */
9785 
9786 #define __builtin_altivec_vspltw vec_vspltw
9787 
vec_vspltw(vector int __a,unsigned char __b)9788 static __inline__ vector int __ATTRS_o_ai vec_vspltw(vector int __a,
9789                                                      unsigned char __b) {
9790   __b *= 4;
9791   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9792   return vec_perm(__a, __a,
9793                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9794                                          b1, b2, b3, __b, b1, b2, b3));
9795 }
9796 
9797 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vspltw(vector unsigned int __a,unsigned char __b)9798 vec_vspltw(vector unsigned int __a, unsigned char __b) {
9799   __b *= 4;
9800   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9801   return vec_perm(__a, __a,
9802                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9803                                          b1, b2, b3, __b, b1, b2, b3));
9804 }
9805 
vec_vspltw(vector bool int __a,unsigned char __b)9806 static __inline__ vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a,
9807                                                           unsigned char __b) {
9808   __b *= 4;
9809   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9810   return vec_perm(__a, __a,
9811                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9812                                          b1, b2, b3, __b, b1, b2, b3));
9813 }
9814 
vec_vspltw(vector float __a,unsigned char __b)9815 static __inline__ vector float __ATTRS_o_ai vec_vspltw(vector float __a,
9816                                                        unsigned char __b) {
9817   __b *= 4;
9818   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9819   return vec_perm(__a, __a,
9820                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9821                                          b1, b2, b3, __b, b1, b2, b3));
9822 }
9823 
9824 /* vec_splat_s8 */
9825 
9826 #define __builtin_altivec_vspltisb vec_splat_s8
9827 
9828 // FIXME: parameter should be treated as 5-bit signed literal
9829 static __inline__ vector signed char __ATTRS_o_ai
vec_splat_s8(signed char __a)9830 vec_splat_s8(signed char __a) {
9831   return (vector signed char)(__a);
9832 }
9833 
9834 /* vec_vspltisb */
9835 
9836 // FIXME: parameter should be treated as 5-bit signed literal
9837 static __inline__ vector signed char __ATTRS_o_ai
vec_vspltisb(signed char __a)9838 vec_vspltisb(signed char __a) {
9839   return (vector signed char)(__a);
9840 }
9841 
9842 /* vec_splat_s16 */
9843 
9844 #define __builtin_altivec_vspltish vec_splat_s16
9845 
9846 // FIXME: parameter should be treated as 5-bit signed literal
vec_splat_s16(signed char __a)9847 static __inline__ vector short __ATTRS_o_ai vec_splat_s16(signed char __a) {
9848   return (vector short)(__a);
9849 }
9850 
9851 /* vec_vspltish */
9852 
9853 // FIXME: parameter should be treated as 5-bit signed literal
vec_vspltish(signed char __a)9854 static __inline__ vector short __ATTRS_o_ai vec_vspltish(signed char __a) {
9855   return (vector short)(__a);
9856 }
9857 
9858 /* vec_splat_s32 */
9859 
9860 #define __builtin_altivec_vspltisw vec_splat_s32
9861 
9862 // FIXME: parameter should be treated as 5-bit signed literal
vec_splat_s32(signed char __a)9863 static __inline__ vector int __ATTRS_o_ai vec_splat_s32(signed char __a) {
9864   return (vector int)(__a);
9865 }
9866 
9867 /* vec_vspltisw */
9868 
9869 // FIXME: parameter should be treated as 5-bit signed literal
vec_vspltisw(signed char __a)9870 static __inline__ vector int __ATTRS_o_ai vec_vspltisw(signed char __a) {
9871   return (vector int)(__a);
9872 }
9873 
9874 /* vec_splat_u8 */
9875 
9876 // FIXME: parameter should be treated as 5-bit signed literal
9877 static __inline__ vector unsigned char __ATTRS_o_ai
vec_splat_u8(unsigned char __a)9878 vec_splat_u8(unsigned char __a) {
9879   return (vector unsigned char)(__a);
9880 }
9881 
9882 /* vec_splat_u16 */
9883 
9884 // FIXME: parameter should be treated as 5-bit signed literal
9885 static __inline__ vector unsigned short __ATTRS_o_ai
vec_splat_u16(signed char __a)9886 vec_splat_u16(signed char __a) {
9887   return (vector unsigned short)(__a);
9888 }
9889 
9890 /* vec_splat_u32 */
9891 
9892 // FIXME: parameter should be treated as 5-bit signed literal
9893 static __inline__ vector unsigned int __ATTRS_o_ai
vec_splat_u32(signed char __a)9894 vec_splat_u32(signed char __a) {
9895   return (vector unsigned int)(__a);
9896 }
9897 
9898 /* vec_sr */
9899 
9900 // vec_sr does modulo arithmetic on __b first, so __b is allowed to be more
9901 // than the length of __a.
9902 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sr(vector unsigned char __a,vector unsigned char __b)9903 vec_sr(vector unsigned char __a, vector unsigned char __b) {
9904   return __a >>
9905          (__b % (vector unsigned char)(sizeof(unsigned char) * __CHAR_BIT__));
9906 }
9907 
9908 static __inline__ vector signed char __ATTRS_o_ai
vec_sr(vector signed char __a,vector unsigned char __b)9909 vec_sr(vector signed char __a, vector unsigned char __b) {
9910   return (vector signed char)vec_sr((vector unsigned char)__a, __b);
9911 }
9912 
9913 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sr(vector unsigned short __a,vector unsigned short __b)9914 vec_sr(vector unsigned short __a, vector unsigned short __b) {
9915   return __a >>
9916          (__b % (vector unsigned short)(sizeof(unsigned short) * __CHAR_BIT__));
9917 }
9918 
vec_sr(vector short __a,vector unsigned short __b)9919 static __inline__ vector short __ATTRS_o_ai vec_sr(vector short __a,
9920                                                    vector unsigned short __b) {
9921   return (vector short)vec_sr((vector unsigned short)__a, __b);
9922 }
9923 
9924 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sr(vector unsigned int __a,vector unsigned int __b)9925 vec_sr(vector unsigned int __a, vector unsigned int __b) {
9926   return __a >>
9927          (__b % (vector unsigned int)(sizeof(unsigned int) * __CHAR_BIT__));
9928 }
9929 
vec_sr(vector int __a,vector unsigned int __b)9930 static __inline__ vector int __ATTRS_o_ai vec_sr(vector int __a,
9931                                                  vector unsigned int __b) {
9932   return (vector int)vec_sr((vector unsigned int)__a, __b);
9933 }
9934 
9935 #ifdef __POWER8_VECTOR__
9936 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sr(vector unsigned long long __a,vector unsigned long long __b)9937 vec_sr(vector unsigned long long __a, vector unsigned long long __b) {
9938   return __a >> (__b % (vector unsigned long long)(sizeof(unsigned long long) *
9939                                                    __CHAR_BIT__));
9940 }
9941 
9942 static __inline__ vector long long __ATTRS_o_ai
vec_sr(vector long long __a,vector unsigned long long __b)9943 vec_sr(vector long long __a, vector unsigned long long __b) {
9944   return (vector long long)vec_sr((vector unsigned long long)__a, __b);
9945 }
9946 #endif
9947 
9948 /* vec_vsrb */
9949 
9950 #define __builtin_altivec_vsrb vec_vsrb
9951 
9952 static __inline__ vector signed char __ATTRS_o_ai
vec_vsrb(vector signed char __a,vector unsigned char __b)9953 vec_vsrb(vector signed char __a, vector unsigned char __b) {
9954   return vec_sr(__a, __b);
9955 }
9956 
9957 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsrb(vector unsigned char __a,vector unsigned char __b)9958 vec_vsrb(vector unsigned char __a, vector unsigned char __b) {
9959   return vec_sr(__a, __b);
9960 }
9961 
9962 /* vec_vsrh */
9963 
9964 #define __builtin_altivec_vsrh vec_vsrh
9965 
9966 static __inline__ vector short __ATTRS_o_ai
vec_vsrh(vector short __a,vector unsigned short __b)9967 vec_vsrh(vector short __a, vector unsigned short __b) {
9968   return vec_sr(__a, __b);
9969 }
9970 
9971 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsrh(vector unsigned short __a,vector unsigned short __b)9972 vec_vsrh(vector unsigned short __a, vector unsigned short __b) {
9973   return vec_sr(__a, __b);
9974 }
9975 
9976 /* vec_vsrw */
9977 
9978 #define __builtin_altivec_vsrw vec_vsrw
9979 
vec_vsrw(vector int __a,vector unsigned int __b)9980 static __inline__ vector int __ATTRS_o_ai vec_vsrw(vector int __a,
9981                                                    vector unsigned int __b) {
9982   return vec_sr(__a, __b);
9983 }
9984 
9985 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsrw(vector unsigned int __a,vector unsigned int __b)9986 vec_vsrw(vector unsigned int __a, vector unsigned int __b) {
9987   return vec_sr(__a, __b);
9988 }
9989 
9990 /* vec_sra */
9991 
9992 static __inline__ vector signed char __ATTRS_o_ai
vec_sra(vector signed char __a,vector unsigned char __b)9993 vec_sra(vector signed char __a, vector unsigned char __b) {
9994   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
9995 }
9996 
9997 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sra(vector unsigned char __a,vector unsigned char __b)9998 vec_sra(vector unsigned char __a, vector unsigned char __b) {
9999   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
10000 }
10001 
vec_sra(vector short __a,vector unsigned short __b)10002 static __inline__ vector short __ATTRS_o_ai vec_sra(vector short __a,
10003                                                     vector unsigned short __b) {
10004   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
10005 }
10006 
10007 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sra(vector unsigned short __a,vector unsigned short __b)10008 vec_sra(vector unsigned short __a, vector unsigned short __b) {
10009   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
10010 }
10011 
vec_sra(vector int __a,vector unsigned int __b)10012 static __inline__ vector int __ATTRS_o_ai vec_sra(vector int __a,
10013                                                   vector unsigned int __b) {
10014   return __builtin_altivec_vsraw(__a, __b);
10015 }
10016 
10017 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sra(vector unsigned int __a,vector unsigned int __b)10018 vec_sra(vector unsigned int __a, vector unsigned int __b) {
10019   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
10020 }
10021 
10022 #ifdef __POWER8_VECTOR__
10023 static __inline__ vector signed long long __ATTRS_o_ai
vec_sra(vector signed long long __a,vector unsigned long long __b)10024 vec_sra(vector signed long long __a, vector unsigned long long __b) {
10025   return __a >> __b;
10026 }
10027 
10028 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sra(vector unsigned long long __a,vector unsigned long long __b)10029 vec_sra(vector unsigned long long __a, vector unsigned long long __b) {
10030   return (vector unsigned long long)((vector signed long long)__a >> __b);
10031 }
10032 #endif
10033 
10034 /* vec_vsrab */
10035 
10036 static __inline__ vector signed char __ATTRS_o_ai
vec_vsrab(vector signed char __a,vector unsigned char __b)10037 vec_vsrab(vector signed char __a, vector unsigned char __b) {
10038   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
10039 }
10040 
10041 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsrab(vector unsigned char __a,vector unsigned char __b)10042 vec_vsrab(vector unsigned char __a, vector unsigned char __b) {
10043   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
10044 }
10045 
10046 /* vec_vsrah */
10047 
10048 static __inline__ vector short __ATTRS_o_ai
vec_vsrah(vector short __a,vector unsigned short __b)10049 vec_vsrah(vector short __a, vector unsigned short __b) {
10050   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
10051 }
10052 
10053 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsrah(vector unsigned short __a,vector unsigned short __b)10054 vec_vsrah(vector unsigned short __a, vector unsigned short __b) {
10055   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
10056 }
10057 
10058 /* vec_vsraw */
10059 
vec_vsraw(vector int __a,vector unsigned int __b)10060 static __inline__ vector int __ATTRS_o_ai vec_vsraw(vector int __a,
10061                                                     vector unsigned int __b) {
10062   return __builtin_altivec_vsraw(__a, __b);
10063 }
10064 
10065 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsraw(vector unsigned int __a,vector unsigned int __b)10066 vec_vsraw(vector unsigned int __a, vector unsigned int __b) {
10067   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
10068 }
10069 
10070 /* vec_srl */
10071 
10072 static __inline__ vector signed char __ATTRS_o_ai
vec_srl(vector signed char __a,vector unsigned char __b)10073 vec_srl(vector signed char __a, vector unsigned char __b) {
10074   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
10075                                                    (vector int)__b);
10076 }
10077 
10078 static __inline__ vector signed char __ATTRS_o_ai
vec_srl(vector signed char __a,vector unsigned short __b)10079 vec_srl(vector signed char __a, vector unsigned short __b) {
10080   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
10081                                                    (vector int)__b);
10082 }
10083 
10084 static __inline__ vector signed char __ATTRS_o_ai
vec_srl(vector signed char __a,vector unsigned int __b)10085 vec_srl(vector signed char __a, vector unsigned int __b) {
10086   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
10087                                                    (vector int)__b);
10088 }
10089 
10090 static __inline__ vector unsigned char __ATTRS_o_ai
vec_srl(vector unsigned char __a,vector unsigned char __b)10091 vec_srl(vector unsigned char __a, vector unsigned char __b) {
10092   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
10093                                                      (vector int)__b);
10094 }
10095 
10096 static __inline__ vector unsigned char __ATTRS_o_ai
vec_srl(vector unsigned char __a,vector unsigned short __b)10097 vec_srl(vector unsigned char __a, vector unsigned short __b) {
10098   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
10099                                                      (vector int)__b);
10100 }
10101 
10102 static __inline__ vector unsigned char __ATTRS_o_ai
vec_srl(vector unsigned char __a,vector unsigned int __b)10103 vec_srl(vector unsigned char __a, vector unsigned int __b) {
10104   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
10105                                                      (vector int)__b);
10106 }
10107 
10108 static __inline__ vector bool char __ATTRS_o_ai
vec_srl(vector bool char __a,vector unsigned char __b)10109 vec_srl(vector bool char __a, vector unsigned char __b) {
10110   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
10111                                                  (vector int)__b);
10112 }
10113 
10114 static __inline__ vector bool char __ATTRS_o_ai
vec_srl(vector bool char __a,vector unsigned short __b)10115 vec_srl(vector bool char __a, vector unsigned short __b) {
10116   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
10117                                                  (vector int)__b);
10118 }
10119 
10120 static __inline__ vector bool char __ATTRS_o_ai
vec_srl(vector bool char __a,vector unsigned int __b)10121 vec_srl(vector bool char __a, vector unsigned int __b) {
10122   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
10123                                                  (vector int)__b);
10124 }
10125 
vec_srl(vector short __a,vector unsigned char __b)10126 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
10127                                                     vector unsigned char __b) {
10128   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10129 }
10130 
vec_srl(vector short __a,vector unsigned short __b)10131 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
10132                                                     vector unsigned short __b) {
10133   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10134 }
10135 
vec_srl(vector short __a,vector unsigned int __b)10136 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
10137                                                     vector unsigned int __b) {
10138   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10139 }
10140 
10141 static __inline__ vector unsigned short __ATTRS_o_ai
vec_srl(vector unsigned short __a,vector unsigned char __b)10142 vec_srl(vector unsigned short __a, vector unsigned char __b) {
10143   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
10144                                                       (vector int)__b);
10145 }
10146 
10147 static __inline__ vector unsigned short __ATTRS_o_ai
vec_srl(vector unsigned short __a,vector unsigned short __b)10148 vec_srl(vector unsigned short __a, vector unsigned short __b) {
10149   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
10150                                                       (vector int)__b);
10151 }
10152 
10153 static __inline__ vector unsigned short __ATTRS_o_ai
vec_srl(vector unsigned short __a,vector unsigned int __b)10154 vec_srl(vector unsigned short __a, vector unsigned int __b) {
10155   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
10156                                                       (vector int)__b);
10157 }
10158 
10159 static __inline__ vector bool short __ATTRS_o_ai
vec_srl(vector bool short __a,vector unsigned char __b)10160 vec_srl(vector bool short __a, vector unsigned char __b) {
10161   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
10162                                                   (vector int)__b);
10163 }
10164 
10165 static __inline__ vector bool short __ATTRS_o_ai
vec_srl(vector bool short __a,vector unsigned short __b)10166 vec_srl(vector bool short __a, vector unsigned short __b) {
10167   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
10168                                                   (vector int)__b);
10169 }
10170 
10171 static __inline__ vector bool short __ATTRS_o_ai
vec_srl(vector bool short __a,vector unsigned int __b)10172 vec_srl(vector bool short __a, vector unsigned int __b) {
10173   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
10174                                                   (vector int)__b);
10175 }
10176 
vec_srl(vector pixel __a,vector unsigned char __b)10177 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
10178                                                     vector unsigned char __b) {
10179   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10180 }
10181 
vec_srl(vector pixel __a,vector unsigned short __b)10182 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
10183                                                     vector unsigned short __b) {
10184   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10185 }
10186 
vec_srl(vector pixel __a,vector unsigned int __b)10187 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
10188                                                     vector unsigned int __b) {
10189   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10190 }
10191 
vec_srl(vector int __a,vector unsigned char __b)10192 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
10193                                                   vector unsigned char __b) {
10194   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
10195 }
10196 
vec_srl(vector int __a,vector unsigned short __b)10197 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
10198                                                   vector unsigned short __b) {
10199   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
10200 }
10201 
vec_srl(vector int __a,vector unsigned int __b)10202 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
10203                                                   vector unsigned int __b) {
10204   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
10205 }
10206 
10207 static __inline__ vector unsigned int __ATTRS_o_ai
vec_srl(vector unsigned int __a,vector unsigned char __b)10208 vec_srl(vector unsigned int __a, vector unsigned char __b) {
10209   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
10210                                                     (vector int)__b);
10211 }
10212 
10213 static __inline__ vector unsigned int __ATTRS_o_ai
vec_srl(vector unsigned int __a,vector unsigned short __b)10214 vec_srl(vector unsigned int __a, vector unsigned short __b) {
10215   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
10216                                                     (vector int)__b);
10217 }
10218 
10219 static __inline__ vector unsigned int __ATTRS_o_ai
vec_srl(vector unsigned int __a,vector unsigned int __b)10220 vec_srl(vector unsigned int __a, vector unsigned int __b) {
10221   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
10222                                                     (vector int)__b);
10223 }
10224 
10225 static __inline__ vector bool int __ATTRS_o_ai
vec_srl(vector bool int __a,vector unsigned char __b)10226 vec_srl(vector bool int __a, vector unsigned char __b) {
10227   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10228                                                 (vector int)__b);
10229 }
10230 
10231 static __inline__ vector bool int __ATTRS_o_ai
vec_srl(vector bool int __a,vector unsigned short __b)10232 vec_srl(vector bool int __a, vector unsigned short __b) {
10233   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10234                                                 (vector int)__b);
10235 }
10236 
10237 static __inline__ vector bool int __ATTRS_o_ai
vec_srl(vector bool int __a,vector unsigned int __b)10238 vec_srl(vector bool int __a, vector unsigned int __b) {
10239   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10240                                                 (vector int)__b);
10241 }
10242 
10243 #ifdef __VSX__
10244 static __inline__ vector signed long long __ATTRS_o_ai
vec_srl(vector signed long long __a,vector unsigned char __b)10245 vec_srl(vector signed long long __a, vector unsigned char __b) {
10246   return (vector signed long long)__builtin_altivec_vsr((vector int)__a,
10247                                                         (vector int)__b);
10248 }
10249 
10250 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_srl(vector unsigned long long __a,vector unsigned char __b)10251 vec_srl(vector unsigned long long __a, vector unsigned char __b) {
10252   return (vector unsigned long long)__builtin_altivec_vsr((vector int)__a,
10253                                                           (vector int)__b);
10254 }
10255 #endif
10256 
10257 /* vec_vsr */
10258 
10259 static __inline__ vector signed char __ATTRS_o_ai
vec_vsr(vector signed char __a,vector unsigned char __b)10260 vec_vsr(vector signed char __a, vector unsigned char __b) {
10261   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
10262                                                    (vector int)__b);
10263 }
10264 
10265 static __inline__ vector signed char __ATTRS_o_ai
vec_vsr(vector signed char __a,vector unsigned short __b)10266 vec_vsr(vector signed char __a, vector unsigned short __b) {
10267   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
10268                                                    (vector int)__b);
10269 }
10270 
10271 static __inline__ vector signed char __ATTRS_o_ai
vec_vsr(vector signed char __a,vector unsigned int __b)10272 vec_vsr(vector signed char __a, vector unsigned int __b) {
10273   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
10274                                                    (vector int)__b);
10275 }
10276 
10277 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsr(vector unsigned char __a,vector unsigned char __b)10278 vec_vsr(vector unsigned char __a, vector unsigned char __b) {
10279   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
10280                                                      (vector int)__b);
10281 }
10282 
10283 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsr(vector unsigned char __a,vector unsigned short __b)10284 vec_vsr(vector unsigned char __a, vector unsigned short __b) {
10285   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
10286                                                      (vector int)__b);
10287 }
10288 
10289 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsr(vector unsigned char __a,vector unsigned int __b)10290 vec_vsr(vector unsigned char __a, vector unsigned int __b) {
10291   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
10292                                                      (vector int)__b);
10293 }
10294 
10295 static __inline__ vector bool char __ATTRS_o_ai
vec_vsr(vector bool char __a,vector unsigned char __b)10296 vec_vsr(vector bool char __a, vector unsigned char __b) {
10297   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
10298                                                  (vector int)__b);
10299 }
10300 
10301 static __inline__ vector bool char __ATTRS_o_ai
vec_vsr(vector bool char __a,vector unsigned short __b)10302 vec_vsr(vector bool char __a, vector unsigned short __b) {
10303   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
10304                                                  (vector int)__b);
10305 }
10306 
10307 static __inline__ vector bool char __ATTRS_o_ai
vec_vsr(vector bool char __a,vector unsigned int __b)10308 vec_vsr(vector bool char __a, vector unsigned int __b) {
10309   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
10310                                                  (vector int)__b);
10311 }
10312 
vec_vsr(vector short __a,vector unsigned char __b)10313 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
10314                                                     vector unsigned char __b) {
10315   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10316 }
10317 
vec_vsr(vector short __a,vector unsigned short __b)10318 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
10319                                                     vector unsigned short __b) {
10320   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10321 }
10322 
vec_vsr(vector short __a,vector unsigned int __b)10323 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
10324                                                     vector unsigned int __b) {
10325   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10326 }
10327 
10328 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsr(vector unsigned short __a,vector unsigned char __b)10329 vec_vsr(vector unsigned short __a, vector unsigned char __b) {
10330   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
10331                                                       (vector int)__b);
10332 }
10333 
10334 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsr(vector unsigned short __a,vector unsigned short __b)10335 vec_vsr(vector unsigned short __a, vector unsigned short __b) {
10336   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
10337                                                       (vector int)__b);
10338 }
10339 
10340 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsr(vector unsigned short __a,vector unsigned int __b)10341 vec_vsr(vector unsigned short __a, vector unsigned int __b) {
10342   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
10343                                                       (vector int)__b);
10344 }
10345 
10346 static __inline__ vector bool short __ATTRS_o_ai
vec_vsr(vector bool short __a,vector unsigned char __b)10347 vec_vsr(vector bool short __a, vector unsigned char __b) {
10348   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
10349                                                   (vector int)__b);
10350 }
10351 
10352 static __inline__ vector bool short __ATTRS_o_ai
vec_vsr(vector bool short __a,vector unsigned short __b)10353 vec_vsr(vector bool short __a, vector unsigned short __b) {
10354   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
10355                                                   (vector int)__b);
10356 }
10357 
10358 static __inline__ vector bool short __ATTRS_o_ai
vec_vsr(vector bool short __a,vector unsigned int __b)10359 vec_vsr(vector bool short __a, vector unsigned int __b) {
10360   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
10361                                                   (vector int)__b);
10362 }
10363 
vec_vsr(vector pixel __a,vector unsigned char __b)10364 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
10365                                                     vector unsigned char __b) {
10366   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10367 }
10368 
vec_vsr(vector pixel __a,vector unsigned short __b)10369 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
10370                                                     vector unsigned short __b) {
10371   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10372 }
10373 
vec_vsr(vector pixel __a,vector unsigned int __b)10374 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
10375                                                     vector unsigned int __b) {
10376   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
10377 }
10378 
vec_vsr(vector int __a,vector unsigned char __b)10379 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
10380                                                   vector unsigned char __b) {
10381   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
10382 }
10383 
vec_vsr(vector int __a,vector unsigned short __b)10384 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
10385                                                   vector unsigned short __b) {
10386   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
10387 }
10388 
vec_vsr(vector int __a,vector unsigned int __b)10389 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
10390                                                   vector unsigned int __b) {
10391   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
10392 }
10393 
10394 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsr(vector unsigned int __a,vector unsigned char __b)10395 vec_vsr(vector unsigned int __a, vector unsigned char __b) {
10396   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
10397                                                     (vector int)__b);
10398 }
10399 
10400 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsr(vector unsigned int __a,vector unsigned short __b)10401 vec_vsr(vector unsigned int __a, vector unsigned short __b) {
10402   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
10403                                                     (vector int)__b);
10404 }
10405 
10406 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsr(vector unsigned int __a,vector unsigned int __b)10407 vec_vsr(vector unsigned int __a, vector unsigned int __b) {
10408   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
10409                                                     (vector int)__b);
10410 }
10411 
10412 static __inline__ vector bool int __ATTRS_o_ai
vec_vsr(vector bool int __a,vector unsigned char __b)10413 vec_vsr(vector bool int __a, vector unsigned char __b) {
10414   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10415                                                 (vector int)__b);
10416 }
10417 
10418 static __inline__ vector bool int __ATTRS_o_ai
vec_vsr(vector bool int __a,vector unsigned short __b)10419 vec_vsr(vector bool int __a, vector unsigned short __b) {
10420   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10421                                                 (vector int)__b);
10422 }
10423 
10424 static __inline__ vector bool int __ATTRS_o_ai
vec_vsr(vector bool int __a,vector unsigned int __b)10425 vec_vsr(vector bool int __a, vector unsigned int __b) {
10426   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10427                                                 (vector int)__b);
10428 }
10429 
10430 /* vec_sro */
10431 
10432 static __inline__ vector signed char __ATTRS_o_ai
vec_sro(vector signed char __a,vector signed char __b)10433 vec_sro(vector signed char __a, vector signed char __b) {
10434   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10435                                                     (vector int)__b);
10436 }
10437 
10438 static __inline__ vector signed char __ATTRS_o_ai
vec_sro(vector signed char __a,vector unsigned char __b)10439 vec_sro(vector signed char __a, vector unsigned char __b) {
10440   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10441                                                     (vector int)__b);
10442 }
10443 
10444 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sro(vector unsigned char __a,vector signed char __b)10445 vec_sro(vector unsigned char __a, vector signed char __b) {
10446   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10447                                                       (vector int)__b);
10448 }
10449 
10450 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sro(vector unsigned char __a,vector unsigned char __b)10451 vec_sro(vector unsigned char __a, vector unsigned char __b) {
10452   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10453                                                       (vector int)__b);
10454 }
10455 
vec_sro(vector short __a,vector signed char __b)10456 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
10457                                                     vector signed char __b) {
10458   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10459 }
10460 
vec_sro(vector short __a,vector unsigned char __b)10461 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
10462                                                     vector unsigned char __b) {
10463   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10464 }
10465 
10466 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sro(vector unsigned short __a,vector signed char __b)10467 vec_sro(vector unsigned short __a, vector signed char __b) {
10468   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10469                                                        (vector int)__b);
10470 }
10471 
10472 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sro(vector unsigned short __a,vector unsigned char __b)10473 vec_sro(vector unsigned short __a, vector unsigned char __b) {
10474   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10475                                                        (vector int)__b);
10476 }
10477 
vec_sro(vector pixel __a,vector signed char __b)10478 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
10479                                                     vector signed char __b) {
10480   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10481 }
10482 
vec_sro(vector pixel __a,vector unsigned char __b)10483 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
10484                                                     vector unsigned char __b) {
10485   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10486 }
10487 
vec_sro(vector int __a,vector signed char __b)10488 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
10489                                                   vector signed char __b) {
10490   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10491 }
10492 
vec_sro(vector int __a,vector unsigned char __b)10493 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
10494                                                   vector unsigned char __b) {
10495   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10496 }
10497 
10498 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sro(vector unsigned int __a,vector signed char __b)10499 vec_sro(vector unsigned int __a, vector signed char __b) {
10500   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10501                                                      (vector int)__b);
10502 }
10503 
10504 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sro(vector unsigned int __a,vector unsigned char __b)10505 vec_sro(vector unsigned int __a, vector unsigned char __b) {
10506   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10507                                                      (vector int)__b);
10508 }
10509 
vec_sro(vector float __a,vector signed char __b)10510 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
10511                                                     vector signed char __b) {
10512   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10513 }
10514 
vec_sro(vector float __a,vector unsigned char __b)10515 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
10516                                                     vector unsigned char __b) {
10517   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10518 }
10519 
10520 #ifdef __VSX__
10521 static __inline__ vector signed long long __ATTRS_o_ai
vec_sro(vector signed long long __a,vector signed char __b)10522 vec_sro(vector signed long long __a, vector signed char __b) {
10523   return (vector signed long long)__builtin_altivec_vsro((vector int)__a,
10524                                                          (vector int)__b);
10525 }
10526 
10527 static __inline__ vector signed long long __ATTRS_o_ai
vec_sro(vector signed long long __a,vector unsigned char __b)10528 vec_sro(vector signed long long __a, vector unsigned char __b) {
10529   return (vector signed long long)__builtin_altivec_vsro((vector int)__a,
10530                                                          (vector int)__b);
10531 }
10532 
10533 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sro(vector unsigned long long __a,vector signed char __b)10534 vec_sro(vector unsigned long long __a, vector signed char __b) {
10535   return (vector unsigned long long)__builtin_altivec_vsro((vector int)__a,
10536                                                            (vector int)__b);
10537 }
10538 
10539 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sro(vector unsigned long long __a,vector unsigned char __b)10540 vec_sro(vector unsigned long long __a, vector unsigned char __b) {
10541   return (vector unsigned long long)__builtin_altivec_vsro((vector int)__a,
10542                                                            (vector int)__b);
10543 }
10544 #endif
10545 
10546 /* vec_vsro */
10547 
10548 static __inline__ vector signed char __ATTRS_o_ai
vec_vsro(vector signed char __a,vector signed char __b)10549 vec_vsro(vector signed char __a, vector signed char __b) {
10550   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10551                                                     (vector int)__b);
10552 }
10553 
10554 static __inline__ vector signed char __ATTRS_o_ai
vec_vsro(vector signed char __a,vector unsigned char __b)10555 vec_vsro(vector signed char __a, vector unsigned char __b) {
10556   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10557                                                     (vector int)__b);
10558 }
10559 
10560 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsro(vector unsigned char __a,vector signed char __b)10561 vec_vsro(vector unsigned char __a, vector signed char __b) {
10562   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10563                                                       (vector int)__b);
10564 }
10565 
10566 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsro(vector unsigned char __a,vector unsigned char __b)10567 vec_vsro(vector unsigned char __a, vector unsigned char __b) {
10568   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10569                                                       (vector int)__b);
10570 }
10571 
vec_vsro(vector short __a,vector signed char __b)10572 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
10573                                                      vector signed char __b) {
10574   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10575 }
10576 
vec_vsro(vector short __a,vector unsigned char __b)10577 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
10578                                                      vector unsigned char __b) {
10579   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10580 }
10581 
10582 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsro(vector unsigned short __a,vector signed char __b)10583 vec_vsro(vector unsigned short __a, vector signed char __b) {
10584   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10585                                                        (vector int)__b);
10586 }
10587 
10588 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsro(vector unsigned short __a,vector unsigned char __b)10589 vec_vsro(vector unsigned short __a, vector unsigned char __b) {
10590   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10591                                                        (vector int)__b);
10592 }
10593 
vec_vsro(vector pixel __a,vector signed char __b)10594 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
10595                                                      vector signed char __b) {
10596   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10597 }
10598 
vec_vsro(vector pixel __a,vector unsigned char __b)10599 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
10600                                                      vector unsigned char __b) {
10601   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10602 }
10603 
vec_vsro(vector int __a,vector signed char __b)10604 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
10605                                                    vector signed char __b) {
10606   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10607 }
10608 
vec_vsro(vector int __a,vector unsigned char __b)10609 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
10610                                                    vector unsigned char __b) {
10611   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10612 }
10613 
10614 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsro(vector unsigned int __a,vector signed char __b)10615 vec_vsro(vector unsigned int __a, vector signed char __b) {
10616   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10617                                                      (vector int)__b);
10618 }
10619 
10620 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsro(vector unsigned int __a,vector unsigned char __b)10621 vec_vsro(vector unsigned int __a, vector unsigned char __b) {
10622   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10623                                                      (vector int)__b);
10624 }
10625 
vec_vsro(vector float __a,vector signed char __b)10626 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
10627                                                      vector signed char __b) {
10628   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10629 }
10630 
vec_vsro(vector float __a,vector unsigned char __b)10631 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
10632                                                      vector unsigned char __b) {
10633   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10634 }
10635 
10636 /* vec_st */
10637 
vec_st(vector signed char __a,int __b,vector signed char * __c)10638 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
10639                                            vector signed char *__c) {
10640   __builtin_altivec_stvx((vector int)__a, __b, __c);
10641 }
10642 
vec_st(vector signed char __a,int __b,signed char * __c)10643 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
10644                                            signed char *__c) {
10645   __builtin_altivec_stvx((vector int)__a, __b, __c);
10646 }
10647 
vec_st(vector unsigned char __a,int __b,vector unsigned char * __c)10648 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
10649                                            vector unsigned char *__c) {
10650   __builtin_altivec_stvx((vector int)__a, __b, __c);
10651 }
10652 
vec_st(vector unsigned char __a,int __b,unsigned char * __c)10653 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
10654                                            unsigned char *__c) {
10655   __builtin_altivec_stvx((vector int)__a, __b, __c);
10656 }
10657 
vec_st(vector bool char __a,int __b,signed char * __c)10658 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
10659                                            signed char *__c) {
10660   __builtin_altivec_stvx((vector int)__a, __b, __c);
10661 }
10662 
vec_st(vector bool char __a,int __b,unsigned char * __c)10663 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
10664                                            unsigned char *__c) {
10665   __builtin_altivec_stvx((vector int)__a, __b, __c);
10666 }
10667 
vec_st(vector bool char __a,int __b,vector bool char * __c)10668 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
10669                                            vector bool char *__c) {
10670   __builtin_altivec_stvx((vector int)__a, __b, __c);
10671 }
10672 
vec_st(vector short __a,int __b,vector short * __c)10673 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
10674                                            vector short *__c) {
10675   __builtin_altivec_stvx((vector int)__a, __b, __c);
10676 }
10677 
vec_st(vector short __a,int __b,short * __c)10678 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
10679                                            short *__c) {
10680   __builtin_altivec_stvx((vector int)__a, __b, __c);
10681 }
10682 
vec_st(vector unsigned short __a,int __b,vector unsigned short * __c)10683 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
10684                                            vector unsigned short *__c) {
10685   __builtin_altivec_stvx((vector int)__a, __b, __c);
10686 }
10687 
vec_st(vector unsigned short __a,int __b,unsigned short * __c)10688 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
10689                                            unsigned short *__c) {
10690   __builtin_altivec_stvx((vector int)__a, __b, __c);
10691 }
10692 
vec_st(vector bool short __a,int __b,short * __c)10693 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
10694                                            short *__c) {
10695   __builtin_altivec_stvx((vector int)__a, __b, __c);
10696 }
10697 
vec_st(vector bool short __a,int __b,unsigned short * __c)10698 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
10699                                            unsigned short *__c) {
10700   __builtin_altivec_stvx((vector int)__a, __b, __c);
10701 }
10702 
vec_st(vector bool short __a,int __b,vector bool short * __c)10703 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
10704                                            vector bool short *__c) {
10705   __builtin_altivec_stvx((vector int)__a, __b, __c);
10706 }
10707 
vec_st(vector pixel __a,int __b,short * __c)10708 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
10709                                            short *__c) {
10710   __builtin_altivec_stvx((vector int)__a, __b, __c);
10711 }
10712 
vec_st(vector pixel __a,int __b,unsigned short * __c)10713 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
10714                                            unsigned short *__c) {
10715   __builtin_altivec_stvx((vector int)__a, __b, __c);
10716 }
10717 
vec_st(vector pixel __a,int __b,vector pixel * __c)10718 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
10719                                            vector pixel *__c) {
10720   __builtin_altivec_stvx((vector int)__a, __b, __c);
10721 }
10722 
vec_st(vector int __a,int __b,vector int * __c)10723 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b,
10724                                            vector int *__c) {
10725   __builtin_altivec_stvx(__a, __b, __c);
10726 }
10727 
vec_st(vector int __a,int __b,int * __c)10728 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) {
10729   __builtin_altivec_stvx(__a, __b, __c);
10730 }
10731 
vec_st(vector unsigned int __a,int __b,vector unsigned int * __c)10732 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
10733                                            vector unsigned int *__c) {
10734   __builtin_altivec_stvx((vector int)__a, __b, __c);
10735 }
10736 
vec_st(vector unsigned int __a,int __b,unsigned int * __c)10737 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
10738                                            unsigned int *__c) {
10739   __builtin_altivec_stvx((vector int)__a, __b, __c);
10740 }
10741 
vec_st(vector bool int __a,int __b,int * __c)10742 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
10743                                            int *__c) {
10744   __builtin_altivec_stvx((vector int)__a, __b, __c);
10745 }
10746 
vec_st(vector bool int __a,int __b,unsigned int * __c)10747 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
10748                                            unsigned int *__c) {
10749   __builtin_altivec_stvx((vector int)__a, __b, __c);
10750 }
10751 
vec_st(vector bool int __a,int __b,vector bool int * __c)10752 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
10753                                            vector bool int *__c) {
10754   __builtin_altivec_stvx((vector int)__a, __b, __c);
10755 }
10756 
vec_st(vector float __a,int __b,vector float * __c)10757 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
10758                                            vector float *__c) {
10759   __builtin_altivec_stvx((vector int)__a, __b, __c);
10760 }
10761 
vec_st(vector float __a,int __b,float * __c)10762 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
10763                                            float *__c) {
10764   __builtin_altivec_stvx((vector int)__a, __b, __c);
10765 }
10766 
10767 /* vec_stvx */
10768 
vec_stvx(vector signed char __a,int __b,vector signed char * __c)10769 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
10770                                              vector signed char *__c) {
10771   __builtin_altivec_stvx((vector int)__a, __b, __c);
10772 }
10773 
vec_stvx(vector signed char __a,int __b,signed char * __c)10774 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
10775                                              signed char *__c) {
10776   __builtin_altivec_stvx((vector int)__a, __b, __c);
10777 }
10778 
vec_stvx(vector unsigned char __a,int __b,vector unsigned char * __c)10779 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
10780                                              vector unsigned char *__c) {
10781   __builtin_altivec_stvx((vector int)__a, __b, __c);
10782 }
10783 
vec_stvx(vector unsigned char __a,int __b,unsigned char * __c)10784 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
10785                                              unsigned char *__c) {
10786   __builtin_altivec_stvx((vector int)__a, __b, __c);
10787 }
10788 
vec_stvx(vector bool char __a,int __b,signed char * __c)10789 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
10790                                              signed char *__c) {
10791   __builtin_altivec_stvx((vector int)__a, __b, __c);
10792 }
10793 
vec_stvx(vector bool char __a,int __b,unsigned char * __c)10794 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
10795                                              unsigned char *__c) {
10796   __builtin_altivec_stvx((vector int)__a, __b, __c);
10797 }
10798 
vec_stvx(vector bool char __a,int __b,vector bool char * __c)10799 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
10800                                              vector bool char *__c) {
10801   __builtin_altivec_stvx((vector int)__a, __b, __c);
10802 }
10803 
vec_stvx(vector short __a,int __b,vector short * __c)10804 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
10805                                              vector short *__c) {
10806   __builtin_altivec_stvx((vector int)__a, __b, __c);
10807 }
10808 
vec_stvx(vector short __a,int __b,short * __c)10809 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
10810                                              short *__c) {
10811   __builtin_altivec_stvx((vector int)__a, __b, __c);
10812 }
10813 
vec_stvx(vector unsigned short __a,int __b,vector unsigned short * __c)10814 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
10815                                              vector unsigned short *__c) {
10816   __builtin_altivec_stvx((vector int)__a, __b, __c);
10817 }
10818 
vec_stvx(vector unsigned short __a,int __b,unsigned short * __c)10819 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
10820                                              unsigned short *__c) {
10821   __builtin_altivec_stvx((vector int)__a, __b, __c);
10822 }
10823 
vec_stvx(vector bool short __a,int __b,short * __c)10824 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
10825                                              short *__c) {
10826   __builtin_altivec_stvx((vector int)__a, __b, __c);
10827 }
10828 
vec_stvx(vector bool short __a,int __b,unsigned short * __c)10829 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
10830                                              unsigned short *__c) {
10831   __builtin_altivec_stvx((vector int)__a, __b, __c);
10832 }
10833 
vec_stvx(vector bool short __a,int __b,vector bool short * __c)10834 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
10835                                              vector bool short *__c) {
10836   __builtin_altivec_stvx((vector int)__a, __b, __c);
10837 }
10838 
vec_stvx(vector pixel __a,int __b,short * __c)10839 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
10840                                              short *__c) {
10841   __builtin_altivec_stvx((vector int)__a, __b, __c);
10842 }
10843 
vec_stvx(vector pixel __a,int __b,unsigned short * __c)10844 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
10845                                              unsigned short *__c) {
10846   __builtin_altivec_stvx((vector int)__a, __b, __c);
10847 }
10848 
vec_stvx(vector pixel __a,int __b,vector pixel * __c)10849 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
10850                                              vector pixel *__c) {
10851   __builtin_altivec_stvx((vector int)__a, __b, __c);
10852 }
10853 
vec_stvx(vector int __a,int __b,vector int * __c)10854 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
10855                                              vector int *__c) {
10856   __builtin_altivec_stvx(__a, __b, __c);
10857 }
10858 
vec_stvx(vector int __a,int __b,int * __c)10859 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
10860                                              int *__c) {
10861   __builtin_altivec_stvx(__a, __b, __c);
10862 }
10863 
vec_stvx(vector unsigned int __a,int __b,vector unsigned int * __c)10864 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
10865                                              vector unsigned int *__c) {
10866   __builtin_altivec_stvx((vector int)__a, __b, __c);
10867 }
10868 
vec_stvx(vector unsigned int __a,int __b,unsigned int * __c)10869 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
10870                                              unsigned int *__c) {
10871   __builtin_altivec_stvx((vector int)__a, __b, __c);
10872 }
10873 
vec_stvx(vector bool int __a,int __b,int * __c)10874 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
10875                                              int *__c) {
10876   __builtin_altivec_stvx((vector int)__a, __b, __c);
10877 }
10878 
vec_stvx(vector bool int __a,int __b,unsigned int * __c)10879 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
10880                                              unsigned int *__c) {
10881   __builtin_altivec_stvx((vector int)__a, __b, __c);
10882 }
10883 
vec_stvx(vector bool int __a,int __b,vector bool int * __c)10884 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
10885                                              vector bool int *__c) {
10886   __builtin_altivec_stvx((vector int)__a, __b, __c);
10887 }
10888 
vec_stvx(vector float __a,int __b,vector float * __c)10889 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
10890                                              vector float *__c) {
10891   __builtin_altivec_stvx((vector int)__a, __b, __c);
10892 }
10893 
vec_stvx(vector float __a,int __b,float * __c)10894 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
10895                                              float *__c) {
10896   __builtin_altivec_stvx((vector int)__a, __b, __c);
10897 }
10898 
10899 /* vec_ste */
10900 
vec_ste(vector signed char __a,int __b,signed char * __c)10901 static __inline__ void __ATTRS_o_ai vec_ste(vector signed char __a, int __b,
10902                                             signed char *__c) {
10903   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10904 }
10905 
vec_ste(vector unsigned char __a,int __b,unsigned char * __c)10906 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b,
10907                                             unsigned char *__c) {
10908   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10909 }
10910 
vec_ste(vector bool char __a,int __b,signed char * __c)10911 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
10912                                             signed char *__c) {
10913   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10914 }
10915 
vec_ste(vector bool char __a,int __b,unsigned char * __c)10916 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
10917                                             unsigned char *__c) {
10918   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10919 }
10920 
vec_ste(vector short __a,int __b,short * __c)10921 static __inline__ void __ATTRS_o_ai vec_ste(vector short __a, int __b,
10922                                             short *__c) {
10923   __builtin_altivec_stvehx(__a, __b, __c);
10924 }
10925 
vec_ste(vector unsigned short __a,int __b,unsigned short * __c)10926 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b,
10927                                             unsigned short *__c) {
10928   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10929 }
10930 
vec_ste(vector bool short __a,int __b,short * __c)10931 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
10932                                             short *__c) {
10933   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10934 }
10935 
vec_ste(vector bool short __a,int __b,unsigned short * __c)10936 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
10937                                             unsigned short *__c) {
10938   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10939 }
10940 
vec_ste(vector pixel __a,int __b,short * __c)10941 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
10942                                             short *__c) {
10943   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10944 }
10945 
vec_ste(vector pixel __a,int __b,unsigned short * __c)10946 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
10947                                             unsigned short *__c) {
10948   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10949 }
10950 
vec_ste(vector int __a,int __b,int * __c)10951 static __inline__ void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) {
10952   __builtin_altivec_stvewx(__a, __b, __c);
10953 }
10954 
vec_ste(vector unsigned int __a,int __b,unsigned int * __c)10955 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b,
10956                                             unsigned int *__c) {
10957   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10958 }
10959 
vec_ste(vector bool int __a,int __b,int * __c)10960 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
10961                                             int *__c) {
10962   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10963 }
10964 
vec_ste(vector bool int __a,int __b,unsigned int * __c)10965 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
10966                                             unsigned int *__c) {
10967   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10968 }
10969 
vec_ste(vector float __a,int __b,float * __c)10970 static __inline__ void __ATTRS_o_ai vec_ste(vector float __a, int __b,
10971                                             float *__c) {
10972   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10973 }
10974 
10975 /* vec_stvebx */
10976 
vec_stvebx(vector signed char __a,int __b,signed char * __c)10977 static __inline__ void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b,
10978                                                signed char *__c) {
10979   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10980 }
10981 
vec_stvebx(vector unsigned char __a,int __b,unsigned char * __c)10982 static __inline__ void __ATTRS_o_ai vec_stvebx(vector unsigned char __a,
10983                                                int __b, unsigned char *__c) {
10984   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10985 }
10986 
vec_stvebx(vector bool char __a,int __b,signed char * __c)10987 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
10988                                                signed char *__c) {
10989   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10990 }
10991 
vec_stvebx(vector bool char __a,int __b,unsigned char * __c)10992 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
10993                                                unsigned char *__c) {
10994   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10995 }
10996 
10997 /* vec_stvehx */
10998 
vec_stvehx(vector short __a,int __b,short * __c)10999 static __inline__ void __ATTRS_o_ai vec_stvehx(vector short __a, int __b,
11000                                                short *__c) {
11001   __builtin_altivec_stvehx(__a, __b, __c);
11002 }
11003 
vec_stvehx(vector unsigned short __a,int __b,unsigned short * __c)11004 static __inline__ void __ATTRS_o_ai vec_stvehx(vector unsigned short __a,
11005                                                int __b, unsigned short *__c) {
11006   __builtin_altivec_stvehx((vector short)__a, __b, __c);
11007 }
11008 
vec_stvehx(vector bool short __a,int __b,short * __c)11009 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
11010                                                short *__c) {
11011   __builtin_altivec_stvehx((vector short)__a, __b, __c);
11012 }
11013 
vec_stvehx(vector bool short __a,int __b,unsigned short * __c)11014 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
11015                                                unsigned short *__c) {
11016   __builtin_altivec_stvehx((vector short)__a, __b, __c);
11017 }
11018 
vec_stvehx(vector pixel __a,int __b,short * __c)11019 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
11020                                                short *__c) {
11021   __builtin_altivec_stvehx((vector short)__a, __b, __c);
11022 }
11023 
vec_stvehx(vector pixel __a,int __b,unsigned short * __c)11024 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
11025                                                unsigned short *__c) {
11026   __builtin_altivec_stvehx((vector short)__a, __b, __c);
11027 }
11028 
11029 /* vec_stvewx */
11030 
vec_stvewx(vector int __a,int __b,int * __c)11031 static __inline__ void __ATTRS_o_ai vec_stvewx(vector int __a, int __b,
11032                                                int *__c) {
11033   __builtin_altivec_stvewx(__a, __b, __c);
11034 }
11035 
vec_stvewx(vector unsigned int __a,int __b,unsigned int * __c)11036 static __inline__ void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b,
11037                                                unsigned int *__c) {
11038   __builtin_altivec_stvewx((vector int)__a, __b, __c);
11039 }
11040 
vec_stvewx(vector bool int __a,int __b,int * __c)11041 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
11042                                                int *__c) {
11043   __builtin_altivec_stvewx((vector int)__a, __b, __c);
11044 }
11045 
vec_stvewx(vector bool int __a,int __b,unsigned int * __c)11046 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
11047                                                unsigned int *__c) {
11048   __builtin_altivec_stvewx((vector int)__a, __b, __c);
11049 }
11050 
vec_stvewx(vector float __a,int __b,float * __c)11051 static __inline__ void __ATTRS_o_ai vec_stvewx(vector float __a, int __b,
11052                                                float *__c) {
11053   __builtin_altivec_stvewx((vector int)__a, __b, __c);
11054 }
11055 
11056 /* vec_stl */
11057 
vec_stl(vector signed char __a,int __b,vector signed char * __c)11058 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
11059                                             vector signed char *__c) {
11060   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11061 }
11062 
vec_stl(vector signed char __a,int __b,signed char * __c)11063 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
11064                                             signed char *__c) {
11065   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11066 }
11067 
vec_stl(vector unsigned char __a,int __b,vector unsigned char * __c)11068 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
11069                                             vector unsigned char *__c) {
11070   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11071 }
11072 
vec_stl(vector unsigned char __a,int __b,unsigned char * __c)11073 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
11074                                             unsigned char *__c) {
11075   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11076 }
11077 
vec_stl(vector bool char __a,int __b,signed char * __c)11078 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
11079                                             signed char *__c) {
11080   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11081 }
11082 
vec_stl(vector bool char __a,int __b,unsigned char * __c)11083 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
11084                                             unsigned char *__c) {
11085   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11086 }
11087 
vec_stl(vector bool char __a,int __b,vector bool char * __c)11088 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
11089                                             vector bool char *__c) {
11090   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11091 }
11092 
vec_stl(vector short __a,int __b,vector short * __c)11093 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
11094                                             vector short *__c) {
11095   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11096 }
11097 
vec_stl(vector short __a,int __b,short * __c)11098 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
11099                                             short *__c) {
11100   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11101 }
11102 
vec_stl(vector unsigned short __a,int __b,vector unsigned short * __c)11103 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
11104                                             vector unsigned short *__c) {
11105   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11106 }
11107 
vec_stl(vector unsigned short __a,int __b,unsigned short * __c)11108 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
11109                                             unsigned short *__c) {
11110   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11111 }
11112 
vec_stl(vector bool short __a,int __b,short * __c)11113 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
11114                                             short *__c) {
11115   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11116 }
11117 
vec_stl(vector bool short __a,int __b,unsigned short * __c)11118 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
11119                                             unsigned short *__c) {
11120   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11121 }
11122 
vec_stl(vector bool short __a,int __b,vector bool short * __c)11123 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
11124                                             vector bool short *__c) {
11125   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11126 }
11127 
vec_stl(vector pixel __a,int __b,short * __c)11128 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
11129                                             short *__c) {
11130   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11131 }
11132 
vec_stl(vector pixel __a,int __b,unsigned short * __c)11133 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
11134                                             unsigned short *__c) {
11135   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11136 }
11137 
vec_stl(vector pixel __a,int __b,vector pixel * __c)11138 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
11139                                             vector pixel *__c) {
11140   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11141 }
11142 
vec_stl(vector int __a,int __b,vector int * __c)11143 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b,
11144                                             vector int *__c) {
11145   __builtin_altivec_stvxl(__a, __b, __c);
11146 }
11147 
vec_stl(vector int __a,int __b,int * __c)11148 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) {
11149   __builtin_altivec_stvxl(__a, __b, __c);
11150 }
11151 
vec_stl(vector unsigned int __a,int __b,vector unsigned int * __c)11152 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
11153                                             vector unsigned int *__c) {
11154   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11155 }
11156 
vec_stl(vector unsigned int __a,int __b,unsigned int * __c)11157 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
11158                                             unsigned int *__c) {
11159   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11160 }
11161 
vec_stl(vector bool int __a,int __b,int * __c)11162 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
11163                                             int *__c) {
11164   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11165 }
11166 
vec_stl(vector bool int __a,int __b,unsigned int * __c)11167 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
11168                                             unsigned int *__c) {
11169   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11170 }
11171 
vec_stl(vector bool int __a,int __b,vector bool int * __c)11172 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
11173                                             vector bool int *__c) {
11174   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11175 }
11176 
vec_stl(vector float __a,int __b,vector float * __c)11177 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
11178                                             vector float *__c) {
11179   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11180 }
11181 
vec_stl(vector float __a,int __b,float * __c)11182 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
11183                                             float *__c) {
11184   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11185 }
11186 
11187 /* vec_stvxl */
11188 
vec_stvxl(vector signed char __a,int __b,vector signed char * __c)11189 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
11190                                               vector signed char *__c) {
11191   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11192 }
11193 
vec_stvxl(vector signed char __a,int __b,signed char * __c)11194 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
11195                                               signed char *__c) {
11196   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11197 }
11198 
vec_stvxl(vector unsigned char __a,int __b,vector unsigned char * __c)11199 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
11200                                               vector unsigned char *__c) {
11201   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11202 }
11203 
vec_stvxl(vector unsigned char __a,int __b,unsigned char * __c)11204 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
11205                                               unsigned char *__c) {
11206   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11207 }
11208 
vec_stvxl(vector bool char __a,int __b,signed char * __c)11209 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
11210                                               signed char *__c) {
11211   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11212 }
11213 
vec_stvxl(vector bool char __a,int __b,unsigned char * __c)11214 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
11215                                               unsigned char *__c) {
11216   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11217 }
11218 
vec_stvxl(vector bool char __a,int __b,vector bool char * __c)11219 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
11220                                               vector bool char *__c) {
11221   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11222 }
11223 
vec_stvxl(vector short __a,int __b,vector short * __c)11224 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
11225                                               vector short *__c) {
11226   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11227 }
11228 
vec_stvxl(vector short __a,int __b,short * __c)11229 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
11230                                               short *__c) {
11231   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11232 }
11233 
vec_stvxl(vector unsigned short __a,int __b,vector unsigned short * __c)11234 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
11235                                               int __b,
11236                                               vector unsigned short *__c) {
11237   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11238 }
11239 
vec_stvxl(vector unsigned short __a,int __b,unsigned short * __c)11240 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
11241                                               int __b, unsigned short *__c) {
11242   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11243 }
11244 
vec_stvxl(vector bool short __a,int __b,short * __c)11245 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
11246                                               short *__c) {
11247   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11248 }
11249 
vec_stvxl(vector bool short __a,int __b,unsigned short * __c)11250 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
11251                                               unsigned short *__c) {
11252   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11253 }
11254 
vec_stvxl(vector bool short __a,int __b,vector bool short * __c)11255 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
11256                                               vector bool short *__c) {
11257   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11258 }
11259 
vec_stvxl(vector pixel __a,int __b,short * __c)11260 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
11261                                               short *__c) {
11262   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11263 }
11264 
vec_stvxl(vector pixel __a,int __b,unsigned short * __c)11265 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
11266                                               unsigned short *__c) {
11267   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11268 }
11269 
vec_stvxl(vector pixel __a,int __b,vector pixel * __c)11270 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
11271                                               vector pixel *__c) {
11272   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11273 }
11274 
vec_stvxl(vector int __a,int __b,vector int * __c)11275 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
11276                                               vector int *__c) {
11277   __builtin_altivec_stvxl(__a, __b, __c);
11278 }
11279 
vec_stvxl(vector int __a,int __b,int * __c)11280 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
11281                                               int *__c) {
11282   __builtin_altivec_stvxl(__a, __b, __c);
11283 }
11284 
vec_stvxl(vector unsigned int __a,int __b,vector unsigned int * __c)11285 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
11286                                               vector unsigned int *__c) {
11287   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11288 }
11289 
vec_stvxl(vector unsigned int __a,int __b,unsigned int * __c)11290 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
11291                                               unsigned int *__c) {
11292   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11293 }
11294 
vec_stvxl(vector bool int __a,int __b,int * __c)11295 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
11296                                               int *__c) {
11297   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11298 }
11299 
vec_stvxl(vector bool int __a,int __b,unsigned int * __c)11300 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
11301                                               unsigned int *__c) {
11302   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11303 }
11304 
vec_stvxl(vector bool int __a,int __b,vector bool int * __c)11305 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
11306                                               vector bool int *__c) {
11307   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11308 }
11309 
vec_stvxl(vector float __a,int __b,vector float * __c)11310 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
11311                                               vector float *__c) {
11312   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11313 }
11314 
vec_stvxl(vector float __a,int __b,float * __c)11315 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
11316                                               float *__c) {
11317   __builtin_altivec_stvxl((vector int)__a, __b, __c);
11318 }
11319 
11320 /* vec_sub */
11321 
11322 static __inline__ vector signed char __ATTRS_o_ai
vec_sub(vector signed char __a,vector signed char __b)11323 vec_sub(vector signed char __a, vector signed char __b) {
11324   return __a - __b;
11325 }
11326 
11327 static __inline__ vector signed char __ATTRS_o_ai
vec_sub(vector bool char __a,vector signed char __b)11328 vec_sub(vector bool char __a, vector signed char __b) {
11329   return (vector signed char)__a - __b;
11330 }
11331 
11332 static __inline__ vector signed char __ATTRS_o_ai
vec_sub(vector signed char __a,vector bool char __b)11333 vec_sub(vector signed char __a, vector bool char __b) {
11334   return __a - (vector signed char)__b;
11335 }
11336 
11337 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sub(vector unsigned char __a,vector unsigned char __b)11338 vec_sub(vector unsigned char __a, vector unsigned char __b) {
11339   return __a - __b;
11340 }
11341 
11342 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sub(vector bool char __a,vector unsigned char __b)11343 vec_sub(vector bool char __a, vector unsigned char __b) {
11344   return (vector unsigned char)__a - __b;
11345 }
11346 
11347 static __inline__ vector unsigned char __ATTRS_o_ai
vec_sub(vector unsigned char __a,vector bool char __b)11348 vec_sub(vector unsigned char __a, vector bool char __b) {
11349   return __a - (vector unsigned char)__b;
11350 }
11351 
vec_sub(vector short __a,vector short __b)11352 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
11353                                                     vector short __b) {
11354   return __a - __b;
11355 }
11356 
vec_sub(vector bool short __a,vector short __b)11357 static __inline__ vector short __ATTRS_o_ai vec_sub(vector bool short __a,
11358                                                     vector short __b) {
11359   return (vector short)__a - __b;
11360 }
11361 
vec_sub(vector short __a,vector bool short __b)11362 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
11363                                                     vector bool short __b) {
11364   return __a - (vector short)__b;
11365 }
11366 
11367 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sub(vector unsigned short __a,vector unsigned short __b)11368 vec_sub(vector unsigned short __a, vector unsigned short __b) {
11369   return __a - __b;
11370 }
11371 
11372 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sub(vector bool short __a,vector unsigned short __b)11373 vec_sub(vector bool short __a, vector unsigned short __b) {
11374   return (vector unsigned short)__a - __b;
11375 }
11376 
11377 static __inline__ vector unsigned short __ATTRS_o_ai
vec_sub(vector unsigned short __a,vector bool short __b)11378 vec_sub(vector unsigned short __a, vector bool short __b) {
11379   return __a - (vector unsigned short)__b;
11380 }
11381 
vec_sub(vector int __a,vector int __b)11382 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
11383                                                   vector int __b) {
11384   return __a - __b;
11385 }
11386 
vec_sub(vector bool int __a,vector int __b)11387 static __inline__ vector int __ATTRS_o_ai vec_sub(vector bool int __a,
11388                                                   vector int __b) {
11389   return (vector int)__a - __b;
11390 }
11391 
vec_sub(vector int __a,vector bool int __b)11392 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
11393                                                   vector bool int __b) {
11394   return __a - (vector int)__b;
11395 }
11396 
11397 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sub(vector unsigned int __a,vector unsigned int __b)11398 vec_sub(vector unsigned int __a, vector unsigned int __b) {
11399   return __a - __b;
11400 }
11401 
11402 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sub(vector bool int __a,vector unsigned int __b)11403 vec_sub(vector bool int __a, vector unsigned int __b) {
11404   return (vector unsigned int)__a - __b;
11405 }
11406 
11407 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sub(vector unsigned int __a,vector bool int __b)11408 vec_sub(vector unsigned int __a, vector bool int __b) {
11409   return __a - (vector unsigned int)__b;
11410 }
11411 
11412 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11413 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_sub(vector signed __int128 __a,vector signed __int128 __b)11414 vec_sub(vector signed __int128 __a, vector signed __int128 __b) {
11415   return __a - __b;
11416 }
11417 
11418 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_sub(vector unsigned __int128 __a,vector unsigned __int128 __b)11419 vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11420   return __a - __b;
11421 }
11422 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11423 
11424 #ifdef __VSX__
11425 static __inline__ vector signed long long __ATTRS_o_ai
vec_sub(vector signed long long __a,vector signed long long __b)11426 vec_sub(vector signed long long __a, vector signed long long __b) {
11427   return __a - __b;
11428 }
11429 
11430 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sub(vector unsigned long long __a,vector unsigned long long __b)11431 vec_sub(vector unsigned long long __a, vector unsigned long long __b) {
11432   return __a - __b;
11433 }
11434 
vec_sub(vector double __a,vector double __b)11435 static __inline__ vector double __ATTRS_o_ai vec_sub(vector double __a,
11436                                                      vector double __b) {
11437   return __a - __b;
11438 }
11439 #endif
11440 
vec_sub(vector float __a,vector float __b)11441 static __inline__ vector float __ATTRS_o_ai vec_sub(vector float __a,
11442                                                     vector float __b) {
11443   return __a - __b;
11444 }
11445 
11446 /* vec_vsububm */
11447 
11448 #define __builtin_altivec_vsububm vec_vsububm
11449 
11450 static __inline__ vector signed char __ATTRS_o_ai
vec_vsububm(vector signed char __a,vector signed char __b)11451 vec_vsububm(vector signed char __a, vector signed char __b) {
11452   return __a - __b;
11453 }
11454 
11455 static __inline__ vector signed char __ATTRS_o_ai
vec_vsububm(vector bool char __a,vector signed char __b)11456 vec_vsububm(vector bool char __a, vector signed char __b) {
11457   return (vector signed char)__a - __b;
11458 }
11459 
11460 static __inline__ vector signed char __ATTRS_o_ai
vec_vsububm(vector signed char __a,vector bool char __b)11461 vec_vsububm(vector signed char __a, vector bool char __b) {
11462   return __a - (vector signed char)__b;
11463 }
11464 
11465 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububm(vector unsigned char __a,vector unsigned char __b)11466 vec_vsububm(vector unsigned char __a, vector unsigned char __b) {
11467   return __a - __b;
11468 }
11469 
11470 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububm(vector bool char __a,vector unsigned char __b)11471 vec_vsububm(vector bool char __a, vector unsigned char __b) {
11472   return (vector unsigned char)__a - __b;
11473 }
11474 
11475 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububm(vector unsigned char __a,vector bool char __b)11476 vec_vsububm(vector unsigned char __a, vector bool char __b) {
11477   return __a - (vector unsigned char)__b;
11478 }
11479 
11480 /* vec_vsubuhm */
11481 
11482 #define __builtin_altivec_vsubuhm vec_vsubuhm
11483 
vec_vsubuhm(vector short __a,vector short __b)11484 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
11485                                                         vector short __b) {
11486   return __a - __b;
11487 }
11488 
vec_vsubuhm(vector bool short __a,vector short __b)11489 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a,
11490                                                         vector short __b) {
11491   return (vector short)__a - __b;
11492 }
11493 
vec_vsubuhm(vector short __a,vector bool short __b)11494 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
11495                                                         vector bool short __b) {
11496   return __a - (vector short)__b;
11497 }
11498 
11499 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhm(vector unsigned short __a,vector unsigned short __b)11500 vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) {
11501   return __a - __b;
11502 }
11503 
11504 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhm(vector bool short __a,vector unsigned short __b)11505 vec_vsubuhm(vector bool short __a, vector unsigned short __b) {
11506   return (vector unsigned short)__a - __b;
11507 }
11508 
11509 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhm(vector unsigned short __a,vector bool short __b)11510 vec_vsubuhm(vector unsigned short __a, vector bool short __b) {
11511   return __a - (vector unsigned short)__b;
11512 }
11513 
11514 /* vec_vsubuwm */
11515 
11516 #define __builtin_altivec_vsubuwm vec_vsubuwm
11517 
vec_vsubuwm(vector int __a,vector int __b)11518 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
11519                                                       vector int __b) {
11520   return __a - __b;
11521 }
11522 
vec_vsubuwm(vector bool int __a,vector int __b)11523 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
11524                                                       vector int __b) {
11525   return (vector int)__a - __b;
11526 }
11527 
vec_vsubuwm(vector int __a,vector bool int __b)11528 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
11529                                                       vector bool int __b) {
11530   return __a - (vector int)__b;
11531 }
11532 
11533 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuwm(vector unsigned int __a,vector unsigned int __b)11534 vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) {
11535   return __a - __b;
11536 }
11537 
11538 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuwm(vector bool int __a,vector unsigned int __b)11539 vec_vsubuwm(vector bool int __a, vector unsigned int __b) {
11540   return (vector unsigned int)__a - __b;
11541 }
11542 
11543 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuwm(vector unsigned int __a,vector bool int __b)11544 vec_vsubuwm(vector unsigned int __a, vector bool int __b) {
11545   return __a - (vector unsigned int)__b;
11546 }
11547 
11548 /* vec_vsubfp */
11549 
11550 #define __builtin_altivec_vsubfp vec_vsubfp
11551 
11552 static __inline__ vector float __attribute__((__always_inline__))
vec_vsubfp(vector float __a,vector float __b)11553 vec_vsubfp(vector float __a, vector float __b) {
11554   return __a - __b;
11555 }
11556 
11557 /* vec_subc */
11558 
11559 static __inline__ vector signed int __ATTRS_o_ai
vec_subc(vector signed int __a,vector signed int __b)11560 vec_subc(vector signed int __a, vector signed int __b) {
11561   return (vector signed int)__builtin_altivec_vsubcuw((vector unsigned int)__a,
11562                                                       (vector unsigned int) __b);
11563 }
11564 
11565 static __inline__ vector unsigned int __ATTRS_o_ai
vec_subc(vector unsigned int __a,vector unsigned int __b)11566 vec_subc(vector unsigned int __a, vector unsigned int __b) {
11567   return __builtin_altivec_vsubcuw(__a, __b);
11568 }
11569 
11570 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11571 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_subc(vector unsigned __int128 __a,vector unsigned __int128 __b)11572 vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11573   return __builtin_altivec_vsubcuq(__a, __b);
11574 }
11575 
11576 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_subc(vector signed __int128 __a,vector signed __int128 __b)11577 vec_subc(vector signed __int128 __a, vector signed __int128 __b) {
11578   return __builtin_altivec_vsubcuq(__a, __b);
11579 }
11580 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11581 
11582 /* vec_vsubcuw */
11583 
11584 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vsubcuw(vector unsigned int __a,vector unsigned int __b)11585 vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) {
11586   return __builtin_altivec_vsubcuw(__a, __b);
11587 }
11588 
11589 /* vec_subs */
11590 
11591 static __inline__ vector signed char __ATTRS_o_ai
vec_subs(vector signed char __a,vector signed char __b)11592 vec_subs(vector signed char __a, vector signed char __b) {
11593   return __builtin_altivec_vsubsbs(__a, __b);
11594 }
11595 
11596 static __inline__ vector signed char __ATTRS_o_ai
vec_subs(vector bool char __a,vector signed char __b)11597 vec_subs(vector bool char __a, vector signed char __b) {
11598   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
11599 }
11600 
11601 static __inline__ vector signed char __ATTRS_o_ai
vec_subs(vector signed char __a,vector bool char __b)11602 vec_subs(vector signed char __a, vector bool char __b) {
11603   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
11604 }
11605 
11606 static __inline__ vector unsigned char __ATTRS_o_ai
vec_subs(vector unsigned char __a,vector unsigned char __b)11607 vec_subs(vector unsigned char __a, vector unsigned char __b) {
11608   return __builtin_altivec_vsububs(__a, __b);
11609 }
11610 
11611 static __inline__ vector unsigned char __ATTRS_o_ai
vec_subs(vector bool char __a,vector unsigned char __b)11612 vec_subs(vector bool char __a, vector unsigned char __b) {
11613   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
11614 }
11615 
11616 static __inline__ vector unsigned char __ATTRS_o_ai
vec_subs(vector unsigned char __a,vector bool char __b)11617 vec_subs(vector unsigned char __a, vector bool char __b) {
11618   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
11619 }
11620 
vec_subs(vector short __a,vector short __b)11621 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
11622                                                      vector short __b) {
11623   return __builtin_altivec_vsubshs(__a, __b);
11624 }
11625 
vec_subs(vector bool short __a,vector short __b)11626 static __inline__ vector short __ATTRS_o_ai vec_subs(vector bool short __a,
11627                                                      vector short __b) {
11628   return __builtin_altivec_vsubshs((vector short)__a, __b);
11629 }
11630 
vec_subs(vector short __a,vector bool short __b)11631 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
11632                                                      vector bool short __b) {
11633   return __builtin_altivec_vsubshs(__a, (vector short)__b);
11634 }
11635 
11636 static __inline__ vector unsigned short __ATTRS_o_ai
vec_subs(vector unsigned short __a,vector unsigned short __b)11637 vec_subs(vector unsigned short __a, vector unsigned short __b) {
11638   return __builtin_altivec_vsubuhs(__a, __b);
11639 }
11640 
11641 static __inline__ vector unsigned short __ATTRS_o_ai
vec_subs(vector bool short __a,vector unsigned short __b)11642 vec_subs(vector bool short __a, vector unsigned short __b) {
11643   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
11644 }
11645 
11646 static __inline__ vector unsigned short __ATTRS_o_ai
vec_subs(vector unsigned short __a,vector bool short __b)11647 vec_subs(vector unsigned short __a, vector bool short __b) {
11648   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
11649 }
11650 
vec_subs(vector int __a,vector int __b)11651 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
11652                                                    vector int __b) {
11653   return __builtin_altivec_vsubsws(__a, __b);
11654 }
11655 
vec_subs(vector bool int __a,vector int __b)11656 static __inline__ vector int __ATTRS_o_ai vec_subs(vector bool int __a,
11657                                                    vector int __b) {
11658   return __builtin_altivec_vsubsws((vector int)__a, __b);
11659 }
11660 
vec_subs(vector int __a,vector bool int __b)11661 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
11662                                                    vector bool int __b) {
11663   return __builtin_altivec_vsubsws(__a, (vector int)__b);
11664 }
11665 
11666 static __inline__ vector unsigned int __ATTRS_o_ai
vec_subs(vector unsigned int __a,vector unsigned int __b)11667 vec_subs(vector unsigned int __a, vector unsigned int __b) {
11668   return __builtin_altivec_vsubuws(__a, __b);
11669 }
11670 
11671 static __inline__ vector unsigned int __ATTRS_o_ai
vec_subs(vector bool int __a,vector unsigned int __b)11672 vec_subs(vector bool int __a, vector unsigned int __b) {
11673   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
11674 }
11675 
11676 static __inline__ vector unsigned int __ATTRS_o_ai
vec_subs(vector unsigned int __a,vector bool int __b)11677 vec_subs(vector unsigned int __a, vector bool int __b) {
11678   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
11679 }
11680 
11681 /* vec_vsubsbs */
11682 
11683 static __inline__ vector signed char __ATTRS_o_ai
vec_vsubsbs(vector signed char __a,vector signed char __b)11684 vec_vsubsbs(vector signed char __a, vector signed char __b) {
11685   return __builtin_altivec_vsubsbs(__a, __b);
11686 }
11687 
11688 static __inline__ vector signed char __ATTRS_o_ai
vec_vsubsbs(vector bool char __a,vector signed char __b)11689 vec_vsubsbs(vector bool char __a, vector signed char __b) {
11690   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
11691 }
11692 
11693 static __inline__ vector signed char __ATTRS_o_ai
vec_vsubsbs(vector signed char __a,vector bool char __b)11694 vec_vsubsbs(vector signed char __a, vector bool char __b) {
11695   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
11696 }
11697 
11698 /* vec_vsububs */
11699 
11700 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububs(vector unsigned char __a,vector unsigned char __b)11701 vec_vsububs(vector unsigned char __a, vector unsigned char __b) {
11702   return __builtin_altivec_vsububs(__a, __b);
11703 }
11704 
11705 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububs(vector bool char __a,vector unsigned char __b)11706 vec_vsububs(vector bool char __a, vector unsigned char __b) {
11707   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
11708 }
11709 
11710 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububs(vector unsigned char __a,vector bool char __b)11711 vec_vsububs(vector unsigned char __a, vector bool char __b) {
11712   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
11713 }
11714 
11715 /* vec_vsubshs */
11716 
vec_vsubshs(vector short __a,vector short __b)11717 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
11718                                                         vector short __b) {
11719   return __builtin_altivec_vsubshs(__a, __b);
11720 }
11721 
vec_vsubshs(vector bool short __a,vector short __b)11722 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a,
11723                                                         vector short __b) {
11724   return __builtin_altivec_vsubshs((vector short)__a, __b);
11725 }
11726 
vec_vsubshs(vector short __a,vector bool short __b)11727 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
11728                                                         vector bool short __b) {
11729   return __builtin_altivec_vsubshs(__a, (vector short)__b);
11730 }
11731 
11732 /* vec_vsubuhs */
11733 
11734 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhs(vector unsigned short __a,vector unsigned short __b)11735 vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) {
11736   return __builtin_altivec_vsubuhs(__a, __b);
11737 }
11738 
11739 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhs(vector bool short __a,vector unsigned short __b)11740 vec_vsubuhs(vector bool short __a, vector unsigned short __b) {
11741   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
11742 }
11743 
11744 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhs(vector unsigned short __a,vector bool short __b)11745 vec_vsubuhs(vector unsigned short __a, vector bool short __b) {
11746   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
11747 }
11748 
11749 /* vec_vsubsws */
11750 
vec_vsubsws(vector int __a,vector int __b)11751 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
11752                                                       vector int __b) {
11753   return __builtin_altivec_vsubsws(__a, __b);
11754 }
11755 
vec_vsubsws(vector bool int __a,vector int __b)11756 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a,
11757                                                       vector int __b) {
11758   return __builtin_altivec_vsubsws((vector int)__a, __b);
11759 }
11760 
vec_vsubsws(vector int __a,vector bool int __b)11761 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
11762                                                       vector bool int __b) {
11763   return __builtin_altivec_vsubsws(__a, (vector int)__b);
11764 }
11765 
11766 /* vec_vsubuws */
11767 
11768 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuws(vector unsigned int __a,vector unsigned int __b)11769 vec_vsubuws(vector unsigned int __a, vector unsigned int __b) {
11770   return __builtin_altivec_vsubuws(__a, __b);
11771 }
11772 
11773 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuws(vector bool int __a,vector unsigned int __b)11774 vec_vsubuws(vector bool int __a, vector unsigned int __b) {
11775   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
11776 }
11777 
11778 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuws(vector unsigned int __a,vector bool int __b)11779 vec_vsubuws(vector unsigned int __a, vector bool int __b) {
11780   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
11781 }
11782 
11783 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11784 /* vec_vsubuqm */
11785 
11786 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubuqm(vector signed __int128 __a,vector signed __int128 __b)11787 vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) {
11788   return __a - __b;
11789 }
11790 
11791 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubuqm(vector unsigned __int128 __a,vector unsigned __int128 __b)11792 vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11793   return __a - __b;
11794 }
11795 
11796 /* vec_vsubeuqm */
11797 
11798 
11799 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubeuqm(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)11800 vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b,
11801              vector signed __int128 __c) {
11802   return __builtin_altivec_vsubeuqm(__a, __b, __c);
11803 }
11804 
11805 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubeuqm(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)11806 vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
11807              vector unsigned __int128 __c) {
11808   return __builtin_altivec_vsubeuqm(__a, __b, __c);
11809 }
11810 
11811 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_sube(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)11812 vec_sube(vector signed __int128 __a, vector signed __int128 __b,
11813              vector signed __int128 __c) {
11814   return __builtin_altivec_vsubeuqm(__a, __b, __c);
11815 }
11816 
11817 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_sube(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)11818 vec_sube(vector unsigned __int128 __a, vector unsigned __int128 __b,
11819              vector unsigned __int128 __c) {
11820   return __builtin_altivec_vsubeuqm(__a, __b, __c);
11821 }
11822 
11823 /* vec_vsubcuq */
11824 
11825 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubcuq(vector signed __int128 __a,vector signed __int128 __b)11826 vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) {
11827   return __builtin_altivec_vsubcuq(__a, __b);
11828 }
11829 
11830 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubcuq(vector unsigned __int128 __a,vector unsigned __int128 __b)11831 vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11832   return __builtin_altivec_vsubcuq(__a, __b);
11833 }
11834 
11835 /* vec_vsubecuq */
11836 
11837 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubecuq(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)11838 vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b,
11839              vector signed __int128 __c) {
11840   return __builtin_altivec_vsubecuq(__a, __b, __c);
11841 }
11842 
11843 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubecuq(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)11844 vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
11845              vector unsigned __int128 __c) {
11846   return __builtin_altivec_vsubecuq(__a, __b, __c);
11847 }
11848 
11849 static __inline__ vector signed int __ATTRS_o_ai
vec_subec(vector signed int __a,vector signed int __b,vector signed int __c)11850 vec_subec(vector signed int __a, vector signed int __b,
11851              vector signed int __c) {
11852   return vec_addec(__a, ~__b, __c);
11853 }
11854 
11855 static __inline__ vector unsigned int __ATTRS_o_ai
vec_subec(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)11856 vec_subec(vector unsigned int __a, vector unsigned int __b,
11857              vector unsigned int __c) {
11858   return vec_addec(__a, ~__b, __c);
11859 }
11860 
11861 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_subec(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)11862 vec_subec(vector signed __int128 __a, vector signed __int128 __b,
11863              vector signed __int128 __c) {
11864   return __builtin_altivec_vsubecuq(__a, __b, __c);
11865 }
11866 
11867 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_subec(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)11868 vec_subec(vector unsigned __int128 __a, vector unsigned __int128 __b,
11869              vector unsigned __int128 __c) {
11870   return __builtin_altivec_vsubecuq(__a, __b, __c);
11871 }
11872 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11873 
11874 static __inline__ vector signed int __ATTRS_o_ai
vec_sube(vector signed int __a,vector signed int __b,vector signed int __c)11875 vec_sube(vector signed int __a, vector signed int __b,
11876          vector signed int __c) {
11877   vector signed int __mask = {1, 1, 1, 1};
11878   vector signed int __carry = __c & __mask;
11879   return vec_adde(__a, ~__b, __carry);
11880 }
11881 
11882 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sube(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)11883 vec_sube(vector unsigned int __a, vector unsigned int __b,
11884          vector unsigned int __c) {
11885   vector unsigned int __mask = {1, 1, 1, 1};
11886   vector unsigned int __carry = __c & __mask;
11887   return vec_adde(__a, ~__b, __carry);
11888 }
11889 /* vec_sum4s */
11890 
vec_sum4s(vector signed char __a,vector int __b)11891 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed char __a,
11892                                                     vector int __b) {
11893   return __builtin_altivec_vsum4sbs(__a, __b);
11894 }
11895 
11896 static __inline__ vector unsigned int __ATTRS_o_ai
vec_sum4s(vector unsigned char __a,vector unsigned int __b)11897 vec_sum4s(vector unsigned char __a, vector unsigned int __b) {
11898   return __builtin_altivec_vsum4ubs(__a, __b);
11899 }
11900 
vec_sum4s(vector signed short __a,vector int __b)11901 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed short __a,
11902                                                     vector int __b) {
11903   return __builtin_altivec_vsum4shs(__a, __b);
11904 }
11905 
11906 /* vec_vsum4sbs */
11907 
11908 static __inline__ vector int __attribute__((__always_inline__))
vec_vsum4sbs(vector signed char __a,vector int __b)11909 vec_vsum4sbs(vector signed char __a, vector int __b) {
11910   return __builtin_altivec_vsum4sbs(__a, __b);
11911 }
11912 
11913 /* vec_vsum4ubs */
11914 
11915 static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vsum4ubs(vector unsigned char __a,vector unsigned int __b)11916 vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) {
11917   return __builtin_altivec_vsum4ubs(__a, __b);
11918 }
11919 
11920 /* vec_vsum4shs */
11921 
11922 static __inline__ vector int __attribute__((__always_inline__))
vec_vsum4shs(vector signed short __a,vector int __b)11923 vec_vsum4shs(vector signed short __a, vector int __b) {
11924   return __builtin_altivec_vsum4shs(__a, __b);
11925 }
11926 
11927 /* vec_sum2s */
11928 
11929 /* The vsum2sws instruction has a big-endian bias, so that the second
11930    input vector and the result always reference big-endian elements
11931    1 and 3 (little-endian element 0 and 2).  For ease of porting the
11932    programmer wants elements 1 and 3 in both cases, so for little
11933    endian we must perform some permutes.  */
11934 
11935 static __inline__ vector signed int __attribute__((__always_inline__))
vec_sum2s(vector int __a,vector int __b)11936 vec_sum2s(vector int __a, vector int __b) {
11937 #ifdef __LITTLE_ENDIAN__
11938   vector int __c = (vector signed int)vec_perm(
11939       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11940                                        8, 9, 10, 11));
11941   __c = __builtin_altivec_vsum2sws(__a, __c);
11942   return (vector signed int)vec_perm(
11943       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11944                                        8, 9, 10, 11));
11945 #else
11946   return __builtin_altivec_vsum2sws(__a, __b);
11947 #endif
11948 }
11949 
11950 /* vec_vsum2sws */
11951 
11952 static __inline__ vector signed int __attribute__((__always_inline__))
vec_vsum2sws(vector int __a,vector int __b)11953 vec_vsum2sws(vector int __a, vector int __b) {
11954 #ifdef __LITTLE_ENDIAN__
11955   vector int __c = (vector signed int)vec_perm(
11956       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11957                                        8, 9, 10, 11));
11958   __c = __builtin_altivec_vsum2sws(__a, __c);
11959   return (vector signed int)vec_perm(
11960       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11961                                        8, 9, 10, 11));
11962 #else
11963   return __builtin_altivec_vsum2sws(__a, __b);
11964 #endif
11965 }
11966 
11967 /* vec_sums */
11968 
11969 /* The vsumsws instruction has a big-endian bias, so that the second
11970    input vector and the result always reference big-endian element 3
11971    (little-endian element 0).  For ease of porting the programmer
11972    wants element 3 in both cases, so for little endian we must perform
11973    some permutes.  */
11974 
11975 static __inline__ vector signed int __attribute__((__always_inline__))
vec_sums(vector signed int __a,vector signed int __b)11976 vec_sums(vector signed int __a, vector signed int __b) {
11977 #ifdef __LITTLE_ENDIAN__
11978   __b = (vector signed int)vec_splat(__b, 3);
11979   __b = __builtin_altivec_vsumsws(__a, __b);
11980   return (vector signed int)(0, 0, 0, __b[0]);
11981 #else
11982   return __builtin_altivec_vsumsws(__a, __b);
11983 #endif
11984 }
11985 
11986 /* vec_vsumsws */
11987 
11988 static __inline__ vector signed int __attribute__((__always_inline__))
vec_vsumsws(vector signed int __a,vector signed int __b)11989 vec_vsumsws(vector signed int __a, vector signed int __b) {
11990 #ifdef __LITTLE_ENDIAN__
11991   __b = (vector signed int)vec_splat(__b, 3);
11992   __b = __builtin_altivec_vsumsws(__a, __b);
11993   return (vector signed int)(0, 0, 0, __b[0]);
11994 #else
11995   return __builtin_altivec_vsumsws(__a, __b);
11996 #endif
11997 }
11998 
11999 /* vec_trunc */
12000 
vec_trunc(vector float __a)12001 static __inline__ vector float __ATTRS_o_ai vec_trunc(vector float __a) {
12002 #ifdef __VSX__
12003   return __builtin_vsx_xvrspiz(__a);
12004 #else
12005   return __builtin_altivec_vrfiz(__a);
12006 #endif
12007 }
12008 
12009 #ifdef __VSX__
vec_trunc(vector double __a)12010 static __inline__ vector double __ATTRS_o_ai vec_trunc(vector double __a) {
12011   return __builtin_vsx_xvrdpiz(__a);
12012 }
12013 #endif
12014 
12015 /* vec_vrfiz */
12016 
12017 static __inline__ vector float __attribute__((__always_inline__))
vec_vrfiz(vector float __a)12018 vec_vrfiz(vector float __a) {
12019   return __builtin_altivec_vrfiz(__a);
12020 }
12021 
12022 /* vec_unpackh */
12023 
12024 /* The vector unpack instructions all have a big-endian bias, so for
12025    little endian we must reverse the meanings of "high" and "low."  */
12026 
12027 static __inline__ vector short __ATTRS_o_ai
vec_unpackh(vector signed char __a)12028 vec_unpackh(vector signed char __a) {
12029 #ifdef __LITTLE_ENDIAN__
12030   return __builtin_altivec_vupklsb((vector char)__a);
12031 #else
12032   return __builtin_altivec_vupkhsb((vector char)__a);
12033 #endif
12034 }
12035 
12036 static __inline__ vector bool short __ATTRS_o_ai
vec_unpackh(vector bool char __a)12037 vec_unpackh(vector bool char __a) {
12038 #ifdef __LITTLE_ENDIAN__
12039   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
12040 #else
12041   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
12042 #endif
12043 }
12044 
vec_unpackh(vector short __a)12045 static __inline__ vector int __ATTRS_o_ai vec_unpackh(vector short __a) {
12046 #ifdef __LITTLE_ENDIAN__
12047   return __builtin_altivec_vupklsh(__a);
12048 #else
12049   return __builtin_altivec_vupkhsh(__a);
12050 #endif
12051 }
12052 
12053 static __inline__ vector bool int __ATTRS_o_ai
vec_unpackh(vector bool short __a)12054 vec_unpackh(vector bool short __a) {
12055 #ifdef __LITTLE_ENDIAN__
12056   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
12057 #else
12058   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
12059 #endif
12060 }
12061 
12062 static __inline__ vector unsigned int __ATTRS_o_ai
vec_unpackh(vector pixel __a)12063 vec_unpackh(vector pixel __a) {
12064 #ifdef __LITTLE_ENDIAN__
12065   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
12066 #else
12067   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
12068 #endif
12069 }
12070 
12071 #ifdef __POWER8_VECTOR__
vec_unpackh(vector int __a)12072 static __inline__ vector long long __ATTRS_o_ai vec_unpackh(vector int __a) {
12073 #ifdef __LITTLE_ENDIAN__
12074   return __builtin_altivec_vupklsw(__a);
12075 #else
12076   return __builtin_altivec_vupkhsw(__a);
12077 #endif
12078 }
12079 
12080 static __inline__ vector bool long long __ATTRS_o_ai
vec_unpackh(vector bool int __a)12081 vec_unpackh(vector bool int __a) {
12082 #ifdef __LITTLE_ENDIAN__
12083   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
12084 #else
12085   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
12086 #endif
12087 }
12088 
12089 static __inline__ vector double __ATTRS_o_ai
vec_unpackh(vector float __a)12090 vec_unpackh(vector float __a) {
12091   return (vector double)(__a[0], __a[1]);
12092 }
12093 #endif
12094 
12095 /* vec_vupkhsb */
12096 
12097 static __inline__ vector short __ATTRS_o_ai
vec_vupkhsb(vector signed char __a)12098 vec_vupkhsb(vector signed char __a) {
12099 #ifdef __LITTLE_ENDIAN__
12100   return __builtin_altivec_vupklsb((vector char)__a);
12101 #else
12102   return __builtin_altivec_vupkhsb((vector char)__a);
12103 #endif
12104 }
12105 
12106 static __inline__ vector bool short __ATTRS_o_ai
vec_vupkhsb(vector bool char __a)12107 vec_vupkhsb(vector bool char __a) {
12108 #ifdef __LITTLE_ENDIAN__
12109   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
12110 #else
12111   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
12112 #endif
12113 }
12114 
12115 /* vec_vupkhsh */
12116 
vec_vupkhsh(vector short __a)12117 static __inline__ vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) {
12118 #ifdef __LITTLE_ENDIAN__
12119   return __builtin_altivec_vupklsh(__a);
12120 #else
12121   return __builtin_altivec_vupkhsh(__a);
12122 #endif
12123 }
12124 
12125 static __inline__ vector bool int __ATTRS_o_ai
vec_vupkhsh(vector bool short __a)12126 vec_vupkhsh(vector bool short __a) {
12127 #ifdef __LITTLE_ENDIAN__
12128   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
12129 #else
12130   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
12131 #endif
12132 }
12133 
12134 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vupkhsh(vector pixel __a)12135 vec_vupkhsh(vector pixel __a) {
12136 #ifdef __LITTLE_ENDIAN__
12137   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
12138 #else
12139   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
12140 #endif
12141 }
12142 
12143 /* vec_vupkhsw */
12144 
12145 #ifdef __POWER8_VECTOR__
vec_vupkhsw(vector int __a)12146 static __inline__ vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) {
12147 #ifdef __LITTLE_ENDIAN__
12148   return __builtin_altivec_vupklsw(__a);
12149 #else
12150   return __builtin_altivec_vupkhsw(__a);
12151 #endif
12152 }
12153 
12154 static __inline__ vector bool long long __ATTRS_o_ai
vec_vupkhsw(vector bool int __a)12155 vec_vupkhsw(vector bool int __a) {
12156 #ifdef __LITTLE_ENDIAN__
12157   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
12158 #else
12159   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
12160 #endif
12161 }
12162 #endif
12163 
12164 /* vec_unpackl */
12165 
12166 static __inline__ vector short __ATTRS_o_ai
vec_unpackl(vector signed char __a)12167 vec_unpackl(vector signed char __a) {
12168 #ifdef __LITTLE_ENDIAN__
12169   return __builtin_altivec_vupkhsb((vector char)__a);
12170 #else
12171   return __builtin_altivec_vupklsb((vector char)__a);
12172 #endif
12173 }
12174 
12175 static __inline__ vector bool short __ATTRS_o_ai
vec_unpackl(vector bool char __a)12176 vec_unpackl(vector bool char __a) {
12177 #ifdef __LITTLE_ENDIAN__
12178   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
12179 #else
12180   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
12181 #endif
12182 }
12183 
vec_unpackl(vector short __a)12184 static __inline__ vector int __ATTRS_o_ai vec_unpackl(vector short __a) {
12185 #ifdef __LITTLE_ENDIAN__
12186   return __builtin_altivec_vupkhsh(__a);
12187 #else
12188   return __builtin_altivec_vupklsh(__a);
12189 #endif
12190 }
12191 
12192 static __inline__ vector bool int __ATTRS_o_ai
vec_unpackl(vector bool short __a)12193 vec_unpackl(vector bool short __a) {
12194 #ifdef __LITTLE_ENDIAN__
12195   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
12196 #else
12197   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
12198 #endif
12199 }
12200 
12201 static __inline__ vector unsigned int __ATTRS_o_ai
vec_unpackl(vector pixel __a)12202 vec_unpackl(vector pixel __a) {
12203 #ifdef __LITTLE_ENDIAN__
12204   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
12205 #else
12206   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
12207 #endif
12208 }
12209 
12210 #ifdef __POWER8_VECTOR__
vec_unpackl(vector int __a)12211 static __inline__ vector long long __ATTRS_o_ai vec_unpackl(vector int __a) {
12212 #ifdef __LITTLE_ENDIAN__
12213   return __builtin_altivec_vupkhsw(__a);
12214 #else
12215   return __builtin_altivec_vupklsw(__a);
12216 #endif
12217 }
12218 
12219 static __inline__ vector bool long long __ATTRS_o_ai
vec_unpackl(vector bool int __a)12220 vec_unpackl(vector bool int __a) {
12221 #ifdef __LITTLE_ENDIAN__
12222   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
12223 #else
12224   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
12225 #endif
12226 }
12227 
12228 static __inline__ vector double __ATTRS_o_ai
vec_unpackl(vector float __a)12229 vec_unpackl(vector float __a) {
12230   return (vector double)(__a[2], __a[3]);
12231 }
12232 #endif
12233 
12234 /* vec_vupklsb */
12235 
12236 static __inline__ vector short __ATTRS_o_ai
vec_vupklsb(vector signed char __a)12237 vec_vupklsb(vector signed char __a) {
12238 #ifdef __LITTLE_ENDIAN__
12239   return __builtin_altivec_vupkhsb((vector char)__a);
12240 #else
12241   return __builtin_altivec_vupklsb((vector char)__a);
12242 #endif
12243 }
12244 
12245 static __inline__ vector bool short __ATTRS_o_ai
vec_vupklsb(vector bool char __a)12246 vec_vupklsb(vector bool char __a) {
12247 #ifdef __LITTLE_ENDIAN__
12248   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
12249 #else
12250   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
12251 #endif
12252 }
12253 
12254 /* vec_vupklsh */
12255 
vec_vupklsh(vector short __a)12256 static __inline__ vector int __ATTRS_o_ai vec_vupklsh(vector short __a) {
12257 #ifdef __LITTLE_ENDIAN__
12258   return __builtin_altivec_vupkhsh(__a);
12259 #else
12260   return __builtin_altivec_vupklsh(__a);
12261 #endif
12262 }
12263 
12264 static __inline__ vector bool int __ATTRS_o_ai
vec_vupklsh(vector bool short __a)12265 vec_vupklsh(vector bool short __a) {
12266 #ifdef __LITTLE_ENDIAN__
12267   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
12268 #else
12269   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
12270 #endif
12271 }
12272 
12273 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vupklsh(vector pixel __a)12274 vec_vupklsh(vector pixel __a) {
12275 #ifdef __LITTLE_ENDIAN__
12276   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
12277 #else
12278   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
12279 #endif
12280 }
12281 
12282 /* vec_vupklsw */
12283 
12284 #ifdef __POWER8_VECTOR__
vec_vupklsw(vector int __a)12285 static __inline__ vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) {
12286 #ifdef __LITTLE_ENDIAN__
12287   return __builtin_altivec_vupkhsw(__a);
12288 #else
12289   return __builtin_altivec_vupklsw(__a);
12290 #endif
12291 }
12292 
12293 static __inline__ vector bool long long __ATTRS_o_ai
vec_vupklsw(vector bool int __a)12294 vec_vupklsw(vector bool int __a) {
12295 #ifdef __LITTLE_ENDIAN__
12296   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
12297 #else
12298   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
12299 #endif
12300 }
12301 #endif
12302 
12303 /* vec_vsx_ld */
12304 
12305 #ifdef __VSX__
12306 
12307 static __inline__ vector bool int __ATTRS_o_ai
vec_vsx_ld(int __a,const vector bool int * __b)12308 vec_vsx_ld(int __a, const vector bool int *__b) {
12309   return (vector bool int)__builtin_vsx_lxvw4x(__a, __b);
12310 }
12311 
12312 static __inline__ vector signed int __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed int * __b)12313 vec_vsx_ld(int __a, const vector signed int *__b) {
12314   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
12315 }
12316 
12317 static __inline__ vector signed int __ATTRS_o_ai
vec_vsx_ld(int __a,const signed int * __b)12318 vec_vsx_ld(int __a, const signed int *__b) {
12319   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
12320 }
12321 
12322 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned int * __b)12323 vec_vsx_ld(int __a, const vector unsigned int *__b) {
12324   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
12325 }
12326 
12327 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsx_ld(int __a,const unsigned int * __b)12328 vec_vsx_ld(int __a, const unsigned int *__b) {
12329   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
12330 }
12331 
12332 static __inline__ vector float __ATTRS_o_ai
vec_vsx_ld(int __a,const vector float * __b)12333 vec_vsx_ld(int __a, const vector float *__b) {
12334   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
12335 }
12336 
vec_vsx_ld(int __a,const float * __b)12337 static __inline__ vector float __ATTRS_o_ai vec_vsx_ld(int __a,
12338                                                        const float *__b) {
12339   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
12340 }
12341 
12342 static __inline__ vector signed long long __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed long long * __b)12343 vec_vsx_ld(int __a, const vector signed long long *__b) {
12344   return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b);
12345 }
12346 
12347 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned long long * __b)12348 vec_vsx_ld(int __a, const vector unsigned long long *__b) {
12349   return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b);
12350 }
12351 
12352 static __inline__ vector double __ATTRS_o_ai
vec_vsx_ld(int __a,const vector double * __b)12353 vec_vsx_ld(int __a, const vector double *__b) {
12354   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
12355 }
12356 
12357 static __inline__ vector double __ATTRS_o_ai
vec_vsx_ld(int __a,const double * __b)12358 vec_vsx_ld(int __a, const double *__b) {
12359   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
12360 }
12361 
12362 static __inline__ vector bool short __ATTRS_o_ai
vec_vsx_ld(int __a,const vector bool short * __b)12363 vec_vsx_ld(int __a, const vector bool short *__b) {
12364   return (vector bool short)__builtin_vsx_lxvw4x(__a, __b);
12365 }
12366 
12367 static __inline__ vector signed short __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed short * __b)12368 vec_vsx_ld(int __a, const vector signed short *__b) {
12369   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
12370 }
12371 
12372 static __inline__ vector signed short __ATTRS_o_ai
vec_vsx_ld(int __a,const signed short * __b)12373 vec_vsx_ld(int __a, const signed short *__b) {
12374   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
12375 }
12376 
12377 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned short * __b)12378 vec_vsx_ld(int __a, const vector unsigned short *__b) {
12379   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
12380 }
12381 
12382 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsx_ld(int __a,const unsigned short * __b)12383 vec_vsx_ld(int __a, const unsigned short *__b) {
12384   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
12385 }
12386 
12387 static __inline__ vector bool char __ATTRS_o_ai
vec_vsx_ld(int __a,const vector bool char * __b)12388 vec_vsx_ld(int __a, const vector bool char *__b) {
12389   return (vector bool char)__builtin_vsx_lxvw4x(__a, __b);
12390 }
12391 
12392 static __inline__ vector signed char __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed char * __b)12393 vec_vsx_ld(int __a, const vector signed char *__b) {
12394   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
12395 }
12396 
12397 static __inline__ vector signed char __ATTRS_o_ai
vec_vsx_ld(int __a,const signed char * __b)12398 vec_vsx_ld(int __a, const signed char *__b) {
12399   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
12400 }
12401 
12402 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned char * __b)12403 vec_vsx_ld(int __a, const vector unsigned char *__b) {
12404   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
12405 }
12406 
12407 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsx_ld(int __a,const unsigned char * __b)12408 vec_vsx_ld(int __a, const unsigned char *__b) {
12409   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
12410 }
12411 
12412 #endif
12413 
12414 /* vec_vsx_st */
12415 
12416 #ifdef __VSX__
12417 
vec_vsx_st(vector bool int __a,int __b,vector bool int * __c)12418 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
12419                                                vector bool int *__c) {
12420   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12421 }
12422 
vec_vsx_st(vector bool int __a,int __b,signed int * __c)12423 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
12424                                                signed int *__c) {
12425   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12426 }
12427 
vec_vsx_st(vector bool int __a,int __b,unsigned int * __c)12428 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
12429                                                unsigned int *__c) {
12430   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12431 }
12432 
vec_vsx_st(vector signed int __a,int __b,vector signed int * __c)12433 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
12434                                                vector signed int *__c) {
12435   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12436 }
12437 
vec_vsx_st(vector signed int __a,int __b,signed int * __c)12438 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
12439                                                signed int *__c) {
12440   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12441 }
12442 
vec_vsx_st(vector unsigned int __a,int __b,vector unsigned int * __c)12443 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
12444                                                vector unsigned int *__c) {
12445   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12446 }
12447 
vec_vsx_st(vector unsigned int __a,int __b,unsigned int * __c)12448 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
12449                                                unsigned int *__c) {
12450   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12451 }
12452 
vec_vsx_st(vector float __a,int __b,vector float * __c)12453 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
12454                                                vector float *__c) {
12455   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12456 }
12457 
vec_vsx_st(vector float __a,int __b,float * __c)12458 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
12459                                                float *__c) {
12460   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12461 }
12462 
vec_vsx_st(vector signed long long __a,int __b,vector signed long long * __c)12463 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed long long __a,
12464                                                int __b,
12465                                                vector signed long long *__c) {
12466   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12467 }
12468 
vec_vsx_st(vector unsigned long long __a,int __b,vector unsigned long long * __c)12469 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a,
12470                                                int __b,
12471                                                vector unsigned long long *__c) {
12472   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12473 }
12474 
vec_vsx_st(vector double __a,int __b,vector double * __c)12475 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
12476                                                vector double *__c) {
12477   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12478 }
12479 
vec_vsx_st(vector double __a,int __b,double * __c)12480 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
12481                                                double *__c) {
12482   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12483 }
12484 
vec_vsx_st(vector bool short __a,int __b,vector bool short * __c)12485 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
12486                                                vector bool short *__c) {
12487   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12488 }
12489 
vec_vsx_st(vector bool short __a,int __b,signed short * __c)12490 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
12491                                                signed short *__c) {
12492   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12493 }
12494 
vec_vsx_st(vector bool short __a,int __b,unsigned short * __c)12495 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
12496                                                unsigned short *__c) {
12497   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12498 }
vec_vsx_st(vector signed short __a,int __b,vector signed short * __c)12499 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
12500                                                vector signed short *__c) {
12501   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12502 }
12503 
vec_vsx_st(vector signed short __a,int __b,signed short * __c)12504 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
12505                                                signed short *__c) {
12506   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12507 }
12508 
vec_vsx_st(vector unsigned short __a,int __b,vector unsigned short * __c)12509 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
12510                                                int __b,
12511                                                vector unsigned short *__c) {
12512   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12513 }
12514 
vec_vsx_st(vector unsigned short __a,int __b,unsigned short * __c)12515 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
12516                                                int __b, unsigned short *__c) {
12517   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12518 }
12519 
vec_vsx_st(vector bool char __a,int __b,vector bool char * __c)12520 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
12521                                                vector bool char *__c) {
12522   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12523 }
12524 
vec_vsx_st(vector bool char __a,int __b,signed char * __c)12525 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
12526                                                signed char *__c) {
12527   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12528 }
12529 
vec_vsx_st(vector bool char __a,int __b,unsigned char * __c)12530 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
12531                                                unsigned char *__c) {
12532   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12533 }
12534 
vec_vsx_st(vector signed char __a,int __b,vector signed char * __c)12535 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
12536                                                vector signed char *__c) {
12537   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12538 }
12539 
vec_vsx_st(vector signed char __a,int __b,signed char * __c)12540 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
12541                                                signed char *__c) {
12542   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12543 }
12544 
vec_vsx_st(vector unsigned char __a,int __b,vector unsigned char * __c)12545 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
12546                                                int __b,
12547                                                vector unsigned char *__c) {
12548   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12549 }
12550 
vec_vsx_st(vector unsigned char __a,int __b,unsigned char * __c)12551 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
12552                                                int __b, unsigned char *__c) {
12553   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12554 }
12555 
12556 #endif
12557 
12558 #ifdef __VSX__
12559 #define vec_xxpermdi __builtin_vsx_xxpermdi
12560 #define vec_xxsldwi __builtin_vsx_xxsldwi
12561 #endif
12562 
12563 /* vec_xor */
12564 
12565 #define __builtin_altivec_vxor vec_xor
12566 
12567 static __inline__ vector signed char __ATTRS_o_ai
vec_xor(vector signed char __a,vector signed char __b)12568 vec_xor(vector signed char __a, vector signed char __b) {
12569   return __a ^ __b;
12570 }
12571 
12572 static __inline__ vector signed char __ATTRS_o_ai
vec_xor(vector bool char __a,vector signed char __b)12573 vec_xor(vector bool char __a, vector signed char __b) {
12574   return (vector signed char)__a ^ __b;
12575 }
12576 
12577 static __inline__ vector signed char __ATTRS_o_ai
vec_xor(vector signed char __a,vector bool char __b)12578 vec_xor(vector signed char __a, vector bool char __b) {
12579   return __a ^ (vector signed char)__b;
12580 }
12581 
12582 static __inline__ vector unsigned char __ATTRS_o_ai
vec_xor(vector unsigned char __a,vector unsigned char __b)12583 vec_xor(vector unsigned char __a, vector unsigned char __b) {
12584   return __a ^ __b;
12585 }
12586 
12587 static __inline__ vector unsigned char __ATTRS_o_ai
vec_xor(vector bool char __a,vector unsigned char __b)12588 vec_xor(vector bool char __a, vector unsigned char __b) {
12589   return (vector unsigned char)__a ^ __b;
12590 }
12591 
12592 static __inline__ vector unsigned char __ATTRS_o_ai
vec_xor(vector unsigned char __a,vector bool char __b)12593 vec_xor(vector unsigned char __a, vector bool char __b) {
12594   return __a ^ (vector unsigned char)__b;
12595 }
12596 
vec_xor(vector bool char __a,vector bool char __b)12597 static __inline__ vector bool char __ATTRS_o_ai vec_xor(vector bool char __a,
12598                                                         vector bool char __b) {
12599   return __a ^ __b;
12600 }
12601 
vec_xor(vector short __a,vector short __b)12602 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
12603                                                     vector short __b) {
12604   return __a ^ __b;
12605 }
12606 
vec_xor(vector bool short __a,vector short __b)12607 static __inline__ vector short __ATTRS_o_ai vec_xor(vector bool short __a,
12608                                                     vector short __b) {
12609   return (vector short)__a ^ __b;
12610 }
12611 
vec_xor(vector short __a,vector bool short __b)12612 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
12613                                                     vector bool short __b) {
12614   return __a ^ (vector short)__b;
12615 }
12616 
12617 static __inline__ vector unsigned short __ATTRS_o_ai
vec_xor(vector unsigned short __a,vector unsigned short __b)12618 vec_xor(vector unsigned short __a, vector unsigned short __b) {
12619   return __a ^ __b;
12620 }
12621 
12622 static __inline__ vector unsigned short __ATTRS_o_ai
vec_xor(vector bool short __a,vector unsigned short __b)12623 vec_xor(vector bool short __a, vector unsigned short __b) {
12624   return (vector unsigned short)__a ^ __b;
12625 }
12626 
12627 static __inline__ vector unsigned short __ATTRS_o_ai
vec_xor(vector unsigned short __a,vector bool short __b)12628 vec_xor(vector unsigned short __a, vector bool short __b) {
12629   return __a ^ (vector unsigned short)__b;
12630 }
12631 
12632 static __inline__ vector bool short __ATTRS_o_ai
vec_xor(vector bool short __a,vector bool short __b)12633 vec_xor(vector bool short __a, vector bool short __b) {
12634   return __a ^ __b;
12635 }
12636 
vec_xor(vector int __a,vector int __b)12637 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
12638                                                   vector int __b) {
12639   return __a ^ __b;
12640 }
12641 
vec_xor(vector bool int __a,vector int __b)12642 static __inline__ vector int __ATTRS_o_ai vec_xor(vector bool int __a,
12643                                                   vector int __b) {
12644   return (vector int)__a ^ __b;
12645 }
12646 
vec_xor(vector int __a,vector bool int __b)12647 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
12648                                                   vector bool int __b) {
12649   return __a ^ (vector int)__b;
12650 }
12651 
12652 static __inline__ vector unsigned int __ATTRS_o_ai
vec_xor(vector unsigned int __a,vector unsigned int __b)12653 vec_xor(vector unsigned int __a, vector unsigned int __b) {
12654   return __a ^ __b;
12655 }
12656 
12657 static __inline__ vector unsigned int __ATTRS_o_ai
vec_xor(vector bool int __a,vector unsigned int __b)12658 vec_xor(vector bool int __a, vector unsigned int __b) {
12659   return (vector unsigned int)__a ^ __b;
12660 }
12661 
12662 static __inline__ vector unsigned int __ATTRS_o_ai
vec_xor(vector unsigned int __a,vector bool int __b)12663 vec_xor(vector unsigned int __a, vector bool int __b) {
12664   return __a ^ (vector unsigned int)__b;
12665 }
12666 
vec_xor(vector bool int __a,vector bool int __b)12667 static __inline__ vector bool int __ATTRS_o_ai vec_xor(vector bool int __a,
12668                                                        vector bool int __b) {
12669   return __a ^ __b;
12670 }
12671 
vec_xor(vector float __a,vector float __b)12672 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
12673                                                     vector float __b) {
12674   vector unsigned int __res =
12675       (vector unsigned int)__a ^ (vector unsigned int)__b;
12676   return (vector float)__res;
12677 }
12678 
vec_xor(vector bool int __a,vector float __b)12679 static __inline__ vector float __ATTRS_o_ai vec_xor(vector bool int __a,
12680                                                     vector float __b) {
12681   vector unsigned int __res =
12682       (vector unsigned int)__a ^ (vector unsigned int)__b;
12683   return (vector float)__res;
12684 }
12685 
vec_xor(vector float __a,vector bool int __b)12686 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
12687                                                     vector bool int __b) {
12688   vector unsigned int __res =
12689       (vector unsigned int)__a ^ (vector unsigned int)__b;
12690   return (vector float)__res;
12691 }
12692 
12693 #ifdef __VSX__
12694 static __inline__ vector signed long long __ATTRS_o_ai
vec_xor(vector signed long long __a,vector signed long long __b)12695 vec_xor(vector signed long long __a, vector signed long long __b) {
12696   return __a ^ __b;
12697 }
12698 
12699 static __inline__ vector signed long long __ATTRS_o_ai
vec_xor(vector bool long long __a,vector signed long long __b)12700 vec_xor(vector bool long long __a, vector signed long long __b) {
12701   return (vector signed long long)__a ^ __b;
12702 }
12703 
12704 static __inline__ vector signed long long __ATTRS_o_ai
vec_xor(vector signed long long __a,vector bool long long __b)12705 vec_xor(vector signed long long __a, vector bool long long __b) {
12706   return __a ^ (vector signed long long)__b;
12707 }
12708 
12709 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xor(vector unsigned long long __a,vector unsigned long long __b)12710 vec_xor(vector unsigned long long __a, vector unsigned long long __b) {
12711   return __a ^ __b;
12712 }
12713 
12714 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xor(vector bool long long __a,vector unsigned long long __b)12715 vec_xor(vector bool long long __a, vector unsigned long long __b) {
12716   return (vector unsigned long long)__a ^ __b;
12717 }
12718 
12719 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xor(vector unsigned long long __a,vector bool long long __b)12720 vec_xor(vector unsigned long long __a, vector bool long long __b) {
12721   return __a ^ (vector unsigned long long)__b;
12722 }
12723 
12724 static __inline__ vector bool long long __ATTRS_o_ai
vec_xor(vector bool long long __a,vector bool long long __b)12725 vec_xor(vector bool long long __a, vector bool long long __b) {
12726   return __a ^ __b;
12727 }
12728 
vec_xor(vector double __a,vector double __b)12729 static __inline__ vector double __ATTRS_o_ai vec_xor(vector double __a,
12730                                                      vector double __b) {
12731   return (vector double)((vector unsigned long long)__a ^
12732                          (vector unsigned long long)__b);
12733 }
12734 
12735 static __inline__ vector double __ATTRS_o_ai
vec_xor(vector double __a,vector bool long long __b)12736 vec_xor(vector double __a, vector bool long long __b) {
12737   return (vector double)((vector unsigned long long)__a ^
12738                          (vector unsigned long long)__b);
12739 }
12740 
vec_xor(vector bool long long __a,vector double __b)12741 static __inline__ vector double __ATTRS_o_ai vec_xor(vector bool long long __a,
12742                                                      vector double __b) {
12743   return (vector double)((vector unsigned long long)__a ^
12744                          (vector unsigned long long)__b);
12745 }
12746 #endif
12747 
12748 /* vec_vxor */
12749 
12750 static __inline__ vector signed char __ATTRS_o_ai
vec_vxor(vector signed char __a,vector signed char __b)12751 vec_vxor(vector signed char __a, vector signed char __b) {
12752   return __a ^ __b;
12753 }
12754 
12755 static __inline__ vector signed char __ATTRS_o_ai
vec_vxor(vector bool char __a,vector signed char __b)12756 vec_vxor(vector bool char __a, vector signed char __b) {
12757   return (vector signed char)__a ^ __b;
12758 }
12759 
12760 static __inline__ vector signed char __ATTRS_o_ai
vec_vxor(vector signed char __a,vector bool char __b)12761 vec_vxor(vector signed char __a, vector bool char __b) {
12762   return __a ^ (vector signed char)__b;
12763 }
12764 
12765 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vxor(vector unsigned char __a,vector unsigned char __b)12766 vec_vxor(vector unsigned char __a, vector unsigned char __b) {
12767   return __a ^ __b;
12768 }
12769 
12770 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vxor(vector bool char __a,vector unsigned char __b)12771 vec_vxor(vector bool char __a, vector unsigned char __b) {
12772   return (vector unsigned char)__a ^ __b;
12773 }
12774 
12775 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vxor(vector unsigned char __a,vector bool char __b)12776 vec_vxor(vector unsigned char __a, vector bool char __b) {
12777   return __a ^ (vector unsigned char)__b;
12778 }
12779 
vec_vxor(vector bool char __a,vector bool char __b)12780 static __inline__ vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a,
12781                                                          vector bool char __b) {
12782   return __a ^ __b;
12783 }
12784 
vec_vxor(vector short __a,vector short __b)12785 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
12786                                                      vector short __b) {
12787   return __a ^ __b;
12788 }
12789 
vec_vxor(vector bool short __a,vector short __b)12790 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector bool short __a,
12791                                                      vector short __b) {
12792   return (vector short)__a ^ __b;
12793 }
12794 
vec_vxor(vector short __a,vector bool short __b)12795 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
12796                                                      vector bool short __b) {
12797   return __a ^ (vector short)__b;
12798 }
12799 
12800 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vxor(vector unsigned short __a,vector unsigned short __b)12801 vec_vxor(vector unsigned short __a, vector unsigned short __b) {
12802   return __a ^ __b;
12803 }
12804 
12805 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vxor(vector bool short __a,vector unsigned short __b)12806 vec_vxor(vector bool short __a, vector unsigned short __b) {
12807   return (vector unsigned short)__a ^ __b;
12808 }
12809 
12810 static __inline__ vector unsigned short __ATTRS_o_ai
vec_vxor(vector unsigned short __a,vector bool short __b)12811 vec_vxor(vector unsigned short __a, vector bool short __b) {
12812   return __a ^ (vector unsigned short)__b;
12813 }
12814 
12815 static __inline__ vector bool short __ATTRS_o_ai
vec_vxor(vector bool short __a,vector bool short __b)12816 vec_vxor(vector bool short __a, vector bool short __b) {
12817   return __a ^ __b;
12818 }
12819 
vec_vxor(vector int __a,vector int __b)12820 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
12821                                                    vector int __b) {
12822   return __a ^ __b;
12823 }
12824 
vec_vxor(vector bool int __a,vector int __b)12825 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector bool int __a,
12826                                                    vector int __b) {
12827   return (vector int)__a ^ __b;
12828 }
12829 
vec_vxor(vector int __a,vector bool int __b)12830 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
12831                                                    vector bool int __b) {
12832   return __a ^ (vector int)__b;
12833 }
12834 
12835 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vxor(vector unsigned int __a,vector unsigned int __b)12836 vec_vxor(vector unsigned int __a, vector unsigned int __b) {
12837   return __a ^ __b;
12838 }
12839 
12840 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vxor(vector bool int __a,vector unsigned int __b)12841 vec_vxor(vector bool int __a, vector unsigned int __b) {
12842   return (vector unsigned int)__a ^ __b;
12843 }
12844 
12845 static __inline__ vector unsigned int __ATTRS_o_ai
vec_vxor(vector unsigned int __a,vector bool int __b)12846 vec_vxor(vector unsigned int __a, vector bool int __b) {
12847   return __a ^ (vector unsigned int)__b;
12848 }
12849 
vec_vxor(vector bool int __a,vector bool int __b)12850 static __inline__ vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a,
12851                                                         vector bool int __b) {
12852   return __a ^ __b;
12853 }
12854 
vec_vxor(vector float __a,vector float __b)12855 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
12856                                                      vector float __b) {
12857   vector unsigned int __res =
12858       (vector unsigned int)__a ^ (vector unsigned int)__b;
12859   return (vector float)__res;
12860 }
12861 
vec_vxor(vector bool int __a,vector float __b)12862 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector bool int __a,
12863                                                      vector float __b) {
12864   vector unsigned int __res =
12865       (vector unsigned int)__a ^ (vector unsigned int)__b;
12866   return (vector float)__res;
12867 }
12868 
vec_vxor(vector float __a,vector bool int __b)12869 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
12870                                                      vector bool int __b) {
12871   vector unsigned int __res =
12872       (vector unsigned int)__a ^ (vector unsigned int)__b;
12873   return (vector float)__res;
12874 }
12875 
12876 #ifdef __VSX__
12877 static __inline__ vector signed long long __ATTRS_o_ai
vec_vxor(vector signed long long __a,vector signed long long __b)12878 vec_vxor(vector signed long long __a, vector signed long long __b) {
12879   return __a ^ __b;
12880 }
12881 
12882 static __inline__ vector signed long long __ATTRS_o_ai
vec_vxor(vector bool long long __a,vector signed long long __b)12883 vec_vxor(vector bool long long __a, vector signed long long __b) {
12884   return (vector signed long long)__a ^ __b;
12885 }
12886 
12887 static __inline__ vector signed long long __ATTRS_o_ai
vec_vxor(vector signed long long __a,vector bool long long __b)12888 vec_vxor(vector signed long long __a, vector bool long long __b) {
12889   return __a ^ (vector signed long long)__b;
12890 }
12891 
12892 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vxor(vector unsigned long long __a,vector unsigned long long __b)12893 vec_vxor(vector unsigned long long __a, vector unsigned long long __b) {
12894   return __a ^ __b;
12895 }
12896 
12897 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vxor(vector bool long long __a,vector unsigned long long __b)12898 vec_vxor(vector bool long long __a, vector unsigned long long __b) {
12899   return (vector unsigned long long)__a ^ __b;
12900 }
12901 
12902 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vxor(vector unsigned long long __a,vector bool long long __b)12903 vec_vxor(vector unsigned long long __a, vector bool long long __b) {
12904   return __a ^ (vector unsigned long long)__b;
12905 }
12906 
12907 static __inline__ vector bool long long __ATTRS_o_ai
vec_vxor(vector bool long long __a,vector bool long long __b)12908 vec_vxor(vector bool long long __a, vector bool long long __b) {
12909   return __a ^ __b;
12910 }
12911 #endif
12912 
12913 /* ------------------------ extensions for CBEA ----------------------------- */
12914 
12915 /* vec_extract */
12916 
vec_extract(vector signed char __a,int __b)12917 static __inline__ signed char __ATTRS_o_ai vec_extract(vector signed char __a,
12918                                                        int __b) {
12919   return __a[__b];
12920 }
12921 
12922 static __inline__ unsigned char __ATTRS_o_ai
vec_extract(vector unsigned char __a,int __b)12923 vec_extract(vector unsigned char __a, int __b) {
12924   return __a[__b];
12925 }
12926 
vec_extract(vector bool char __a,int __b)12927 static __inline__ unsigned char __ATTRS_o_ai vec_extract(vector bool char __a,
12928                                                          int __b) {
12929   return __a[__b];
12930 }
12931 
vec_extract(vector signed short __a,int __b)12932 static __inline__ signed short __ATTRS_o_ai vec_extract(vector signed short __a,
12933                                                         int __b) {
12934   return __a[__b];
12935 }
12936 
12937 static __inline__ unsigned short __ATTRS_o_ai
vec_extract(vector unsigned short __a,int __b)12938 vec_extract(vector unsigned short __a, int __b) {
12939   return __a[__b];
12940 }
12941 
vec_extract(vector bool short __a,int __b)12942 static __inline__ unsigned short __ATTRS_o_ai vec_extract(vector bool short __a,
12943                                                           int __b) {
12944   return __a[__b];
12945 }
12946 
vec_extract(vector signed int __a,int __b)12947 static __inline__ signed int __ATTRS_o_ai vec_extract(vector signed int __a,
12948                                                       int __b) {
12949   return __a[__b];
12950 }
12951 
vec_extract(vector unsigned int __a,int __b)12952 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a,
12953                                                         int __b) {
12954   return __a[__b];
12955 }
12956 
vec_extract(vector bool int __a,int __b)12957 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector bool int __a,
12958                                                         int __b) {
12959   return __a[__b];
12960 }
12961 
12962 #ifdef __VSX__
12963 static __inline__ signed long long __ATTRS_o_ai
vec_extract(vector signed long long __a,int __b)12964 vec_extract(vector signed long long __a, int __b) {
12965   return __a[__b];
12966 }
12967 
12968 static __inline__ unsigned long long __ATTRS_o_ai
vec_extract(vector unsigned long long __a,int __b)12969 vec_extract(vector unsigned long long __a, int __b) {
12970   return __a[__b];
12971 }
12972 
12973 static __inline__ unsigned long long __ATTRS_o_ai
vec_extract(vector bool long long __a,int __b)12974 vec_extract(vector bool long long __a, int __b) {
12975   return __a[__b];
12976 }
12977 
vec_extract(vector double __a,int __b)12978 static __inline__ double __ATTRS_o_ai vec_extract(vector double __a, int __b) {
12979   return __a[__b];
12980 }
12981 #endif
12982 
vec_extract(vector float __a,int __b)12983 static __inline__ float __ATTRS_o_ai vec_extract(vector float __a, int __b) {
12984   return __a[__b];
12985 }
12986 
12987 #ifdef __POWER9_VECTOR__
12988 
12989 #define vec_insert4b __builtin_vsx_insertword
12990 #define vec_extract4b __builtin_vsx_extractuword
12991 
12992 /* vec_extract_exp */
12993 
12994 static __inline__ vector unsigned int __ATTRS_o_ai
vec_extract_exp(vector float __a)12995 vec_extract_exp(vector float __a) {
12996   return __builtin_vsx_xvxexpsp(__a);
12997 }
12998 
12999 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_extract_exp(vector double __a)13000 vec_extract_exp(vector double __a) {
13001   return __builtin_vsx_xvxexpdp(__a);
13002 }
13003 
13004 /* vec_extract_sig */
13005 
13006 static __inline__ vector unsigned int __ATTRS_o_ai
vec_extract_sig(vector float __a)13007 vec_extract_sig(vector float __a) {
13008   return __builtin_vsx_xvxsigsp(__a);
13009 }
13010 
13011 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_extract_sig(vector double __a)13012 vec_extract_sig (vector double __a) {
13013   return __builtin_vsx_xvxsigdp(__a);
13014 }
13015 
13016 static __inline__ vector float __ATTRS_o_ai
vec_extract_fp32_from_shorth(vector unsigned short __a)13017 vec_extract_fp32_from_shorth(vector unsigned short __a) {
13018   vector unsigned short __b =
13019 #ifdef __LITTLE_ENDIAN__
13020             __builtin_shufflevector(__a, __a, 0, -1, 1, -1, 2, -1, 3, -1);
13021 #else
13022             __builtin_shufflevector(__a, __a, -1, 0, -1, 1, -1, 2, -1, 3);
13023 #endif
13024   return __builtin_vsx_xvcvhpsp(__b);
13025 }
13026 
13027 static __inline__ vector float __ATTRS_o_ai
vec_extract_fp32_from_shortl(vector unsigned short __a)13028 vec_extract_fp32_from_shortl(vector unsigned short __a) {
13029   vector unsigned short __b =
13030 #ifdef __LITTLE_ENDIAN__
13031             __builtin_shufflevector(__a, __a, 4, -1, 5, -1, 6, -1, 7, -1);
13032 #else
13033             __builtin_shufflevector(__a, __a, -1, 4, -1, 5, -1, 6, -1, 7);
13034 #endif
13035   return __builtin_vsx_xvcvhpsp(__b);
13036 }
13037 #endif /* __POWER9_VECTOR__ */
13038 
13039 /* vec_insert */
13040 
13041 static __inline__ vector signed char __ATTRS_o_ai
vec_insert(signed char __a,vector signed char __b,int __c)13042 vec_insert(signed char __a, vector signed char __b, int __c) {
13043   __b[__c] = __a;
13044   return __b;
13045 }
13046 
13047 static __inline__ vector unsigned char __ATTRS_o_ai
vec_insert(unsigned char __a,vector unsigned char __b,int __c)13048 vec_insert(unsigned char __a, vector unsigned char __b, int __c) {
13049   __b[__c] = __a;
13050   return __b;
13051 }
13052 
vec_insert(unsigned char __a,vector bool char __b,int __c)13053 static __inline__ vector bool char __ATTRS_o_ai vec_insert(unsigned char __a,
13054                                                            vector bool char __b,
13055                                                            int __c) {
13056   __b[__c] = __a;
13057   return __b;
13058 }
13059 
13060 static __inline__ vector signed short __ATTRS_o_ai
vec_insert(signed short __a,vector signed short __b,int __c)13061 vec_insert(signed short __a, vector signed short __b, int __c) {
13062   __b[__c] = __a;
13063   return __b;
13064 }
13065 
13066 static __inline__ vector unsigned short __ATTRS_o_ai
vec_insert(unsigned short __a,vector unsigned short __b,int __c)13067 vec_insert(unsigned short __a, vector unsigned short __b, int __c) {
13068   __b[__c] = __a;
13069   return __b;
13070 }
13071 
13072 static __inline__ vector bool short __ATTRS_o_ai
vec_insert(unsigned short __a,vector bool short __b,int __c)13073 vec_insert(unsigned short __a, vector bool short __b, int __c) {
13074   __b[__c] = __a;
13075   return __b;
13076 }
13077 
13078 static __inline__ vector signed int __ATTRS_o_ai
vec_insert(signed int __a,vector signed int __b,int __c)13079 vec_insert(signed int __a, vector signed int __b, int __c) {
13080   __b[__c] = __a;
13081   return __b;
13082 }
13083 
13084 static __inline__ vector unsigned int __ATTRS_o_ai
vec_insert(unsigned int __a,vector unsigned int __b,int __c)13085 vec_insert(unsigned int __a, vector unsigned int __b, int __c) {
13086   __b[__c] = __a;
13087   return __b;
13088 }
13089 
vec_insert(unsigned int __a,vector bool int __b,int __c)13090 static __inline__ vector bool int __ATTRS_o_ai vec_insert(unsigned int __a,
13091                                                           vector bool int __b,
13092                                                           int __c) {
13093   __b[__c] = __a;
13094   return __b;
13095 }
13096 
13097 #ifdef __VSX__
13098 static __inline__ vector signed long long __ATTRS_o_ai
vec_insert(signed long long __a,vector signed long long __b,int __c)13099 vec_insert(signed long long __a, vector signed long long __b, int __c) {
13100   __b[__c] = __a;
13101   return __b;
13102 }
13103 
13104 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_insert(unsigned long long __a,vector unsigned long long __b,int __c)13105 vec_insert(unsigned long long __a, vector unsigned long long __b, int __c) {
13106   __b[__c] = __a;
13107   return __b;
13108 }
13109 
13110 static __inline__ vector bool long long __ATTRS_o_ai
vec_insert(unsigned long long __a,vector bool long long __b,int __c)13111 vec_insert(unsigned long long __a, vector bool long long __b, int __c) {
13112   __b[__c] = __a;
13113   return __b;
13114 }
vec_insert(double __a,vector double __b,int __c)13115 static __inline__ vector double __ATTRS_o_ai vec_insert(double __a,
13116                                                         vector double __b,
13117                                                         int __c) {
13118   __b[__c] = __a;
13119   return __b;
13120 }
13121 #endif
13122 
vec_insert(float __a,vector float __b,int __c)13123 static __inline__ vector float __ATTRS_o_ai vec_insert(float __a,
13124                                                        vector float __b,
13125                                                        int __c) {
13126   __b[__c] = __a;
13127   return __b;
13128 }
13129 
13130 /* vec_lvlx */
13131 
13132 static __inline__ vector signed char __ATTRS_o_ai
vec_lvlx(int __a,const signed char * __b)13133 vec_lvlx(int __a, const signed char *__b) {
13134   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
13135                   vec_lvsl(__a, __b));
13136 }
13137 
13138 static __inline__ vector signed char __ATTRS_o_ai
vec_lvlx(int __a,const vector signed char * __b)13139 vec_lvlx(int __a, const vector signed char *__b) {
13140   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
13141                   vec_lvsl(__a, (unsigned char *)__b));
13142 }
13143 
13144 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlx(int __a,const unsigned char * __b)13145 vec_lvlx(int __a, const unsigned char *__b) {
13146   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
13147                   vec_lvsl(__a, __b));
13148 }
13149 
13150 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlx(int __a,const vector unsigned char * __b)13151 vec_lvlx(int __a, const vector unsigned char *__b) {
13152   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
13153                   vec_lvsl(__a, (unsigned char *)__b));
13154 }
13155 
13156 static __inline__ vector bool char __ATTRS_o_ai
vec_lvlx(int __a,const vector bool char * __b)13157 vec_lvlx(int __a, const vector bool char *__b) {
13158   return vec_perm(vec_ld(__a, __b), (vector bool char)(0),
13159                   vec_lvsl(__a, (unsigned char *)__b));
13160 }
13161 
vec_lvlx(int __a,const short * __b)13162 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
13163                                                      const short *__b) {
13164   return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
13165 }
13166 
vec_lvlx(int __a,const vector short * __b)13167 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
13168                                                      const vector short *__b) {
13169   return vec_perm(vec_ld(__a, __b), (vector short)(0),
13170                   vec_lvsl(__a, (unsigned char *)__b));
13171 }
13172 
13173 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlx(int __a,const unsigned short * __b)13174 vec_lvlx(int __a, const unsigned short *__b) {
13175   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
13176                   vec_lvsl(__a, __b));
13177 }
13178 
13179 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlx(int __a,const vector unsigned short * __b)13180 vec_lvlx(int __a, const vector unsigned short *__b) {
13181   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
13182                   vec_lvsl(__a, (unsigned char *)__b));
13183 }
13184 
13185 static __inline__ vector bool short __ATTRS_o_ai
vec_lvlx(int __a,const vector bool short * __b)13186 vec_lvlx(int __a, const vector bool short *__b) {
13187   return vec_perm(vec_ld(__a, __b), (vector bool short)(0),
13188                   vec_lvsl(__a, (unsigned char *)__b));
13189 }
13190 
vec_lvlx(int __a,const vector pixel * __b)13191 static __inline__ vector pixel __ATTRS_o_ai vec_lvlx(int __a,
13192                                                      const vector pixel *__b) {
13193   return vec_perm(vec_ld(__a, __b), (vector pixel)(0),
13194                   vec_lvsl(__a, (unsigned char *)__b));
13195 }
13196 
vec_lvlx(int __a,const int * __b)13197 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) {
13198   return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
13199 }
13200 
vec_lvlx(int __a,const vector int * __b)13201 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a,
13202                                                    const vector int *__b) {
13203   return vec_perm(vec_ld(__a, __b), (vector int)(0),
13204                   vec_lvsl(__a, (unsigned char *)__b));
13205 }
13206 
13207 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlx(int __a,const unsigned int * __b)13208 vec_lvlx(int __a, const unsigned int *__b) {
13209   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
13210                   vec_lvsl(__a, __b));
13211 }
13212 
13213 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlx(int __a,const vector unsigned int * __b)13214 vec_lvlx(int __a, const vector unsigned int *__b) {
13215   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
13216                   vec_lvsl(__a, (unsigned char *)__b));
13217 }
13218 
13219 static __inline__ vector bool int __ATTRS_o_ai
vec_lvlx(int __a,const vector bool int * __b)13220 vec_lvlx(int __a, const vector bool int *__b) {
13221   return vec_perm(vec_ld(__a, __b), (vector bool int)(0),
13222                   vec_lvsl(__a, (unsigned char *)__b));
13223 }
13224 
vec_lvlx(int __a,const float * __b)13225 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
13226                                                      const float *__b) {
13227   return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
13228 }
13229 
vec_lvlx(int __a,const vector float * __b)13230 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
13231                                                      const vector float *__b) {
13232   return vec_perm(vec_ld(__a, __b), (vector float)(0),
13233                   vec_lvsl(__a, (unsigned char *)__b));
13234 }
13235 
13236 /* vec_lvlxl */
13237 
13238 static __inline__ vector signed char __ATTRS_o_ai
vec_lvlxl(int __a,const signed char * __b)13239 vec_lvlxl(int __a, const signed char *__b) {
13240   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
13241                   vec_lvsl(__a, __b));
13242 }
13243 
13244 static __inline__ vector signed char __ATTRS_o_ai
vec_lvlxl(int __a,const vector signed char * __b)13245 vec_lvlxl(int __a, const vector signed char *__b) {
13246   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
13247                   vec_lvsl(__a, (unsigned char *)__b));
13248 }
13249 
13250 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlxl(int __a,const unsigned char * __b)13251 vec_lvlxl(int __a, const unsigned char *__b) {
13252   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
13253                   vec_lvsl(__a, __b));
13254 }
13255 
13256 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlxl(int __a,const vector unsigned char * __b)13257 vec_lvlxl(int __a, const vector unsigned char *__b) {
13258   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
13259                   vec_lvsl(__a, (unsigned char *)__b));
13260 }
13261 
13262 static __inline__ vector bool char __ATTRS_o_ai
vec_lvlxl(int __a,const vector bool char * __b)13263 vec_lvlxl(int __a, const vector bool char *__b) {
13264   return vec_perm(vec_ldl(__a, __b), (vector bool char)(0),
13265                   vec_lvsl(__a, (unsigned char *)__b));
13266 }
13267 
vec_lvlxl(int __a,const short * __b)13268 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
13269                                                       const short *__b) {
13270   return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
13271 }
13272 
vec_lvlxl(int __a,const vector short * __b)13273 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
13274                                                       const vector short *__b) {
13275   return vec_perm(vec_ldl(__a, __b), (vector short)(0),
13276                   vec_lvsl(__a, (unsigned char *)__b));
13277 }
13278 
13279 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlxl(int __a,const unsigned short * __b)13280 vec_lvlxl(int __a, const unsigned short *__b) {
13281   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
13282                   vec_lvsl(__a, __b));
13283 }
13284 
13285 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlxl(int __a,const vector unsigned short * __b)13286 vec_lvlxl(int __a, const vector unsigned short *__b) {
13287   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
13288                   vec_lvsl(__a, (unsigned char *)__b));
13289 }
13290 
13291 static __inline__ vector bool short __ATTRS_o_ai
vec_lvlxl(int __a,const vector bool short * __b)13292 vec_lvlxl(int __a, const vector bool short *__b) {
13293   return vec_perm(vec_ldl(__a, __b), (vector bool short)(0),
13294                   vec_lvsl(__a, (unsigned char *)__b));
13295 }
13296 
vec_lvlxl(int __a,const vector pixel * __b)13297 static __inline__ vector pixel __ATTRS_o_ai vec_lvlxl(int __a,
13298                                                       const vector pixel *__b) {
13299   return vec_perm(vec_ldl(__a, __b), (vector pixel)(0),
13300                   vec_lvsl(__a, (unsigned char *)__b));
13301 }
13302 
vec_lvlxl(int __a,const int * __b)13303 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) {
13304   return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
13305 }
13306 
vec_lvlxl(int __a,const vector int * __b)13307 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a,
13308                                                     const vector int *__b) {
13309   return vec_perm(vec_ldl(__a, __b), (vector int)(0),
13310                   vec_lvsl(__a, (unsigned char *)__b));
13311 }
13312 
13313 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlxl(int __a,const unsigned int * __b)13314 vec_lvlxl(int __a, const unsigned int *__b) {
13315   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
13316                   vec_lvsl(__a, __b));
13317 }
13318 
13319 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlxl(int __a,const vector unsigned int * __b)13320 vec_lvlxl(int __a, const vector unsigned int *__b) {
13321   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
13322                   vec_lvsl(__a, (unsigned char *)__b));
13323 }
13324 
13325 static __inline__ vector bool int __ATTRS_o_ai
vec_lvlxl(int __a,const vector bool int * __b)13326 vec_lvlxl(int __a, const vector bool int *__b) {
13327   return vec_perm(vec_ldl(__a, __b), (vector bool int)(0),
13328                   vec_lvsl(__a, (unsigned char *)__b));
13329 }
13330 
vec_lvlxl(int __a,const float * __b)13331 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
13332                                                       const float *__b) {
13333   return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
13334 }
13335 
vec_lvlxl(int __a,vector float * __b)13336 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
13337                                                       vector float *__b) {
13338   return vec_perm(vec_ldl(__a, __b), (vector float)(0),
13339                   vec_lvsl(__a, (unsigned char *)__b));
13340 }
13341 
13342 /* vec_lvrx */
13343 
13344 static __inline__ vector signed char __ATTRS_o_ai
vec_lvrx(int __a,const signed char * __b)13345 vec_lvrx(int __a, const signed char *__b) {
13346   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
13347                   vec_lvsl(__a, __b));
13348 }
13349 
13350 static __inline__ vector signed char __ATTRS_o_ai
vec_lvrx(int __a,const vector signed char * __b)13351 vec_lvrx(int __a, const vector signed char *__b) {
13352   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
13353                   vec_lvsl(__a, (unsigned char *)__b));
13354 }
13355 
13356 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrx(int __a,const unsigned char * __b)13357 vec_lvrx(int __a, const unsigned char *__b) {
13358   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
13359                   vec_lvsl(__a, __b));
13360 }
13361 
13362 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrx(int __a,const vector unsigned char * __b)13363 vec_lvrx(int __a, const vector unsigned char *__b) {
13364   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
13365                   vec_lvsl(__a, (unsigned char *)__b));
13366 }
13367 
13368 static __inline__ vector bool char __ATTRS_o_ai
vec_lvrx(int __a,const vector bool char * __b)13369 vec_lvrx(int __a, const vector bool char *__b) {
13370   return vec_perm((vector bool char)(0), vec_ld(__a, __b),
13371                   vec_lvsl(__a, (unsigned char *)__b));
13372 }
13373 
vec_lvrx(int __a,const short * __b)13374 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
13375                                                      const short *__b) {
13376   return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
13377 }
13378 
vec_lvrx(int __a,const vector short * __b)13379 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
13380                                                      const vector short *__b) {
13381   return vec_perm((vector short)(0), vec_ld(__a, __b),
13382                   vec_lvsl(__a, (unsigned char *)__b));
13383 }
13384 
13385 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrx(int __a,const unsigned short * __b)13386 vec_lvrx(int __a, const unsigned short *__b) {
13387   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
13388                   vec_lvsl(__a, __b));
13389 }
13390 
13391 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrx(int __a,const vector unsigned short * __b)13392 vec_lvrx(int __a, const vector unsigned short *__b) {
13393   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
13394                   vec_lvsl(__a, (unsigned char *)__b));
13395 }
13396 
13397 static __inline__ vector bool short __ATTRS_o_ai
vec_lvrx(int __a,const vector bool short * __b)13398 vec_lvrx(int __a, const vector bool short *__b) {
13399   return vec_perm((vector bool short)(0), vec_ld(__a, __b),
13400                   vec_lvsl(__a, (unsigned char *)__b));
13401 }
13402 
vec_lvrx(int __a,const vector pixel * __b)13403 static __inline__ vector pixel __ATTRS_o_ai vec_lvrx(int __a,
13404                                                      const vector pixel *__b) {
13405   return vec_perm((vector pixel)(0), vec_ld(__a, __b),
13406                   vec_lvsl(__a, (unsigned char *)__b));
13407 }
13408 
vec_lvrx(int __a,const int * __b)13409 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) {
13410   return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
13411 }
13412 
vec_lvrx(int __a,const vector int * __b)13413 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a,
13414                                                    const vector int *__b) {
13415   return vec_perm((vector int)(0), vec_ld(__a, __b),
13416                   vec_lvsl(__a, (unsigned char *)__b));
13417 }
13418 
13419 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrx(int __a,const unsigned int * __b)13420 vec_lvrx(int __a, const unsigned int *__b) {
13421   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
13422                   vec_lvsl(__a, __b));
13423 }
13424 
13425 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrx(int __a,const vector unsigned int * __b)13426 vec_lvrx(int __a, const vector unsigned int *__b) {
13427   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
13428                   vec_lvsl(__a, (unsigned char *)__b));
13429 }
13430 
13431 static __inline__ vector bool int __ATTRS_o_ai
vec_lvrx(int __a,const vector bool int * __b)13432 vec_lvrx(int __a, const vector bool int *__b) {
13433   return vec_perm((vector bool int)(0), vec_ld(__a, __b),
13434                   vec_lvsl(__a, (unsigned char *)__b));
13435 }
13436 
vec_lvrx(int __a,const float * __b)13437 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
13438                                                      const float *__b) {
13439   return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
13440 }
13441 
vec_lvrx(int __a,const vector float * __b)13442 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
13443                                                      const vector float *__b) {
13444   return vec_perm((vector float)(0), vec_ld(__a, __b),
13445                   vec_lvsl(__a, (unsigned char *)__b));
13446 }
13447 
13448 /* vec_lvrxl */
13449 
13450 static __inline__ vector signed char __ATTRS_o_ai
vec_lvrxl(int __a,const signed char * __b)13451 vec_lvrxl(int __a, const signed char *__b) {
13452   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
13453                   vec_lvsl(__a, __b));
13454 }
13455 
13456 static __inline__ vector signed char __ATTRS_o_ai
vec_lvrxl(int __a,const vector signed char * __b)13457 vec_lvrxl(int __a, const vector signed char *__b) {
13458   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
13459                   vec_lvsl(__a, (unsigned char *)__b));
13460 }
13461 
13462 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrxl(int __a,const unsigned char * __b)13463 vec_lvrxl(int __a, const unsigned char *__b) {
13464   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
13465                   vec_lvsl(__a, __b));
13466 }
13467 
13468 static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrxl(int __a,const vector unsigned char * __b)13469 vec_lvrxl(int __a, const vector unsigned char *__b) {
13470   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
13471                   vec_lvsl(__a, (unsigned char *)__b));
13472 }
13473 
13474 static __inline__ vector bool char __ATTRS_o_ai
vec_lvrxl(int __a,const vector bool char * __b)13475 vec_lvrxl(int __a, const vector bool char *__b) {
13476   return vec_perm((vector bool char)(0), vec_ldl(__a, __b),
13477                   vec_lvsl(__a, (unsigned char *)__b));
13478 }
13479 
vec_lvrxl(int __a,const short * __b)13480 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
13481                                                       const short *__b) {
13482   return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
13483 }
13484 
vec_lvrxl(int __a,const vector short * __b)13485 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
13486                                                       const vector short *__b) {
13487   return vec_perm((vector short)(0), vec_ldl(__a, __b),
13488                   vec_lvsl(__a, (unsigned char *)__b));
13489 }
13490 
13491 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrxl(int __a,const unsigned short * __b)13492 vec_lvrxl(int __a, const unsigned short *__b) {
13493   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
13494                   vec_lvsl(__a, __b));
13495 }
13496 
13497 static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrxl(int __a,const vector unsigned short * __b)13498 vec_lvrxl(int __a, const vector unsigned short *__b) {
13499   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
13500                   vec_lvsl(__a, (unsigned char *)__b));
13501 }
13502 
13503 static __inline__ vector bool short __ATTRS_o_ai
vec_lvrxl(int __a,const vector bool short * __b)13504 vec_lvrxl(int __a, const vector bool short *__b) {
13505   return vec_perm((vector bool short)(0), vec_ldl(__a, __b),
13506                   vec_lvsl(__a, (unsigned char *)__b));
13507 }
13508 
vec_lvrxl(int __a,const vector pixel * __b)13509 static __inline__ vector pixel __ATTRS_o_ai vec_lvrxl(int __a,
13510                                                       const vector pixel *__b) {
13511   return vec_perm((vector pixel)(0), vec_ldl(__a, __b),
13512                   vec_lvsl(__a, (unsigned char *)__b));
13513 }
13514 
vec_lvrxl(int __a,const int * __b)13515 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) {
13516   return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
13517 }
13518 
vec_lvrxl(int __a,const vector int * __b)13519 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a,
13520                                                     const vector int *__b) {
13521   return vec_perm((vector int)(0), vec_ldl(__a, __b),
13522                   vec_lvsl(__a, (unsigned char *)__b));
13523 }
13524 
13525 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrxl(int __a,const unsigned int * __b)13526 vec_lvrxl(int __a, const unsigned int *__b) {
13527   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
13528                   vec_lvsl(__a, __b));
13529 }
13530 
13531 static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrxl(int __a,const vector unsigned int * __b)13532 vec_lvrxl(int __a, const vector unsigned int *__b) {
13533   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
13534                   vec_lvsl(__a, (unsigned char *)__b));
13535 }
13536 
13537 static __inline__ vector bool int __ATTRS_o_ai
vec_lvrxl(int __a,const vector bool int * __b)13538 vec_lvrxl(int __a, const vector bool int *__b) {
13539   return vec_perm((vector bool int)(0), vec_ldl(__a, __b),
13540                   vec_lvsl(__a, (unsigned char *)__b));
13541 }
13542 
vec_lvrxl(int __a,const float * __b)13543 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
13544                                                       const float *__b) {
13545   return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
13546 }
13547 
vec_lvrxl(int __a,const vector float * __b)13548 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
13549                                                       const vector float *__b) {
13550   return vec_perm((vector float)(0), vec_ldl(__a, __b),
13551                   vec_lvsl(__a, (unsigned char *)__b));
13552 }
13553 
13554 /* vec_stvlx */
13555 
vec_stvlx(vector signed char __a,int __b,signed char * __c)13556 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
13557                                               signed char *__c) {
13558   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13559                 __c);
13560 }
13561 
vec_stvlx(vector signed char __a,int __b,vector signed char * __c)13562 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
13563                                               vector signed char *__c) {
13564   return vec_st(
13565       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13566       __b, __c);
13567 }
13568 
vec_stvlx(vector unsigned char __a,int __b,unsigned char * __c)13569 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
13570                                               unsigned char *__c) {
13571   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13572                 __c);
13573 }
13574 
vec_stvlx(vector unsigned char __a,int __b,vector unsigned char * __c)13575 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
13576                                               vector unsigned char *__c) {
13577   return vec_st(
13578       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13579       __b, __c);
13580 }
13581 
vec_stvlx(vector bool char __a,int __b,vector bool char * __c)13582 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b,
13583                                               vector bool char *__c) {
13584   return vec_st(
13585       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13586       __b, __c);
13587 }
13588 
vec_stvlx(vector short __a,int __b,short * __c)13589 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
13590                                               short *__c) {
13591   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13592                 __c);
13593 }
13594 
vec_stvlx(vector short __a,int __b,vector short * __c)13595 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
13596                                               vector short *__c) {
13597   return vec_st(
13598       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13599       __b, __c);
13600 }
13601 
vec_stvlx(vector unsigned short __a,int __b,unsigned short * __c)13602 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
13603                                               int __b, unsigned short *__c) {
13604   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13605                 __c);
13606 }
13607 
vec_stvlx(vector unsigned short __a,int __b,vector unsigned short * __c)13608 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
13609                                               int __b,
13610                                               vector unsigned short *__c) {
13611   return vec_st(
13612       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13613       __b, __c);
13614 }
13615 
vec_stvlx(vector bool short __a,int __b,vector bool short * __c)13616 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b,
13617                                               vector bool short *__c) {
13618   return vec_st(
13619       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13620       __b, __c);
13621 }
13622 
vec_stvlx(vector pixel __a,int __b,vector pixel * __c)13623 static __inline__ void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b,
13624                                               vector pixel *__c) {
13625   return vec_st(
13626       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13627       __b, __c);
13628 }
13629 
vec_stvlx(vector int __a,int __b,int * __c)13630 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
13631                                               int *__c) {
13632   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13633                 __c);
13634 }
13635 
vec_stvlx(vector int __a,int __b,vector int * __c)13636 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
13637                                               vector int *__c) {
13638   return vec_st(
13639       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13640       __b, __c);
13641 }
13642 
vec_stvlx(vector unsigned int __a,int __b,unsigned int * __c)13643 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
13644                                               unsigned int *__c) {
13645   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13646                 __c);
13647 }
13648 
vec_stvlx(vector unsigned int __a,int __b,vector unsigned int * __c)13649 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
13650                                               vector unsigned int *__c) {
13651   return vec_st(
13652       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13653       __b, __c);
13654 }
13655 
vec_stvlx(vector bool int __a,int __b,vector bool int * __c)13656 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b,
13657                                               vector bool int *__c) {
13658   return vec_st(
13659       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13660       __b, __c);
13661 }
13662 
vec_stvlx(vector float __a,int __b,vector float * __c)13663 static __inline__ void __ATTRS_o_ai vec_stvlx(vector float __a, int __b,
13664                                               vector float *__c) {
13665   return vec_st(
13666       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13667       __b, __c);
13668 }
13669 
13670 /* vec_stvlxl */
13671 
vec_stvlxl(vector signed char __a,int __b,signed char * __c)13672 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
13673                                                signed char *__c) {
13674   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13675                  __c);
13676 }
13677 
vec_stvlxl(vector signed char __a,int __b,vector signed char * __c)13678 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
13679                                                vector signed char *__c) {
13680   return vec_stl(
13681       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13682       __b, __c);
13683 }
13684 
vec_stvlxl(vector unsigned char __a,int __b,unsigned char * __c)13685 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
13686                                                int __b, unsigned char *__c) {
13687   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13688                  __c);
13689 }
13690 
vec_stvlxl(vector unsigned char __a,int __b,vector unsigned char * __c)13691 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
13692                                                int __b,
13693                                                vector unsigned char *__c) {
13694   return vec_stl(
13695       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13696       __b, __c);
13697 }
13698 
vec_stvlxl(vector bool char __a,int __b,vector bool char * __c)13699 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b,
13700                                                vector bool char *__c) {
13701   return vec_stl(
13702       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13703       __b, __c);
13704 }
13705 
vec_stvlxl(vector short __a,int __b,short * __c)13706 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
13707                                                short *__c) {
13708   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13709                  __c);
13710 }
13711 
vec_stvlxl(vector short __a,int __b,vector short * __c)13712 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
13713                                                vector short *__c) {
13714   return vec_stl(
13715       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13716       __b, __c);
13717 }
13718 
vec_stvlxl(vector unsigned short __a,int __b,unsigned short * __c)13719 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
13720                                                int __b, unsigned short *__c) {
13721   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13722                  __c);
13723 }
13724 
vec_stvlxl(vector unsigned short __a,int __b,vector unsigned short * __c)13725 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
13726                                                int __b,
13727                                                vector unsigned short *__c) {
13728   return vec_stl(
13729       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13730       __b, __c);
13731 }
13732 
vec_stvlxl(vector bool short __a,int __b,vector bool short * __c)13733 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b,
13734                                                vector bool short *__c) {
13735   return vec_stl(
13736       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13737       __b, __c);
13738 }
13739 
vec_stvlxl(vector pixel __a,int __b,vector pixel * __c)13740 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b,
13741                                                vector pixel *__c) {
13742   return vec_stl(
13743       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13744       __b, __c);
13745 }
13746 
vec_stvlxl(vector int __a,int __b,int * __c)13747 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
13748                                                int *__c) {
13749   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13750                  __c);
13751 }
13752 
vec_stvlxl(vector int __a,int __b,vector int * __c)13753 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
13754                                                vector int *__c) {
13755   return vec_stl(
13756       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13757       __b, __c);
13758 }
13759 
vec_stvlxl(vector unsigned int __a,int __b,unsigned int * __c)13760 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
13761                                                unsigned int *__c) {
13762   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13763                  __c);
13764 }
13765 
vec_stvlxl(vector unsigned int __a,int __b,vector unsigned int * __c)13766 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
13767                                                vector unsigned int *__c) {
13768   return vec_stl(
13769       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13770       __b, __c);
13771 }
13772 
vec_stvlxl(vector bool int __a,int __b,vector bool int * __c)13773 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b,
13774                                                vector bool int *__c) {
13775   return vec_stl(
13776       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13777       __b, __c);
13778 }
13779 
vec_stvlxl(vector float __a,int __b,vector float * __c)13780 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b,
13781                                                vector float *__c) {
13782   return vec_stl(
13783       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13784       __b, __c);
13785 }
13786 
13787 /* vec_stvrx */
13788 
vec_stvrx(vector signed char __a,int __b,signed char * __c)13789 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
13790                                               signed char *__c) {
13791   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13792                 __c);
13793 }
13794 
vec_stvrx(vector signed char __a,int __b,vector signed char * __c)13795 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
13796                                               vector signed char *__c) {
13797   return vec_st(
13798       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13799       __b, __c);
13800 }
13801 
vec_stvrx(vector unsigned char __a,int __b,unsigned char * __c)13802 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
13803                                               unsigned char *__c) {
13804   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13805                 __c);
13806 }
13807 
vec_stvrx(vector unsigned char __a,int __b,vector unsigned char * __c)13808 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
13809                                               vector unsigned char *__c) {
13810   return vec_st(
13811       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13812       __b, __c);
13813 }
13814 
vec_stvrx(vector bool char __a,int __b,vector bool char * __c)13815 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b,
13816                                               vector bool char *__c) {
13817   return vec_st(
13818       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13819       __b, __c);
13820 }
13821 
vec_stvrx(vector short __a,int __b,short * __c)13822 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
13823                                               short *__c) {
13824   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13825                 __c);
13826 }
13827 
vec_stvrx(vector short __a,int __b,vector short * __c)13828 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
13829                                               vector short *__c) {
13830   return vec_st(
13831       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13832       __b, __c);
13833 }
13834 
vec_stvrx(vector unsigned short __a,int __b,unsigned short * __c)13835 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
13836                                               int __b, unsigned short *__c) {
13837   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13838                 __c);
13839 }
13840 
vec_stvrx(vector unsigned short __a,int __b,vector unsigned short * __c)13841 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
13842                                               int __b,
13843                                               vector unsigned short *__c) {
13844   return vec_st(
13845       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13846       __b, __c);
13847 }
13848 
vec_stvrx(vector bool short __a,int __b,vector bool short * __c)13849 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b,
13850                                               vector bool short *__c) {
13851   return vec_st(
13852       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13853       __b, __c);
13854 }
13855 
vec_stvrx(vector pixel __a,int __b,vector pixel * __c)13856 static __inline__ void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b,
13857                                               vector pixel *__c) {
13858   return vec_st(
13859       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13860       __b, __c);
13861 }
13862 
vec_stvrx(vector int __a,int __b,int * __c)13863 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
13864                                               int *__c) {
13865   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13866                 __c);
13867 }
13868 
vec_stvrx(vector int __a,int __b,vector int * __c)13869 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
13870                                               vector int *__c) {
13871   return vec_st(
13872       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13873       __b, __c);
13874 }
13875 
vec_stvrx(vector unsigned int __a,int __b,unsigned int * __c)13876 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
13877                                               unsigned int *__c) {
13878   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13879                 __c);
13880 }
13881 
vec_stvrx(vector unsigned int __a,int __b,vector unsigned int * __c)13882 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
13883                                               vector unsigned int *__c) {
13884   return vec_st(
13885       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13886       __b, __c);
13887 }
13888 
vec_stvrx(vector bool int __a,int __b,vector bool int * __c)13889 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b,
13890                                               vector bool int *__c) {
13891   return vec_st(
13892       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13893       __b, __c);
13894 }
13895 
vec_stvrx(vector float __a,int __b,vector float * __c)13896 static __inline__ void __ATTRS_o_ai vec_stvrx(vector float __a, int __b,
13897                                               vector float *__c) {
13898   return vec_st(
13899       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13900       __b, __c);
13901 }
13902 
13903 /* vec_stvrxl */
13904 
vec_stvrxl(vector signed char __a,int __b,signed char * __c)13905 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
13906                                                signed char *__c) {
13907   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13908                  __c);
13909 }
13910 
vec_stvrxl(vector signed char __a,int __b,vector signed char * __c)13911 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
13912                                                vector signed char *__c) {
13913   return vec_stl(
13914       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13915       __b, __c);
13916 }
13917 
vec_stvrxl(vector unsigned char __a,int __b,unsigned char * __c)13918 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
13919                                                int __b, unsigned char *__c) {
13920   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13921                  __c);
13922 }
13923 
vec_stvrxl(vector unsigned char __a,int __b,vector unsigned char * __c)13924 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
13925                                                int __b,
13926                                                vector unsigned char *__c) {
13927   return vec_stl(
13928       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13929       __b, __c);
13930 }
13931 
vec_stvrxl(vector bool char __a,int __b,vector bool char * __c)13932 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b,
13933                                                vector bool char *__c) {
13934   return vec_stl(
13935       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13936       __b, __c);
13937 }
13938 
vec_stvrxl(vector short __a,int __b,short * __c)13939 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
13940                                                short *__c) {
13941   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13942                  __c);
13943 }
13944 
vec_stvrxl(vector short __a,int __b,vector short * __c)13945 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
13946                                                vector short *__c) {
13947   return vec_stl(
13948       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13949       __b, __c);
13950 }
13951 
vec_stvrxl(vector unsigned short __a,int __b,unsigned short * __c)13952 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
13953                                                int __b, unsigned short *__c) {
13954   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13955                  __c);
13956 }
13957 
vec_stvrxl(vector unsigned short __a,int __b,vector unsigned short * __c)13958 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
13959                                                int __b,
13960                                                vector unsigned short *__c) {
13961   return vec_stl(
13962       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13963       __b, __c);
13964 }
13965 
vec_stvrxl(vector bool short __a,int __b,vector bool short * __c)13966 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b,
13967                                                vector bool short *__c) {
13968   return vec_stl(
13969       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13970       __b, __c);
13971 }
13972 
vec_stvrxl(vector pixel __a,int __b,vector pixel * __c)13973 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b,
13974                                                vector pixel *__c) {
13975   return vec_stl(
13976       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13977       __b, __c);
13978 }
13979 
vec_stvrxl(vector int __a,int __b,int * __c)13980 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
13981                                                int *__c) {
13982   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13983                  __c);
13984 }
13985 
vec_stvrxl(vector int __a,int __b,vector int * __c)13986 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
13987                                                vector int *__c) {
13988   return vec_stl(
13989       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13990       __b, __c);
13991 }
13992 
vec_stvrxl(vector unsigned int __a,int __b,unsigned int * __c)13993 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
13994                                                unsigned int *__c) {
13995   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13996                  __c);
13997 }
13998 
vec_stvrxl(vector unsigned int __a,int __b,vector unsigned int * __c)13999 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
14000                                                vector unsigned int *__c) {
14001   return vec_stl(
14002       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
14003       __b, __c);
14004 }
14005 
vec_stvrxl(vector bool int __a,int __b,vector bool int * __c)14006 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b,
14007                                                vector bool int *__c) {
14008   return vec_stl(
14009       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
14010       __b, __c);
14011 }
14012 
vec_stvrxl(vector float __a,int __b,vector float * __c)14013 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
14014                                                vector float *__c) {
14015   return vec_stl(
14016       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
14017       __b, __c);
14018 }
14019 
14020 /* vec_promote */
14021 
vec_promote(signed char __a,int __b)14022 static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
14023                                                               int __b) {
14024   vector signed char __res = (vector signed char)(0);
14025   __res[__b] = __a;
14026   return __res;
14027 }
14028 
14029 static __inline__ vector unsigned char __ATTRS_o_ai
vec_promote(unsigned char __a,int __b)14030 vec_promote(unsigned char __a, int __b) {
14031   vector unsigned char __res = (vector unsigned char)(0);
14032   __res[__b] = __a;
14033   return __res;
14034 }
14035 
vec_promote(short __a,int __b)14036 static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
14037   vector short __res = (vector short)(0);
14038   __res[__b] = __a;
14039   return __res;
14040 }
14041 
14042 static __inline__ vector unsigned short __ATTRS_o_ai
vec_promote(unsigned short __a,int __b)14043 vec_promote(unsigned short __a, int __b) {
14044   vector unsigned short __res = (vector unsigned short)(0);
14045   __res[__b] = __a;
14046   return __res;
14047 }
14048 
vec_promote(int __a,int __b)14049 static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
14050   vector int __res = (vector int)(0);
14051   __res[__b] = __a;
14052   return __res;
14053 }
14054 
vec_promote(unsigned int __a,int __b)14055 static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
14056                                                                int __b) {
14057   vector unsigned int __res = (vector unsigned int)(0);
14058   __res[__b] = __a;
14059   return __res;
14060 }
14061 
vec_promote(float __a,int __b)14062 static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
14063   vector float __res = (vector float)(0);
14064   __res[__b] = __a;
14065   return __res;
14066 }
14067 
14068 /* vec_splats */
14069 
vec_splats(signed char __a)14070 static __inline__ vector signed char __ATTRS_o_ai vec_splats(signed char __a) {
14071   return (vector signed char)(__a);
14072 }
14073 
14074 static __inline__ vector unsigned char __ATTRS_o_ai
vec_splats(unsigned char __a)14075 vec_splats(unsigned char __a) {
14076   return (vector unsigned char)(__a);
14077 }
14078 
vec_splats(short __a)14079 static __inline__ vector short __ATTRS_o_ai vec_splats(short __a) {
14080   return (vector short)(__a);
14081 }
14082 
14083 static __inline__ vector unsigned short __ATTRS_o_ai
vec_splats(unsigned short __a)14084 vec_splats(unsigned short __a) {
14085   return (vector unsigned short)(__a);
14086 }
14087 
vec_splats(int __a)14088 static __inline__ vector int __ATTRS_o_ai vec_splats(int __a) {
14089   return (vector int)(__a);
14090 }
14091 
14092 static __inline__ vector unsigned int __ATTRS_o_ai
vec_splats(unsigned int __a)14093 vec_splats(unsigned int __a) {
14094   return (vector unsigned int)(__a);
14095 }
14096 
14097 #ifdef __VSX__
14098 static __inline__ vector signed long long __ATTRS_o_ai
vec_splats(signed long long __a)14099 vec_splats(signed long long __a) {
14100   return (vector signed long long)(__a);
14101 }
14102 
14103 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_splats(unsigned long long __a)14104 vec_splats(unsigned long long __a) {
14105   return (vector unsigned long long)(__a);
14106 }
14107 
14108 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
14109 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_splats(signed __int128 __a)14110 vec_splats(signed __int128 __a) {
14111   return (vector signed __int128)(__a);
14112 }
14113 
14114 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_splats(unsigned __int128 __a)14115 vec_splats(unsigned __int128 __a) {
14116   return (vector unsigned __int128)(__a);
14117 }
14118 
14119 #endif
14120 
vec_splats(double __a)14121 static __inline__ vector double __ATTRS_o_ai vec_splats(double __a) {
14122   return (vector double)(__a);
14123 }
14124 #endif
14125 
vec_splats(float __a)14126 static __inline__ vector float __ATTRS_o_ai vec_splats(float __a) {
14127   return (vector float)(__a);
14128 }
14129 
14130 /* ----------------------------- predicates --------------------------------- */
14131 
14132 /* vec_all_eq */
14133 
vec_all_eq(vector signed char __a,vector signed char __b)14134 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
14135                                               vector signed char __b) {
14136   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
14137                                       (vector char)__b);
14138 }
14139 
vec_all_eq(vector signed char __a,vector bool char __b)14140 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
14141                                               vector bool char __b) {
14142   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
14143                                       (vector char)__b);
14144 }
14145 
vec_all_eq(vector unsigned char __a,vector unsigned char __b)14146 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
14147                                               vector unsigned char __b) {
14148   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
14149                                       (vector char)__b);
14150 }
14151 
vec_all_eq(vector unsigned char __a,vector bool char __b)14152 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
14153                                               vector bool char __b) {
14154   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
14155                                       (vector char)__b);
14156 }
14157 
vec_all_eq(vector bool char __a,vector signed char __b)14158 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
14159                                               vector signed char __b) {
14160   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
14161                                       (vector char)__b);
14162 }
14163 
vec_all_eq(vector bool char __a,vector unsigned char __b)14164 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
14165                                               vector unsigned char __b) {
14166   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
14167                                       (vector char)__b);
14168 }
14169 
vec_all_eq(vector bool char __a,vector bool char __b)14170 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
14171                                               vector bool char __b) {
14172   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
14173                                       (vector char)__b);
14174 }
14175 
vec_all_eq(vector short __a,vector short __b)14176 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
14177                                               vector short __b) {
14178   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
14179 }
14180 
vec_all_eq(vector short __a,vector bool short __b)14181 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
14182                                               vector bool short __b) {
14183   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
14184 }
14185 
vec_all_eq(vector unsigned short __a,vector unsigned short __b)14186 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
14187                                               vector unsigned short __b) {
14188   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
14189                                       (vector short)__b);
14190 }
14191 
vec_all_eq(vector unsigned short __a,vector bool short __b)14192 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
14193                                               vector bool short __b) {
14194   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
14195                                       (vector short)__b);
14196 }
14197 
vec_all_eq(vector bool short __a,vector short __b)14198 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
14199                                               vector short __b) {
14200   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
14201                                       (vector short)__b);
14202 }
14203 
vec_all_eq(vector bool short __a,vector unsigned short __b)14204 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
14205                                               vector unsigned short __b) {
14206   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
14207                                       (vector short)__b);
14208 }
14209 
vec_all_eq(vector bool short __a,vector bool short __b)14210 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
14211                                               vector bool short __b) {
14212   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
14213                                       (vector short)__b);
14214 }
14215 
vec_all_eq(vector pixel __a,vector pixel __b)14216 static __inline__ int __ATTRS_o_ai vec_all_eq(vector pixel __a,
14217                                               vector pixel __b) {
14218   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
14219                                       (vector short)__b);
14220 }
14221 
vec_all_eq(vector int __a,vector int __b)14222 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) {
14223   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
14224 }
14225 
vec_all_eq(vector int __a,vector bool int __b)14226 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a,
14227                                               vector bool int __b) {
14228   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
14229 }
14230 
vec_all_eq(vector unsigned int __a,vector unsigned int __b)14231 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
14232                                               vector unsigned int __b) {
14233   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
14234                                       (vector int)__b);
14235 }
14236 
vec_all_eq(vector unsigned int __a,vector bool int __b)14237 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
14238                                               vector bool int __b) {
14239   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
14240                                       (vector int)__b);
14241 }
14242 
vec_all_eq(vector bool int __a,vector int __b)14243 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
14244                                               vector int __b) {
14245   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
14246                                       (vector int)__b);
14247 }
14248 
vec_all_eq(vector bool int __a,vector unsigned int __b)14249 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
14250                                               vector unsigned int __b) {
14251   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
14252                                       (vector int)__b);
14253 }
14254 
vec_all_eq(vector bool int __a,vector bool int __b)14255 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
14256                                               vector bool int __b) {
14257   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
14258                                       (vector int)__b);
14259 }
14260 
14261 #ifdef __POWER8_VECTOR__
vec_all_eq(vector signed long long __a,vector signed long long __b)14262 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed long long __a,
14263                                               vector signed long long __b) {
14264   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b);
14265 }
14266 
vec_all_eq(vector long long __a,vector bool long long __b)14267 static __inline__ int __ATTRS_o_ai vec_all_eq(vector long long __a,
14268                                               vector bool long long __b) {
14269   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b);
14270 }
14271 
vec_all_eq(vector unsigned long long __a,vector unsigned long long __b)14272 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
14273                                               vector unsigned long long __b) {
14274   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
14275                                       (vector long long)__b);
14276 }
14277 
vec_all_eq(vector unsigned long long __a,vector bool long long __b)14278 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
14279                                               vector bool long long __b) {
14280   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
14281                                       (vector long long)__b);
14282 }
14283 
vec_all_eq(vector bool long long __a,vector long long __b)14284 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
14285                                               vector long long __b) {
14286   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
14287                                       (vector long long)__b);
14288 }
14289 
vec_all_eq(vector bool long long __a,vector unsigned long long __b)14290 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
14291                                               vector unsigned long long __b) {
14292   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
14293                                       (vector long long)__b);
14294 }
14295 
vec_all_eq(vector bool long long __a,vector bool long long __b)14296 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
14297                                               vector bool long long __b) {
14298   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
14299                                       (vector long long)__b);
14300 }
14301 #endif
14302 
vec_all_eq(vector float __a,vector float __b)14303 static __inline__ int __ATTRS_o_ai vec_all_eq(vector float __a,
14304                                               vector float __b) {
14305 #ifdef __VSX__
14306   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT, __a, __b);
14307 #else
14308   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
14309 #endif
14310 }
14311 
14312 #ifdef __VSX__
vec_all_eq(vector double __a,vector double __b)14313 static __inline__ int __ATTRS_o_ai vec_all_eq(vector double __a,
14314                                               vector double __b) {
14315   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT, __a, __b);
14316 }
14317 #endif
14318 
14319 #ifdef __POWER10_VECTOR__
vec_all_eq(vector signed __int128 __a,vector signed __int128 __b)14320 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed __int128 __a,
14321                                               vector signed __int128 __b) {
14322   return __builtin_altivec_vcmpequq_p(__CR6_LT, __a, __b);
14323 }
14324 
vec_all_eq(vector unsigned __int128 __a,vector unsigned __int128 __b)14325 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned __int128 __a,
14326                                               vector unsigned __int128 __b) {
14327   return __builtin_altivec_vcmpequq_p(__CR6_LT, __a, __b);
14328 }
14329 #endif
14330 
14331 /* vec_all_ge */
14332 
vec_all_ge(vector signed char __a,vector signed char __b)14333 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
14334                                               vector signed char __b) {
14335   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
14336 }
14337 
vec_all_ge(vector signed char __a,vector bool char __b)14338 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
14339                                               vector bool char __b) {
14340   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
14341 }
14342 
vec_all_ge(vector unsigned char __a,vector unsigned char __b)14343 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
14344                                               vector unsigned char __b) {
14345   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
14346 }
14347 
vec_all_ge(vector unsigned char __a,vector bool char __b)14348 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
14349                                               vector bool char __b) {
14350   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
14351 }
14352 
vec_all_ge(vector bool char __a,vector signed char __b)14353 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
14354                                               vector signed char __b) {
14355   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
14356                                       (vector unsigned char)__a);
14357 }
14358 
vec_all_ge(vector bool char __a,vector unsigned char __b)14359 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
14360                                               vector unsigned char __b) {
14361   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
14362 }
14363 
vec_all_ge(vector bool char __a,vector bool char __b)14364 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
14365                                               vector bool char __b) {
14366   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
14367                                       (vector unsigned char)__a);
14368 }
14369 
vec_all_ge(vector short __a,vector short __b)14370 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
14371                                               vector short __b) {
14372   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
14373 }
14374 
vec_all_ge(vector short __a,vector bool short __b)14375 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
14376                                               vector bool short __b) {
14377   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
14378 }
14379 
vec_all_ge(vector unsigned short __a,vector unsigned short __b)14380 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
14381                                               vector unsigned short __b) {
14382   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
14383 }
14384 
vec_all_ge(vector unsigned short __a,vector bool short __b)14385 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
14386                                               vector bool short __b) {
14387   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
14388                                       __a);
14389 }
14390 
vec_all_ge(vector bool short __a,vector short __b)14391 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
14392                                               vector short __b) {
14393   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
14394                                       (vector unsigned short)__a);
14395 }
14396 
vec_all_ge(vector bool short __a,vector unsigned short __b)14397 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
14398                                               vector unsigned short __b) {
14399   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b,
14400                                       (vector unsigned short)__a);
14401 }
14402 
vec_all_ge(vector bool short __a,vector bool short __b)14403 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
14404                                               vector bool short __b) {
14405   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
14406                                       (vector unsigned short)__a);
14407 }
14408 
vec_all_ge(vector int __a,vector int __b)14409 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) {
14410   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
14411 }
14412 
vec_all_ge(vector int __a,vector bool int __b)14413 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a,
14414                                               vector bool int __b) {
14415   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
14416 }
14417 
vec_all_ge(vector unsigned int __a,vector unsigned int __b)14418 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
14419                                               vector unsigned int __b) {
14420   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
14421 }
14422 
vec_all_ge(vector unsigned int __a,vector bool int __b)14423 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
14424                                               vector bool int __b) {
14425   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
14426 }
14427 
vec_all_ge(vector bool int __a,vector int __b)14428 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
14429                                               vector int __b) {
14430   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
14431                                       (vector unsigned int)__a);
14432 }
14433 
vec_all_ge(vector bool int __a,vector unsigned int __b)14434 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
14435                                               vector unsigned int __b) {
14436   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
14437 }
14438 
vec_all_ge(vector bool int __a,vector bool int __b)14439 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
14440                                               vector bool int __b) {
14441   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
14442                                       (vector unsigned int)__a);
14443 }
14444 
14445 #ifdef __POWER8_VECTOR__
vec_all_ge(vector signed long long __a,vector signed long long __b)14446 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
14447                                               vector signed long long __b) {
14448   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a);
14449 }
vec_all_ge(vector signed long long __a,vector bool long long __b)14450 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
14451                                               vector bool long long __b) {
14452   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b,
14453                                       __a);
14454 }
14455 
vec_all_ge(vector unsigned long long __a,vector unsigned long long __b)14456 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
14457                                               vector unsigned long long __b) {
14458   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a);
14459 }
14460 
vec_all_ge(vector unsigned long long __a,vector bool long long __b)14461 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
14462                                               vector bool long long __b) {
14463   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
14464                                       __a);
14465 }
14466 
vec_all_ge(vector bool long long __a,vector signed long long __b)14467 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
14468                                               vector signed long long __b) {
14469   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
14470                                       (vector unsigned long long)__a);
14471 }
14472 
vec_all_ge(vector bool long long __a,vector unsigned long long __b)14473 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
14474                                               vector unsigned long long __b) {
14475   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b,
14476                                       (vector unsigned long long)__a);
14477 }
14478 
vec_all_ge(vector bool long long __a,vector bool long long __b)14479 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
14480                                               vector bool long long __b) {
14481   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
14482                                       (vector unsigned long long)__a);
14483 }
14484 #endif
14485 
vec_all_ge(vector float __a,vector float __b)14486 static __inline__ int __ATTRS_o_ai vec_all_ge(vector float __a,
14487                                               vector float __b) {
14488 #ifdef __VSX__
14489   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __a, __b);
14490 #else
14491   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
14492 #endif
14493 }
14494 
14495 #ifdef __VSX__
vec_all_ge(vector double __a,vector double __b)14496 static __inline__ int __ATTRS_o_ai vec_all_ge(vector double __a,
14497                                               vector double __b) {
14498   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __a, __b);
14499 }
14500 #endif
14501 
14502 #ifdef __POWER10_VECTOR__
vec_all_ge(vector signed __int128 __a,vector signed __int128 __b)14503 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed __int128 __a,
14504                                               vector signed __int128 __b) {
14505   return __builtin_altivec_vcmpgtsq_p(__CR6_EQ, __b, __a);
14506 }
14507 
vec_all_ge(vector unsigned __int128 __a,vector unsigned __int128 __b)14508 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned __int128 __a,
14509                                               vector unsigned __int128 __b) {
14510   return __builtin_altivec_vcmpgtuq_p(__CR6_EQ, __b, __a);
14511 }
14512 #endif
14513 
14514 /* vec_all_gt */
14515 
vec_all_gt(vector signed char __a,vector signed char __b)14516 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
14517                                               vector signed char __b) {
14518   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
14519 }
14520 
vec_all_gt(vector signed char __a,vector bool char __b)14521 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
14522                                               vector bool char __b) {
14523   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
14524 }
14525 
vec_all_gt(vector unsigned char __a,vector unsigned char __b)14526 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
14527                                               vector unsigned char __b) {
14528   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
14529 }
14530 
vec_all_gt(vector unsigned char __a,vector bool char __b)14531 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
14532                                               vector bool char __b) {
14533   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
14534 }
14535 
vec_all_gt(vector bool char __a,vector signed char __b)14536 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
14537                                               vector signed char __b) {
14538   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
14539                                       (vector unsigned char)__b);
14540 }
14541 
vec_all_gt(vector bool char __a,vector unsigned char __b)14542 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
14543                                               vector unsigned char __b) {
14544   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
14545 }
14546 
vec_all_gt(vector bool char __a,vector bool char __b)14547 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
14548                                               vector bool char __b) {
14549   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
14550                                       (vector unsigned char)__b);
14551 }
14552 
vec_all_gt(vector short __a,vector short __b)14553 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
14554                                               vector short __b) {
14555   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
14556 }
14557 
vec_all_gt(vector short __a,vector bool short __b)14558 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
14559                                               vector bool short __b) {
14560   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
14561 }
14562 
vec_all_gt(vector unsigned short __a,vector unsigned short __b)14563 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
14564                                               vector unsigned short __b) {
14565   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
14566 }
14567 
vec_all_gt(vector unsigned short __a,vector bool short __b)14568 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
14569                                               vector bool short __b) {
14570   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a,
14571                                       (vector unsigned short)__b);
14572 }
14573 
vec_all_gt(vector bool short __a,vector short __b)14574 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
14575                                               vector short __b) {
14576   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
14577                                       (vector unsigned short)__b);
14578 }
14579 
vec_all_gt(vector bool short __a,vector unsigned short __b)14580 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
14581                                               vector unsigned short __b) {
14582   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
14583                                       __b);
14584 }
14585 
vec_all_gt(vector bool short __a,vector bool short __b)14586 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
14587                                               vector bool short __b) {
14588   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
14589                                       (vector unsigned short)__b);
14590 }
14591 
vec_all_gt(vector int __a,vector int __b)14592 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) {
14593   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
14594 }
14595 
vec_all_gt(vector int __a,vector bool int __b)14596 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a,
14597                                               vector bool int __b) {
14598   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
14599 }
14600 
vec_all_gt(vector unsigned int __a,vector unsigned int __b)14601 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
14602                                               vector unsigned int __b) {
14603   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
14604 }
14605 
vec_all_gt(vector unsigned int __a,vector bool int __b)14606 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
14607                                               vector bool int __b) {
14608   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
14609 }
14610 
vec_all_gt(vector bool int __a,vector int __b)14611 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
14612                                               vector int __b) {
14613   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
14614                                       (vector unsigned int)__b);
14615 }
14616 
vec_all_gt(vector bool int __a,vector unsigned int __b)14617 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
14618                                               vector unsigned int __b) {
14619   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
14620 }
14621 
vec_all_gt(vector bool int __a,vector bool int __b)14622 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
14623                                               vector bool int __b) {
14624   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
14625                                       (vector unsigned int)__b);
14626 }
14627 
14628 #ifdef __POWER8_VECTOR__
vec_all_gt(vector signed long long __a,vector signed long long __b)14629 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
14630                                               vector signed long long __b) {
14631   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b);
14632 }
vec_all_gt(vector signed long long __a,vector bool long long __b)14633 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
14634                                               vector bool long long __b) {
14635   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a,
14636                                       (vector signed long long)__b);
14637 }
14638 
vec_all_gt(vector unsigned long long __a,vector unsigned long long __b)14639 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
14640                                               vector unsigned long long __b) {
14641   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b);
14642 }
14643 
vec_all_gt(vector unsigned long long __a,vector bool long long __b)14644 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
14645                                               vector bool long long __b) {
14646   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a,
14647                                       (vector unsigned long long)__b);
14648 }
14649 
vec_all_gt(vector bool long long __a,vector signed long long __b)14650 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
14651                                               vector signed long long __b) {
14652   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
14653                                       (vector unsigned long long)__b);
14654 }
14655 
vec_all_gt(vector bool long long __a,vector unsigned long long __b)14656 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
14657                                               vector unsigned long long __b) {
14658   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
14659                                       __b);
14660 }
14661 
vec_all_gt(vector bool long long __a,vector bool long long __b)14662 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
14663                                               vector bool long long __b) {
14664   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
14665                                       (vector unsigned long long)__b);
14666 }
14667 #endif
14668 
vec_all_gt(vector float __a,vector float __b)14669 static __inline__ int __ATTRS_o_ai vec_all_gt(vector float __a,
14670                                               vector float __b) {
14671 #ifdef __VSX__
14672   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __a, __b);
14673 #else
14674   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
14675 #endif
14676 }
14677 
14678 #ifdef __VSX__
vec_all_gt(vector double __a,vector double __b)14679 static __inline__ int __ATTRS_o_ai vec_all_gt(vector double __a,
14680                                               vector double __b) {
14681   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __a, __b);
14682 }
14683 #endif
14684 
14685 #ifdef __POWER10_VECTOR__
vec_all_gt(vector signed __int128 __a,vector signed __int128 __b)14686 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed __int128 __a,
14687                                               vector signed __int128 __b) {
14688   return __builtin_altivec_vcmpgtsq_p(__CR6_LT, __a, __b);
14689 }
14690 
vec_all_gt(vector unsigned __int128 __a,vector unsigned __int128 __b)14691 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned __int128 __a,
14692                                               vector unsigned __int128 __b) {
14693   return __builtin_altivec_vcmpgtuq_p(__CR6_LT, __a, __b);
14694 }
14695 #endif
14696 
14697 /* vec_all_in */
14698 
14699 static __inline__ int __attribute__((__always_inline__))
vec_all_in(vector float __a,vector float __b)14700 vec_all_in(vector float __a, vector float __b) {
14701   return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
14702 }
14703 
14704 /* vec_all_le */
14705 
vec_all_le(vector signed char __a,vector signed char __b)14706 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
14707                                               vector signed char __b) {
14708   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
14709 }
14710 
vec_all_le(vector signed char __a,vector bool char __b)14711 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
14712                                               vector bool char __b) {
14713   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
14714 }
14715 
vec_all_le(vector unsigned char __a,vector unsigned char __b)14716 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
14717                                               vector unsigned char __b) {
14718   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
14719 }
14720 
vec_all_le(vector unsigned char __a,vector bool char __b)14721 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
14722                                               vector bool char __b) {
14723   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
14724 }
14725 
vec_all_le(vector bool char __a,vector signed char __b)14726 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
14727                                               vector signed char __b) {
14728   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
14729                                       (vector unsigned char)__b);
14730 }
14731 
vec_all_le(vector bool char __a,vector unsigned char __b)14732 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
14733                                               vector unsigned char __b) {
14734   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
14735 }
14736 
vec_all_le(vector bool char __a,vector bool char __b)14737 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
14738                                               vector bool char __b) {
14739   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
14740                                       (vector unsigned char)__b);
14741 }
14742 
vec_all_le(vector short __a,vector short __b)14743 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
14744                                               vector short __b) {
14745   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
14746 }
14747 
vec_all_le(vector short __a,vector bool short __b)14748 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
14749                                               vector bool short __b) {
14750   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
14751 }
14752 
vec_all_le(vector unsigned short __a,vector unsigned short __b)14753 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
14754                                               vector unsigned short __b) {
14755   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
14756 }
14757 
vec_all_le(vector unsigned short __a,vector bool short __b)14758 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
14759                                               vector bool short __b) {
14760   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a,
14761                                       (vector unsigned short)__b);
14762 }
14763 
vec_all_le(vector bool short __a,vector short __b)14764 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
14765                                               vector short __b) {
14766   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
14767                                       (vector unsigned short)__b);
14768 }
14769 
vec_all_le(vector bool short __a,vector unsigned short __b)14770 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
14771                                               vector unsigned short __b) {
14772   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
14773                                       __b);
14774 }
14775 
vec_all_le(vector bool short __a,vector bool short __b)14776 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
14777                                               vector bool short __b) {
14778   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
14779                                       (vector unsigned short)__b);
14780 }
14781 
vec_all_le(vector int __a,vector int __b)14782 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) {
14783   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
14784 }
14785 
vec_all_le(vector int __a,vector bool int __b)14786 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a,
14787                                               vector bool int __b) {
14788   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
14789 }
14790 
vec_all_le(vector unsigned int __a,vector unsigned int __b)14791 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
14792                                               vector unsigned int __b) {
14793   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
14794 }
14795 
vec_all_le(vector unsigned int __a,vector bool int __b)14796 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
14797                                               vector bool int __b) {
14798   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
14799 }
14800 
vec_all_le(vector bool int __a,vector int __b)14801 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
14802                                               vector int __b) {
14803   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
14804                                       (vector unsigned int)__b);
14805 }
14806 
vec_all_le(vector bool int __a,vector unsigned int __b)14807 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
14808                                               vector unsigned int __b) {
14809   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
14810 }
14811 
vec_all_le(vector bool int __a,vector bool int __b)14812 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
14813                                               vector bool int __b) {
14814   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
14815                                       (vector unsigned int)__b);
14816 }
14817 
14818 #ifdef __POWER8_VECTOR__
vec_all_le(vector signed long long __a,vector signed long long __b)14819 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
14820                                               vector signed long long __b) {
14821   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b);
14822 }
14823 
vec_all_le(vector unsigned long long __a,vector unsigned long long __b)14824 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
14825                                               vector unsigned long long __b) {
14826   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b);
14827 }
14828 
vec_all_le(vector signed long long __a,vector bool long long __b)14829 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
14830                                               vector bool long long __b) {
14831   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a,
14832                                       (vector signed long long)__b);
14833 }
14834 
vec_all_le(vector unsigned long long __a,vector bool long long __b)14835 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
14836                                               vector bool long long __b) {
14837   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a,
14838                                       (vector unsigned long long)__b);
14839 }
14840 
vec_all_le(vector bool long long __a,vector signed long long __b)14841 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
14842                                               vector signed long long __b) {
14843   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
14844                                       (vector unsigned long long)__b);
14845 }
14846 
vec_all_le(vector bool long long __a,vector unsigned long long __b)14847 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
14848                                               vector unsigned long long __b) {
14849   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
14850                                       __b);
14851 }
14852 
vec_all_le(vector bool long long __a,vector bool long long __b)14853 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
14854                                               vector bool long long __b) {
14855   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
14856                                       (vector unsigned long long)__b);
14857 }
14858 #endif
14859 
vec_all_le(vector float __a,vector float __b)14860 static __inline__ int __ATTRS_o_ai vec_all_le(vector float __a,
14861                                               vector float __b) {
14862 #ifdef __VSX__
14863   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __b, __a);
14864 #else
14865   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
14866 #endif
14867 }
14868 
14869 #ifdef __VSX__
vec_all_le(vector double __a,vector double __b)14870 static __inline__ int __ATTRS_o_ai vec_all_le(vector double __a,
14871                                               vector double __b) {
14872   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __b, __a);
14873 }
14874 #endif
14875 
14876 #ifdef __POWER10_VECTOR__
vec_all_le(vector signed __int128 __a,vector signed __int128 __b)14877 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed __int128 __a,
14878                                               vector signed __int128 __b) {
14879   return __builtin_altivec_vcmpgtsq_p(__CR6_EQ, __a, __b);
14880 }
14881 
vec_all_le(vector unsigned __int128 __a,vector unsigned __int128 __b)14882 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned __int128 __a,
14883                                               vector unsigned __int128 __b) {
14884   return __builtin_altivec_vcmpgtuq_p(__CR6_EQ, __a, __b);
14885 }
14886 #endif
14887 
14888 /* vec_all_lt */
14889 
vec_all_lt(vector signed char __a,vector signed char __b)14890 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
14891                                               vector signed char __b) {
14892   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
14893 }
14894 
vec_all_lt(vector signed char __a,vector bool char __b)14895 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
14896                                               vector bool char __b) {
14897   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
14898 }
14899 
vec_all_lt(vector unsigned char __a,vector unsigned char __b)14900 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
14901                                               vector unsigned char __b) {
14902   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
14903 }
14904 
vec_all_lt(vector unsigned char __a,vector bool char __b)14905 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
14906                                               vector bool char __b) {
14907   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
14908 }
14909 
vec_all_lt(vector bool char __a,vector signed char __b)14910 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
14911                                               vector signed char __b) {
14912   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
14913                                       (vector unsigned char)__a);
14914 }
14915 
vec_all_lt(vector bool char __a,vector unsigned char __b)14916 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
14917                                               vector unsigned char __b) {
14918   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
14919 }
14920 
vec_all_lt(vector bool char __a,vector bool char __b)14921 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
14922                                               vector bool char __b) {
14923   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
14924                                       (vector unsigned char)__a);
14925 }
14926 
vec_all_lt(vector short __a,vector short __b)14927 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
14928                                               vector short __b) {
14929   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
14930 }
14931 
vec_all_lt(vector short __a,vector bool short __b)14932 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
14933                                               vector bool short __b) {
14934   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
14935 }
14936 
vec_all_lt(vector unsigned short __a,vector unsigned short __b)14937 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
14938                                               vector unsigned short __b) {
14939   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
14940 }
14941 
vec_all_lt(vector unsigned short __a,vector bool short __b)14942 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
14943                                               vector bool short __b) {
14944   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
14945                                       __a);
14946 }
14947 
vec_all_lt(vector bool short __a,vector short __b)14948 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
14949                                               vector short __b) {
14950   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
14951                                       (vector unsigned short)__a);
14952 }
14953 
vec_all_lt(vector bool short __a,vector unsigned short __b)14954 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
14955                                               vector unsigned short __b) {
14956   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b,
14957                                       (vector unsigned short)__a);
14958 }
14959 
vec_all_lt(vector bool short __a,vector bool short __b)14960 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
14961                                               vector bool short __b) {
14962   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
14963                                       (vector unsigned short)__a);
14964 }
14965 
vec_all_lt(vector int __a,vector int __b)14966 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) {
14967   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
14968 }
14969 
vec_all_lt(vector int __a,vector bool int __b)14970 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a,
14971                                               vector bool int __b) {
14972   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
14973 }
14974 
vec_all_lt(vector unsigned int __a,vector unsigned int __b)14975 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
14976                                               vector unsigned int __b) {
14977   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
14978 }
14979 
vec_all_lt(vector unsigned int __a,vector bool int __b)14980 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
14981                                               vector bool int __b) {
14982   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
14983 }
14984 
vec_all_lt(vector bool int __a,vector int __b)14985 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
14986                                               vector int __b) {
14987   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
14988                                       (vector unsigned int)__a);
14989 }
14990 
vec_all_lt(vector bool int __a,vector unsigned int __b)14991 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
14992                                               vector unsigned int __b) {
14993   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
14994 }
14995 
vec_all_lt(vector bool int __a,vector bool int __b)14996 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
14997                                               vector bool int __b) {
14998   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
14999                                       (vector unsigned int)__a);
15000 }
15001 
15002 #ifdef __POWER8_VECTOR__
vec_all_lt(vector signed long long __a,vector signed long long __b)15003 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
15004                                               vector signed long long __b) {
15005   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a);
15006 }
15007 
vec_all_lt(vector unsigned long long __a,vector unsigned long long __b)15008 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
15009                                               vector unsigned long long __b) {
15010   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a);
15011 }
15012 
vec_all_lt(vector signed long long __a,vector bool long long __b)15013 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
15014                                               vector bool long long __b) {
15015   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b,
15016                                       __a);
15017 }
15018 
vec_all_lt(vector unsigned long long __a,vector bool long long __b)15019 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
15020                                               vector bool long long __b) {
15021   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
15022                                       __a);
15023 }
15024 
vec_all_lt(vector bool long long __a,vector signed long long __b)15025 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
15026                                               vector signed long long __b) {
15027   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
15028                                       (vector unsigned long long)__a);
15029 }
15030 
vec_all_lt(vector bool long long __a,vector unsigned long long __b)15031 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
15032                                               vector unsigned long long __b) {
15033   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b,
15034                                       (vector unsigned long long)__a);
15035 }
15036 
vec_all_lt(vector bool long long __a,vector bool long long __b)15037 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
15038                                               vector bool long long __b) {
15039   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
15040                                       (vector unsigned long long)__a);
15041 }
15042 #endif
15043 
vec_all_lt(vector float __a,vector float __b)15044 static __inline__ int __ATTRS_o_ai vec_all_lt(vector float __a,
15045                                               vector float __b) {
15046 #ifdef __VSX__
15047   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __b, __a);
15048 #else
15049   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
15050 #endif
15051 }
15052 
15053 #ifdef __VSX__
vec_all_lt(vector double __a,vector double __b)15054 static __inline__ int __ATTRS_o_ai vec_all_lt(vector double __a,
15055                                               vector double __b) {
15056   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __b, __a);
15057 }
15058 #endif
15059 
15060 #ifdef __POWER10_VECTOR__
vec_all_lt(vector signed __int128 __a,vector signed __int128 __b)15061 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed __int128 __a,
15062                                               vector signed __int128 __b) {
15063   return __builtin_altivec_vcmpgtsq_p(__CR6_LT, __b, __a);
15064 }
15065 
vec_all_lt(vector unsigned __int128 __a,vector unsigned __int128 __b)15066 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned __int128 __a,
15067                                               vector unsigned __int128 __b) {
15068   return __builtin_altivec_vcmpgtuq_p(__CR6_LT, __b, __a);
15069 }
15070 #endif
15071 
15072 /* vec_all_nan */
15073 
vec_all_nan(vector float __a)15074 static __inline__ int __ATTRS_o_ai vec_all_nan(vector float __a) {
15075 #ifdef __VSX__
15076   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __a);
15077 #else
15078   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
15079 #endif
15080 }
15081 
15082 #ifdef __VSX__
vec_all_nan(vector double __a)15083 static __inline__ int __ATTRS_o_ai vec_all_nan(vector double __a) {
15084   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __a);
15085 }
15086 #endif
15087 
15088 /* vec_all_ne */
15089 
vec_all_ne(vector signed char __a,vector signed char __b)15090 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
15091                                               vector signed char __b) {
15092   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
15093                                       (vector char)__b);
15094 }
15095 
vec_all_ne(vector signed char __a,vector bool char __b)15096 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
15097                                               vector bool char __b) {
15098   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
15099                                       (vector char)__b);
15100 }
15101 
vec_all_ne(vector unsigned char __a,vector unsigned char __b)15102 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
15103                                               vector unsigned char __b) {
15104   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
15105                                       (vector char)__b);
15106 }
15107 
vec_all_ne(vector unsigned char __a,vector bool char __b)15108 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
15109                                               vector bool char __b) {
15110   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
15111                                       (vector char)__b);
15112 }
15113 
vec_all_ne(vector bool char __a,vector signed char __b)15114 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
15115                                               vector signed char __b) {
15116   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
15117                                       (vector char)__b);
15118 }
15119 
vec_all_ne(vector bool char __a,vector unsigned char __b)15120 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
15121                                               vector unsigned char __b) {
15122   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
15123                                       (vector char)__b);
15124 }
15125 
vec_all_ne(vector bool char __a,vector bool char __b)15126 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
15127                                               vector bool char __b) {
15128   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
15129                                       (vector char)__b);
15130 }
15131 
vec_all_ne(vector short __a,vector short __b)15132 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
15133                                               vector short __b) {
15134   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
15135 }
15136 
vec_all_ne(vector short __a,vector bool short __b)15137 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
15138                                               vector bool short __b) {
15139   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
15140 }
15141 
vec_all_ne(vector unsigned short __a,vector unsigned short __b)15142 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
15143                                               vector unsigned short __b) {
15144   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
15145                                       (vector short)__b);
15146 }
15147 
vec_all_ne(vector unsigned short __a,vector bool short __b)15148 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
15149                                               vector bool short __b) {
15150   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
15151                                       (vector short)__b);
15152 }
15153 
vec_all_ne(vector bool short __a,vector short __b)15154 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
15155                                               vector short __b) {
15156   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
15157                                       (vector short)__b);
15158 }
15159 
vec_all_ne(vector bool short __a,vector unsigned short __b)15160 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
15161                                               vector unsigned short __b) {
15162   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
15163                                       (vector short)__b);
15164 }
15165 
vec_all_ne(vector bool short __a,vector bool short __b)15166 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
15167                                               vector bool short __b) {
15168   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
15169                                       (vector short)__b);
15170 }
15171 
vec_all_ne(vector pixel __a,vector pixel __b)15172 static __inline__ int __ATTRS_o_ai vec_all_ne(vector pixel __a,
15173                                               vector pixel __b) {
15174   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
15175                                       (vector short)__b);
15176 }
15177 
vec_all_ne(vector int __a,vector int __b)15178 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) {
15179   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
15180 }
15181 
vec_all_ne(vector int __a,vector bool int __b)15182 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a,
15183                                               vector bool int __b) {
15184   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
15185 }
15186 
vec_all_ne(vector unsigned int __a,vector unsigned int __b)15187 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
15188                                               vector unsigned int __b) {
15189   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
15190                                       (vector int)__b);
15191 }
15192 
vec_all_ne(vector unsigned int __a,vector bool int __b)15193 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
15194                                               vector bool int __b) {
15195   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
15196                                       (vector int)__b);
15197 }
15198 
vec_all_ne(vector bool int __a,vector int __b)15199 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
15200                                               vector int __b) {
15201   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
15202                                       (vector int)__b);
15203 }
15204 
vec_all_ne(vector bool int __a,vector unsigned int __b)15205 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
15206                                               vector unsigned int __b) {
15207   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
15208                                       (vector int)__b);
15209 }
15210 
vec_all_ne(vector bool int __a,vector bool int __b)15211 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
15212                                               vector bool int __b) {
15213   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
15214                                       (vector int)__b);
15215 }
15216 
15217 #ifdef __POWER8_VECTOR__
vec_all_ne(vector signed long long __a,vector signed long long __b)15218 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
15219                                               vector signed long long __b) {
15220   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b);
15221 }
15222 
vec_all_ne(vector unsigned long long __a,vector unsigned long long __b)15223 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
15224                                               vector unsigned long long __b) {
15225   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a,
15226                                       (vector long long)__b);
15227 }
15228 
vec_all_ne(vector signed long long __a,vector bool long long __b)15229 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
15230                                               vector bool long long __b) {
15231   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a,
15232                                       (vector signed long long)__b);
15233 }
15234 
vec_all_ne(vector unsigned long long __a,vector bool long long __b)15235 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
15236                                               vector bool long long __b) {
15237   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
15238                                       (vector signed long long)__b);
15239 }
15240 
vec_all_ne(vector bool long long __a,vector signed long long __b)15241 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
15242                                               vector signed long long __b) {
15243   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
15244                                       (vector signed long long)__b);
15245 }
15246 
vec_all_ne(vector bool long long __a,vector unsigned long long __b)15247 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
15248                                               vector unsigned long long __b) {
15249   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
15250                                       (vector signed long long)__b);
15251 }
15252 
vec_all_ne(vector bool long long __a,vector bool long long __b)15253 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
15254                                               vector bool long long __b) {
15255   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
15256                                       (vector signed long long)__b);
15257 }
15258 #endif
15259 
vec_all_ne(vector float __a,vector float __b)15260 static __inline__ int __ATTRS_o_ai vec_all_ne(vector float __a,
15261                                               vector float __b) {
15262 #ifdef __VSX__
15263   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __b);
15264 #else
15265   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
15266 #endif
15267 }
15268 
15269 #ifdef __VSX__
vec_all_ne(vector double __a,vector double __b)15270 static __inline__ int __ATTRS_o_ai vec_all_ne(vector double __a,
15271                                               vector double __b) {
15272   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
15273 }
15274 #endif
15275 
15276 #ifdef __POWER10_VECTOR__
vec_all_ne(vector signed __int128 __a,vector signed __int128 __b)15277 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed __int128 __a,
15278                                               vector signed __int128 __b) {
15279   return __builtin_altivec_vcmpequq_p(__CR6_EQ, __a, __b);
15280 }
15281 
vec_all_ne(vector unsigned __int128 __a,vector unsigned __int128 __b)15282 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned __int128 __a,
15283                                               vector unsigned __int128 __b) {
15284   return __builtin_altivec_vcmpequq_p(__CR6_EQ, __a, __b);
15285 }
15286 #endif
15287 
15288 /* vec_all_nge */
15289 
vec_all_nge(vector float __a,vector float __b)15290 static __inline__ int __ATTRS_o_ai vec_all_nge(vector float __a,
15291                                                vector float __b) {
15292 #ifdef __VSX__
15293   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ, __a, __b);
15294 #else
15295   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
15296 #endif
15297 }
15298 
15299 #ifdef __VSX__
vec_all_nge(vector double __a,vector double __b)15300 static __inline__ int __ATTRS_o_ai vec_all_nge(vector double __a,
15301                                                vector double __b) {
15302   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ, __a, __b);
15303 }
15304 #endif
15305 
15306 /* vec_all_ngt */
15307 
vec_all_ngt(vector float __a,vector float __b)15308 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector float __a,
15309                                                vector float __b) {
15310 #ifdef __VSX__
15311   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ, __a, __b);
15312 #else
15313   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
15314 #endif
15315 }
15316 
15317 #ifdef __VSX__
vec_all_ngt(vector double __a,vector double __b)15318 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector double __a,
15319                                                vector double __b) {
15320   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ, __a, __b);
15321 }
15322 #endif
15323 
15324 /* vec_all_nle */
15325 
15326 static __inline__ int __attribute__((__always_inline__))
vec_all_nle(vector float __a,vector float __b)15327 vec_all_nle(vector float __a, vector float __b) {
15328   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
15329 }
15330 
15331 /* vec_all_nlt */
15332 
15333 static __inline__ int __attribute__((__always_inline__))
vec_all_nlt(vector float __a,vector float __b)15334 vec_all_nlt(vector float __a, vector float __b) {
15335   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
15336 }
15337 
15338 /* vec_all_numeric */
15339 
15340 static __inline__ int __attribute__((__always_inline__))
vec_all_numeric(vector float __a)15341 vec_all_numeric(vector float __a) {
15342   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
15343 }
15344 
15345 /* vec_any_eq */
15346 
vec_any_eq(vector signed char __a,vector signed char __b)15347 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
15348                                               vector signed char __b) {
15349   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
15350                                       (vector char)__b);
15351 }
15352 
vec_any_eq(vector signed char __a,vector bool char __b)15353 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
15354                                               vector bool char __b) {
15355   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
15356                                       (vector char)__b);
15357 }
15358 
vec_any_eq(vector unsigned char __a,vector unsigned char __b)15359 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
15360                                               vector unsigned char __b) {
15361   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
15362                                       (vector char)__b);
15363 }
15364 
vec_any_eq(vector unsigned char __a,vector bool char __b)15365 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
15366                                               vector bool char __b) {
15367   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
15368                                       (vector char)__b);
15369 }
15370 
vec_any_eq(vector bool char __a,vector signed char __b)15371 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
15372                                               vector signed char __b) {
15373   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
15374                                       (vector char)__b);
15375 }
15376 
vec_any_eq(vector bool char __a,vector unsigned char __b)15377 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
15378                                               vector unsigned char __b) {
15379   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
15380                                       (vector char)__b);
15381 }
15382 
vec_any_eq(vector bool char __a,vector bool char __b)15383 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
15384                                               vector bool char __b) {
15385   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
15386                                       (vector char)__b);
15387 }
15388 
vec_any_eq(vector short __a,vector short __b)15389 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
15390                                               vector short __b) {
15391   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
15392 }
15393 
vec_any_eq(vector short __a,vector bool short __b)15394 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
15395                                               vector bool short __b) {
15396   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
15397 }
15398 
vec_any_eq(vector unsigned short __a,vector unsigned short __b)15399 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
15400                                               vector unsigned short __b) {
15401   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
15402                                       (vector short)__b);
15403 }
15404 
vec_any_eq(vector unsigned short __a,vector bool short __b)15405 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
15406                                               vector bool short __b) {
15407   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
15408                                       (vector short)__b);
15409 }
15410 
vec_any_eq(vector bool short __a,vector short __b)15411 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
15412                                               vector short __b) {
15413   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
15414                                       (vector short)__b);
15415 }
15416 
vec_any_eq(vector bool short __a,vector unsigned short __b)15417 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
15418                                               vector unsigned short __b) {
15419   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
15420                                       (vector short)__b);
15421 }
15422 
vec_any_eq(vector bool short __a,vector bool short __b)15423 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
15424                                               vector bool short __b) {
15425   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
15426                                       (vector short)__b);
15427 }
15428 
vec_any_eq(vector pixel __a,vector pixel __b)15429 static __inline__ int __ATTRS_o_ai vec_any_eq(vector pixel __a,
15430                                               vector pixel __b) {
15431   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
15432                                       (vector short)__b);
15433 }
15434 
vec_any_eq(vector int __a,vector int __b)15435 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) {
15436   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
15437 }
15438 
vec_any_eq(vector int __a,vector bool int __b)15439 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a,
15440                                               vector bool int __b) {
15441   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
15442 }
15443 
vec_any_eq(vector unsigned int __a,vector unsigned int __b)15444 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
15445                                               vector unsigned int __b) {
15446   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
15447                                       (vector int)__b);
15448 }
15449 
vec_any_eq(vector unsigned int __a,vector bool int __b)15450 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
15451                                               vector bool int __b) {
15452   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
15453                                       (vector int)__b);
15454 }
15455 
vec_any_eq(vector bool int __a,vector int __b)15456 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
15457                                               vector int __b) {
15458   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
15459                                       (vector int)__b);
15460 }
15461 
vec_any_eq(vector bool int __a,vector unsigned int __b)15462 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
15463                                               vector unsigned int __b) {
15464   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
15465                                       (vector int)__b);
15466 }
15467 
vec_any_eq(vector bool int __a,vector bool int __b)15468 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
15469                                               vector bool int __b) {
15470   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
15471                                       (vector int)__b);
15472 }
15473 
15474 #ifdef __POWER8_VECTOR__
vec_any_eq(vector signed long long __a,vector signed long long __b)15475 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
15476                                               vector signed long long __b) {
15477   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b);
15478 }
15479 
vec_any_eq(vector unsigned long long __a,vector unsigned long long __b)15480 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
15481                                               vector unsigned long long __b) {
15482   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a,
15483                                       (vector long long)__b);
15484 }
15485 
vec_any_eq(vector signed long long __a,vector bool long long __b)15486 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
15487                                               vector bool long long __b) {
15488   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a,
15489                                       (vector signed long long)__b);
15490 }
15491 
vec_any_eq(vector unsigned long long __a,vector bool long long __b)15492 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
15493                                               vector bool long long __b) {
15494   return __builtin_altivec_vcmpequd_p(
15495       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15496 }
15497 
vec_any_eq(vector bool long long __a,vector signed long long __b)15498 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
15499                                               vector signed long long __b) {
15500   return __builtin_altivec_vcmpequd_p(
15501       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15502 }
15503 
vec_any_eq(vector bool long long __a,vector unsigned long long __b)15504 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
15505                                               vector unsigned long long __b) {
15506   return __builtin_altivec_vcmpequd_p(
15507       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15508 }
15509 
vec_any_eq(vector bool long long __a,vector bool long long __b)15510 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
15511                                               vector bool long long __b) {
15512   return __builtin_altivec_vcmpequd_p(
15513       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15514 }
15515 #endif
15516 
vec_any_eq(vector float __a,vector float __b)15517 static __inline__ int __ATTRS_o_ai vec_any_eq(vector float __a,
15518                                               vector float __b) {
15519 #ifdef __VSX__
15520   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ_REV, __a, __b);
15521 #else
15522   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
15523 #endif
15524 }
15525 
15526 #ifdef __VSX__
vec_any_eq(vector double __a,vector double __b)15527 static __inline__ int __ATTRS_o_ai vec_any_eq(vector double __a,
15528                                               vector double __b) {
15529   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ_REV, __a, __b);
15530 }
15531 #endif
15532 
15533 #ifdef __POWER10_VECTOR__
vec_any_eq(vector signed __int128 __a,vector signed __int128 __b)15534 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed __int128 __a,
15535                                               vector signed __int128 __b) {
15536   return __builtin_altivec_vcmpequq_p(__CR6_EQ_REV, __a, __b);
15537 }
15538 
vec_any_eq(vector unsigned __int128 __a,vector unsigned __int128 __b)15539 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned __int128 __a,
15540                                               vector unsigned __int128 __b) {
15541   return __builtin_altivec_vcmpequq_p(__CR6_EQ_REV, __a, __b);
15542 }
15543 #endif
15544 
15545 /* vec_any_ge */
15546 
vec_any_ge(vector signed char __a,vector signed char __b)15547 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
15548                                               vector signed char __b) {
15549   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
15550 }
15551 
vec_any_ge(vector signed char __a,vector bool char __b)15552 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
15553                                               vector bool char __b) {
15554   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b,
15555                                       __a);
15556 }
15557 
vec_any_ge(vector unsigned char __a,vector unsigned char __b)15558 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
15559                                               vector unsigned char __b) {
15560   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
15561 }
15562 
vec_any_ge(vector unsigned char __a,vector bool char __b)15563 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
15564                                               vector bool char __b) {
15565   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
15566                                       __a);
15567 }
15568 
vec_any_ge(vector bool char __a,vector signed char __b)15569 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
15570                                               vector signed char __b) {
15571   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
15572                                       (vector unsigned char)__a);
15573 }
15574 
vec_any_ge(vector bool char __a,vector unsigned char __b)15575 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
15576                                               vector unsigned char __b) {
15577   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b,
15578                                       (vector unsigned char)__a);
15579 }
15580 
vec_any_ge(vector bool char __a,vector bool char __b)15581 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
15582                                               vector bool char __b) {
15583   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
15584                                       (vector unsigned char)__a);
15585 }
15586 
vec_any_ge(vector short __a,vector short __b)15587 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
15588                                               vector short __b) {
15589   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
15590 }
15591 
vec_any_ge(vector short __a,vector bool short __b)15592 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
15593                                               vector bool short __b) {
15594   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
15595 }
15596 
vec_any_ge(vector unsigned short __a,vector unsigned short __b)15597 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
15598                                               vector unsigned short __b) {
15599   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
15600 }
15601 
vec_any_ge(vector unsigned short __a,vector bool short __b)15602 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
15603                                               vector bool short __b) {
15604   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
15605                                       __a);
15606 }
15607 
vec_any_ge(vector bool short __a,vector short __b)15608 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
15609                                               vector short __b) {
15610   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
15611                                       (vector unsigned short)__a);
15612 }
15613 
vec_any_ge(vector bool short __a,vector unsigned short __b)15614 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
15615                                               vector unsigned short __b) {
15616   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b,
15617                                       (vector unsigned short)__a);
15618 }
15619 
vec_any_ge(vector bool short __a,vector bool short __b)15620 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
15621                                               vector bool short __b) {
15622   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
15623                                       (vector unsigned short)__a);
15624 }
15625 
vec_any_ge(vector int __a,vector int __b)15626 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) {
15627   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
15628 }
15629 
vec_any_ge(vector int __a,vector bool int __b)15630 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a,
15631                                               vector bool int __b) {
15632   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
15633 }
15634 
vec_any_ge(vector unsigned int __a,vector unsigned int __b)15635 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
15636                                               vector unsigned int __b) {
15637   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
15638 }
15639 
vec_any_ge(vector unsigned int __a,vector bool int __b)15640 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
15641                                               vector bool int __b) {
15642   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
15643                                       __a);
15644 }
15645 
vec_any_ge(vector bool int __a,vector int __b)15646 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
15647                                               vector int __b) {
15648   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
15649                                       (vector unsigned int)__a);
15650 }
15651 
vec_any_ge(vector bool int __a,vector unsigned int __b)15652 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
15653                                               vector unsigned int __b) {
15654   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b,
15655                                       (vector unsigned int)__a);
15656 }
15657 
vec_any_ge(vector bool int __a,vector bool int __b)15658 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
15659                                               vector bool int __b) {
15660   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
15661                                       (vector unsigned int)__a);
15662 }
15663 
15664 #ifdef __POWER8_VECTOR__
vec_any_ge(vector signed long long __a,vector signed long long __b)15665 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
15666                                               vector signed long long __b) {
15667   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a);
15668 }
15669 
vec_any_ge(vector unsigned long long __a,vector unsigned long long __b)15670 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
15671                                               vector unsigned long long __b) {
15672   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a);
15673 }
15674 
vec_any_ge(vector signed long long __a,vector bool long long __b)15675 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
15676                                               vector bool long long __b) {
15677   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV,
15678                                       (vector signed long long)__b, __a);
15679 }
15680 
vec_any_ge(vector unsigned long long __a,vector bool long long __b)15681 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
15682                                               vector bool long long __b) {
15683   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15684                                       (vector unsigned long long)__b, __a);
15685 }
15686 
vec_any_ge(vector bool long long __a,vector signed long long __b)15687 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
15688                                               vector signed long long __b) {
15689   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15690                                       (vector unsigned long long)__b,
15691                                       (vector unsigned long long)__a);
15692 }
15693 
vec_any_ge(vector bool long long __a,vector unsigned long long __b)15694 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
15695                                               vector unsigned long long __b) {
15696   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b,
15697                                       (vector unsigned long long)__a);
15698 }
15699 
vec_any_ge(vector bool long long __a,vector bool long long __b)15700 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
15701                                               vector bool long long __b) {
15702   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15703                                       (vector unsigned long long)__b,
15704                                       (vector unsigned long long)__a);
15705 }
15706 #endif
15707 
vec_any_ge(vector float __a,vector float __b)15708 static __inline__ int __ATTRS_o_ai vec_any_ge(vector float __a,
15709                                               vector float __b) {
15710 #ifdef __VSX__
15711   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __a, __b);
15712 #else
15713   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
15714 #endif
15715 }
15716 
15717 #ifdef __VSX__
vec_any_ge(vector double __a,vector double __b)15718 static __inline__ int __ATTRS_o_ai vec_any_ge(vector double __a,
15719                                               vector double __b) {
15720   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __a, __b);
15721 }
15722 #endif
15723 
15724 #ifdef __POWER10_VECTOR__
vec_any_ge(vector signed __int128 __a,vector signed __int128 __b)15725 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed __int128 __a,
15726                                               vector signed __int128 __b) {
15727   return __builtin_altivec_vcmpgtsq_p(__CR6_LT_REV, __b, __a);
15728 }
15729 
vec_any_ge(vector unsigned __int128 __a,vector unsigned __int128 __b)15730 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned __int128 __a,
15731                                               vector unsigned __int128 __b) {
15732   return __builtin_altivec_vcmpgtuq_p(__CR6_LT_REV, __b, __a);
15733 }
15734 #endif
15735 
15736 /* vec_any_gt */
15737 
vec_any_gt(vector signed char __a,vector signed char __b)15738 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
15739                                               vector signed char __b) {
15740   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
15741 }
15742 
vec_any_gt(vector signed char __a,vector bool char __b)15743 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
15744                                               vector bool char __b) {
15745   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a,
15746                                       (vector signed char)__b);
15747 }
15748 
vec_any_gt(vector unsigned char __a,vector unsigned char __b)15749 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
15750                                               vector unsigned char __b) {
15751   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
15752 }
15753 
vec_any_gt(vector unsigned char __a,vector bool char __b)15754 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
15755                                               vector bool char __b) {
15756   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a,
15757                                       (vector unsigned char)__b);
15758 }
15759 
vec_any_gt(vector bool char __a,vector signed char __b)15760 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
15761                                               vector signed char __b) {
15762   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
15763                                       (vector unsigned char)__b);
15764 }
15765 
vec_any_gt(vector bool char __a,vector unsigned char __b)15766 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
15767                                               vector unsigned char __b) {
15768   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
15769                                       __b);
15770 }
15771 
vec_any_gt(vector bool char __a,vector bool char __b)15772 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
15773                                               vector bool char __b) {
15774   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
15775                                       (vector unsigned char)__b);
15776 }
15777 
vec_any_gt(vector short __a,vector short __b)15778 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
15779                                               vector short __b) {
15780   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
15781 }
15782 
vec_any_gt(vector short __a,vector bool short __b)15783 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
15784                                               vector bool short __b) {
15785   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
15786 }
15787 
vec_any_gt(vector unsigned short __a,vector unsigned short __b)15788 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
15789                                               vector unsigned short __b) {
15790   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
15791 }
15792 
vec_any_gt(vector unsigned short __a,vector bool short __b)15793 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
15794                                               vector bool short __b) {
15795   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a,
15796                                       (vector unsigned short)__b);
15797 }
15798 
vec_any_gt(vector bool short __a,vector short __b)15799 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
15800                                               vector short __b) {
15801   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
15802                                       (vector unsigned short)__b);
15803 }
15804 
vec_any_gt(vector bool short __a,vector unsigned short __b)15805 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
15806                                               vector unsigned short __b) {
15807   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
15808                                       __b);
15809 }
15810 
vec_any_gt(vector bool short __a,vector bool short __b)15811 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
15812                                               vector bool short __b) {
15813   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
15814                                       (vector unsigned short)__b);
15815 }
15816 
vec_any_gt(vector int __a,vector int __b)15817 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) {
15818   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
15819 }
15820 
vec_any_gt(vector int __a,vector bool int __b)15821 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a,
15822                                               vector bool int __b) {
15823   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
15824 }
15825 
vec_any_gt(vector unsigned int __a,vector unsigned int __b)15826 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
15827                                               vector unsigned int __b) {
15828   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
15829 }
15830 
vec_any_gt(vector unsigned int __a,vector bool int __b)15831 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
15832                                               vector bool int __b) {
15833   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a,
15834                                       (vector unsigned int)__b);
15835 }
15836 
vec_any_gt(vector bool int __a,vector int __b)15837 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
15838                                               vector int __b) {
15839   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
15840                                       (vector unsigned int)__b);
15841 }
15842 
vec_any_gt(vector bool int __a,vector unsigned int __b)15843 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
15844                                               vector unsigned int __b) {
15845   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
15846                                       __b);
15847 }
15848 
vec_any_gt(vector bool int __a,vector bool int __b)15849 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
15850                                               vector bool int __b) {
15851   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
15852                                       (vector unsigned int)__b);
15853 }
15854 
15855 #ifdef __POWER8_VECTOR__
vec_any_gt(vector signed long long __a,vector signed long long __b)15856 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
15857                                               vector signed long long __b) {
15858   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b);
15859 }
15860 
vec_any_gt(vector unsigned long long __a,vector unsigned long long __b)15861 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
15862                                               vector unsigned long long __b) {
15863   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b);
15864 }
15865 
vec_any_gt(vector signed long long __a,vector bool long long __b)15866 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
15867                                               vector bool long long __b) {
15868   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a,
15869                                       (vector signed long long)__b);
15870 }
15871 
vec_any_gt(vector unsigned long long __a,vector bool long long __b)15872 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
15873                                               vector bool long long __b) {
15874   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a,
15875                                       (vector unsigned long long)__b);
15876 }
15877 
vec_any_gt(vector bool long long __a,vector signed long long __b)15878 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
15879                                               vector signed long long __b) {
15880   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15881                                       (vector unsigned long long)__a,
15882                                       (vector unsigned long long)__b);
15883 }
15884 
vec_any_gt(vector bool long long __a,vector unsigned long long __b)15885 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
15886                                               vector unsigned long long __b) {
15887   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15888                                       (vector unsigned long long)__a, __b);
15889 }
15890 
vec_any_gt(vector bool long long __a,vector bool long long __b)15891 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
15892                                               vector bool long long __b) {
15893   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15894                                       (vector unsigned long long)__a,
15895                                       (vector unsigned long long)__b);
15896 }
15897 #endif
15898 
vec_any_gt(vector float __a,vector float __b)15899 static __inline__ int __ATTRS_o_ai vec_any_gt(vector float __a,
15900                                               vector float __b) {
15901 #ifdef __VSX__
15902   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __a, __b);
15903 #else
15904   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
15905 #endif
15906 }
15907 
15908 #ifdef __VSX__
vec_any_gt(vector double __a,vector double __b)15909 static __inline__ int __ATTRS_o_ai vec_any_gt(vector double __a,
15910                                               vector double __b) {
15911   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __a, __b);
15912 }
15913 #endif
15914 
15915 #ifdef __POWER10_VECTOR__
vec_any_gt(vector signed __int128 __a,vector signed __int128 __b)15916 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed __int128 __a,
15917                                               vector signed __int128 __b) {
15918   return __builtin_altivec_vcmpgtsq_p(__CR6_EQ_REV, __a, __b);
15919 }
15920 
vec_any_gt(vector unsigned __int128 __a,vector unsigned __int128 __b)15921 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned __int128 __a,
15922                                               vector unsigned __int128 __b) {
15923   return __builtin_altivec_vcmpgtuq_p(__CR6_EQ_REV, __a, __b);
15924 }
15925 #endif
15926 
15927 /* vec_any_le */
15928 
vec_any_le(vector signed char __a,vector signed char __b)15929 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
15930                                               vector signed char __b) {
15931   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
15932 }
15933 
vec_any_le(vector signed char __a,vector bool char __b)15934 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
15935                                               vector bool char __b) {
15936   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a,
15937                                       (vector signed char)__b);
15938 }
15939 
vec_any_le(vector unsigned char __a,vector unsigned char __b)15940 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
15941                                               vector unsigned char __b) {
15942   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
15943 }
15944 
vec_any_le(vector unsigned char __a,vector bool char __b)15945 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
15946                                               vector bool char __b) {
15947   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a,
15948                                       (vector unsigned char)__b);
15949 }
15950 
vec_any_le(vector bool char __a,vector signed char __b)15951 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
15952                                               vector signed char __b) {
15953   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
15954                                       (vector unsigned char)__b);
15955 }
15956 
vec_any_le(vector bool char __a,vector unsigned char __b)15957 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
15958                                               vector unsigned char __b) {
15959   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
15960                                       __b);
15961 }
15962 
vec_any_le(vector bool char __a,vector bool char __b)15963 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
15964                                               vector bool char __b) {
15965   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
15966                                       (vector unsigned char)__b);
15967 }
15968 
vec_any_le(vector short __a,vector short __b)15969 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
15970                                               vector short __b) {
15971   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
15972 }
15973 
vec_any_le(vector short __a,vector bool short __b)15974 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
15975                                               vector bool short __b) {
15976   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
15977 }
15978 
vec_any_le(vector unsigned short __a,vector unsigned short __b)15979 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
15980                                               vector unsigned short __b) {
15981   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
15982 }
15983 
vec_any_le(vector unsigned short __a,vector bool short __b)15984 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
15985                                               vector bool short __b) {
15986   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a,
15987                                       (vector unsigned short)__b);
15988 }
15989 
vec_any_le(vector bool short __a,vector short __b)15990 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
15991                                               vector short __b) {
15992   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
15993                                       (vector unsigned short)__b);
15994 }
15995 
vec_any_le(vector bool short __a,vector unsigned short __b)15996 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
15997                                               vector unsigned short __b) {
15998   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
15999                                       __b);
16000 }
16001 
vec_any_le(vector bool short __a,vector bool short __b)16002 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
16003                                               vector bool short __b) {
16004   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
16005                                       (vector unsigned short)__b);
16006 }
16007 
vec_any_le(vector int __a,vector int __b)16008 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) {
16009   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
16010 }
16011 
vec_any_le(vector int __a,vector bool int __b)16012 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a,
16013                                               vector bool int __b) {
16014   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
16015 }
16016 
vec_any_le(vector unsigned int __a,vector unsigned int __b)16017 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
16018                                               vector unsigned int __b) {
16019   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
16020 }
16021 
vec_any_le(vector unsigned int __a,vector bool int __b)16022 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
16023                                               vector bool int __b) {
16024   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a,
16025                                       (vector unsigned int)__b);
16026 }
16027 
vec_any_le(vector bool int __a,vector int __b)16028 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
16029                                               vector int __b) {
16030   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
16031                                       (vector unsigned int)__b);
16032 }
16033 
vec_any_le(vector bool int __a,vector unsigned int __b)16034 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
16035                                               vector unsigned int __b) {
16036   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
16037                                       __b);
16038 }
16039 
vec_any_le(vector bool int __a,vector bool int __b)16040 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
16041                                               vector bool int __b) {
16042   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
16043                                       (vector unsigned int)__b);
16044 }
16045 
16046 #ifdef __POWER8_VECTOR__
vec_any_le(vector signed long long __a,vector signed long long __b)16047 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
16048                                               vector signed long long __b) {
16049   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b);
16050 }
16051 
vec_any_le(vector unsigned long long __a,vector unsigned long long __b)16052 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
16053                                               vector unsigned long long __b) {
16054   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b);
16055 }
16056 
vec_any_le(vector signed long long __a,vector bool long long __b)16057 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
16058                                               vector bool long long __b) {
16059   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a,
16060                                       (vector signed long long)__b);
16061 }
16062 
vec_any_le(vector unsigned long long __a,vector bool long long __b)16063 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
16064                                               vector bool long long __b) {
16065   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a,
16066                                       (vector unsigned long long)__b);
16067 }
16068 
vec_any_le(vector bool long long __a,vector signed long long __b)16069 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
16070                                               vector signed long long __b) {
16071   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
16072                                       (vector unsigned long long)__a,
16073                                       (vector unsigned long long)__b);
16074 }
16075 
vec_any_le(vector bool long long __a,vector unsigned long long __b)16076 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
16077                                               vector unsigned long long __b) {
16078   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
16079                                       (vector unsigned long long)__a, __b);
16080 }
16081 
vec_any_le(vector bool long long __a,vector bool long long __b)16082 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
16083                                               vector bool long long __b) {
16084   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
16085                                       (vector unsigned long long)__a,
16086                                       (vector unsigned long long)__b);
16087 }
16088 #endif
16089 
vec_any_le(vector float __a,vector float __b)16090 static __inline__ int __ATTRS_o_ai vec_any_le(vector float __a,
16091                                               vector float __b) {
16092 #ifdef __VSX__
16093   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __b, __a);
16094 #else
16095   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
16096 #endif
16097 }
16098 
16099 #ifdef __VSX__
vec_any_le(vector double __a,vector double __b)16100 static __inline__ int __ATTRS_o_ai vec_any_le(vector double __a,
16101                                               vector double __b) {
16102   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __b, __a);
16103 }
16104 #endif
16105 
16106 #ifdef __POWER10_VECTOR__
vec_any_le(vector signed __int128 __a,vector signed __int128 __b)16107 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed __int128 __a,
16108                                               vector signed __int128 __b) {
16109   return __builtin_altivec_vcmpgtsq_p(__CR6_LT_REV, __a, __b);
16110 }
16111 
vec_any_le(vector unsigned __int128 __a,vector unsigned __int128 __b)16112 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned __int128 __a,
16113                                               vector unsigned __int128 __b) {
16114   return __builtin_altivec_vcmpgtuq_p(__CR6_LT_REV, __a, __b);
16115 }
16116 #endif
16117 
16118 /* vec_any_lt */
16119 
vec_any_lt(vector signed char __a,vector signed char __b)16120 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
16121                                               vector signed char __b) {
16122   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
16123 }
16124 
vec_any_lt(vector signed char __a,vector bool char __b)16125 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
16126                                               vector bool char __b) {
16127   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b,
16128                                       __a);
16129 }
16130 
vec_any_lt(vector unsigned char __a,vector unsigned char __b)16131 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
16132                                               vector unsigned char __b) {
16133   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
16134 }
16135 
vec_any_lt(vector unsigned char __a,vector bool char __b)16136 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
16137                                               vector bool char __b) {
16138   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
16139                                       __a);
16140 }
16141 
vec_any_lt(vector bool char __a,vector signed char __b)16142 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
16143                                               vector signed char __b) {
16144   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
16145                                       (vector unsigned char)__a);
16146 }
16147 
vec_any_lt(vector bool char __a,vector unsigned char __b)16148 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
16149                                               vector unsigned char __b) {
16150   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b,
16151                                       (vector unsigned char)__a);
16152 }
16153 
vec_any_lt(vector bool char __a,vector bool char __b)16154 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
16155                                               vector bool char __b) {
16156   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
16157                                       (vector unsigned char)__a);
16158 }
16159 
vec_any_lt(vector short __a,vector short __b)16160 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
16161                                               vector short __b) {
16162   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
16163 }
16164 
vec_any_lt(vector short __a,vector bool short __b)16165 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
16166                                               vector bool short __b) {
16167   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
16168 }
16169 
vec_any_lt(vector unsigned short __a,vector unsigned short __b)16170 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
16171                                               vector unsigned short __b) {
16172   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
16173 }
16174 
vec_any_lt(vector unsigned short __a,vector bool short __b)16175 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
16176                                               vector bool short __b) {
16177   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
16178                                       __a);
16179 }
16180 
vec_any_lt(vector bool short __a,vector short __b)16181 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
16182                                               vector short __b) {
16183   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
16184                                       (vector unsigned short)__a);
16185 }
16186 
vec_any_lt(vector bool short __a,vector unsigned short __b)16187 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
16188                                               vector unsigned short __b) {
16189   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b,
16190                                       (vector unsigned short)__a);
16191 }
16192 
vec_any_lt(vector bool short __a,vector bool short __b)16193 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
16194                                               vector bool short __b) {
16195   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
16196                                       (vector unsigned short)__a);
16197 }
16198 
vec_any_lt(vector int __a,vector int __b)16199 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) {
16200   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
16201 }
16202 
vec_any_lt(vector int __a,vector bool int __b)16203 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a,
16204                                               vector bool int __b) {
16205   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
16206 }
16207 
vec_any_lt(vector unsigned int __a,vector unsigned int __b)16208 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
16209                                               vector unsigned int __b) {
16210   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
16211 }
16212 
vec_any_lt(vector unsigned int __a,vector bool int __b)16213 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
16214                                               vector bool int __b) {
16215   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
16216                                       __a);
16217 }
16218 
vec_any_lt(vector bool int __a,vector int __b)16219 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
16220                                               vector int __b) {
16221   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
16222                                       (vector unsigned int)__a);
16223 }
16224 
vec_any_lt(vector bool int __a,vector unsigned int __b)16225 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
16226                                               vector unsigned int __b) {
16227   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b,
16228                                       (vector unsigned int)__a);
16229 }
16230 
vec_any_lt(vector bool int __a,vector bool int __b)16231 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
16232                                               vector bool int __b) {
16233   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
16234                                       (vector unsigned int)__a);
16235 }
16236 
16237 #ifdef __POWER8_VECTOR__
vec_any_lt(vector signed long long __a,vector signed long long __b)16238 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
16239                                               vector signed long long __b) {
16240   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a);
16241 }
16242 
vec_any_lt(vector unsigned long long __a,vector unsigned long long __b)16243 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
16244                                               vector unsigned long long __b) {
16245   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a);
16246 }
16247 
vec_any_lt(vector signed long long __a,vector bool long long __b)16248 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
16249                                               vector bool long long __b) {
16250   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV,
16251                                       (vector signed long long)__b, __a);
16252 }
16253 
vec_any_lt(vector unsigned long long __a,vector bool long long __b)16254 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
16255                                               vector bool long long __b) {
16256   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
16257                                       (vector unsigned long long)__b, __a);
16258 }
16259 
vec_any_lt(vector bool long long __a,vector signed long long __b)16260 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
16261                                               vector signed long long __b) {
16262   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
16263                                       (vector unsigned long long)__b,
16264                                       (vector unsigned long long)__a);
16265 }
16266 
vec_any_lt(vector bool long long __a,vector unsigned long long __b)16267 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
16268                                               vector unsigned long long __b) {
16269   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b,
16270                                       (vector unsigned long long)__a);
16271 }
16272 
vec_any_lt(vector bool long long __a,vector bool long long __b)16273 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
16274                                               vector bool long long __b) {
16275   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
16276                                       (vector unsigned long long)__b,
16277                                       (vector unsigned long long)__a);
16278 }
16279 #endif
16280 
vec_any_lt(vector float __a,vector float __b)16281 static __inline__ int __ATTRS_o_ai vec_any_lt(vector float __a,
16282                                               vector float __b) {
16283 #ifdef __VSX__
16284   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __b, __a);
16285 #else
16286   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
16287 #endif
16288 }
16289 
16290 #ifdef __VSX__
vec_any_lt(vector double __a,vector double __b)16291 static __inline__ int __ATTRS_o_ai vec_any_lt(vector double __a,
16292                                               vector double __b) {
16293   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __b, __a);
16294 }
16295 #endif
16296 
16297 #ifdef __POWER10_VECTOR__
vec_any_lt(vector signed __int128 __a,vector signed __int128 __b)16298 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed __int128 __a,
16299                                               vector signed __int128 __b) {
16300   return __builtin_altivec_vcmpgtsq_p(__CR6_EQ_REV, __b, __a);
16301 }
16302 
vec_any_lt(vector unsigned __int128 __a,vector unsigned __int128 __b)16303 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned __int128 __a,
16304                                               vector unsigned __int128 __b) {
16305   return __builtin_altivec_vcmpgtuq_p(__CR6_EQ_REV, __b, __a);
16306 }
16307 #endif
16308 
16309 /* vec_any_nan */
16310 
16311 static __inline__ int __attribute__((__always_inline__))
vec_any_nan(vector float __a)16312 vec_any_nan(vector float __a) {
16313   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
16314 }
16315 
16316 /* vec_any_ne */
16317 
vec_any_ne(vector signed char __a,vector signed char __b)16318 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
16319                                               vector signed char __b) {
16320   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
16321                                       (vector char)__b);
16322 }
16323 
vec_any_ne(vector signed char __a,vector bool char __b)16324 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
16325                                               vector bool char __b) {
16326   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
16327                                       (vector char)__b);
16328 }
16329 
vec_any_ne(vector unsigned char __a,vector unsigned char __b)16330 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
16331                                               vector unsigned char __b) {
16332   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
16333                                       (vector char)__b);
16334 }
16335 
vec_any_ne(vector unsigned char __a,vector bool char __b)16336 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
16337                                               vector bool char __b) {
16338   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
16339                                       (vector char)__b);
16340 }
16341 
vec_any_ne(vector bool char __a,vector signed char __b)16342 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
16343                                               vector signed char __b) {
16344   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
16345                                       (vector char)__b);
16346 }
16347 
vec_any_ne(vector bool char __a,vector unsigned char __b)16348 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
16349                                               vector unsigned char __b) {
16350   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
16351                                       (vector char)__b);
16352 }
16353 
vec_any_ne(vector bool char __a,vector bool char __b)16354 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
16355                                               vector bool char __b) {
16356   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
16357                                       (vector char)__b);
16358 }
16359 
vec_any_ne(vector short __a,vector short __b)16360 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
16361                                               vector short __b) {
16362   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
16363 }
16364 
vec_any_ne(vector short __a,vector bool short __b)16365 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
16366                                               vector bool short __b) {
16367   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
16368 }
16369 
vec_any_ne(vector unsigned short __a,vector unsigned short __b)16370 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
16371                                               vector unsigned short __b) {
16372   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
16373                                       (vector short)__b);
16374 }
16375 
vec_any_ne(vector unsigned short __a,vector bool short __b)16376 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
16377                                               vector bool short __b) {
16378   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
16379                                       (vector short)__b);
16380 }
16381 
vec_any_ne(vector bool short __a,vector short __b)16382 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
16383                                               vector short __b) {
16384   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
16385                                       (vector short)__b);
16386 }
16387 
vec_any_ne(vector bool short __a,vector unsigned short __b)16388 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
16389                                               vector unsigned short __b) {
16390   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
16391                                       (vector short)__b);
16392 }
16393 
vec_any_ne(vector bool short __a,vector bool short __b)16394 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
16395                                               vector bool short __b) {
16396   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
16397                                       (vector short)__b);
16398 }
16399 
vec_any_ne(vector pixel __a,vector pixel __b)16400 static __inline__ int __ATTRS_o_ai vec_any_ne(vector pixel __a,
16401                                               vector pixel __b) {
16402   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
16403                                       (vector short)__b);
16404 }
16405 
vec_any_ne(vector int __a,vector int __b)16406 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) {
16407   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
16408 }
16409 
vec_any_ne(vector int __a,vector bool int __b)16410 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a,
16411                                               vector bool int __b) {
16412   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
16413 }
16414 
vec_any_ne(vector unsigned int __a,vector unsigned int __b)16415 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
16416                                               vector unsigned int __b) {
16417   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
16418                                       (vector int)__b);
16419 }
16420 
vec_any_ne(vector unsigned int __a,vector bool int __b)16421 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
16422                                               vector bool int __b) {
16423   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
16424                                       (vector int)__b);
16425 }
16426 
vec_any_ne(vector bool int __a,vector int __b)16427 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
16428                                               vector int __b) {
16429   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
16430                                       (vector int)__b);
16431 }
16432 
vec_any_ne(vector bool int __a,vector unsigned int __b)16433 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
16434                                               vector unsigned int __b) {
16435   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
16436                                       (vector int)__b);
16437 }
16438 
vec_any_ne(vector bool int __a,vector bool int __b)16439 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
16440                                               vector bool int __b) {
16441   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
16442                                       (vector int)__b);
16443 }
16444 
16445 #ifdef __POWER8_VECTOR__
vec_any_ne(vector signed long long __a,vector signed long long __b)16446 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
16447                                               vector signed long long __b) {
16448   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b);
16449 }
16450 
vec_any_ne(vector unsigned long long __a,vector unsigned long long __b)16451 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
16452                                               vector unsigned long long __b) {
16453   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a,
16454                                       (vector long long)__b);
16455 }
16456 
vec_any_ne(vector signed long long __a,vector bool long long __b)16457 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
16458                                               vector bool long long __b) {
16459   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a,
16460                                       (vector signed long long)__b);
16461 }
16462 
vec_any_ne(vector unsigned long long __a,vector bool long long __b)16463 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
16464                                               vector bool long long __b) {
16465   return __builtin_altivec_vcmpequd_p(
16466       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
16467 }
16468 
vec_any_ne(vector bool long long __a,vector signed long long __b)16469 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
16470                                               vector signed long long __b) {
16471   return __builtin_altivec_vcmpequd_p(
16472       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
16473 }
16474 
vec_any_ne(vector bool long long __a,vector unsigned long long __b)16475 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
16476                                               vector unsigned long long __b) {
16477   return __builtin_altivec_vcmpequd_p(
16478       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
16479 }
16480 
vec_any_ne(vector bool long long __a,vector bool long long __b)16481 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
16482                                               vector bool long long __b) {
16483   return __builtin_altivec_vcmpequd_p(
16484       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
16485 }
16486 #endif
16487 
vec_any_ne(vector float __a,vector float __b)16488 static __inline__ int __ATTRS_o_ai vec_any_ne(vector float __a,
16489                                               vector float __b) {
16490 #ifdef __VSX__
16491   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT_REV, __a, __b);
16492 #else
16493   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
16494 #endif
16495 }
16496 
16497 #ifdef __VSX__
vec_any_ne(vector double __a,vector double __b)16498 static __inline__ int __ATTRS_o_ai vec_any_ne(vector double __a,
16499                                               vector double __b) {
16500   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT_REV, __a, __b);
16501 }
16502 #endif
16503 
16504 #ifdef __POWER10_VECTOR__
vec_any_ne(vector signed __int128 __a,vector signed __int128 __b)16505 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed __int128 __a,
16506                                               vector signed __int128 __b) {
16507   return __builtin_altivec_vcmpequq_p(__CR6_LT_REV, __a, __b);
16508 }
16509 
vec_any_ne(vector unsigned __int128 __a,vector unsigned __int128 __b)16510 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned __int128 __a,
16511                                               vector unsigned __int128 __b) {
16512   return __builtin_altivec_vcmpequq_p(__CR6_LT_REV, __a, __b);
16513 }
16514 #endif
16515 
16516 /* vec_any_nge */
16517 
16518 static __inline__ int __attribute__((__always_inline__))
vec_any_nge(vector float __a,vector float __b)16519 vec_any_nge(vector float __a, vector float __b) {
16520   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
16521 }
16522 
16523 /* vec_any_ngt */
16524 
16525 static __inline__ int __attribute__((__always_inline__))
vec_any_ngt(vector float __a,vector float __b)16526 vec_any_ngt(vector float __a, vector float __b) {
16527   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
16528 }
16529 
16530 /* vec_any_nle */
16531 
16532 static __inline__ int __attribute__((__always_inline__))
vec_any_nle(vector float __a,vector float __b)16533 vec_any_nle(vector float __a, vector float __b) {
16534   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
16535 }
16536 
16537 /* vec_any_nlt */
16538 
16539 static __inline__ int __attribute__((__always_inline__))
vec_any_nlt(vector float __a,vector float __b)16540 vec_any_nlt(vector float __a, vector float __b) {
16541   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
16542 }
16543 
16544 /* vec_any_numeric */
16545 
16546 static __inline__ int __attribute__((__always_inline__))
vec_any_numeric(vector float __a)16547 vec_any_numeric(vector float __a) {
16548   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
16549 }
16550 
16551 /* vec_any_out */
16552 
16553 static __inline__ int __attribute__((__always_inline__))
vec_any_out(vector float __a,vector float __b)16554 vec_any_out(vector float __a, vector float __b) {
16555   return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
16556 }
16557 
16558 /* Power 8 Crypto functions
16559 Note: We diverge from the current GCC implementation with regard
16560 to cryptography and related functions as follows:
16561 - Only the SHA and AES instructions and builtins are disabled by -mno-crypto
16562 - The remaining ones are only available on Power8 and up so
16563   require -mpower8-vector
16564 The justification for this is that export requirements require that
16565 Category:Vector.Crypto is optional (i.e. compliant hardware may not provide
16566 support). As a result, we need to be able to turn off support for those.
16567 The remaining ones (currently controlled by -mcrypto for GCC) still
16568 need to be provided on compliant hardware even if Vector.Crypto is not
16569 provided.
16570 */
16571 #ifdef __CRYPTO__
16572 #define vec_sbox_be __builtin_altivec_crypto_vsbox
16573 #define vec_cipher_be __builtin_altivec_crypto_vcipher
16574 #define vec_cipherlast_be __builtin_altivec_crypto_vcipherlast
16575 #define vec_ncipher_be __builtin_altivec_crypto_vncipher
16576 #define vec_ncipherlast_be __builtin_altivec_crypto_vncipherlast
16577 
16578 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vsbox(vector unsigned long long __a)16579 __builtin_crypto_vsbox(vector unsigned long long __a) {
16580   return __builtin_altivec_crypto_vsbox(__a);
16581 }
16582 
16583 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vcipher(vector unsigned long long __a,vector unsigned long long __b)16584 __builtin_crypto_vcipher(vector unsigned long long __a,
16585                          vector unsigned long long __b) {
16586   return __builtin_altivec_crypto_vcipher(__a, __b);
16587 }
16588 
16589 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vcipherlast(vector unsigned long long __a,vector unsigned long long __b)16590 __builtin_crypto_vcipherlast(vector unsigned long long __a,
16591                              vector unsigned long long __b) {
16592   return __builtin_altivec_crypto_vcipherlast(__a, __b);
16593 }
16594 
16595 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vncipher(vector unsigned long long __a,vector unsigned long long __b)16596 __builtin_crypto_vncipher(vector unsigned long long __a,
16597                           vector unsigned long long __b) {
16598   return __builtin_altivec_crypto_vncipher(__a, __b);
16599 }
16600 
16601 static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vncipherlast(vector unsigned long long __a,vector unsigned long long __b)16602 __builtin_crypto_vncipherlast(vector unsigned long long __a,
16603                               vector unsigned long long __b) {
16604   return __builtin_altivec_crypto_vncipherlast(__a, __b);
16605 }
16606 
16607 #define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad
16608 #define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw
16609 
16610 #define vec_shasigma_be(X, Y, Z)                                               \
16611   _Generic((X), vector unsigned int                                            \
16612            : __builtin_crypto_vshasigmaw, vector unsigned long long            \
16613            : __builtin_crypto_vshasigmad)((X), (Y), (Z))
16614 #endif
16615 
16616 #ifdef __POWER8_VECTOR__
16617 static __inline__ vector bool char __ATTRS_o_ai
vec_permxor(vector bool char __a,vector bool char __b,vector bool char __c)16618 vec_permxor(vector bool char __a, vector bool char __b,
16619             vector bool char __c) {
16620   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16621 }
16622 
16623 static __inline__ vector signed char __ATTRS_o_ai
vec_permxor(vector signed char __a,vector signed char __b,vector signed char __c)16624 vec_permxor(vector signed char __a, vector signed char __b,
16625             vector signed char __c) {
16626   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16627 }
16628 
16629 static __inline__ vector unsigned char __ATTRS_o_ai
vec_permxor(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)16630 vec_permxor(vector unsigned char __a, vector unsigned char __b,
16631             vector unsigned char __c) {
16632   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16633 }
16634 
16635 static __inline__ vector unsigned char __ATTRS_o_ai
__builtin_crypto_vpermxor(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)16636 __builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b,
16637                           vector unsigned char __c) {
16638   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16639 }
16640 
16641 static __inline__ vector unsigned short __ATTRS_o_ai
__builtin_crypto_vpermxor(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)16642 __builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b,
16643                           vector unsigned short __c) {
16644   return (vector unsigned short)__builtin_altivec_crypto_vpermxor(
16645       (vector unsigned char)__a, (vector unsigned char)__b,
16646       (vector unsigned char)__c);
16647 }
16648 
__builtin_crypto_vpermxor(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)16649 static __inline__ vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor(
16650     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
16651   return (vector unsigned int)__builtin_altivec_crypto_vpermxor(
16652       (vector unsigned char)__a, (vector unsigned char)__b,
16653       (vector unsigned char)__c);
16654 }
16655 
16656 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)16657 __builtin_crypto_vpermxor(vector unsigned long long __a,
16658                           vector unsigned long long __b,
16659                           vector unsigned long long __c) {
16660   return (vector unsigned long long)__builtin_altivec_crypto_vpermxor(
16661       (vector unsigned char)__a, (vector unsigned char)__b,
16662       (vector unsigned char)__c);
16663 }
16664 
16665 static __inline__ vector unsigned char __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned char __a,vector unsigned char __b)16666 __builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) {
16667   return __builtin_altivec_crypto_vpmsumb(__a, __b);
16668 }
16669 
16670 static __inline__ vector unsigned short __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned short __a,vector unsigned short __b)16671 __builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) {
16672   return __builtin_altivec_crypto_vpmsumh(__a, __b);
16673 }
16674 
16675 static __inline__ vector unsigned int __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned int __a,vector unsigned int __b)16676 __builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) {
16677   return __builtin_altivec_crypto_vpmsumw(__a, __b);
16678 }
16679 
16680 static __inline__ vector unsigned long long __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned long long __a,vector unsigned long long __b)16681 __builtin_crypto_vpmsumb(vector unsigned long long __a,
16682                          vector unsigned long long __b) {
16683   return __builtin_altivec_crypto_vpmsumd(__a, __b);
16684 }
16685 
16686 static __inline__ vector signed char __ATTRS_o_ai
vec_vgbbd(vector signed char __a)16687 vec_vgbbd(vector signed char __a) {
16688   return __builtin_altivec_vgbbd((vector unsigned char)__a);
16689 }
16690 
16691 #define vec_pmsum_be __builtin_crypto_vpmsumb
16692 #define vec_gb __builtin_altivec_vgbbd
16693 
16694 static __inline__ vector unsigned char __ATTRS_o_ai
vec_vgbbd(vector unsigned char __a)16695 vec_vgbbd(vector unsigned char __a) {
16696   return __builtin_altivec_vgbbd(__a);
16697 }
16698 
16699 static __inline__ vector long long __ATTRS_o_ai
vec_vbpermq(vector signed char __a,vector signed char __b)16700 vec_vbpermq(vector signed char __a, vector signed char __b) {
16701   return __builtin_altivec_vbpermq((vector unsigned char)__a,
16702                                    (vector unsigned char)__b);
16703 }
16704 
16705 static __inline__ vector long long __ATTRS_o_ai
vec_vbpermq(vector unsigned char __a,vector unsigned char __b)16706 vec_vbpermq(vector unsigned char __a, vector unsigned char __b) {
16707   return __builtin_altivec_vbpermq(__a, __b);
16708 }
16709 
16710 #ifdef __powerpc64__
16711 static __inline__ vector unsigned long long __attribute__((__always_inline__))
vec_bperm(vector unsigned __int128 __a,vector unsigned char __b)16712 vec_bperm(vector unsigned __int128 __a, vector unsigned char __b) {
16713   return __builtin_altivec_vbpermq((vector unsigned char)__a,
16714                                    (vector unsigned char)__b);
16715 }
16716 #endif
16717 #endif
16718 
16719 
16720 /* vec_reve */
16721 
vec_reve(vector bool char __a)16722 static inline __ATTRS_o_ai vector bool char vec_reve(vector bool char __a) {
16723   return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
16724                                  5, 4, 3, 2, 1, 0);
16725 }
16726 
vec_reve(vector signed char __a)16727 static inline __ATTRS_o_ai vector signed char vec_reve(vector signed char __a) {
16728   return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
16729                                  5, 4, 3, 2, 1, 0);
16730 }
16731 
16732 static inline __ATTRS_o_ai vector unsigned char
vec_reve(vector unsigned char __a)16733 vec_reve(vector unsigned char __a) {
16734   return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
16735                                  5, 4, 3, 2, 1, 0);
16736 }
16737 
vec_reve(vector bool int __a)16738 static inline __ATTRS_o_ai vector bool int vec_reve(vector bool int __a) {
16739   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16740 }
16741 
vec_reve(vector signed int __a)16742 static inline __ATTRS_o_ai vector signed int vec_reve(vector signed int __a) {
16743   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16744 }
16745 
16746 static inline __ATTRS_o_ai vector unsigned int
vec_reve(vector unsigned int __a)16747 vec_reve(vector unsigned int __a) {
16748   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16749 }
16750 
vec_reve(vector bool short __a)16751 static inline __ATTRS_o_ai vector bool short vec_reve(vector bool short __a) {
16752   return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
16753 }
16754 
16755 static inline __ATTRS_o_ai vector signed short
vec_reve(vector signed short __a)16756 vec_reve(vector signed short __a) {
16757   return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
16758 }
16759 
16760 static inline __ATTRS_o_ai vector unsigned short
vec_reve(vector unsigned short __a)16761 vec_reve(vector unsigned short __a) {
16762   return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
16763 }
16764 
vec_reve(vector float __a)16765 static inline __ATTRS_o_ai vector float vec_reve(vector float __a) {
16766   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16767 }
16768 
16769 #ifdef __VSX__
16770 static inline __ATTRS_o_ai vector bool long long
vec_reve(vector bool long long __a)16771 vec_reve(vector bool long long __a) {
16772   return __builtin_shufflevector(__a, __a, 1, 0);
16773 }
16774 
16775 static inline __ATTRS_o_ai vector signed long long
vec_reve(vector signed long long __a)16776 vec_reve(vector signed long long __a) {
16777   return __builtin_shufflevector(__a, __a, 1, 0);
16778 }
16779 
16780 static inline __ATTRS_o_ai vector unsigned long long
vec_reve(vector unsigned long long __a)16781 vec_reve(vector unsigned long long __a) {
16782   return __builtin_shufflevector(__a, __a, 1, 0);
16783 }
16784 
vec_reve(vector double __a)16785 static inline __ATTRS_o_ai vector double vec_reve(vector double __a) {
16786   return __builtin_shufflevector(__a, __a, 1, 0);
16787 }
16788 #endif
16789 
16790 /* vec_revb */
16791 static __inline__ vector bool char __ATTRS_o_ai
vec_revb(vector bool char __a)16792 vec_revb(vector bool char __a) {
16793   return __a;
16794 }
16795 
16796 static __inline__ vector signed char __ATTRS_o_ai
vec_revb(vector signed char __a)16797 vec_revb(vector signed char __a) {
16798   return __a;
16799 }
16800 
16801 static __inline__ vector unsigned char __ATTRS_o_ai
vec_revb(vector unsigned char __a)16802 vec_revb(vector unsigned char __a) {
16803   return __a;
16804 }
16805 
16806 static __inline__ vector bool short __ATTRS_o_ai
vec_revb(vector bool short __a)16807 vec_revb(vector bool short __a) {
16808   vector unsigned char __indices =
16809       { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
16810   return vec_perm(__a, __a, __indices);
16811 }
16812 
16813 static __inline__ vector signed short __ATTRS_o_ai
vec_revb(vector signed short __a)16814 vec_revb(vector signed short __a) {
16815   vector unsigned char __indices =
16816       { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
16817   return vec_perm(__a, __a, __indices);
16818 }
16819 
16820 static __inline__ vector unsigned short __ATTRS_o_ai
vec_revb(vector unsigned short __a)16821 vec_revb(vector unsigned short __a) {
16822   vector unsigned char __indices =
16823      { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
16824   return vec_perm(__a, __a, __indices);
16825 }
16826 
16827 static __inline__ vector bool int __ATTRS_o_ai
vec_revb(vector bool int __a)16828 vec_revb(vector bool int __a) {
16829   vector unsigned char __indices =
16830       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16831   return vec_perm(__a, __a, __indices);
16832 }
16833 
16834 static __inline__ vector signed int __ATTRS_o_ai
vec_revb(vector signed int __a)16835 vec_revb(vector signed int __a) {
16836   vector unsigned char __indices =
16837       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16838   return vec_perm(__a, __a, __indices);
16839 }
16840 
16841 static __inline__ vector unsigned int __ATTRS_o_ai
vec_revb(vector unsigned int __a)16842 vec_revb(vector unsigned int __a) {
16843   vector unsigned char __indices =
16844       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16845   return vec_perm(__a, __a, __indices);
16846 }
16847 
16848 static __inline__ vector float __ATTRS_o_ai
vec_revb(vector float __a)16849 vec_revb(vector float __a) {
16850  vector unsigned char __indices =
16851       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16852  return vec_perm(__a, __a, __indices);
16853 }
16854 
16855 #ifdef __VSX__
16856 static __inline__ vector bool long long __ATTRS_o_ai
vec_revb(vector bool long long __a)16857 vec_revb(vector bool long long __a) {
16858   vector unsigned char __indices =
16859       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16860   return vec_perm(__a, __a, __indices);
16861 }
16862 
16863 static __inline__ vector signed long long __ATTRS_o_ai
vec_revb(vector signed long long __a)16864 vec_revb(vector signed long long __a) {
16865   vector unsigned char __indices =
16866       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16867   return vec_perm(__a, __a, __indices);
16868 }
16869 
16870 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_revb(vector unsigned long long __a)16871 vec_revb(vector unsigned long long __a) {
16872   vector unsigned char __indices =
16873       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16874   return vec_perm(__a, __a, __indices);
16875 }
16876 
16877 static __inline__ vector double __ATTRS_o_ai
vec_revb(vector double __a)16878 vec_revb(vector double __a) {
16879   vector unsigned char __indices =
16880       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16881   return vec_perm(__a, __a, __indices);
16882 }
16883 #endif /* End __VSX__ */
16884 
16885 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16886 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_revb(vector signed __int128 __a)16887 vec_revb(vector signed __int128 __a) {
16888   vector unsigned char __indices =
16889       { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
16890   return (vector signed __int128)vec_perm((vector signed int)__a,
16891                                           (vector signed int)__a,
16892                                            __indices);
16893 }
16894 
16895 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_revb(vector unsigned __int128 __a)16896 vec_revb(vector unsigned __int128 __a) {
16897   vector unsigned char __indices =
16898       { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
16899   return (vector unsigned __int128)vec_perm((vector signed int)__a,
16900                                             (vector signed int)__a,
16901                                              __indices);
16902 }
16903 #endif /* END __POWER8_VECTOR__ && __powerpc64__ */
16904 
16905 /* vec_xl */
16906 
16907 typedef vector signed char unaligned_vec_schar __attribute__((aligned(1)));
16908 typedef vector unsigned char unaligned_vec_uchar __attribute__((aligned(1)));
16909 typedef vector signed short unaligned_vec_sshort __attribute__((aligned(1)));
16910 typedef vector unsigned short unaligned_vec_ushort __attribute__((aligned(1)));
16911 typedef vector signed int unaligned_vec_sint __attribute__((aligned(1)));
16912 typedef vector unsigned int unaligned_vec_uint __attribute__((aligned(1)));
16913 typedef vector float unaligned_vec_float __attribute__((aligned(1)));
16914 
vec_xl(signed long long __offset,const signed char * __ptr)16915 static inline __ATTRS_o_ai vector signed char vec_xl(signed long long __offset,
16916                                                      const signed char *__ptr) {
16917   return *(unaligned_vec_schar *)(__ptr + __offset);
16918 }
16919 
16920 static inline __ATTRS_o_ai vector unsigned char
vec_xl(signed long long __offset,const unsigned char * __ptr)16921 vec_xl(signed long long __offset, const unsigned char *__ptr) {
16922   return *(unaligned_vec_uchar*)(__ptr + __offset);
16923 }
16924 
vec_xl(signed long long __offset,const signed short * __ptr)16925 static inline __ATTRS_o_ai vector signed short vec_xl(signed long long __offset,
16926                                                       const signed short *__ptr) {
16927   signed char *__addr = (signed char *)__ptr + __offset;
16928   return *(unaligned_vec_sshort *)__addr;
16929 }
16930 
16931 static inline __ATTRS_o_ai vector unsigned short
vec_xl(signed long long __offset,const unsigned short * __ptr)16932 vec_xl(signed long long __offset, const unsigned short *__ptr) {
16933   signed char *__addr = (signed char *)__ptr + __offset;
16934   return *(unaligned_vec_ushort *)__addr;
16935 }
16936 
vec_xl(signed long long __offset,const signed int * __ptr)16937 static inline __ATTRS_o_ai vector signed int vec_xl(signed long long __offset,
16938                                                     const signed int *__ptr) {
16939   signed char *__addr = (signed char *)__ptr + __offset;
16940   return *(unaligned_vec_sint *)__addr;
16941 }
16942 
vec_xl(signed long long __offset,const unsigned int * __ptr)16943 static inline __ATTRS_o_ai vector unsigned int vec_xl(signed long long __offset,
16944                                                       const unsigned int *__ptr) {
16945   signed char *__addr = (signed char *)__ptr + __offset;
16946   return *(unaligned_vec_uint *)__addr;
16947 }
16948 
vec_xl(signed long long __offset,const float * __ptr)16949 static inline __ATTRS_o_ai vector float vec_xl(signed long long __offset,
16950                                                const float *__ptr) {
16951   signed char *__addr = (signed char *)__ptr + __offset;
16952   return *(unaligned_vec_float *)__addr;
16953 }
16954 
16955 #ifdef __VSX__
16956 typedef vector signed long long unaligned_vec_sll __attribute__((aligned(1)));
16957 typedef vector unsigned long long unaligned_vec_ull __attribute__((aligned(1)));
16958 typedef vector double unaligned_vec_double __attribute__((aligned(1)));
16959 
16960 static inline __ATTRS_o_ai vector signed long long
vec_xl(signed long long __offset,const signed long long * __ptr)16961 vec_xl(signed long long __offset, const signed long long *__ptr) {
16962   signed char *__addr = (signed char *)__ptr + __offset;
16963   return *(unaligned_vec_sll *)__addr;
16964 }
16965 
16966 static inline __ATTRS_o_ai vector unsigned long long
vec_xl(signed long long __offset,const unsigned long long * __ptr)16967 vec_xl(signed long long __offset, const unsigned long long *__ptr) {
16968   signed char *__addr = (signed char *)__ptr + __offset;
16969   return *(unaligned_vec_ull *)__addr;
16970 }
16971 
vec_xl(signed long long __offset,const double * __ptr)16972 static inline __ATTRS_o_ai vector double vec_xl(signed long long __offset,
16973                                                 const double *__ptr) {
16974   signed char *__addr = (signed char *)__ptr + __offset;
16975   return *(unaligned_vec_double *)__addr;
16976 }
16977 #endif
16978 
16979 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16980 typedef vector signed __int128 unaligned_vec_si128 __attribute__((aligned(1)));
16981 typedef vector unsigned __int128 unaligned_vec_ui128
16982     __attribute__((aligned(1)));
16983 static inline __ATTRS_o_ai vector signed __int128
vec_xl(signed long long __offset,const signed __int128 * __ptr)16984 vec_xl(signed long long __offset, const signed __int128 *__ptr) {
16985   signed char *__addr = (signed char *)__ptr + __offset;
16986   return *(unaligned_vec_si128 *)__addr;
16987 }
16988 
16989 static inline __ATTRS_o_ai vector unsigned __int128
vec_xl(signed long long __offset,const unsigned __int128 * __ptr)16990 vec_xl(signed long long __offset, const unsigned __int128 *__ptr) {
16991   signed char *__addr = (signed char *)__ptr + __offset;
16992   return *(unaligned_vec_ui128 *)__addr;
16993 }
16994 #endif
16995 
16996 /* vec_xl_be */
16997 
16998 #ifdef __LITTLE_ENDIAN__
16999 static __inline__ vector signed char __ATTRS_o_ai
vec_xl_be(signed long long __offset,const signed char * __ptr)17000 vec_xl_be(signed long long __offset, const signed char *__ptr) {
17001   vector signed char __vec = (vector signed char)__builtin_vsx_lxvd2x_be(__offset, __ptr);
17002   return __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
17003                                  13, 12, 11, 10, 9, 8);
17004 }
17005 
17006 static __inline__ vector unsigned char __ATTRS_o_ai
vec_xl_be(signed long long __offset,const unsigned char * __ptr)17007 vec_xl_be(signed long long __offset, const unsigned char *__ptr) {
17008   vector unsigned char __vec = (vector unsigned char)__builtin_vsx_lxvd2x_be(__offset, __ptr);
17009   return __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
17010                                  13, 12, 11, 10, 9, 8);
17011 }
17012 
17013 static __inline__ vector signed short  __ATTRS_o_ai
vec_xl_be(signed long long __offset,const signed short * __ptr)17014 vec_xl_be(signed long long __offset, const signed short *__ptr) {
17015   vector signed short __vec = (vector signed short)__builtin_vsx_lxvd2x_be(__offset, __ptr);
17016   return __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
17017 }
17018 
17019 static __inline__ vector unsigned short __ATTRS_o_ai
vec_xl_be(signed long long __offset,const unsigned short * __ptr)17020 vec_xl_be(signed long long __offset, const unsigned short *__ptr) {
17021   vector unsigned short __vec = (vector unsigned short)__builtin_vsx_lxvd2x_be(__offset, __ptr);
17022   return __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
17023 }
17024 
17025 static __inline__ vector signed int __ATTRS_o_ai
vec_xl_be(signed long long __offset,const signed int * __ptr)17026 vec_xl_be(signed long long  __offset, const signed int *__ptr) {
17027   return (vector signed int)__builtin_vsx_lxvw4x_be(__offset, __ptr);
17028 }
17029 
17030 static __inline__ vector unsigned int __ATTRS_o_ai
vec_xl_be(signed long long __offset,const unsigned int * __ptr)17031 vec_xl_be(signed long long  __offset, const unsigned int *__ptr) {
17032   return (vector unsigned int)__builtin_vsx_lxvw4x_be(__offset, __ptr);
17033 }
17034 
17035 static __inline__ vector float __ATTRS_o_ai
vec_xl_be(signed long long __offset,const float * __ptr)17036 vec_xl_be(signed long long  __offset, const float *__ptr) {
17037   return (vector float)__builtin_vsx_lxvw4x_be(__offset, __ptr);
17038 }
17039 
17040 #ifdef __VSX__
17041 static __inline__ vector signed long long __ATTRS_o_ai
vec_xl_be(signed long long __offset,const signed long long * __ptr)17042 vec_xl_be(signed long long  __offset, const signed long long *__ptr) {
17043   return (vector signed long long)__builtin_vsx_lxvd2x_be(__offset, __ptr);
17044 }
17045 
17046 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xl_be(signed long long __offset,const unsigned long long * __ptr)17047 vec_xl_be(signed long long  __offset, const unsigned long long *__ptr) {
17048   return (vector unsigned long long)__builtin_vsx_lxvd2x_be(__offset, __ptr);
17049 }
17050 
17051 static __inline__ vector double __ATTRS_o_ai
vec_xl_be(signed long long __offset,const double * __ptr)17052 vec_xl_be(signed long long  __offset, const double *__ptr) {
17053   return (vector double)__builtin_vsx_lxvd2x_be(__offset, __ptr);
17054 }
17055 #endif
17056 
17057 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
17058 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_xl_be(signed long long __offset,const signed __int128 * __ptr)17059 vec_xl_be(signed long long  __offset, const signed __int128 *__ptr) {
17060   return vec_xl(__offset, __ptr);
17061 }
17062 
17063 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_be(signed long long __offset,const unsigned __int128 * __ptr)17064 vec_xl_be(signed long long  __offset, const unsigned __int128 *__ptr) {
17065   return vec_xl(__offset, __ptr);
17066 }
17067 #endif
17068 #else
17069   #define vec_xl_be vec_xl
17070 #endif
17071 
17072 #if defined(__POWER10_VECTOR__) && defined(__VSX__)
17073 
17074 /* vect_xl_sext */
17075 
17076 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_sext(signed long long __offset,const signed char * __pointer)17077 vec_xl_sext(signed long long __offset, const signed char *__pointer) {
17078   return (vector unsigned __int128)*(__pointer + __offset);
17079 }
17080 
17081 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_sext(signed long long __offset,const signed short * __pointer)17082 vec_xl_sext(signed long long __offset, const signed short *__pointer) {
17083   return (vector unsigned __int128)*(__pointer + __offset);
17084 }
17085 
17086 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_sext(signed long long __offset,const signed int * __pointer)17087 vec_xl_sext(signed long long __offset, const signed int *__pointer) {
17088   return (vector unsigned __int128)*(__pointer + __offset);
17089 }
17090 
17091 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_sext(signed long long __offset,const signed long long * __pointer)17092 vec_xl_sext(signed long long __offset, const signed long long *__pointer) {
17093   return (vector unsigned __int128)*(__pointer + __offset);
17094 }
17095 
17096 /* vec_xl_zext */
17097 
17098 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_zext(signed long long __offset,const unsigned char * __pointer)17099 vec_xl_zext(signed long long __offset, const unsigned char *__pointer) {
17100   return (vector unsigned __int128)*(__pointer + __offset);
17101 }
17102 
17103 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_zext(signed long long __offset,const unsigned short * __pointer)17104 vec_xl_zext(signed long long __offset, const unsigned short *__pointer) {
17105   return (vector unsigned __int128)*(__pointer + __offset);
17106 }
17107 
17108 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_zext(signed long long __offset,const unsigned int * __pointer)17109 vec_xl_zext(signed long long __offset, const unsigned int *__pointer) {
17110   return (vector unsigned __int128)*(__pointer + __offset);
17111 }
17112 
17113 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_xl_zext(signed long long __offset,const unsigned long long * __pointer)17114 vec_xl_zext(signed long long __offset, const unsigned long long *__pointer) {
17115   return (vector unsigned __int128)*(__pointer + __offset);
17116 }
17117 
17118 #endif
17119 
17120 /* vec_xst */
17121 
vec_xst(vector signed char __vec,signed long long __offset,signed char * __ptr)17122 static inline __ATTRS_o_ai void vec_xst(vector signed char __vec,
17123                                         signed long long __offset,
17124                                         signed char *__ptr) {
17125   *(unaligned_vec_schar *)(__ptr + __offset) = __vec;
17126 }
17127 
vec_xst(vector unsigned char __vec,signed long long __offset,unsigned char * __ptr)17128 static inline __ATTRS_o_ai void vec_xst(vector unsigned char __vec,
17129                                         signed long long __offset,
17130                                         unsigned char *__ptr) {
17131   *(unaligned_vec_uchar *)(__ptr + __offset) = __vec;
17132 }
17133 
vec_xst(vector signed short __vec,signed long long __offset,signed short * __ptr)17134 static inline __ATTRS_o_ai void vec_xst(vector signed short __vec,
17135                                         signed long long __offset,
17136                                         signed short *__ptr) {
17137   signed char *__addr = (signed char *)__ptr + __offset;
17138   *(unaligned_vec_sshort *)__addr = __vec;
17139 }
17140 
vec_xst(vector unsigned short __vec,signed long long __offset,unsigned short * __ptr)17141 static inline __ATTRS_o_ai void vec_xst(vector unsigned short __vec,
17142                                         signed long long __offset,
17143                                         unsigned short *__ptr) {
17144   signed char *__addr = (signed char *)__ptr + __offset;
17145   *(unaligned_vec_ushort *)__addr = __vec;
17146 }
17147 
vec_xst(vector signed int __vec,signed long long __offset,signed int * __ptr)17148 static inline __ATTRS_o_ai void vec_xst(vector signed int __vec,
17149                                         signed long long __offset,
17150                                         signed int *__ptr) {
17151   signed char *__addr = (signed char *)__ptr + __offset;
17152   *(unaligned_vec_sint *)__addr = __vec;
17153 }
17154 
vec_xst(vector unsigned int __vec,signed long long __offset,unsigned int * __ptr)17155 static inline __ATTRS_o_ai void vec_xst(vector unsigned int __vec,
17156                                         signed long long __offset,
17157                                         unsigned int *__ptr) {
17158   signed char *__addr = (signed char *)__ptr + __offset;
17159   *(unaligned_vec_uint *)__addr = __vec;
17160 }
17161 
vec_xst(vector float __vec,signed long long __offset,float * __ptr)17162 static inline __ATTRS_o_ai void vec_xst(vector float __vec,
17163                                         signed long long __offset,
17164                                         float *__ptr) {
17165   signed char *__addr = (signed char *)__ptr + __offset;
17166   *(unaligned_vec_float *)__addr = __vec;
17167 }
17168 
17169 #ifdef __VSX__
vec_xst(vector signed long long __vec,signed long long __offset,signed long long * __ptr)17170 static inline __ATTRS_o_ai void vec_xst(vector signed long long __vec,
17171                                         signed long long __offset,
17172                                         signed long long *__ptr) {
17173   signed char *__addr = (signed char *)__ptr + __offset;
17174   *(unaligned_vec_sll *)__addr = __vec;
17175 }
17176 
vec_xst(vector unsigned long long __vec,signed long long __offset,unsigned long long * __ptr)17177 static inline __ATTRS_o_ai void vec_xst(vector unsigned long long __vec,
17178                                         signed long long __offset,
17179                                         unsigned long long *__ptr) {
17180   signed char *__addr = (signed char *)__ptr + __offset;
17181   *(unaligned_vec_ull *)__addr = __vec;
17182 }
17183 
vec_xst(vector double __vec,signed long long __offset,double * __ptr)17184 static inline __ATTRS_o_ai void vec_xst(vector double __vec,
17185                                         signed long long __offset,
17186                                         double *__ptr) {
17187   signed char *__addr = (signed char *)__ptr + __offset;
17188   *(unaligned_vec_double *)__addr = __vec;
17189 }
17190 #endif
17191 
17192 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
vec_xst(vector signed __int128 __vec,signed long long __offset,signed __int128 * __ptr)17193 static inline __ATTRS_o_ai void vec_xst(vector signed __int128 __vec,
17194                                         signed long long __offset,
17195                                         signed __int128 *__ptr) {
17196   signed char *__addr = (signed char *)__ptr + __offset;
17197   *(unaligned_vec_si128 *)__addr = __vec;
17198 }
17199 
vec_xst(vector unsigned __int128 __vec,signed long long __offset,unsigned __int128 * __ptr)17200 static inline __ATTRS_o_ai void vec_xst(vector unsigned __int128 __vec,
17201                                         signed long long __offset,
17202                                         unsigned __int128 *__ptr) {
17203   signed char *__addr = (signed char *)__ptr + __offset;
17204   *(unaligned_vec_ui128 *)__addr = __vec;
17205 }
17206 #endif
17207 
17208 /* vec_xst_trunc */
17209 
17210 #if defined(__POWER10_VECTOR__) && defined(__VSX__)
vec_xst_trunc(vector signed __int128 __vec,signed long long __offset,signed char * __ptr)17211 static inline __ATTRS_o_ai void vec_xst_trunc(vector signed __int128 __vec,
17212                                               signed long long __offset,
17213                                               signed char *__ptr) {
17214   *(__ptr + __offset) = (signed char)__vec[0];
17215 }
17216 
vec_xst_trunc(vector unsigned __int128 __vec,signed long long __offset,unsigned char * __ptr)17217 static inline __ATTRS_o_ai void vec_xst_trunc(vector unsigned __int128 __vec,
17218                                               signed long long __offset,
17219                                               unsigned char *__ptr) {
17220   *(__ptr + __offset) = (unsigned char)__vec[0];
17221 }
17222 
vec_xst_trunc(vector signed __int128 __vec,signed long long __offset,signed short * __ptr)17223 static inline __ATTRS_o_ai void vec_xst_trunc(vector signed __int128 __vec,
17224                                               signed long long __offset,
17225                                               signed short *__ptr) {
17226   *(__ptr + __offset) = (signed short)__vec[0];
17227 }
17228 
vec_xst_trunc(vector unsigned __int128 __vec,signed long long __offset,unsigned short * __ptr)17229 static inline __ATTRS_o_ai void vec_xst_trunc(vector unsigned __int128 __vec,
17230                                               signed long long __offset,
17231                                               unsigned short *__ptr) {
17232   *(__ptr + __offset) = (unsigned short)__vec[0];
17233 }
17234 
vec_xst_trunc(vector signed __int128 __vec,signed long long __offset,signed int * __ptr)17235 static inline __ATTRS_o_ai void vec_xst_trunc(vector signed __int128 __vec,
17236                                               signed long long __offset,
17237                                               signed int *__ptr) {
17238   *(__ptr + __offset) = (signed int)__vec[0];
17239 }
17240 
vec_xst_trunc(vector unsigned __int128 __vec,signed long long __offset,unsigned int * __ptr)17241 static inline __ATTRS_o_ai void vec_xst_trunc(vector unsigned __int128 __vec,
17242                                               signed long long __offset,
17243                                               unsigned int *__ptr) {
17244   *(__ptr + __offset) = (unsigned int)__vec[0];
17245 }
17246 
vec_xst_trunc(vector signed __int128 __vec,signed long long __offset,signed long long * __ptr)17247 static inline __ATTRS_o_ai void vec_xst_trunc(vector signed __int128 __vec,
17248                                               signed long long __offset,
17249                                               signed long long *__ptr) {
17250   *(__ptr + __offset) = (signed long long)__vec[0];
17251 }
17252 
vec_xst_trunc(vector unsigned __int128 __vec,signed long long __offset,unsigned long long * __ptr)17253 static inline __ATTRS_o_ai void vec_xst_trunc(vector unsigned __int128 __vec,
17254                                               signed long long __offset,
17255                                               unsigned long long *__ptr) {
17256   *(__ptr + __offset) = (unsigned long long)__vec[0];
17257 }
17258 #endif
17259 
17260 /* vec_xst_be */
17261 
17262 #ifdef __LITTLE_ENDIAN__
vec_xst_be(vector signed char __vec,signed long long __offset,signed char * __ptr)17263 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed char __vec,
17264                                                signed long long  __offset,
17265                                                signed char *__ptr) {
17266   vector signed char __tmp =
17267      __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
17268                              13, 12, 11, 10, 9, 8);
17269   typedef __attribute__((vector_size(sizeof(__tmp)))) double __vector_double;
17270   __builtin_vsx_stxvd2x_be((__vector_double)__tmp, __offset, __ptr);
17271 }
17272 
vec_xst_be(vector unsigned char __vec,signed long long __offset,unsigned char * __ptr)17273 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned char __vec,
17274                                                signed long long  __offset,
17275                                                unsigned char *__ptr) {
17276   vector unsigned char __tmp =
17277      __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
17278                              13, 12, 11, 10, 9, 8);
17279   typedef __attribute__((vector_size(sizeof(__tmp)))) double __vector_double;
17280   __builtin_vsx_stxvd2x_be((__vector_double)__tmp, __offset, __ptr);
17281 }
17282 
vec_xst_be(vector signed short __vec,signed long long __offset,signed short * __ptr)17283 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed short __vec,
17284                                                signed long long  __offset,
17285                                                signed short *__ptr) {
17286   vector signed short __tmp =
17287      __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
17288   typedef __attribute__((vector_size(sizeof(__tmp)))) double __vector_double;
17289   __builtin_vsx_stxvd2x_be((__vector_double)__tmp, __offset, __ptr);
17290 }
17291 
vec_xst_be(vector unsigned short __vec,signed long long __offset,unsigned short * __ptr)17292 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned short __vec,
17293                                                signed long long  __offset,
17294                                                unsigned short *__ptr) {
17295   vector unsigned short __tmp =
17296      __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
17297   typedef __attribute__((vector_size(sizeof(__tmp)))) double __vector_double;
17298   __builtin_vsx_stxvd2x_be((__vector_double)__tmp, __offset, __ptr);
17299 }
17300 
vec_xst_be(vector signed int __vec,signed long long __offset,signed int * __ptr)17301 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed int __vec,
17302                                                signed long long  __offset,
17303                                                signed int *__ptr) {
17304   __builtin_vsx_stxvw4x_be(__vec, __offset, __ptr);
17305 }
17306 
vec_xst_be(vector unsigned int __vec,signed long long __offset,unsigned int * __ptr)17307 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned int __vec,
17308                                                signed long long  __offset,
17309                                                unsigned int *__ptr) {
17310   __builtin_vsx_stxvw4x_be((vector int)__vec, __offset, __ptr);
17311 }
17312 
vec_xst_be(vector float __vec,signed long long __offset,float * __ptr)17313 static __inline__ void __ATTRS_o_ai vec_xst_be(vector float __vec,
17314                                                signed long long  __offset,
17315                                                float *__ptr) {
17316   __builtin_vsx_stxvw4x_be((vector int)__vec, __offset, __ptr);
17317 }
17318 
17319 #ifdef __VSX__
vec_xst_be(vector signed long long __vec,signed long long __offset,signed long long * __ptr)17320 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed long long __vec,
17321                                                signed long long  __offset,
17322                                                signed long long *__ptr) {
17323   __builtin_vsx_stxvd2x_be((vector double)__vec, __offset, __ptr);
17324 }
17325 
vec_xst_be(vector unsigned long long __vec,signed long long __offset,unsigned long long * __ptr)17326 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned long long __vec,
17327                                                signed long long  __offset,
17328                                                unsigned long long *__ptr) {
17329   __builtin_vsx_stxvd2x_be((vector double)__vec, __offset, __ptr);
17330 }
17331 
vec_xst_be(vector double __vec,signed long long __offset,double * __ptr)17332 static __inline__ void __ATTRS_o_ai vec_xst_be(vector double __vec,
17333                                                signed long long  __offset,
17334                                                double *__ptr) {
17335   __builtin_vsx_stxvd2x_be((vector double)__vec, __offset, __ptr);
17336 }
17337 #endif
17338 
17339 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
vec_xst_be(vector signed __int128 __vec,signed long long __offset,signed __int128 * __ptr)17340 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed __int128 __vec,
17341                                                signed long long  __offset,
17342                                                signed __int128 *__ptr) {
17343   vec_xst(__vec, __offset, __ptr);
17344 }
17345 
vec_xst_be(vector unsigned __int128 __vec,signed long long __offset,unsigned __int128 * __ptr)17346 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned __int128 __vec,
17347                                                signed long long  __offset,
17348                                                unsigned __int128 *__ptr) {
17349   vec_xst(__vec, __offset, __ptr);
17350 }
17351 #endif
17352 #else
17353   #define vec_xst_be vec_xst
17354 #endif
17355 
17356 #ifdef __POWER9_VECTOR__
17357 #define vec_test_data_class(__a, __b)                                          \
17358   _Generic(                                                                    \
17359       (__a), vector float                                                      \
17360       : (vector bool int)__builtin_vsx_xvtstdcsp((vector float)(__a), (__b)),  \
17361         vector double                                                          \
17362       : (vector bool long long)__builtin_vsx_xvtstdcdp((vector double)(__a),   \
17363                                                        (__b)))
17364 
17365 #endif /* #ifdef __POWER9_VECTOR__ */
17366 
vec_neg(vector float __a)17367 static vector float __ATTRS_o_ai vec_neg(vector float __a) {
17368   return -__a;
17369 }
17370 
17371 #ifdef __VSX__
vec_neg(vector double __a)17372 static vector double __ATTRS_o_ai vec_neg(vector double __a) {
17373   return -__a;
17374 }
17375 
17376 #endif
17377 
17378 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
vec_neg(vector long long __a)17379 static vector long long __ATTRS_o_ai vec_neg(vector long long __a) {
17380   return -__a;
17381 }
17382 #endif
17383 
vec_neg(vector signed int __a)17384 static vector signed int __ATTRS_o_ai vec_neg(vector signed int __a) {
17385   return -__a;
17386 }
17387 
vec_neg(vector signed short __a)17388 static vector signed short __ATTRS_o_ai vec_neg(vector signed short __a) {
17389   return -__a;
17390 }
17391 
vec_neg(vector signed char __a)17392 static vector signed char __ATTRS_o_ai vec_neg(vector signed char __a) {
17393   return -__a;
17394 }
17395 
vec_nabs(vector float __a)17396 static vector float __ATTRS_o_ai vec_nabs(vector float __a) {
17397   return - vec_abs(__a);
17398 }
17399 
17400 #ifdef __VSX__
vec_nabs(vector double __a)17401 static vector double __ATTRS_o_ai vec_nabs(vector double __a) {
17402   return - vec_abs(__a);
17403 }
17404 
17405 #endif
17406 
17407 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
vec_nabs(vector long long __a)17408 static vector long long __ATTRS_o_ai vec_nabs(vector long long __a) {
17409   return __builtin_altivec_vminsd(__a, -__a);
17410 }
17411 #endif
17412 
vec_nabs(vector signed int __a)17413 static vector signed int __ATTRS_o_ai vec_nabs(vector signed int __a) {
17414   return __builtin_altivec_vminsw(__a, -__a);
17415 }
17416 
vec_nabs(vector signed short __a)17417 static vector signed short __ATTRS_o_ai vec_nabs(vector signed short __a) {
17418   return __builtin_altivec_vminsh(__a, -__a);
17419 }
17420 
vec_nabs(vector signed char __a)17421 static vector signed char __ATTRS_o_ai vec_nabs(vector signed char __a) {
17422   return __builtin_altivec_vminsb(__a, -__a);
17423 }
17424 
17425 #ifdef __POWER10_VECTOR__
17426 
17427 /* vec_extractm */
17428 
17429 static __inline__ unsigned int __ATTRS_o_ai
vec_extractm(vector unsigned char __a)17430 vec_extractm(vector unsigned char __a) {
17431   return __builtin_altivec_vextractbm(__a);
17432 }
17433 
17434 static __inline__ unsigned int __ATTRS_o_ai
vec_extractm(vector unsigned short __a)17435 vec_extractm(vector unsigned short __a) {
17436   return __builtin_altivec_vextracthm(__a);
17437 }
17438 
17439 static __inline__ unsigned int __ATTRS_o_ai
vec_extractm(vector unsigned int __a)17440 vec_extractm(vector unsigned int __a) {
17441   return __builtin_altivec_vextractwm(__a);
17442 }
17443 
17444 static __inline__ unsigned int __ATTRS_o_ai
vec_extractm(vector unsigned long long __a)17445 vec_extractm(vector unsigned long long __a) {
17446   return __builtin_altivec_vextractdm(__a);
17447 }
17448 
17449 static __inline__ unsigned int __ATTRS_o_ai
vec_extractm(vector unsigned __int128 __a)17450 vec_extractm(vector unsigned __int128 __a) {
17451   return __builtin_altivec_vextractqm(__a);
17452 }
17453 
17454 /* vec_expandm */
17455 
17456 static __inline__ vector unsigned char __ATTRS_o_ai
vec_expandm(vector unsigned char __a)17457 vec_expandm(vector unsigned char __a) {
17458   return __builtin_altivec_vexpandbm(__a);
17459 }
17460 
17461 static __inline__ vector unsigned short __ATTRS_o_ai
vec_expandm(vector unsigned short __a)17462 vec_expandm(vector unsigned short __a) {
17463   return __builtin_altivec_vexpandhm(__a);
17464 }
17465 
17466 static __inline__ vector unsigned int __ATTRS_o_ai
vec_expandm(vector unsigned int __a)17467 vec_expandm(vector unsigned int __a) {
17468   return __builtin_altivec_vexpandwm(__a);
17469 }
17470 
17471 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_expandm(vector unsigned long long __a)17472 vec_expandm(vector unsigned long long __a) {
17473   return __builtin_altivec_vexpanddm(__a);
17474 }
17475 
17476 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_expandm(vector unsigned __int128 __a)17477 vec_expandm(vector unsigned __int128 __a) {
17478   return __builtin_altivec_vexpandqm(__a);
17479 }
17480 
17481 /* vec_cntm */
17482 
17483 #define vec_cntm(__a, __mp)                                                    \
17484   _Generic((__a), vector unsigned char                                         \
17485            : __builtin_altivec_vcntmbb((__a), (unsigned int)(__mp)),           \
17486              vector unsigned short                                             \
17487            : __builtin_altivec_vcntmbh((__a), (unsigned int)(__mp)),           \
17488              vector unsigned int                                               \
17489            : __builtin_altivec_vcntmbw((__a), (unsigned int)(__mp)),           \
17490              vector unsigned long long                                         \
17491            : __builtin_altivec_vcntmbd((__a), (unsigned int)(__mp)))
17492 
17493 /* vec_gen[b|h|w|d|q]m */
17494 
17495 static __inline__ vector unsigned char __ATTRS_o_ai
vec_genbm(unsigned long long __bm)17496 vec_genbm(unsigned long long __bm) {
17497   return __builtin_altivec_mtvsrbm(__bm);
17498 }
17499 
17500 static __inline__ vector unsigned short __ATTRS_o_ai
vec_genhm(unsigned long long __bm)17501 vec_genhm(unsigned long long __bm) {
17502   return __builtin_altivec_mtvsrhm(__bm);
17503 }
17504 
17505 static __inline__ vector unsigned int __ATTRS_o_ai
vec_genwm(unsigned long long __bm)17506 vec_genwm(unsigned long long __bm) {
17507   return __builtin_altivec_mtvsrwm(__bm);
17508 }
17509 
17510 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_gendm(unsigned long long __bm)17511 vec_gendm(unsigned long long __bm) {
17512   return __builtin_altivec_mtvsrdm(__bm);
17513 }
17514 
17515 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_genqm(unsigned long long __bm)17516 vec_genqm(unsigned long long __bm) {
17517   return __builtin_altivec_mtvsrqm(__bm);
17518 }
17519 
17520 /* vec_pdep */
17521 
17522 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_pdep(vector unsigned long long __a,vector unsigned long long __b)17523 vec_pdep(vector unsigned long long __a, vector unsigned long long __b) {
17524   return __builtin_altivec_vpdepd(__a, __b);
17525 }
17526 
17527 /* vec_pext */
17528 
17529 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_pext(vector unsigned long long __a,vector unsigned long long __b)17530 vec_pext(vector unsigned long long __a, vector unsigned long long __b) {
17531   return __builtin_altivec_vpextd(__a, __b);
17532 }
17533 
17534 /* vec_cfuge */
17535 
17536 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_cfuge(vector unsigned long long __a,vector unsigned long long __b)17537 vec_cfuge(vector unsigned long long __a, vector unsigned long long __b) {
17538   return __builtin_altivec_vcfuged(__a, __b);
17539 }
17540 
17541 /* vec_gnb */
17542 
17543 #define vec_gnb(__a, __b) __builtin_altivec_vgnb(__a, __b)
17544 
17545 /* vec_ternarylogic */
17546 #ifdef __VSX__
17547 #define vec_ternarylogic(__a, __b, __c, __imm)                                 \
17548   _Generic((__a), vector unsigned char                                         \
17549            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
17550                                   (vector unsigned long long)(__b),            \
17551                                   (vector unsigned long long)(__c), (__imm)),  \
17552              vector unsigned short                                             \
17553            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
17554                                   (vector unsigned long long)(__b),            \
17555                                   (vector unsigned long long)(__c), (__imm)),  \
17556              vector unsigned int                                               \
17557            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
17558                                   (vector unsigned long long)(__b),            \
17559                                   (vector unsigned long long)(__c), (__imm)),  \
17560              vector unsigned long long                                         \
17561            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
17562                                   (vector unsigned long long)(__b),            \
17563                                   (vector unsigned long long)(__c), (__imm)),  \
17564              vector unsigned __int128                                          \
17565            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
17566                                   (vector unsigned long long)(__b),            \
17567                                   (vector unsigned long long)(__c), (__imm)))
17568 #endif /* __VSX__ */
17569 
17570 /* vec_genpcvm */
17571 
17572 #ifdef __VSX__
17573 #define vec_genpcvm(__a, __imm)                                                \
17574   _Generic((__a), vector unsigned char                                         \
17575            : __builtin_vsx_xxgenpcvbm((__a), (int)(__imm)),                    \
17576              vector unsigned short                                             \
17577            : __builtin_vsx_xxgenpcvhm((__a), (int)(__imm)),                    \
17578              vector unsigned int                                               \
17579            : __builtin_vsx_xxgenpcvwm((__a), (int)(__imm)),                    \
17580              vector unsigned long long                                         \
17581            : __builtin_vsx_xxgenpcvdm((__a), (int)(__imm)))
17582 #endif /* __VSX__ */
17583 
17584 /* vec_clrl */
17585 
17586 static __inline__ vector signed char __ATTRS_o_ai
vec_clrl(vector signed char __a,unsigned int __n)17587 vec_clrl(vector signed char __a, unsigned int __n) {
17588 #ifdef __LITTLE_ENDIAN__
17589   return __builtin_altivec_vclrrb(__a, __n);
17590 #else
17591   return __builtin_altivec_vclrlb( __a, __n);
17592 #endif
17593 }
17594 
17595 static __inline__ vector unsigned char __ATTRS_o_ai
vec_clrl(vector unsigned char __a,unsigned int __n)17596 vec_clrl(vector unsigned char __a, unsigned int __n) {
17597 #ifdef __LITTLE_ENDIAN__
17598   return __builtin_altivec_vclrrb((vector signed char)__a, __n);
17599 #else
17600   return __builtin_altivec_vclrlb((vector signed char)__a, __n);
17601 #endif
17602 }
17603 
17604 /* vec_clrr */
17605 
17606 static __inline__ vector signed char __ATTRS_o_ai
vec_clrr(vector signed char __a,unsigned int __n)17607 vec_clrr(vector signed char __a, unsigned int __n) {
17608 #ifdef __LITTLE_ENDIAN__
17609   return __builtin_altivec_vclrlb(__a, __n);
17610 #else
17611   return __builtin_altivec_vclrrb( __a, __n);
17612 #endif
17613 }
17614 
17615 static __inline__ vector unsigned char __ATTRS_o_ai
vec_clrr(vector unsigned char __a,unsigned int __n)17616 vec_clrr(vector unsigned char __a, unsigned int __n) {
17617 #ifdef __LITTLE_ENDIAN__
17618   return __builtin_altivec_vclrlb((vector signed char)__a, __n);
17619 #else
17620   return __builtin_altivec_vclrrb((vector signed char)__a, __n);
17621 #endif
17622 }
17623 
17624 /* vec_cntlzm */
17625 
17626 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_cntlzm(vector unsigned long long __a,vector unsigned long long __b)17627 vec_cntlzm(vector unsigned long long __a, vector unsigned long long __b) {
17628   return __builtin_altivec_vclzdm(__a, __b);
17629 }
17630 
17631 /* vec_cnttzm */
17632 
17633 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_cnttzm(vector unsigned long long __a,vector unsigned long long __b)17634 vec_cnttzm(vector unsigned long long __a, vector unsigned long long __b) {
17635   return __builtin_altivec_vctzdm(__a, __b);
17636 }
17637 
17638 /* vec_mod */
17639 
17640 static __inline__ vector signed int __ATTRS_o_ai
vec_mod(vector signed int __a,vector signed int __b)17641 vec_mod(vector signed int __a, vector signed int __b) {
17642   return __a % __b;
17643 }
17644 
17645 static __inline__ vector unsigned int __ATTRS_o_ai
vec_mod(vector unsigned int __a,vector unsigned int __b)17646 vec_mod(vector unsigned int __a, vector unsigned int __b) {
17647   return __a % __b;
17648 }
17649 
17650 static __inline__ vector signed long long __ATTRS_o_ai
vec_mod(vector signed long long __a,vector signed long long __b)17651 vec_mod(vector signed long long __a, vector signed long long __b) {
17652   return __a % __b;
17653 }
17654 
17655 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mod(vector unsigned long long __a,vector unsigned long long __b)17656 vec_mod(vector unsigned long long __a, vector unsigned long long __b) {
17657   return __a % __b;
17658 }
17659 
17660 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_mod(vector signed __int128 __a,vector signed __int128 __b)17661 vec_mod(vector signed __int128 __a, vector signed __int128 __b) {
17662   return __a % __b;
17663 }
17664 
17665 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_mod(vector unsigned __int128 __a,vector unsigned __int128 __b)17666 vec_mod(vector unsigned __int128 __a, vector unsigned __int128 __b) {
17667   return  __a % __b;
17668 }
17669 
17670 /* vec_sldbi */
17671 
17672 #define vec_sldb(__a, __b, __c) __builtin_altivec_vsldbi(__a, __b, (__c & 0x7))
17673 
17674 /* vec_srdbi */
17675 
17676 #define vec_srdb(__a, __b, __c) __builtin_altivec_vsrdbi(__a, __b, (__c & 0x7))
17677 
17678 /* vec_insertl */
17679 
17680 static __inline__ vector unsigned char __ATTRS_o_ai
vec_insertl(unsigned char __a,vector unsigned char __b,unsigned int __c)17681 vec_insertl(unsigned char __a, vector unsigned char __b, unsigned int __c) {
17682 #ifdef __LITTLE_ENDIAN__
17683   return __builtin_altivec_vinsbrx(__b, __c, __a);
17684 #else
17685   return __builtin_altivec_vinsblx(__b, __c, __a);
17686 #endif
17687 }
17688 
17689 static __inline__ vector unsigned short __ATTRS_o_ai
vec_insertl(unsigned short __a,vector unsigned short __b,unsigned int __c)17690 vec_insertl(unsigned short __a, vector unsigned short __b, unsigned int __c) {
17691 #ifdef __LITTLE_ENDIAN__
17692   return __builtin_altivec_vinshrx(__b, __c, __a);
17693 #else
17694   return __builtin_altivec_vinshlx(__b, __c, __a);
17695 #endif
17696 }
17697 
17698 static __inline__ vector unsigned int __ATTRS_o_ai
vec_insertl(unsigned int __a,vector unsigned int __b,unsigned int __c)17699 vec_insertl(unsigned int __a, vector unsigned int __b, unsigned int __c) {
17700 #ifdef __LITTLE_ENDIAN__
17701   return __builtin_altivec_vinswrx(__b, __c, __a);
17702 #else
17703   return __builtin_altivec_vinswlx(__b, __c, __a);
17704 #endif
17705 }
17706 
17707 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_insertl(unsigned long long __a,vector unsigned long long __b,unsigned int __c)17708 vec_insertl(unsigned long long __a, vector unsigned long long __b,
17709             unsigned int __c) {
17710 #ifdef __LITTLE_ENDIAN__
17711   return __builtin_altivec_vinsdrx(__b, __c, __a);
17712 #else
17713   return __builtin_altivec_vinsdlx(__b, __c, __a);
17714 #endif
17715 }
17716 
17717 static __inline__ vector unsigned char __ATTRS_o_ai
vec_insertl(vector unsigned char __a,vector unsigned char __b,unsigned int __c)17718 vec_insertl(vector unsigned char __a, vector unsigned char __b,
17719             unsigned int __c) {
17720 #ifdef __LITTLE_ENDIAN__
17721   return __builtin_altivec_vinsbvrx(__b, __c, __a);
17722 #else
17723   return __builtin_altivec_vinsbvlx(__b, __c, __a);
17724 #endif
17725 }
17726 
17727 static __inline__ vector unsigned short __ATTRS_o_ai
vec_insertl(vector unsigned short __a,vector unsigned short __b,unsigned int __c)17728 vec_insertl(vector unsigned short __a, vector unsigned short __b,
17729             unsigned int __c) {
17730 #ifdef __LITTLE_ENDIAN__
17731   return __builtin_altivec_vinshvrx(__b, __c, __a);
17732 #else
17733   return __builtin_altivec_vinshvlx(__b, __c, __a);
17734 #endif
17735 }
17736 
17737 static __inline__ vector unsigned int __ATTRS_o_ai
vec_insertl(vector unsigned int __a,vector unsigned int __b,unsigned int __c)17738 vec_insertl(vector unsigned int __a, vector unsigned int __b,
17739             unsigned int __c) {
17740 #ifdef __LITTLE_ENDIAN__
17741   return __builtin_altivec_vinswvrx(__b, __c, __a);
17742 #else
17743   return __builtin_altivec_vinswvlx(__b, __c, __a);
17744 #endif
17745 }
17746 
17747 /* vec_inserth */
17748 
17749 static __inline__ vector unsigned char __ATTRS_o_ai
vec_inserth(unsigned char __a,vector unsigned char __b,unsigned int __c)17750 vec_inserth(unsigned char __a, vector unsigned char __b, unsigned int __c) {
17751 #ifdef __LITTLE_ENDIAN__
17752   return __builtin_altivec_vinsblx(__b, __c, __a);
17753 #else
17754   return __builtin_altivec_vinsbrx(__b, __c, __a);
17755 #endif
17756 }
17757 
17758 static __inline__ vector unsigned short __ATTRS_o_ai
vec_inserth(unsigned short __a,vector unsigned short __b,unsigned int __c)17759 vec_inserth(unsigned short __a, vector unsigned short __b, unsigned int __c) {
17760 #ifdef __LITTLE_ENDIAN__
17761   return __builtin_altivec_vinshlx(__b, __c, __a);
17762 #else
17763   return __builtin_altivec_vinshrx(__b, __c, __a);
17764 #endif
17765 }
17766 
17767 static __inline__ vector unsigned int __ATTRS_o_ai
vec_inserth(unsigned int __a,vector unsigned int __b,unsigned int __c)17768 vec_inserth(unsigned int __a, vector unsigned int __b, unsigned int __c) {
17769 #ifdef __LITTLE_ENDIAN__
17770   return __builtin_altivec_vinswlx(__b, __c, __a);
17771 #else
17772   return __builtin_altivec_vinswrx(__b, __c, __a);
17773 #endif
17774 }
17775 
17776 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_inserth(unsigned long long __a,vector unsigned long long __b,unsigned int __c)17777 vec_inserth(unsigned long long __a, vector unsigned long long __b,
17778             unsigned int __c) {
17779 #ifdef __LITTLE_ENDIAN__
17780   return __builtin_altivec_vinsdlx(__b, __c, __a);
17781 #else
17782   return __builtin_altivec_vinsdrx(__b, __c, __a);
17783 #endif
17784 }
17785 
17786 static __inline__ vector unsigned char __ATTRS_o_ai
vec_inserth(vector unsigned char __a,vector unsigned char __b,unsigned int __c)17787 vec_inserth(vector unsigned char __a, vector unsigned char __b,
17788             unsigned int __c) {
17789 #ifdef __LITTLE_ENDIAN__
17790   return __builtin_altivec_vinsbvlx(__b, __c, __a);
17791 #else
17792   return __builtin_altivec_vinsbvrx(__b, __c, __a);
17793 #endif
17794 }
17795 
17796 static __inline__ vector unsigned short __ATTRS_o_ai
vec_inserth(vector unsigned short __a,vector unsigned short __b,unsigned int __c)17797 vec_inserth(vector unsigned short __a, vector unsigned short __b,
17798             unsigned int __c) {
17799 #ifdef __LITTLE_ENDIAN__
17800   return __builtin_altivec_vinshvlx(__b, __c, __a);
17801 #else
17802   return __builtin_altivec_vinshvrx(__b, __c, __a);
17803 #endif
17804 }
17805 
17806 static __inline__ vector unsigned int __ATTRS_o_ai
vec_inserth(vector unsigned int __a,vector unsigned int __b,unsigned int __c)17807 vec_inserth(vector unsigned int __a, vector unsigned int __b,
17808             unsigned int __c) {
17809 #ifdef __LITTLE_ENDIAN__
17810   return __builtin_altivec_vinswvlx(__b, __c, __a);
17811 #else
17812   return __builtin_altivec_vinswvrx(__b, __c, __a);
17813 #endif
17814 }
17815 
17816 /* vec_extractl */
17817 
vec_extractl(vector unsigned char __a,vector unsigned char __b,unsigned int __c)17818 static __inline__ vector unsigned long long __ATTRS_o_ai vec_extractl(
17819     vector unsigned char __a, vector unsigned char __b, unsigned int __c) {
17820 #ifdef __LITTLE_ENDIAN__
17821   return __builtin_altivec_vextdubvrx(__a, __b, __c);
17822 #else
17823   vector unsigned long long __ret = __builtin_altivec_vextdubvlx(__a, __b, __c);
17824   return vec_sld(__ret, __ret, 8);
17825 #endif
17826 }
17827 
vec_extractl(vector unsigned short __a,vector unsigned short __b,unsigned int __c)17828 static __inline__ vector unsigned long long __ATTRS_o_ai vec_extractl(
17829     vector unsigned short __a, vector unsigned short __b, unsigned int __c) {
17830 #ifdef __LITTLE_ENDIAN__
17831   return __builtin_altivec_vextduhvrx(__a, __b, __c);
17832 #else
17833   vector unsigned long long __ret = __builtin_altivec_vextduhvlx(__a, __b, __c);
17834   return vec_sld(__ret, __ret, 8);
17835 #endif
17836 }
17837 
vec_extractl(vector unsigned int __a,vector unsigned int __b,unsigned int __c)17838 static __inline__ vector unsigned long long __ATTRS_o_ai vec_extractl(
17839     vector unsigned int __a, vector unsigned int __b, unsigned int __c) {
17840 #ifdef __LITTLE_ENDIAN__
17841   return __builtin_altivec_vextduwvrx(__a, __b, __c);
17842 #else
17843   vector unsigned long long __ret = __builtin_altivec_vextduwvlx(__a, __b, __c);
17844   return vec_sld(__ret, __ret, 8);
17845 #endif
17846 }
17847 
17848 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_extractl(vector unsigned long long __a,vector unsigned long long __b,unsigned int __c)17849 vec_extractl(vector unsigned long long __a, vector unsigned long long __b,
17850              unsigned int __c) {
17851 #ifdef __LITTLE_ENDIAN__
17852   return __builtin_altivec_vextddvrx(__a, __b, __c);
17853 #else
17854   vector unsigned long long __ret = __builtin_altivec_vextddvlx(__a, __b, __c);
17855   return vec_sld(__ret, __ret, 8);
17856 #endif
17857 }
17858 
17859 /* vec_extracth */
17860 
vec_extracth(vector unsigned char __a,vector unsigned char __b,unsigned int __c)17861 static __inline__ vector unsigned long long __ATTRS_o_ai vec_extracth(
17862     vector unsigned char __a, vector unsigned char __b, unsigned int __c) {
17863 #ifdef __LITTLE_ENDIAN__
17864   return __builtin_altivec_vextdubvlx(__a, __b, __c);
17865 #else
17866   vector unsigned long long __ret = __builtin_altivec_vextdubvrx(__a, __b, __c);
17867   return vec_sld(__ret, __ret, 8);
17868 #endif
17869 }
17870 
vec_extracth(vector unsigned short __a,vector unsigned short __b,unsigned int __c)17871 static __inline__ vector unsigned long long __ATTRS_o_ai vec_extracth(
17872     vector unsigned short __a, vector unsigned short __b, unsigned int __c) {
17873 #ifdef __LITTLE_ENDIAN__
17874   return __builtin_altivec_vextduhvlx(__a, __b, __c);
17875 #else
17876   vector unsigned long long __ret = __builtin_altivec_vextduhvrx(__a, __b, __c);
17877   return vec_sld(__ret, __ret, 8);
17878 #endif
17879 }
17880 
vec_extracth(vector unsigned int __a,vector unsigned int __b,unsigned int __c)17881 static __inline__ vector unsigned long long __ATTRS_o_ai vec_extracth(
17882     vector unsigned int __a, vector unsigned int __b, unsigned int __c) {
17883 #ifdef __LITTLE_ENDIAN__
17884   return __builtin_altivec_vextduwvlx(__a, __b, __c);
17885 #else
17886   vector unsigned long long __ret = __builtin_altivec_vextduwvrx(__a, __b, __c);
17887   return vec_sld(__ret, __ret, 8);
17888 #endif
17889 }
17890 
17891 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_extracth(vector unsigned long long __a,vector unsigned long long __b,unsigned int __c)17892 vec_extracth(vector unsigned long long __a, vector unsigned long long __b,
17893              unsigned int __c) {
17894 #ifdef __LITTLE_ENDIAN__
17895   return __builtin_altivec_vextddvlx(__a, __b, __c);
17896 #else
17897   vector unsigned long long __ret = __builtin_altivec_vextddvrx(__a, __b, __c);
17898   return vec_sld(__ret, __ret, 8);
17899 #endif
17900 }
17901 
17902 #ifdef __VSX__
17903 
17904 /* vec_permx */
17905 
17906 #define vec_permx(__a, __b, __c, __d)                                          \
17907   __builtin_vsx_xxpermx((__a), (__b), (__c), (__d))
17908 
17909 /* vec_blendv */
17910 
17911 static __inline__ vector signed char __ATTRS_o_ai
vec_blendv(vector signed char __a,vector signed char __b,vector unsigned char __c)17912 vec_blendv(vector signed char __a, vector signed char __b,
17913            vector unsigned char __c) {
17914   return __builtin_vsx_xxblendvb(__a, __b, __c);
17915 }
17916 
17917 static __inline__ vector unsigned char __ATTRS_o_ai
vec_blendv(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)17918 vec_blendv(vector unsigned char __a, vector unsigned char __b,
17919            vector unsigned char __c) {
17920   return __builtin_vsx_xxblendvb(__a, __b, __c);
17921 }
17922 
17923 static __inline__ vector signed short __ATTRS_o_ai
vec_blendv(vector signed short __a,vector signed short __b,vector unsigned short __c)17924 vec_blendv(vector signed short __a, vector signed short __b,
17925            vector unsigned short __c) {
17926   return __builtin_vsx_xxblendvh(__a, __b, __c);
17927 }
17928 
17929 static __inline__ vector unsigned short __ATTRS_o_ai
vec_blendv(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)17930 vec_blendv(vector unsigned short __a, vector unsigned short __b,
17931            vector unsigned short __c) {
17932   return __builtin_vsx_xxblendvh(__a, __b, __c);
17933 }
17934 
17935 static __inline__ vector signed int __ATTRS_o_ai
vec_blendv(vector signed int __a,vector signed int __b,vector unsigned int __c)17936 vec_blendv(vector signed int __a, vector signed int __b,
17937            vector unsigned int __c) {
17938   return __builtin_vsx_xxblendvw(__a, __b, __c);
17939 }
17940 
17941 static __inline__ vector unsigned int __ATTRS_o_ai
vec_blendv(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)17942 vec_blendv(vector unsigned int __a, vector unsigned int __b,
17943            vector unsigned int __c) {
17944   return __builtin_vsx_xxblendvw(__a, __b, __c);
17945 }
17946 
17947 static __inline__ vector signed long long __ATTRS_o_ai
vec_blendv(vector signed long long __a,vector signed long long __b,vector unsigned long long __c)17948 vec_blendv(vector signed long long __a, vector signed long long __b,
17949            vector unsigned long long __c) {
17950   return __builtin_vsx_xxblendvd(__a, __b, __c);
17951 }
17952 
17953 static __inline__ vector unsigned long long __ATTRS_o_ai
vec_blendv(vector unsigned long long __a,vector unsigned long long __b,vector unsigned long long __c)17954 vec_blendv(vector unsigned long long __a, vector unsigned long long __b,
17955            vector unsigned long long __c) {
17956   return __builtin_vsx_xxblendvd(__a, __b, __c);
17957 }
17958 
17959 static __inline__ vector float __ATTRS_o_ai
vec_blendv(vector float __a,vector float __b,vector unsigned int __c)17960 vec_blendv(vector float __a, vector float __b, vector unsigned int __c) {
17961   return __builtin_vsx_xxblendvw(__a, __b, __c);
17962 }
17963 
17964 static __inline__ vector double __ATTRS_o_ai
vec_blendv(vector double __a,vector double __b,vector unsigned long long __c)17965 vec_blendv(vector double __a, vector double __b,
17966            vector unsigned long long __c) {
17967   return __builtin_vsx_xxblendvd(__a, __b, __c);
17968 }
17969 
17970 /* vec_replace_elt */
17971 
17972 #define vec_replace_elt __builtin_altivec_vec_replace_elt
17973 
17974 /* vec_replace_unaligned */
17975 
17976 #define vec_replace_unaligned __builtin_altivec_vec_replace_unaligned
17977 
17978 /* vec_splati */
17979 
17980 #define vec_splati(__a)                                                        \
17981   _Generic((__a), signed int                                                   \
17982            : ((vector signed int)__a), unsigned int                            \
17983            : ((vector unsigned int)__a), float                                 \
17984            : ((vector float)__a))
17985 
17986 /* vec_spatid */
17987 
vec_splatid(const float __a)17988 static __inline__ vector double __ATTRS_o_ai vec_splatid(const float __a) {
17989   return ((vector double)((double)__a));
17990 }
17991 
17992 /* vec_splati_ins */
17993 
vec_splati_ins(vector signed int __a,const unsigned int __b,const signed int __c)17994 static __inline__ vector signed int __ATTRS_o_ai vec_splati_ins(
17995     vector signed int __a, const unsigned int __b, const signed int __c) {
17996 #ifdef __LITTLE_ENDIAN__
17997   __a[1 - __b] = __c;
17998   __a[3 - __b] = __c;
17999 #else
18000   __a[__b] = __c;
18001   __a[2 + __b] = __c;
18002 #endif
18003   return __a;
18004 }
18005 
vec_splati_ins(vector unsigned int __a,const unsigned int __b,const unsigned int __c)18006 static __inline__ vector unsigned int __ATTRS_o_ai vec_splati_ins(
18007     vector unsigned int __a, const unsigned int __b, const unsigned int __c) {
18008 #ifdef __LITTLE_ENDIAN__
18009   __a[1 - __b] = __c;
18010   __a[3 - __b] = __c;
18011 #else
18012   __a[__b] = __c;
18013   __a[2 + __b] = __c;
18014 #endif
18015   return __a;
18016 }
18017 
18018 static __inline__ vector float __ATTRS_o_ai
vec_splati_ins(vector float __a,const unsigned int __b,const float __c)18019 vec_splati_ins(vector float __a, const unsigned int __b, const float __c) {
18020 #ifdef __LITTLE_ENDIAN__
18021   __a[1 - __b] = __c;
18022   __a[3 - __b] = __c;
18023 #else
18024   __a[__b] = __c;
18025   __a[2 + __b] = __c;
18026 #endif
18027   return __a;
18028 }
18029 
18030 /* vec_test_lsbb_all_ones */
18031 
18032 static __inline__ int __ATTRS_o_ai
vec_test_lsbb_all_ones(vector unsigned char __a)18033 vec_test_lsbb_all_ones(vector unsigned char __a) {
18034   return __builtin_vsx_xvtlsbb(__a, 1);
18035 }
18036 
18037 /* vec_test_lsbb_all_zeros */
18038 
18039 static __inline__ int __ATTRS_o_ai
vec_test_lsbb_all_zeros(vector unsigned char __a)18040 vec_test_lsbb_all_zeros(vector unsigned char __a) {
18041   return __builtin_vsx_xvtlsbb(__a, 0);
18042 }
18043 #endif /* __VSX__ */
18044 
18045 /* vec_stril */
18046 
18047 static __inline__ vector unsigned char __ATTRS_o_ai
vec_stril(vector unsigned char __a)18048 vec_stril(vector unsigned char __a) {
18049 #ifdef __LITTLE_ENDIAN__
18050   return __builtin_altivec_vstribr((vector signed char)__a);
18051 #else
18052   return __builtin_altivec_vstribl((vector signed char)__a);
18053 #endif
18054 }
18055 
18056 static __inline__ vector signed char __ATTRS_o_ai
vec_stril(vector signed char __a)18057 vec_stril(vector signed char __a) {
18058 #ifdef __LITTLE_ENDIAN__
18059   return __builtin_altivec_vstribr(__a);
18060 #else
18061   return __builtin_altivec_vstribl(__a);
18062 #endif
18063 }
18064 
18065 static __inline__ vector unsigned short __ATTRS_o_ai
vec_stril(vector unsigned short __a)18066 vec_stril(vector unsigned short __a) {
18067 #ifdef __LITTLE_ENDIAN__
18068   return __builtin_altivec_vstrihr((vector signed short)__a);
18069 #else
18070   return __builtin_altivec_vstrihl((vector signed short)__a);
18071 #endif
18072 }
18073 
18074 static __inline__ vector signed short __ATTRS_o_ai
vec_stril(vector signed short __a)18075 vec_stril(vector signed short __a) {
18076 #ifdef __LITTLE_ENDIAN__
18077   return __builtin_altivec_vstrihr(__a);
18078 #else
18079   return __builtin_altivec_vstrihl(__a);
18080 #endif
18081 }
18082 
18083 /* vec_stril_p */
18084 
vec_stril_p(vector unsigned char __a)18085 static __inline__ int __ATTRS_o_ai vec_stril_p(vector unsigned char __a) {
18086 #ifdef __LITTLE_ENDIAN__
18087   return __builtin_altivec_vstribr_p(__CR6_EQ, (vector signed char)__a);
18088 #else
18089   return __builtin_altivec_vstribl_p(__CR6_EQ, (vector signed char)__a);
18090 #endif
18091 }
18092 
vec_stril_p(vector signed char __a)18093 static __inline__ int __ATTRS_o_ai vec_stril_p(vector signed char __a) {
18094 #ifdef __LITTLE_ENDIAN__
18095   return __builtin_altivec_vstribr_p(__CR6_EQ, __a);
18096 #else
18097   return __builtin_altivec_vstribl_p(__CR6_EQ, __a);
18098 #endif
18099 }
18100 
vec_stril_p(vector unsigned short __a)18101 static __inline__ int __ATTRS_o_ai vec_stril_p(vector unsigned short __a) {
18102 #ifdef __LITTLE_ENDIAN__
18103   return __builtin_altivec_vstrihr_p(__CR6_EQ, (vector signed short)__a);
18104 #else
18105   return __builtin_altivec_vstrihl_p(__CR6_EQ, (vector signed short)__a);
18106 #endif
18107 }
18108 
vec_stril_p(vector signed short __a)18109 static __inline__ int __ATTRS_o_ai vec_stril_p(vector signed short __a) {
18110 #ifdef __LITTLE_ENDIAN__
18111   return __builtin_altivec_vstrihr_p(__CR6_EQ, __a);
18112 #else
18113   return __builtin_altivec_vstrihl_p(__CR6_EQ, __a);
18114 #endif
18115 }
18116 
18117 /* vec_strir */
18118 
18119 static __inline__ vector unsigned char __ATTRS_o_ai
vec_strir(vector unsigned char __a)18120 vec_strir(vector unsigned char __a) {
18121 #ifdef __LITTLE_ENDIAN__
18122   return __builtin_altivec_vstribl((vector signed char)__a);
18123 #else
18124   return __builtin_altivec_vstribr((vector signed char)__a);
18125 #endif
18126 }
18127 
18128 static __inline__ vector signed char __ATTRS_o_ai
vec_strir(vector signed char __a)18129 vec_strir(vector signed char __a) {
18130 #ifdef __LITTLE_ENDIAN__
18131   return __builtin_altivec_vstribl(__a);
18132 #else
18133   return __builtin_altivec_vstribr(__a);
18134 #endif
18135 }
18136 
18137 static __inline__ vector unsigned short __ATTRS_o_ai
vec_strir(vector unsigned short __a)18138 vec_strir(vector unsigned short __a) {
18139 #ifdef __LITTLE_ENDIAN__
18140   return __builtin_altivec_vstrihl((vector signed short)__a);
18141 #else
18142   return __builtin_altivec_vstrihr((vector signed short)__a);
18143 #endif
18144 }
18145 
18146 static __inline__ vector signed short __ATTRS_o_ai
vec_strir(vector signed short __a)18147 vec_strir(vector signed short __a) {
18148 #ifdef __LITTLE_ENDIAN__
18149   return __builtin_altivec_vstrihl(__a);
18150 #else
18151   return __builtin_altivec_vstrihr(__a);
18152 #endif
18153 }
18154 
18155 /* vec_strir_p */
18156 
vec_strir_p(vector unsigned char __a)18157 static __inline__ int __ATTRS_o_ai vec_strir_p(vector unsigned char __a) {
18158 #ifdef __LITTLE_ENDIAN__
18159   return __builtin_altivec_vstribl_p(__CR6_EQ, (vector signed char)__a);
18160 #else
18161   return __builtin_altivec_vstribr_p(__CR6_EQ, (vector signed char)__a);
18162 #endif
18163 }
18164 
vec_strir_p(vector signed char __a)18165 static __inline__ int __ATTRS_o_ai vec_strir_p(vector signed char __a) {
18166 #ifdef __LITTLE_ENDIAN__
18167   return __builtin_altivec_vstribl_p(__CR6_EQ, __a);
18168 #else
18169   return __builtin_altivec_vstribr_p(__CR6_EQ, __a);
18170 #endif
18171 }
18172 
vec_strir_p(vector unsigned short __a)18173 static __inline__ int __ATTRS_o_ai vec_strir_p(vector unsigned short __a) {
18174 #ifdef __LITTLE_ENDIAN__
18175   return __builtin_altivec_vstrihl_p(__CR6_EQ, (vector signed short)__a);
18176 #else
18177   return __builtin_altivec_vstrihr_p(__CR6_EQ, (vector signed short)__a);
18178 #endif
18179 }
18180 
vec_strir_p(vector signed short __a)18181 static __inline__ int __ATTRS_o_ai vec_strir_p(vector signed short __a) {
18182 #ifdef __LITTLE_ENDIAN__
18183   return __builtin_altivec_vstrihl_p(__CR6_EQ, __a);
18184 #else
18185   return __builtin_altivec_vstrihr_p(__CR6_EQ, __a);
18186 #endif
18187 }
18188 
18189 /* vs[l | r | ra] */
18190 
18191 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_sl(vector unsigned __int128 __a,vector unsigned __int128 __b)18192 vec_sl(vector unsigned __int128 __a, vector unsigned __int128 __b) {
18193   return __a << (__b % (vector unsigned __int128)(sizeof(unsigned __int128) *
18194                                                   __CHAR_BIT__));
18195 }
18196 
18197 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_sl(vector signed __int128 __a,vector unsigned __int128 __b)18198 vec_sl(vector signed __int128 __a, vector unsigned __int128 __b) {
18199   return __a << (__b % (vector unsigned __int128)(sizeof(unsigned __int128) *
18200                                                   __CHAR_BIT__));
18201 }
18202 
18203 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_sr(vector unsigned __int128 __a,vector unsigned __int128 __b)18204 vec_sr(vector unsigned __int128 __a, vector unsigned __int128 __b) {
18205   return __a >> (__b % (vector unsigned __int128)(sizeof(unsigned __int128) *
18206                                                   __CHAR_BIT__));
18207 }
18208 
18209 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_sr(vector signed __int128 __a,vector unsigned __int128 __b)18210 vec_sr(vector signed __int128 __a, vector unsigned __int128 __b) {
18211   return (
18212       vector signed __int128)(((vector unsigned __int128)__a) >>
18213                               (__b %
18214                                (vector unsigned __int128)(sizeof(
18215                                                               unsigned __int128) *
18216                                                           __CHAR_BIT__)));
18217 }
18218 
18219 static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_sra(vector unsigned __int128 __a,vector unsigned __int128 __b)18220 vec_sra(vector unsigned __int128 __a, vector unsigned __int128 __b) {
18221   return (
18222       vector unsigned __int128)(((vector signed __int128)__a) >>
18223                                 (__b %
18224                                  (vector unsigned __int128)(sizeof(
18225                                                                 unsigned __int128) *
18226                                                             __CHAR_BIT__)));
18227 }
18228 
18229 static __inline__ vector signed __int128 __ATTRS_o_ai
vec_sra(vector signed __int128 __a,vector unsigned __int128 __b)18230 vec_sra(vector signed __int128 __a, vector unsigned __int128 __b) {
18231   return __a >> (__b % (vector unsigned __int128)(sizeof(unsigned __int128) *
18232                                                   __CHAR_BIT__));
18233 }
18234 
18235 #endif /* __POWER10_VECTOR__ */
18236 
18237 #undef __ATTRS_o_ai
18238 
18239 #endif /* __ALTIVEC_H */
18240