xref: /freebsd/contrib/llvm-project/clang/lib/Headers/altivec.h (revision 9e5787d2284e187abb5b654d924394a65772e004)
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
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
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
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
131 vec_abs(vector signed long long __a) {
132   return __builtin_altivec_vmaxsd(__a, -__a);
133 }
134 #endif
135 
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__
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
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
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
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
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
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
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
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
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
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
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
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
223 vec_add(vector unsigned char __a, vector bool char __b) {
224   return __a + (vector unsigned char)__b;
225 }
226 
227 static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
228                                                     vector short __b) {
229   return __a + __b;
230 }
231 
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 
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
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
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
253 vec_add(vector unsigned short __a, vector bool short __b) {
254   return __a + (vector unsigned short)__b;
255 }
256 
257 static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
258                                                   vector int __b) {
259   return __a + __b;
260 }
261 
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 
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
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
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
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
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
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
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
304 vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) {
305   return __a + __b;
306 }
307 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
308 
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__
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 
451 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
452                                                         vector short __b) {
453   return __a + __b;
454 }
455 
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 
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
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
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
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 
485 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
486                                                       vector int __b) {
487   return __a + __b;
488 }
489 
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 
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
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
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
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__))
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
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
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
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
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__))
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
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
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
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
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
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
585 vec_adds(vector unsigned char __a, vector bool char __b) {
586   return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
587 }
588 
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 
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 
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
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
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
615 vec_adds(vector unsigned short __a, vector bool short __b) {
616   return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
617 }
618 
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 
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 
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
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
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
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
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
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
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
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
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
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 
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 
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 
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
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
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
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 
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 
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 
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
835 vec_and(vector unsigned char __a, vector bool char __b) {
836   return __a & (vector unsigned char)__b;
837 }
838 
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 
844 static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
845                                                     vector short __b) {
846   return __a & __b;
847 }
848 
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 
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
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
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
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
875 vec_and(vector bool short __a, vector bool short __b) {
876   return __a & __b;
877 }
878 
879 static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
880                                                   vector int __b) {
881   return __a & __b;
882 }
883 
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 
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
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
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
905 vec_and(vector unsigned int __a, vector bool int __b) {
906   return __a & (vector unsigned int)__b;
907 }
908 
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 
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 
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 
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__
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
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 
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
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
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
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
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
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
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
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
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
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
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
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
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
1021 vec_vand(vector unsigned char __a, vector bool char __b) {
1022   return __a & (vector unsigned char)__b;
1023 }
1024 
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 
1030 static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
1031                                                      vector short __b) {
1032   return __a & __b;
1033 }
1034 
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 
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
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
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
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
1061 vec_vand(vector bool short __a, vector bool short __b) {
1062   return __a & __b;
1063 }
1064 
1065 static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
1066                                                    vector int __b) {
1067   return __a & __b;
1068 }
1069 
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 
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
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
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
1091 vec_vand(vector unsigned int __a, vector bool int __b) {
1092   return __a & (vector unsigned int)__b;
1093 }
1094 
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 
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 
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 
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
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
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
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
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
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
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
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
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
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
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
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
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
1188 vec_andc(vector unsigned char __a, vector bool char __b) {
1189   return __a & ~(vector unsigned char)__b;
1190 }
1191 
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 
1197 static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1198                                                      vector short __b) {
1199   return __a & ~__b;
1200 }
1201 
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 
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
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
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
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
1228 vec_andc(vector bool short __a, vector bool short __b) {
1229   return __a & ~__b;
1230 }
1231 
1232 static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1233                                                    vector int __b) {
1234   return __a & ~__b;
1235 }
1236 
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 
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
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
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
1258 vec_andc(vector unsigned int __a, vector bool int __b) {
1259   return __a & ~(vector unsigned int)__b;
1260 }
1261 
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 
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 
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 
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__
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
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 
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
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
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
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
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
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
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
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
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
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
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
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
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
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
1379 vec_vandc(vector bool char __a, vector bool char __b) {
1380   return __a & ~__b;
1381 }
1382 
1383 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1384                                                       vector short __b) {
1385   return __a & ~__b;
1386 }
1387 
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 
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
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
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
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
1414 vec_vandc(vector bool short __a, vector bool short __b) {
1415   return __a & ~__b;
1416 }
1417 
1418 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1419                                                     vector int __b) {
1420   return __a & ~__b;
1421 }
1422 
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 
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
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
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
1444 vec_vandc(vector unsigned int __a, vector bool int __b) {
1445   return __a & ~(vector unsigned int)__b;
1446 }
1447 
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 
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 
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 
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
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
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
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
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
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
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
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
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
1519 vec_avg(vector unsigned char __a, vector unsigned char __b) {
1520   return __builtin_altivec_vavgub(__a, __b);
1521 }
1522 
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
1529 vec_avg(vector unsigned short __a, vector unsigned short __b) {
1530   return __builtin_altivec_vavguh(__a, __b);
1531 }
1532 
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
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__))
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__))
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__))
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__))
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__))
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__))
1581 vec_vavguw(vector unsigned int __a, vector unsigned int __b) {
1582   return __builtin_altivec_vavguw(__a, __b);
1583 }
1584 
1585 /* vec_ceil */
1586 
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__
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__))
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__))
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__))
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
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
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
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 
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
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
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 
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
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 
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
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
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
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 
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
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 __POWER9_VECTOR__
1713 /* vec_cmpne */
1714 
1715 static __inline__ vector bool char __ATTRS_o_ai
1716 vec_cmpne(vector bool char __a, vector bool char __b) {
1717   return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
1718                                                      (vector char)__b);
1719 }
1720 
1721 static __inline__ vector bool char __ATTRS_o_ai
1722 vec_cmpne(vector signed char __a, vector signed char __b) {
1723   return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
1724                                                      (vector char)__b);
1725 }
1726 
1727 static __inline__ vector bool char __ATTRS_o_ai
1728 vec_cmpne(vector unsigned char __a, vector unsigned char __b) {
1729   return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
1730                                                      (vector char)__b);
1731 }
1732 
1733 static __inline__ vector bool short __ATTRS_o_ai
1734 vec_cmpne(vector bool short __a, vector bool short __b) {
1735   return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
1736                                                       (vector short)__b);
1737 }
1738 
1739 static __inline__ vector bool short __ATTRS_o_ai
1740 vec_cmpne(vector signed short __a, vector signed short __b) {
1741   return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
1742                                                       (vector short)__b);
1743 }
1744 
1745 static __inline__ vector bool short __ATTRS_o_ai
1746 vec_cmpne(vector unsigned short __a, vector unsigned short __b) {
1747   return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
1748                                                       (vector short)__b);
1749 }
1750 
1751 static __inline__ vector bool int __ATTRS_o_ai
1752 vec_cmpne(vector bool int __a, vector bool int __b) {
1753   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1754                                                     (vector int)__b);
1755 }
1756 
1757 static __inline__ vector bool int __ATTRS_o_ai
1758 vec_cmpne(vector signed int __a, vector signed int __b) {
1759   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1760                                                     (vector int)__b);
1761 }
1762 
1763 static __inline__ vector bool int __ATTRS_o_ai
1764 vec_cmpne(vector unsigned int __a, vector unsigned int __b) {
1765   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1766                                                     (vector int)__b);
1767 }
1768 
1769 static __inline__ vector bool long long __ATTRS_o_ai
1770 vec_cmpne(vector bool long long __a, vector bool long long __b) {
1771   return (vector bool long long)
1772     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1773 }
1774 
1775 static __inline__ vector bool long long __ATTRS_o_ai
1776 vec_cmpne(vector signed long long __a, vector signed long long __b) {
1777   return (vector bool long long)
1778     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1779 }
1780 
1781 static __inline__ vector bool long long __ATTRS_o_ai
1782 vec_cmpne(vector unsigned long long __a, vector unsigned long long __b) {
1783   return (vector bool long long)
1784     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1785 }
1786 
1787 static __inline__ vector bool int __ATTRS_o_ai
1788 vec_cmpne(vector float __a, vector float __b) {
1789   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1790                                                     (vector int)__b);
1791 }
1792 
1793 static __inline__ vector bool long long __ATTRS_o_ai
1794 vec_cmpne(vector double __a, vector double __b) {
1795   return (vector bool long long)
1796     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1797 }
1798 
1799 /* vec_cmpnez */
1800 
1801 static __inline__ vector bool char __ATTRS_o_ai
1802 vec_cmpnez(vector signed char __a, vector signed char __b) {
1803   return (vector bool char)__builtin_altivec_vcmpnezb((vector char)__a,
1804                                                       (vector char)__b);
1805 }
1806 
1807 static __inline__ vector bool char __ATTRS_o_ai
1808 vec_cmpnez(vector unsigned char __a, vector unsigned char __b) {
1809   return (vector bool char)__builtin_altivec_vcmpnezb((vector char)__a,
1810                                                       (vector char)__b);
1811 }
1812 
1813 static __inline__ vector bool short __ATTRS_o_ai
1814 vec_cmpnez(vector signed short __a, vector signed short __b) {
1815   return (vector bool short)__builtin_altivec_vcmpnezh((vector short)__a,
1816                                                        (vector short)__b);
1817 }
1818 
1819 static __inline__ vector bool short __ATTRS_o_ai
1820 vec_cmpnez(vector unsigned short __a, vector unsigned short __b) {
1821   return (vector bool short)__builtin_altivec_vcmpnezh((vector short)__a,
1822                                                        (vector short)__b);
1823 }
1824 
1825 static __inline__ vector bool int __ATTRS_o_ai
1826 vec_cmpnez(vector signed int __a, vector signed int __b) {
1827   return (vector bool int)__builtin_altivec_vcmpnezw((vector int)__a,
1828                                                      (vector int)__b);
1829 }
1830 
1831 static __inline__ vector bool int __ATTRS_o_ai
1832 vec_cmpnez(vector unsigned int __a, vector unsigned int __b) {
1833   return (vector bool int)__builtin_altivec_vcmpnezw((vector int)__a,
1834                                                      (vector int)__b);
1835 }
1836 
1837 static __inline__ signed int __ATTRS_o_ai
1838 vec_cntlz_lsbb(vector signed char __a) {
1839 #ifdef __LITTLE_ENDIAN__
1840   return __builtin_altivec_vctzlsbb(__a);
1841 #else
1842   return __builtin_altivec_vclzlsbb(__a);
1843 #endif
1844 }
1845 
1846 static __inline__ signed int __ATTRS_o_ai
1847 vec_cntlz_lsbb(vector unsigned char __a) {
1848 #ifdef __LITTLE_ENDIAN__
1849   return __builtin_altivec_vctzlsbb(__a);
1850 #else
1851   return __builtin_altivec_vclzlsbb(__a);
1852 #endif
1853 }
1854 
1855 static __inline__ signed int __ATTRS_o_ai
1856 vec_cnttz_lsbb(vector signed char __a) {
1857 #ifdef __LITTLE_ENDIAN__
1858   return __builtin_altivec_vclzlsbb(__a);
1859 #else
1860   return __builtin_altivec_vctzlsbb(__a);
1861 #endif
1862 }
1863 
1864 static __inline__ signed int __ATTRS_o_ai
1865 vec_cnttz_lsbb(vector unsigned char __a) {
1866 #ifdef __LITTLE_ENDIAN__
1867   return __builtin_altivec_vclzlsbb(__a);
1868 #else
1869   return __builtin_altivec_vctzlsbb(__a);
1870 #endif
1871 }
1872 
1873 static __inline__ vector unsigned int __ATTRS_o_ai
1874 vec_parity_lsbb(vector unsigned int __a) {
1875   return __builtin_altivec_vprtybw(__a);
1876 }
1877 
1878 static __inline__ vector unsigned int __ATTRS_o_ai
1879 vec_parity_lsbb(vector signed int __a) {
1880   return __builtin_altivec_vprtybw(__a);
1881 }
1882 
1883 static __inline__ vector unsigned __int128 __ATTRS_o_ai
1884 vec_parity_lsbb(vector unsigned __int128 __a) {
1885   return __builtin_altivec_vprtybq(__a);
1886 }
1887 
1888 static __inline__ vector unsigned __int128 __ATTRS_o_ai
1889 vec_parity_lsbb(vector signed __int128 __a) {
1890   return __builtin_altivec_vprtybq(__a);
1891 }
1892 
1893 static __inline__ vector unsigned long long __ATTRS_o_ai
1894 vec_parity_lsbb(vector unsigned long long __a) {
1895   return __builtin_altivec_vprtybd(__a);
1896 }
1897 
1898 static __inline__ vector unsigned long long __ATTRS_o_ai
1899 vec_parity_lsbb(vector signed long long __a) {
1900   return __builtin_altivec_vprtybd(__a);
1901 }
1902 
1903 #endif
1904 
1905 /* vec_cmpgt */
1906 
1907 static __inline__ vector bool char __ATTRS_o_ai
1908 vec_cmpgt(vector signed char __a, vector signed char __b) {
1909   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1910 }
1911 
1912 static __inline__ vector bool char __ATTRS_o_ai
1913 vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
1914   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1915 }
1916 
1917 static __inline__ vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a,
1918                                                            vector short __b) {
1919   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1920 }
1921 
1922 static __inline__ vector bool short __ATTRS_o_ai
1923 vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
1924   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1925 }
1926 
1927 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a,
1928                                                          vector int __b) {
1929   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1930 }
1931 
1932 static __inline__ vector bool int __ATTRS_o_ai
1933 vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
1934   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1935 }
1936 
1937 #ifdef __POWER8_VECTOR__
1938 static __inline__ vector bool long long __ATTRS_o_ai
1939 vec_cmpgt(vector signed long long __a, vector signed long long __b) {
1940   return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b);
1941 }
1942 
1943 static __inline__ vector bool long long __ATTRS_o_ai
1944 vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
1945   return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b);
1946 }
1947 #endif
1948 
1949 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a,
1950                                                          vector float __b) {
1951 #ifdef __VSX__
1952   return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b);
1953 #else
1954   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1955 #endif
1956 }
1957 
1958 #ifdef __VSX__
1959 static __inline__ vector bool long long __ATTRS_o_ai
1960 vec_cmpgt(vector double __a, vector double __b) {
1961   return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b);
1962 }
1963 #endif
1964 
1965 /* vec_cmpge */
1966 
1967 static __inline__ vector bool char __ATTRS_o_ai
1968 vec_cmpge(vector signed char __a, vector signed char __b) {
1969   return ~(vec_cmpgt(__b, __a));
1970 }
1971 
1972 static __inline__ vector bool char __ATTRS_o_ai
1973 vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
1974   return ~(vec_cmpgt(__b, __a));
1975 }
1976 
1977 static __inline__ vector bool short __ATTRS_o_ai
1978 vec_cmpge(vector signed short __a, vector signed short __b) {
1979   return ~(vec_cmpgt(__b, __a));
1980 }
1981 
1982 static __inline__ vector bool short __ATTRS_o_ai
1983 vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
1984   return ~(vec_cmpgt(__b, __a));
1985 }
1986 
1987 static __inline__ vector bool int __ATTRS_o_ai
1988 vec_cmpge(vector signed int __a, vector signed int __b) {
1989   return ~(vec_cmpgt(__b, __a));
1990 }
1991 
1992 static __inline__ vector bool int __ATTRS_o_ai
1993 vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
1994   return ~(vec_cmpgt(__b, __a));
1995 }
1996 
1997 static __inline__ vector bool int __ATTRS_o_ai vec_cmpge(vector float __a,
1998                                                          vector float __b) {
1999 #ifdef __VSX__
2000   return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b);
2001 #else
2002   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
2003 #endif
2004 }
2005 
2006 #ifdef __VSX__
2007 static __inline__ vector bool long long __ATTRS_o_ai
2008 vec_cmpge(vector double __a, vector double __b) {
2009   return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b);
2010 }
2011 #endif
2012 
2013 #ifdef __POWER8_VECTOR__
2014 static __inline__ vector bool long long __ATTRS_o_ai
2015 vec_cmpge(vector signed long long __a, vector signed long long __b) {
2016   return ~(vec_cmpgt(__b, __a));
2017 }
2018 
2019 static __inline__ vector bool long long __ATTRS_o_ai
2020 vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
2021   return ~(vec_cmpgt(__b, __a));
2022 }
2023 #endif
2024 
2025 /* vec_vcmpgefp */
2026 
2027 static __inline__ vector bool int __attribute__((__always_inline__))
2028 vec_vcmpgefp(vector float __a, vector float __b) {
2029   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
2030 }
2031 
2032 /* vec_vcmpgtsb */
2033 
2034 static __inline__ vector bool char __attribute__((__always_inline__))
2035 vec_vcmpgtsb(vector signed char __a, vector signed char __b) {
2036   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
2037 }
2038 
2039 /* vec_vcmpgtub */
2040 
2041 static __inline__ vector bool char __attribute__((__always_inline__))
2042 vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) {
2043   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
2044 }
2045 
2046 /* vec_vcmpgtsh */
2047 
2048 static __inline__ vector bool short __attribute__((__always_inline__))
2049 vec_vcmpgtsh(vector short __a, vector short __b) {
2050   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
2051 }
2052 
2053 /* vec_vcmpgtuh */
2054 
2055 static __inline__ vector bool short __attribute__((__always_inline__))
2056 vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) {
2057   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
2058 }
2059 
2060 /* vec_vcmpgtsw */
2061 
2062 static __inline__ vector bool int __attribute__((__always_inline__))
2063 vec_vcmpgtsw(vector int __a, vector int __b) {
2064   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
2065 }
2066 
2067 /* vec_vcmpgtuw */
2068 
2069 static __inline__ vector bool int __attribute__((__always_inline__))
2070 vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) {
2071   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
2072 }
2073 
2074 /* vec_vcmpgtfp */
2075 
2076 static __inline__ vector bool int __attribute__((__always_inline__))
2077 vec_vcmpgtfp(vector float __a, vector float __b) {
2078   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
2079 }
2080 
2081 /* vec_cmple */
2082 
2083 static __inline__ vector bool char __ATTRS_o_ai
2084 vec_cmple(vector signed char __a, vector signed char __b) {
2085   return vec_cmpge(__b, __a);
2086 }
2087 
2088 static __inline__ vector bool char __ATTRS_o_ai
2089 vec_cmple(vector unsigned char __a, vector unsigned char __b) {
2090   return vec_cmpge(__b, __a);
2091 }
2092 
2093 static __inline__ vector bool short __ATTRS_o_ai
2094 vec_cmple(vector signed short __a, vector signed short __b) {
2095   return vec_cmpge(__b, __a);
2096 }
2097 
2098 static __inline__ vector bool short __ATTRS_o_ai
2099 vec_cmple(vector unsigned short __a, vector unsigned short __b) {
2100   return vec_cmpge(__b, __a);
2101 }
2102 
2103 static __inline__ vector bool int __ATTRS_o_ai
2104 vec_cmple(vector signed int __a, vector signed int __b) {
2105   return vec_cmpge(__b, __a);
2106 }
2107 
2108 static __inline__ vector bool int __ATTRS_o_ai
2109 vec_cmple(vector unsigned int __a, vector unsigned int __b) {
2110   return vec_cmpge(__b, __a);
2111 }
2112 
2113 static __inline__ vector bool int __ATTRS_o_ai vec_cmple(vector float __a,
2114                                                          vector float __b) {
2115   return vec_cmpge(__b, __a);
2116 }
2117 
2118 #ifdef __VSX__
2119 static __inline__ vector bool long long __ATTRS_o_ai
2120 vec_cmple(vector double __a, vector double __b) {
2121   return vec_cmpge(__b, __a);
2122 }
2123 #endif
2124 
2125 #ifdef __POWER8_VECTOR__
2126 static __inline__ vector bool long long __ATTRS_o_ai
2127 vec_cmple(vector signed long long __a, vector signed long long __b) {
2128   return vec_cmpge(__b, __a);
2129 }
2130 
2131 static __inline__ vector bool long long __ATTRS_o_ai
2132 vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
2133   return vec_cmpge(__b, __a);
2134 }
2135 #endif
2136 
2137 /* vec_cmplt */
2138 
2139 static __inline__ vector bool char __ATTRS_o_ai
2140 vec_cmplt(vector signed char __a, vector signed char __b) {
2141   return vec_cmpgt(__b, __a);
2142 }
2143 
2144 static __inline__ vector bool char __ATTRS_o_ai
2145 vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
2146   return vec_cmpgt(__b, __a);
2147 }
2148 
2149 static __inline__ vector bool short __ATTRS_o_ai vec_cmplt(vector short __a,
2150                                                            vector short __b) {
2151   return vec_cmpgt(__b, __a);
2152 }
2153 
2154 static __inline__ vector bool short __ATTRS_o_ai
2155 vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
2156   return vec_cmpgt(__b, __a);
2157 }
2158 
2159 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector int __a,
2160                                                          vector int __b) {
2161   return vec_cmpgt(__b, __a);
2162 }
2163 
2164 static __inline__ vector bool int __ATTRS_o_ai
2165 vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
2166   return vec_cmpgt(__b, __a);
2167 }
2168 
2169 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector float __a,
2170                                                          vector float __b) {
2171   return vec_cmpgt(__b, __a);
2172 }
2173 
2174 #ifdef __VSX__
2175 static __inline__ vector bool long long __ATTRS_o_ai
2176 vec_cmplt(vector double __a, vector double __b) {
2177   return vec_cmpgt(__b, __a);
2178 }
2179 #endif
2180 
2181 #ifdef __POWER8_VECTOR__
2182 static __inline__ vector bool long long __ATTRS_o_ai
2183 vec_cmplt(vector signed long long __a, vector signed long long __b) {
2184   return vec_cmpgt(__b, __a);
2185 }
2186 
2187 static __inline__ vector bool long long __ATTRS_o_ai
2188 vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
2189   return vec_cmpgt(__b, __a);
2190 }
2191 
2192 /* vec_popcnt */
2193 
2194 static __inline__ vector signed char __ATTRS_o_ai
2195 vec_popcnt(vector signed char __a) {
2196   return __builtin_altivec_vpopcntb(__a);
2197 }
2198 static __inline__ vector unsigned char __ATTRS_o_ai
2199 vec_popcnt(vector unsigned char __a) {
2200   return __builtin_altivec_vpopcntb(__a);
2201 }
2202 static __inline__ vector signed short __ATTRS_o_ai
2203 vec_popcnt(vector signed short __a) {
2204   return __builtin_altivec_vpopcnth(__a);
2205 }
2206 static __inline__ vector unsigned short __ATTRS_o_ai
2207 vec_popcnt(vector unsigned short __a) {
2208   return __builtin_altivec_vpopcnth(__a);
2209 }
2210 static __inline__ vector signed int __ATTRS_o_ai
2211 vec_popcnt(vector signed int __a) {
2212   return __builtin_altivec_vpopcntw(__a);
2213 }
2214 static __inline__ vector unsigned int __ATTRS_o_ai
2215 vec_popcnt(vector unsigned int __a) {
2216   return __builtin_altivec_vpopcntw(__a);
2217 }
2218 static __inline__ vector signed long long __ATTRS_o_ai
2219 vec_popcnt(vector signed long long __a) {
2220   return __builtin_altivec_vpopcntd(__a);
2221 }
2222 static __inline__ vector unsigned long long __ATTRS_o_ai
2223 vec_popcnt(vector unsigned long long __a) {
2224   return __builtin_altivec_vpopcntd(__a);
2225 }
2226 
2227 /* vec_cntlz */
2228 
2229 static __inline__ vector signed char __ATTRS_o_ai
2230 vec_cntlz(vector signed char __a) {
2231   return __builtin_altivec_vclzb(__a);
2232 }
2233 static __inline__ vector unsigned char __ATTRS_o_ai
2234 vec_cntlz(vector unsigned char __a) {
2235   return __builtin_altivec_vclzb(__a);
2236 }
2237 static __inline__ vector signed short __ATTRS_o_ai
2238 vec_cntlz(vector signed short __a) {
2239   return __builtin_altivec_vclzh(__a);
2240 }
2241 static __inline__ vector unsigned short __ATTRS_o_ai
2242 vec_cntlz(vector unsigned short __a) {
2243   return __builtin_altivec_vclzh(__a);
2244 }
2245 static __inline__ vector signed int __ATTRS_o_ai
2246 vec_cntlz(vector signed int __a) {
2247   return __builtin_altivec_vclzw(__a);
2248 }
2249 static __inline__ vector unsigned int __ATTRS_o_ai
2250 vec_cntlz(vector unsigned int __a) {
2251   return __builtin_altivec_vclzw(__a);
2252 }
2253 static __inline__ vector signed long long __ATTRS_o_ai
2254 vec_cntlz(vector signed long long __a) {
2255   return __builtin_altivec_vclzd(__a);
2256 }
2257 static __inline__ vector unsigned long long __ATTRS_o_ai
2258 vec_cntlz(vector unsigned long long __a) {
2259   return __builtin_altivec_vclzd(__a);
2260 }
2261 #endif
2262 
2263 #ifdef __POWER9_VECTOR__
2264 
2265 /* vec_cnttz */
2266 
2267 static __inline__ vector signed char __ATTRS_o_ai
2268 vec_cnttz(vector signed char __a) {
2269   return __builtin_altivec_vctzb(__a);
2270 }
2271 static __inline__ vector unsigned char __ATTRS_o_ai
2272 vec_cnttz(vector unsigned char __a) {
2273   return __builtin_altivec_vctzb(__a);
2274 }
2275 static __inline__ vector signed short __ATTRS_o_ai
2276 vec_cnttz(vector signed short __a) {
2277   return __builtin_altivec_vctzh(__a);
2278 }
2279 static __inline__ vector unsigned short __ATTRS_o_ai
2280 vec_cnttz(vector unsigned short __a) {
2281   return __builtin_altivec_vctzh(__a);
2282 }
2283 static __inline__ vector signed int __ATTRS_o_ai
2284 vec_cnttz(vector signed int __a) {
2285   return __builtin_altivec_vctzw(__a);
2286 }
2287 static __inline__ vector unsigned int __ATTRS_o_ai
2288 vec_cnttz(vector unsigned int __a) {
2289   return __builtin_altivec_vctzw(__a);
2290 }
2291 static __inline__ vector signed long long __ATTRS_o_ai
2292 vec_cnttz(vector signed long long __a) {
2293   return __builtin_altivec_vctzd(__a);
2294 }
2295 static __inline__ vector unsigned long long __ATTRS_o_ai
2296 vec_cnttz(vector unsigned long long __a) {
2297   return __builtin_altivec_vctzd(__a);
2298 }
2299 
2300 /* vec_first_match_index */
2301 
2302 static __inline__ unsigned __ATTRS_o_ai
2303 vec_first_match_index(vector signed char __a, vector signed char __b) {
2304   vector unsigned long long __res =
2305 #ifdef __LITTLE_ENDIAN__
2306     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2307 #else
2308     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2309 #endif
2310   if (__res[0] == 64) {
2311     return (__res[1] + 64) >> 3;
2312   }
2313   return __res[0] >> 3;
2314 }
2315 
2316 static __inline__ unsigned __ATTRS_o_ai
2317 vec_first_match_index(vector unsigned char __a, vector unsigned char __b) {
2318   vector unsigned long long __res =
2319 #ifdef __LITTLE_ENDIAN__
2320     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2321 #else
2322     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2323 #endif
2324   if (__res[0] == 64) {
2325     return (__res[1] + 64) >> 3;
2326   }
2327   return __res[0] >> 3;
2328 }
2329 
2330 static __inline__ unsigned __ATTRS_o_ai
2331 vec_first_match_index(vector signed short __a, vector signed short __b) {
2332   vector unsigned long long __res =
2333 #ifdef __LITTLE_ENDIAN__
2334     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2335 #else
2336     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2337 #endif
2338   if (__res[0] == 64) {
2339     return (__res[1] + 64) >> 4;
2340   }
2341   return __res[0] >> 4;
2342 }
2343 
2344 static __inline__ unsigned __ATTRS_o_ai
2345 vec_first_match_index(vector unsigned short __a, vector unsigned short __b) {
2346   vector unsigned long long __res =
2347 #ifdef __LITTLE_ENDIAN__
2348     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2349 #else
2350     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2351 #endif
2352   if (__res[0] == 64) {
2353     return (__res[1] + 64) >> 4;
2354   }
2355   return __res[0] >> 4;
2356 }
2357 
2358 static __inline__ unsigned __ATTRS_o_ai
2359 vec_first_match_index(vector signed int __a, vector signed int __b) {
2360   vector unsigned long long __res =
2361 #ifdef __LITTLE_ENDIAN__
2362     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2363 #else
2364     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2365 #endif
2366   if (__res[0] == 64) {
2367     return (__res[1] + 64) >> 5;
2368   }
2369   return __res[0] >> 5;
2370 }
2371 
2372 static __inline__ unsigned __ATTRS_o_ai
2373 vec_first_match_index(vector unsigned int __a, vector unsigned int __b) {
2374   vector unsigned long long __res =
2375 #ifdef __LITTLE_ENDIAN__
2376     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2377 #else
2378     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2379 #endif
2380   if (__res[0] == 64) {
2381     return (__res[1] + 64) >> 5;
2382   }
2383   return __res[0] >> 5;
2384 }
2385 
2386 /* vec_first_match_or_eos_index */
2387 
2388 static __inline__ unsigned __ATTRS_o_ai
2389 vec_first_match_or_eos_index(vector signed char __a, vector signed char __b) {
2390   /* Compare the result of the comparison of two vectors with either and OR the
2391      result. Either the elements are equal or one will equal the comparison
2392      result if either is zero.
2393   */
2394   vector bool char __tmp1 = vec_cmpeq(__a, __b);
2395   vector bool char __tmp2 = __tmp1 |
2396                             vec_cmpeq((vector signed char)__tmp1, __a) |
2397                             vec_cmpeq((vector signed char)__tmp1, __b);
2398 
2399   vector unsigned long long __res =
2400 #ifdef __LITTLE_ENDIAN__
2401       vec_cnttz((vector unsigned long long)__tmp2);
2402 #else
2403       vec_cntlz((vector unsigned long long)__tmp2);
2404 #endif
2405   if (__res[0] == 64) {
2406     return (__res[1] + 64) >> 3;
2407   }
2408   return __res[0] >> 3;
2409 }
2410 
2411 static __inline__ unsigned __ATTRS_o_ai
2412 vec_first_match_or_eos_index(vector unsigned char __a,
2413                              vector unsigned char __b) {
2414   vector bool char __tmp1 = vec_cmpeq(__a, __b);
2415   vector bool char __tmp2 = __tmp1 |
2416                             vec_cmpeq((vector unsigned char)__tmp1, __a) |
2417                             vec_cmpeq((vector unsigned char)__tmp1, __b);
2418 
2419   vector unsigned long long __res =
2420 #ifdef __LITTLE_ENDIAN__
2421       vec_cnttz((vector unsigned long long)__tmp2);
2422 #else
2423       vec_cntlz((vector unsigned long long)__tmp2);
2424 #endif
2425   if (__res[0] == 64) {
2426     return (__res[1] + 64) >> 3;
2427   }
2428   return __res[0] >> 3;
2429 }
2430 
2431 static __inline__ unsigned __ATTRS_o_ai
2432 vec_first_match_or_eos_index(vector signed short __a, vector signed short __b) {
2433   vector bool short __tmp1 = vec_cmpeq(__a, __b);
2434   vector bool short __tmp2 = __tmp1 |
2435                              vec_cmpeq((vector signed short)__tmp1, __a) |
2436                              vec_cmpeq((vector signed short)__tmp1, __b);
2437 
2438   vector unsigned long long __res =
2439 #ifdef __LITTLE_ENDIAN__
2440       vec_cnttz((vector unsigned long long)__tmp2);
2441 #else
2442       vec_cntlz((vector unsigned long long)__tmp2);
2443 #endif
2444   if (__res[0] == 64) {
2445     return (__res[1] + 64) >> 4;
2446   }
2447   return __res[0] >> 4;
2448 }
2449 
2450 static __inline__ unsigned __ATTRS_o_ai
2451 vec_first_match_or_eos_index(vector unsigned short __a,
2452                              vector unsigned short __b) {
2453   vector bool short __tmp1 = vec_cmpeq(__a, __b);
2454   vector bool short __tmp2 = __tmp1 |
2455                              vec_cmpeq((vector unsigned short)__tmp1, __a) |
2456                              vec_cmpeq((vector unsigned short)__tmp1, __b);
2457 
2458   vector unsigned long long __res =
2459 #ifdef __LITTLE_ENDIAN__
2460       vec_cnttz((vector unsigned long long)__tmp2);
2461 #else
2462       vec_cntlz((vector unsigned long long)__tmp2);
2463 #endif
2464   if (__res[0] == 64) {
2465     return (__res[1] + 64) >> 4;
2466   }
2467   return __res[0] >> 4;
2468 }
2469 
2470 static __inline__ unsigned __ATTRS_o_ai
2471 vec_first_match_or_eos_index(vector signed int __a, vector signed int __b) {
2472   vector bool int __tmp1 = vec_cmpeq(__a, __b);
2473   vector bool int __tmp2 = __tmp1 | vec_cmpeq((vector signed int)__tmp1, __a) |
2474                            vec_cmpeq((vector signed int)__tmp1, __b);
2475 
2476   vector unsigned long long __res =
2477 #ifdef __LITTLE_ENDIAN__
2478       vec_cnttz((vector unsigned long long)__tmp2);
2479 #else
2480       vec_cntlz((vector unsigned long long)__tmp2);
2481 #endif
2482   if (__res[0] == 64) {
2483     return (__res[1] + 64) >> 5;
2484   }
2485   return __res[0] >> 5;
2486 }
2487 
2488 static __inline__ unsigned __ATTRS_o_ai
2489 vec_first_match_or_eos_index(vector unsigned int __a, vector unsigned int __b) {
2490   vector bool int __tmp1 = vec_cmpeq(__a, __b);
2491   vector bool int __tmp2 = __tmp1 |
2492                            vec_cmpeq((vector unsigned int)__tmp1, __a) |
2493                            vec_cmpeq((vector unsigned int)__tmp1, __b);
2494 
2495   vector unsigned long long __res =
2496 #ifdef __LITTLE_ENDIAN__
2497     vec_cnttz((vector unsigned long long)__tmp2);
2498 #else
2499     vec_cntlz((vector unsigned long long)__tmp2);
2500 #endif
2501   if (__res[0] == 64) {
2502     return (__res[1] + 64) >> 5;
2503   }
2504   return __res[0] >> 5;
2505 }
2506 
2507 /* vec_first_mismatch_index */
2508 
2509 static __inline__ unsigned __ATTRS_o_ai
2510 vec_first_mismatch_index(vector signed char __a, vector signed char __b) {
2511   vector unsigned long long __res =
2512 #ifdef __LITTLE_ENDIAN__
2513     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2514 #else
2515     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2516 #endif
2517   if (__res[0] == 64) {
2518     return (__res[1] + 64) >> 3;
2519   }
2520   return __res[0] >> 3;
2521 }
2522 
2523 static __inline__ unsigned __ATTRS_o_ai
2524 vec_first_mismatch_index(vector unsigned char __a, vector unsigned char __b) {
2525   vector unsigned long long __res =
2526 #ifdef __LITTLE_ENDIAN__
2527     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2528 #else
2529     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2530 #endif
2531   if (__res[0] == 64) {
2532     return (__res[1] + 64) >> 3;
2533   }
2534   return __res[0] >> 3;
2535 }
2536 
2537 static __inline__ unsigned __ATTRS_o_ai
2538 vec_first_mismatch_index(vector signed short __a, vector signed short __b) {
2539   vector unsigned long long __res =
2540 #ifdef __LITTLE_ENDIAN__
2541     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2542 #else
2543     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2544 #endif
2545   if (__res[0] == 64) {
2546     return (__res[1] + 64) >> 4;
2547   }
2548   return __res[0] >> 4;
2549 }
2550 
2551 static __inline__ unsigned __ATTRS_o_ai
2552 vec_first_mismatch_index(vector unsigned short __a, vector unsigned short __b) {
2553   vector unsigned long long __res =
2554 #ifdef __LITTLE_ENDIAN__
2555     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2556 #else
2557     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2558 #endif
2559   if (__res[0] == 64) {
2560     return (__res[1] + 64) >> 4;
2561   }
2562   return __res[0] >> 4;
2563 }
2564 
2565 static __inline__ unsigned __ATTRS_o_ai
2566 vec_first_mismatch_index(vector signed int __a, vector signed int __b) {
2567   vector unsigned long long __res =
2568 #ifdef __LITTLE_ENDIAN__
2569     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2570 #else
2571     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2572 #endif
2573   if (__res[0] == 64) {
2574     return (__res[1] + 64) >> 5;
2575   }
2576   return __res[0] >> 5;
2577 }
2578 
2579 static __inline__ unsigned __ATTRS_o_ai
2580 vec_first_mismatch_index(vector unsigned int __a, vector unsigned int __b) {
2581   vector unsigned long long __res =
2582 #ifdef __LITTLE_ENDIAN__
2583     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2584 #else
2585     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2586 #endif
2587   if (__res[0] == 64) {
2588     return (__res[1] + 64) >> 5;
2589   }
2590   return __res[0] >> 5;
2591 }
2592 
2593 /* vec_first_mismatch_or_eos_index */
2594 
2595 static __inline__ unsigned __ATTRS_o_ai
2596 vec_first_mismatch_or_eos_index(vector signed char __a,
2597                                 vector signed char __b) {
2598   vector unsigned long long __res =
2599 #ifdef __LITTLE_ENDIAN__
2600     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2601 #else
2602     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2603 #endif
2604   if (__res[0] == 64) {
2605     return (__res[1] + 64) >> 3;
2606   }
2607   return __res[0] >> 3;
2608 }
2609 
2610 static __inline__ unsigned __ATTRS_o_ai
2611 vec_first_mismatch_or_eos_index(vector unsigned char __a,
2612                                 vector unsigned char __b) {
2613   vector unsigned long long __res =
2614 #ifdef __LITTLE_ENDIAN__
2615     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2616 #else
2617     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2618 #endif
2619   if (__res[0] == 64) {
2620     return (__res[1] + 64) >> 3;
2621   }
2622   return __res[0] >> 3;
2623 }
2624 
2625 static __inline__ unsigned __ATTRS_o_ai
2626 vec_first_mismatch_or_eos_index(vector signed short __a,
2627                                 vector signed short __b) {
2628   vector unsigned long long __res =
2629 #ifdef __LITTLE_ENDIAN__
2630     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2631 #else
2632     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2633 #endif
2634   if (__res[0] == 64) {
2635     return (__res[1] + 64) >> 4;
2636   }
2637   return __res[0] >> 4;
2638 }
2639 
2640 static __inline__ unsigned __ATTRS_o_ai
2641 vec_first_mismatch_or_eos_index(vector unsigned short __a,
2642                                 vector unsigned short __b) {
2643   vector unsigned long long __res =
2644 #ifdef __LITTLE_ENDIAN__
2645     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2646 #else
2647     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2648 #endif
2649   if (__res[0] == 64) {
2650     return (__res[1] + 64) >> 4;
2651   }
2652   return __res[0] >> 4;
2653 }
2654 
2655 static __inline__ unsigned __ATTRS_o_ai
2656 vec_first_mismatch_or_eos_index(vector signed int __a, vector signed int __b) {
2657   vector unsigned long long __res =
2658 #ifdef __LITTLE_ENDIAN__
2659     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2660 #else
2661     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2662 #endif
2663   if (__res[0] == 64) {
2664     return (__res[1] + 64) >> 5;
2665   }
2666   return __res[0] >> 5;
2667 }
2668 
2669 static __inline__ unsigned __ATTRS_o_ai
2670 vec_first_mismatch_or_eos_index(vector unsigned int __a,
2671                                 vector unsigned int __b) {
2672   vector unsigned long long __res =
2673 #ifdef __LITTLE_ENDIAN__
2674     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2675 #else
2676     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2677 #endif
2678   if (__res[0] == 64) {
2679     return (__res[1] + 64) >> 5;
2680   }
2681   return __res[0] >> 5;
2682 }
2683 
2684 static __inline__ vector double  __ATTRS_o_ai
2685 vec_insert_exp(vector double __a, vector unsigned long long __b) {
2686   return __builtin_vsx_xviexpdp((vector unsigned long long)__a,__b);
2687 }
2688 
2689 static __inline__ vector double  __ATTRS_o_ai
2690 vec_insert_exp(vector unsigned long long __a, vector unsigned long long __b) {
2691   return __builtin_vsx_xviexpdp(__a,__b);
2692 }
2693 
2694 static __inline__ vector float  __ATTRS_o_ai
2695 vec_insert_exp(vector float __a, vector unsigned int __b) {
2696   return __builtin_vsx_xviexpsp((vector unsigned int)__a,__b);
2697 }
2698 
2699 static __inline__ vector float  __ATTRS_o_ai
2700 vec_insert_exp(vector unsigned int __a, vector unsigned int __b) {
2701   return __builtin_vsx_xviexpsp(__a,__b);
2702 }
2703 
2704 #if defined(__powerpc64__)
2705 static __inline__ vector signed char __ATTRS_o_ai vec_xl_len(signed char *__a,
2706                                                              size_t __b) {
2707   return (vector signed char)__builtin_vsx_lxvl(__a, (__b << 56));
2708 }
2709 
2710 static __inline__ vector unsigned char __ATTRS_o_ai
2711 vec_xl_len(unsigned char *__a, size_t __b) {
2712   return (vector unsigned char)__builtin_vsx_lxvl(__a, (__b << 56));
2713 }
2714 
2715 static __inline__ vector signed short __ATTRS_o_ai vec_xl_len(signed short *__a,
2716                                                               size_t __b) {
2717   return (vector signed short)__builtin_vsx_lxvl(__a, (__b << 56));
2718 }
2719 
2720 static __inline__ vector unsigned short __ATTRS_o_ai
2721 vec_xl_len(unsigned short *__a, size_t __b) {
2722   return (vector unsigned short)__builtin_vsx_lxvl(__a, (__b << 56));
2723 }
2724 
2725 static __inline__ vector signed int __ATTRS_o_ai vec_xl_len(signed int *__a,
2726                                                             size_t __b) {
2727   return (vector signed int)__builtin_vsx_lxvl(__a, (__b << 56));
2728 }
2729 
2730 static __inline__ vector unsigned int __ATTRS_o_ai vec_xl_len(unsigned int *__a,
2731                                                               size_t __b) {
2732   return (vector unsigned int)__builtin_vsx_lxvl(__a, (__b << 56));
2733 }
2734 
2735 static __inline__ vector float __ATTRS_o_ai vec_xl_len(float *__a, size_t __b) {
2736   return (vector float)__builtin_vsx_lxvl(__a, (__b << 56));
2737 }
2738 
2739 static __inline__ vector signed __int128 __ATTRS_o_ai
2740 vec_xl_len(signed __int128 *__a, size_t __b) {
2741   return (vector signed __int128)__builtin_vsx_lxvl(__a, (__b << 56));
2742 }
2743 
2744 static __inline__ vector unsigned __int128 __ATTRS_o_ai
2745 vec_xl_len(unsigned __int128 *__a, size_t __b) {
2746   return (vector unsigned __int128)__builtin_vsx_lxvl(__a, (__b << 56));
2747 }
2748 
2749 static __inline__ vector signed long long __ATTRS_o_ai
2750 vec_xl_len(signed long long *__a, size_t __b) {
2751   return (vector signed long long)__builtin_vsx_lxvl(__a, (__b << 56));
2752 }
2753 
2754 static __inline__ vector unsigned long long __ATTRS_o_ai
2755 vec_xl_len(unsigned long long *__a, size_t __b) {
2756   return (vector unsigned long long)__builtin_vsx_lxvl(__a, (__b << 56));
2757 }
2758 
2759 static __inline__ vector double __ATTRS_o_ai vec_xl_len(double *__a,
2760                                                         size_t __b) {
2761   return (vector double)__builtin_vsx_lxvl(__a, (__b << 56));
2762 }
2763 
2764 static __inline__ vector unsigned char __ATTRS_o_ai
2765 vec_xl_len_r(unsigned char *__a, size_t __b) {
2766   vector unsigned char __res =
2767       (vector unsigned char)__builtin_vsx_lxvll(__a, (__b << 56));
2768 #ifdef __LITTLE_ENDIAN__
2769   vector unsigned char __mask =
2770       (vector unsigned char)__builtin_altivec_lvsr(16 - __b, (int *)NULL);
2771   __res = (vector unsigned char)__builtin_altivec_vperm_4si(
2772       (vector int)__res, (vector int)__res, __mask);
2773 #endif
2774   return __res;
2775 }
2776 
2777 // vec_xst_len
2778 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned char __a,
2779                                                 unsigned char *__b,
2780                                                 size_t __c) {
2781   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2782 }
2783 
2784 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed char __a,
2785                                                 signed char *__b, size_t __c) {
2786   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2787 }
2788 
2789 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed short __a,
2790                                                 signed short *__b, size_t __c) {
2791   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2792 }
2793 
2794 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned short __a,
2795                                                 unsigned short *__b,
2796                                                 size_t __c) {
2797   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2798 }
2799 
2800 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed int __a,
2801                                                 signed int *__b, size_t __c) {
2802   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2803 }
2804 
2805 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned int __a,
2806                                                 unsigned int *__b, size_t __c) {
2807   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2808 }
2809 
2810 static __inline__ void __ATTRS_o_ai vec_xst_len(vector float __a, float *__b,
2811                                                 size_t __c) {
2812   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2813 }
2814 
2815 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed __int128 __a,
2816                                                 signed __int128 *__b,
2817                                                 size_t __c) {
2818   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2819 }
2820 
2821 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned __int128 __a,
2822                                                 unsigned __int128 *__b,
2823                                                 size_t __c) {
2824   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2825 }
2826 
2827 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed long long __a,
2828                                                 signed long long *__b,
2829                                                 size_t __c) {
2830   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2831 }
2832 
2833 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned long long __a,
2834                                                 unsigned long long *__b,
2835                                                 size_t __c) {
2836   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2837 }
2838 
2839 static __inline__ void __ATTRS_o_ai vec_xst_len(vector double __a, double *__b,
2840                                                 size_t __c) {
2841   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2842 }
2843 
2844 static __inline__ void __ATTRS_o_ai vec_xst_len_r(vector unsigned char __a,
2845                                                   unsigned char *__b,
2846                                                   size_t __c) {
2847 #ifdef __LITTLE_ENDIAN__
2848   vector unsigned char __mask =
2849       (vector unsigned char)__builtin_altivec_lvsl(16 - __c, (int *)NULL);
2850   vector unsigned char __res =
2851       __builtin_altivec_vperm_4si((vector int)__a, (vector int)__a, __mask);
2852   return __builtin_vsx_stxvll((vector int)__res, __b, (__c << 56));
2853 #else
2854   return __builtin_vsx_stxvll((vector int)__a, __b, (__c << 56));
2855 #endif
2856 }
2857 #endif
2858 #endif
2859 
2860 /* vec_cpsgn */
2861 
2862 #ifdef __VSX__
2863 static __inline__ vector float __ATTRS_o_ai vec_cpsgn(vector float __a,
2864                                                       vector float __b) {
2865   return __builtin_vsx_xvcpsgnsp(__a, __b);
2866 }
2867 
2868 static __inline__ vector double __ATTRS_o_ai vec_cpsgn(vector double __a,
2869                                                        vector double __b) {
2870   return __builtin_vsx_xvcpsgndp(__a, __b);
2871 }
2872 #endif
2873 
2874 /* vec_ctf */
2875 
2876 #ifdef __VSX__
2877 #define vec_ctf(__a, __b)                                                      \
2878   _Generic((__a), vector int                                                   \
2879            : (vector float)__builtin_altivec_vcfsx((vector int)(__a), (__b)),  \
2880              vector unsigned int                                               \
2881            : (vector float)__builtin_altivec_vcfux((vector unsigned int)(__a), \
2882                                                    (__b)),                     \
2883              vector unsigned long long                                         \
2884            : (__builtin_convertvector((vector unsigned long long)(__a),        \
2885                                       vector double) *                         \
2886               (vector double)(vector unsigned long long)((0x3ffULL - (__b))    \
2887                                                          << 52)),              \
2888              vector signed long long                                           \
2889            : (__builtin_convertvector((vector signed long long)(__a),          \
2890                                       vector double) *                         \
2891               (vector double)(vector unsigned long long)((0x3ffULL - (__b))    \
2892                                                          << 52)))
2893 #else
2894 #define vec_ctf(__a, __b)                                                      \
2895   _Generic((__a), vector int                                                   \
2896            : (vector float)__builtin_altivec_vcfsx((vector int)(__a), (__b)),  \
2897              vector unsigned int                                               \
2898            : (vector float)__builtin_altivec_vcfux((vector unsigned int)(__a), \
2899                                                    (__b)))
2900 #endif
2901 
2902 /* vec_vcfsx */
2903 
2904 #define vec_vcfux __builtin_altivec_vcfux
2905 
2906 /* vec_vcfux */
2907 
2908 #define vec_vcfsx(__a, __b) __builtin_altivec_vcfsx((vector int)(__a), (__b))
2909 
2910 /* vec_cts */
2911 
2912 #ifdef __VSX__
2913 #define vec_cts(__a, __b)                                                      \
2914   _Generic((__a), vector float                                                 \
2915            : __builtin_altivec_vctsxs((vector float)(__a), (__b)),             \
2916              vector double                                                     \
2917            : __extension__({                                                   \
2918              vector double __ret =                                             \
2919                  (vector double)(__a) *                                        \
2920                  (vector double)(vector unsigned long long)((0x3ffULL + (__b)) \
2921                                                             << 52);            \
2922              __builtin_convertvector(__ret, vector signed long long);          \
2923            }))
2924 #else
2925 #define vec_cts __builtin_altivec_vctsxs
2926 #endif
2927 
2928 /* vec_vctsxs */
2929 
2930 #define vec_vctsxs __builtin_altivec_vctsxs
2931 
2932 /* vec_ctu */
2933 
2934 #ifdef __VSX__
2935 #define vec_ctu(__a, __b)                                                      \
2936   _Generic((__a), vector float                                                 \
2937            : __builtin_altivec_vctuxs((vector float)(__a), (__b)),             \
2938              vector double                                                     \
2939            : __extension__({                                                   \
2940              vector double __ret =                                             \
2941                  (vector double)(__a) *                                        \
2942                  (vector double)(vector unsigned long long)((0x3ffULL + __b)   \
2943                                                             << 52);            \
2944              __builtin_convertvector(__ret, vector unsigned long long);        \
2945            }))
2946 #else
2947 #define vec_ctu __builtin_altivec_vctuxs
2948 #endif
2949 
2950 /* vec_vctuxs */
2951 
2952 #define vec_vctuxs __builtin_altivec_vctuxs
2953 
2954 /* vec_signed */
2955 
2956 static __inline__ vector signed int __ATTRS_o_ai
2957 vec_sld(vector signed int, vector signed int, unsigned const int __c);
2958 
2959 static __inline__ vector signed int __ATTRS_o_ai
2960 vec_signed(vector float __a) {
2961   return __builtin_convertvector(__a, vector signed int);
2962 }
2963 
2964 #ifdef __VSX__
2965 static __inline__ vector signed long long __ATTRS_o_ai
2966 vec_signed(vector double __a) {
2967   return __builtin_convertvector(__a, vector signed long long);
2968 }
2969 
2970 static __inline__ vector signed int __attribute__((__always_inline__))
2971 vec_signed2(vector double __a, vector double __b) {
2972   return (vector signed int) { __a[0], __a[1], __b[0], __b[1] };
2973 }
2974 
2975 static __inline__ vector signed int __ATTRS_o_ai
2976 vec_signede(vector double __a) {
2977 #ifdef __LITTLE_ENDIAN__
2978   vector signed int __ret = __builtin_vsx_xvcvdpsxws(__a);
2979   return vec_sld(__ret, __ret, 12);
2980 #else
2981   return __builtin_vsx_xvcvdpsxws(__a);
2982 #endif
2983 }
2984 
2985 static __inline__ vector signed int __ATTRS_o_ai
2986 vec_signedo(vector double __a) {
2987 #ifdef __LITTLE_ENDIAN__
2988   return __builtin_vsx_xvcvdpsxws(__a);
2989 #else
2990   vector signed int __ret = __builtin_vsx_xvcvdpsxws(__a);
2991   return vec_sld(__ret, __ret, 12);
2992 #endif
2993 }
2994 #endif
2995 
2996 /* vec_unsigned */
2997 
2998 static __inline__ vector unsigned int __ATTRS_o_ai
2999 vec_sld(vector unsigned int, vector unsigned int, unsigned const int __c);
3000 
3001 static __inline__ vector unsigned int __ATTRS_o_ai
3002 vec_unsigned(vector float __a) {
3003   return __builtin_convertvector(__a, vector unsigned int);
3004 }
3005 
3006 #ifdef __VSX__
3007 static __inline__ vector unsigned long long __ATTRS_o_ai
3008 vec_unsigned(vector double __a) {
3009   return __builtin_convertvector(__a, vector unsigned long long);
3010 }
3011 
3012 static __inline__ vector unsigned int __attribute__((__always_inline__))
3013 vec_unsigned2(vector double __a, vector double __b) {
3014   return (vector unsigned int) { __a[0], __a[1], __b[0], __b[1] };
3015 }
3016 
3017 static __inline__ vector unsigned int __ATTRS_o_ai
3018 vec_unsignede(vector double __a) {
3019 #ifdef __LITTLE_ENDIAN__
3020   vector unsigned int __ret = __builtin_vsx_xvcvdpuxws(__a);
3021   return vec_sld(__ret, __ret, 12);
3022 #else
3023   return __builtin_vsx_xvcvdpuxws(__a);
3024 #endif
3025 }
3026 
3027 static __inline__ vector unsigned int __ATTRS_o_ai
3028 vec_unsignedo(vector double __a) {
3029 #ifdef __LITTLE_ENDIAN__
3030   return __builtin_vsx_xvcvdpuxws(__a);
3031 #else
3032   vector unsigned int __ret = __builtin_vsx_xvcvdpuxws(__a);
3033   return vec_sld(__ret, __ret, 12);
3034 #endif
3035 }
3036 #endif
3037 
3038 /* vec_float */
3039 
3040 static __inline__ vector float __ATTRS_o_ai
3041 vec_sld(vector float, vector float, unsigned const int __c);
3042 
3043 static __inline__ vector float __ATTRS_o_ai
3044 vec_float(vector signed int __a) {
3045   return __builtin_convertvector(__a, vector float);
3046 }
3047 
3048 static __inline__ vector float __ATTRS_o_ai
3049 vec_float(vector unsigned int __a) {
3050   return __builtin_convertvector(__a, vector float);
3051 }
3052 
3053 #ifdef __VSX__
3054 static __inline__ vector float __ATTRS_o_ai
3055 vec_float2(vector signed long long __a, vector signed long long __b) {
3056   return (vector float) { __a[0], __a[1], __b[0], __b[1] };
3057 }
3058 
3059 static __inline__ vector float __ATTRS_o_ai
3060 vec_float2(vector unsigned long long __a, vector unsigned long long __b) {
3061   return (vector float) { __a[0], __a[1], __b[0], __b[1] };
3062 }
3063 
3064 static __inline__ vector float __ATTRS_o_ai
3065 vec_float2(vector double __a, vector double __b) {
3066   return (vector float) { __a[0], __a[1], __b[0], __b[1] };
3067 }
3068 
3069 static __inline__ vector float __ATTRS_o_ai
3070 vec_floate(vector signed long long __a) {
3071 #ifdef __LITTLE_ENDIAN__
3072   vector float __ret = __builtin_vsx_xvcvsxdsp(__a);
3073   return vec_sld(__ret, __ret, 12);
3074 #else
3075   return __builtin_vsx_xvcvsxdsp(__a);
3076 #endif
3077 }
3078 
3079 static __inline__ vector float __ATTRS_o_ai
3080 vec_floate(vector unsigned long long __a) {
3081 #ifdef __LITTLE_ENDIAN__
3082   vector float __ret = __builtin_vsx_xvcvuxdsp(__a);
3083   return vec_sld(__ret, __ret, 12);
3084 #else
3085   return __builtin_vsx_xvcvuxdsp(__a);
3086 #endif
3087 }
3088 
3089 static __inline__ vector float __ATTRS_o_ai
3090 vec_floate(vector double __a) {
3091 #ifdef __LITTLE_ENDIAN__
3092   vector float __ret = __builtin_vsx_xvcvdpsp(__a);
3093   return vec_sld(__ret, __ret, 12);
3094 #else
3095   return __builtin_vsx_xvcvdpsp(__a);
3096 #endif
3097 }
3098 
3099 static __inline__ vector float __ATTRS_o_ai
3100 vec_floato(vector signed long long __a) {
3101 #ifdef __LITTLE_ENDIAN__
3102   return __builtin_vsx_xvcvsxdsp(__a);
3103 #else
3104   vector float __ret = __builtin_vsx_xvcvsxdsp(__a);
3105   return vec_sld(__ret, __ret, 12);
3106 #endif
3107 }
3108 
3109 static __inline__ vector float __ATTRS_o_ai
3110 vec_floato(vector unsigned long long __a) {
3111 #ifdef __LITTLE_ENDIAN__
3112   return __builtin_vsx_xvcvuxdsp(__a);
3113 #else
3114   vector float __ret = __builtin_vsx_xvcvuxdsp(__a);
3115   return vec_sld(__ret, __ret, 12);
3116 #endif
3117 }
3118 
3119 static __inline__ vector float __ATTRS_o_ai
3120 vec_floato(vector double __a) {
3121 #ifdef __LITTLE_ENDIAN__
3122   return __builtin_vsx_xvcvdpsp(__a);
3123 #else
3124   vector float __ret = __builtin_vsx_xvcvdpsp(__a);
3125   return vec_sld(__ret, __ret, 12);
3126 #endif
3127 }
3128 #endif
3129 
3130 /* vec_double */
3131 
3132 #ifdef __VSX__
3133 static __inline__ vector double __ATTRS_o_ai
3134 vec_double(vector signed long long __a) {
3135   return __builtin_convertvector(__a, vector double);
3136 }
3137 
3138 static __inline__ vector double __ATTRS_o_ai
3139 vec_double(vector unsigned long long __a) {
3140   return __builtin_convertvector(__a, vector double);
3141 }
3142 
3143 static __inline__ vector double __ATTRS_o_ai
3144 vec_doublee(vector signed int __a) {
3145 #ifdef __LITTLE_ENDIAN__
3146   return __builtin_vsx_xvcvsxwdp(vec_sld(__a, __a, 4));
3147 #else
3148   return __builtin_vsx_xvcvsxwdp(__a);
3149 #endif
3150 }
3151 
3152 static __inline__ vector double __ATTRS_o_ai
3153 vec_doublee(vector unsigned int __a) {
3154 #ifdef __LITTLE_ENDIAN__
3155   return __builtin_vsx_xvcvuxwdp(vec_sld(__a, __a, 4));
3156 #else
3157   return __builtin_vsx_xvcvuxwdp(__a);
3158 #endif
3159 }
3160 
3161 static __inline__ vector double __ATTRS_o_ai
3162 vec_doublee(vector float __a) {
3163 #ifdef __LITTLE_ENDIAN__
3164   return __builtin_vsx_xvcvspdp(vec_sld(__a, __a, 4));
3165 #else
3166   return __builtin_vsx_xvcvspdp(__a);
3167 #endif
3168 }
3169 
3170 static __inline__ vector double __ATTRS_o_ai
3171 vec_doubleh(vector signed int __a) {
3172   vector double __ret = {__a[0], __a[1]};
3173   return __ret;
3174 }
3175 
3176 static __inline__ vector double __ATTRS_o_ai
3177 vec_doubleh(vector unsigned int __a) {
3178   vector double __ret = {__a[0], __a[1]};
3179   return __ret;
3180 }
3181 
3182 static __inline__ vector double __ATTRS_o_ai
3183 vec_doubleh(vector float __a) {
3184   vector double __ret = {__a[0], __a[1]};
3185   return __ret;
3186 }
3187 
3188 static __inline__ vector double __ATTRS_o_ai
3189 vec_doublel(vector signed int __a) {
3190   vector double __ret = {__a[2], __a[3]};
3191   return __ret;
3192 }
3193 
3194 static __inline__ vector double __ATTRS_o_ai
3195 vec_doublel(vector unsigned int __a) {
3196   vector double __ret = {__a[2], __a[3]};
3197   return __ret;
3198 }
3199 
3200 static __inline__ vector double __ATTRS_o_ai
3201 vec_doublel(vector float __a) {
3202   vector double __ret = {__a[2], __a[3]};
3203   return __ret;
3204 }
3205 
3206 static __inline__ vector double __ATTRS_o_ai
3207 vec_doubleo(vector signed int __a) {
3208 #ifdef __LITTLE_ENDIAN__
3209   return __builtin_vsx_xvcvsxwdp(__a);
3210 #else
3211   return __builtin_vsx_xvcvsxwdp(vec_sld(__a, __a, 4));
3212 #endif
3213 }
3214 
3215 static __inline__ vector double __ATTRS_o_ai
3216 vec_doubleo(vector unsigned int __a) {
3217 #ifdef __LITTLE_ENDIAN__
3218   return __builtin_vsx_xvcvuxwdp(__a);
3219 #else
3220   return __builtin_vsx_xvcvuxwdp(vec_sld(__a, __a, 4));
3221 #endif
3222 }
3223 
3224 static __inline__ vector double __ATTRS_o_ai
3225 vec_doubleo(vector float __a) {
3226 #ifdef __LITTLE_ENDIAN__
3227   return __builtin_vsx_xvcvspdp(__a);
3228 #else
3229   return __builtin_vsx_xvcvspdp(vec_sld(__a, __a, 4));
3230 #endif
3231 }
3232 #endif
3233 
3234 /* vec_div */
3235 
3236 /* Integer vector divides (vectors are scalarized, elements divided
3237    and the vectors reassembled).
3238 */
3239 static __inline__ vector signed char __ATTRS_o_ai
3240 vec_div(vector signed char __a, vector signed char __b) {
3241   return __a / __b;
3242 }
3243 
3244 static __inline__ vector unsigned char __ATTRS_o_ai
3245 vec_div(vector unsigned char __a, vector unsigned char __b) {
3246   return __a / __b;
3247 }
3248 
3249 static __inline__ vector signed short __ATTRS_o_ai
3250 vec_div(vector signed short __a, vector signed short __b) {
3251   return __a / __b;
3252 }
3253 
3254 static __inline__ vector unsigned short __ATTRS_o_ai
3255 vec_div(vector unsigned short __a, vector unsigned short __b) {
3256   return __a / __b;
3257 }
3258 
3259 static __inline__ vector signed int __ATTRS_o_ai
3260 vec_div(vector signed int __a, vector signed int __b) {
3261   return __a / __b;
3262 }
3263 
3264 static __inline__ vector unsigned int __ATTRS_o_ai
3265 vec_div(vector unsigned int __a, vector unsigned int __b) {
3266   return __a / __b;
3267 }
3268 
3269 #ifdef __VSX__
3270 static __inline__ vector signed long long __ATTRS_o_ai
3271 vec_div(vector signed long long __a, vector signed long long __b) {
3272   return __a / __b;
3273 }
3274 
3275 static __inline__ vector unsigned long long __ATTRS_o_ai
3276 vec_div(vector unsigned long long __a, vector unsigned long long __b) {
3277   return __a / __b;
3278 }
3279 
3280 static __inline__ vector float __ATTRS_o_ai vec_div(vector float __a,
3281                                                     vector float __b) {
3282   return __a / __b;
3283 }
3284 
3285 static __inline__ vector double __ATTRS_o_ai vec_div(vector double __a,
3286                                                      vector double __b) {
3287   return __a / __b;
3288 }
3289 #endif
3290 
3291 /* vec_dss */
3292 
3293 #define vec_dss __builtin_altivec_dss
3294 
3295 /* vec_dssall */
3296 
3297 static __inline__ void __attribute__((__always_inline__)) vec_dssall(void) {
3298   __builtin_altivec_dssall();
3299 }
3300 
3301 /* vec_dst */
3302 #define vec_dst(__PTR, __CW, __STR) \
3303   __extension__(                    \
3304       { __builtin_altivec_dst((const void *)(__PTR), (__CW), (__STR)); })
3305 
3306 /* vec_dstst */
3307 #define vec_dstst(__PTR, __CW, __STR) \
3308   __extension__(                      \
3309       { __builtin_altivec_dstst((const void *)(__PTR), (__CW), (__STR)); })
3310 
3311 /* vec_dststt */
3312 #define vec_dststt(__PTR, __CW, __STR) \
3313   __extension__(                       \
3314       { __builtin_altivec_dststt((const void *)(__PTR), (__CW), (__STR)); })
3315 
3316 /* vec_dstt */
3317 #define vec_dstt(__PTR, __CW, __STR) \
3318   __extension__(                     \
3319       { __builtin_altivec_dstt((const void *)(__PTR), (__CW), (__STR)); })
3320 
3321 /* vec_eqv */
3322 
3323 #ifdef __POWER8_VECTOR__
3324 static __inline__ vector signed char __ATTRS_o_ai
3325 vec_eqv(vector signed char __a, vector signed char __b) {
3326   return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
3327                                                   (vector unsigned int)__b);
3328 }
3329 
3330 static __inline__ vector unsigned char __ATTRS_o_ai
3331 vec_eqv(vector unsigned char __a, vector unsigned char __b) {
3332   return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
3333                                                     (vector unsigned int)__b);
3334 }
3335 
3336 static __inline__ vector bool char __ATTRS_o_ai vec_eqv(vector bool char __a,
3337                                                         vector bool char __b) {
3338   return (vector bool char)__builtin_vsx_xxleqv((vector unsigned int)__a,
3339                                                 (vector unsigned int)__b);
3340 }
3341 
3342 static __inline__ vector signed short __ATTRS_o_ai
3343 vec_eqv(vector signed short __a, vector signed short __b) {
3344   return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
3345                                                    (vector unsigned int)__b);
3346 }
3347 
3348 static __inline__ vector unsigned short __ATTRS_o_ai
3349 vec_eqv(vector unsigned short __a, vector unsigned short __b) {
3350   return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
3351                                                      (vector unsigned int)__b);
3352 }
3353 
3354 static __inline__ vector bool short __ATTRS_o_ai
3355 vec_eqv(vector bool short __a, vector bool short __b) {
3356   return (vector bool short)__builtin_vsx_xxleqv((vector unsigned int)__a,
3357                                                  (vector unsigned int)__b);
3358 }
3359 
3360 static __inline__ vector signed int __ATTRS_o_ai
3361 vec_eqv(vector signed int __a, vector signed int __b) {
3362   return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
3363                                                  (vector unsigned int)__b);
3364 }
3365 
3366 static __inline__ vector unsigned int __ATTRS_o_ai
3367 vec_eqv(vector unsigned int __a, vector unsigned int __b) {
3368   return __builtin_vsx_xxleqv(__a, __b);
3369 }
3370 
3371 static __inline__ vector bool int __ATTRS_o_ai vec_eqv(vector bool int __a,
3372                                                        vector bool int __b) {
3373   return (vector bool int)__builtin_vsx_xxleqv((vector unsigned int)__a,
3374                                                (vector unsigned int)__b);
3375 }
3376 
3377 static __inline__ vector signed long long __ATTRS_o_ai
3378 vec_eqv(vector signed long long __a, vector signed long long __b) {
3379   return (vector signed long long)__builtin_vsx_xxleqv(
3380       (vector unsigned int)__a, (vector unsigned int)__b);
3381 }
3382 
3383 static __inline__ vector unsigned long long __ATTRS_o_ai
3384 vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
3385   return (vector unsigned long long)__builtin_vsx_xxleqv(
3386       (vector unsigned int)__a, (vector unsigned int)__b);
3387 }
3388 
3389 static __inline__ vector bool long long __ATTRS_o_ai
3390 vec_eqv(vector bool long long __a, vector bool long long __b) {
3391   return (vector bool long long)__builtin_vsx_xxleqv((vector unsigned int)__a,
3392                                                      (vector unsigned int)__b);
3393 }
3394 
3395 static __inline__ vector float __ATTRS_o_ai vec_eqv(vector float __a,
3396                                                     vector float __b) {
3397   return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
3398                                             (vector unsigned int)__b);
3399 }
3400 
3401 static __inline__ vector double __ATTRS_o_ai vec_eqv(vector double __a,
3402                                                      vector double __b) {
3403   return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
3404                                              (vector unsigned int)__b);
3405 }
3406 #endif
3407 
3408 /* vec_expte */
3409 
3410 static __inline__ vector float __attribute__((__always_inline__))
3411 vec_expte(vector float __a) {
3412   return __builtin_altivec_vexptefp(__a);
3413 }
3414 
3415 /* vec_vexptefp */
3416 
3417 static __inline__ vector float __attribute__((__always_inline__))
3418 vec_vexptefp(vector float __a) {
3419   return __builtin_altivec_vexptefp(__a);
3420 }
3421 
3422 /* vec_floor */
3423 
3424 static __inline__ vector float __ATTRS_o_ai vec_floor(vector float __a) {
3425 #ifdef __VSX__
3426   return __builtin_vsx_xvrspim(__a);
3427 #else
3428   return __builtin_altivec_vrfim(__a);
3429 #endif
3430 }
3431 
3432 #ifdef __VSX__
3433 static __inline__ vector double __ATTRS_o_ai vec_floor(vector double __a) {
3434   return __builtin_vsx_xvrdpim(__a);
3435 }
3436 #endif
3437 
3438 /* vec_vrfim */
3439 
3440 static __inline__ vector float __attribute__((__always_inline__))
3441 vec_vrfim(vector float __a) {
3442   return __builtin_altivec_vrfim(__a);
3443 }
3444 
3445 /* vec_ld */
3446 
3447 static __inline__ vector signed char __ATTRS_o_ai
3448 vec_ld(int __a, const vector signed char *__b) {
3449   return (vector signed char)__builtin_altivec_lvx(__a, __b);
3450 }
3451 
3452 static __inline__ vector signed char __ATTRS_o_ai
3453 vec_ld(int __a, const signed char *__b) {
3454   return (vector signed char)__builtin_altivec_lvx(__a, __b);
3455 }
3456 
3457 static __inline__ vector unsigned char __ATTRS_o_ai
3458 vec_ld(int __a, const vector unsigned char *__b) {
3459   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3460 }
3461 
3462 static __inline__ vector unsigned char __ATTRS_o_ai
3463 vec_ld(int __a, const unsigned char *__b) {
3464   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3465 }
3466 
3467 static __inline__ vector bool char __ATTRS_o_ai
3468 vec_ld(int __a, const vector bool char *__b) {
3469   return (vector bool char)__builtin_altivec_lvx(__a, __b);
3470 }
3471 
3472 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a,
3473                                                    const vector short *__b) {
3474   return (vector short)__builtin_altivec_lvx(__a, __b);
3475 }
3476 
3477 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) {
3478   return (vector short)__builtin_altivec_lvx(__a, __b);
3479 }
3480 
3481 static __inline__ vector unsigned short __ATTRS_o_ai
3482 vec_ld(int __a, const vector unsigned short *__b) {
3483   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3484 }
3485 
3486 static __inline__ vector unsigned short __ATTRS_o_ai
3487 vec_ld(int __a, const unsigned short *__b) {
3488   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3489 }
3490 
3491 static __inline__ vector bool short __ATTRS_o_ai
3492 vec_ld(int __a, const vector bool short *__b) {
3493   return (vector bool short)__builtin_altivec_lvx(__a, __b);
3494 }
3495 
3496 static __inline__ vector pixel __ATTRS_o_ai vec_ld(int __a,
3497                                                    const vector pixel *__b) {
3498   return (vector pixel)__builtin_altivec_lvx(__a, __b);
3499 }
3500 
3501 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a,
3502                                                  const vector int *__b) {
3503   return (vector int)__builtin_altivec_lvx(__a, __b);
3504 }
3505 
3506 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) {
3507   return (vector int)__builtin_altivec_lvx(__a, __b);
3508 }
3509 
3510 static __inline__ vector unsigned int __ATTRS_o_ai
3511 vec_ld(int __a, const vector unsigned int *__b) {
3512   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3513 }
3514 
3515 static __inline__ vector unsigned int __ATTRS_o_ai
3516 vec_ld(int __a, const unsigned int *__b) {
3517   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3518 }
3519 
3520 static __inline__ vector bool int __ATTRS_o_ai
3521 vec_ld(int __a, const vector bool int *__b) {
3522   return (vector bool int)__builtin_altivec_lvx(__a, __b);
3523 }
3524 
3525 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a,
3526                                                    const vector float *__b) {
3527   return (vector float)__builtin_altivec_lvx(__a, __b);
3528 }
3529 
3530 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) {
3531   return (vector float)__builtin_altivec_lvx(__a, __b);
3532 }
3533 
3534 /* vec_lvx */
3535 
3536 static __inline__ vector signed char __ATTRS_o_ai
3537 vec_lvx(int __a, const vector signed char *__b) {
3538   return (vector signed char)__builtin_altivec_lvx(__a, __b);
3539 }
3540 
3541 static __inline__ vector signed char __ATTRS_o_ai
3542 vec_lvx(int __a, const signed char *__b) {
3543   return (vector signed char)__builtin_altivec_lvx(__a, __b);
3544 }
3545 
3546 static __inline__ vector unsigned char __ATTRS_o_ai
3547 vec_lvx(int __a, const vector unsigned char *__b) {
3548   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3549 }
3550 
3551 static __inline__ vector unsigned char __ATTRS_o_ai
3552 vec_lvx(int __a, const unsigned char *__b) {
3553   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3554 }
3555 
3556 static __inline__ vector bool char __ATTRS_o_ai
3557 vec_lvx(int __a, const vector bool char *__b) {
3558   return (vector bool char)__builtin_altivec_lvx(__a, __b);
3559 }
3560 
3561 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a,
3562                                                     const vector short *__b) {
3563   return (vector short)__builtin_altivec_lvx(__a, __b);
3564 }
3565 
3566 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) {
3567   return (vector short)__builtin_altivec_lvx(__a, __b);
3568 }
3569 
3570 static __inline__ vector unsigned short __ATTRS_o_ai
3571 vec_lvx(int __a, const vector unsigned short *__b) {
3572   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3573 }
3574 
3575 static __inline__ vector unsigned short __ATTRS_o_ai
3576 vec_lvx(int __a, const unsigned short *__b) {
3577   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3578 }
3579 
3580 static __inline__ vector bool short __ATTRS_o_ai
3581 vec_lvx(int __a, const vector bool short *__b) {
3582   return (vector bool short)__builtin_altivec_lvx(__a, __b);
3583 }
3584 
3585 static __inline__ vector pixel __ATTRS_o_ai vec_lvx(int __a,
3586                                                     const vector pixel *__b) {
3587   return (vector pixel)__builtin_altivec_lvx(__a, __b);
3588 }
3589 
3590 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a,
3591                                                   const vector int *__b) {
3592   return (vector int)__builtin_altivec_lvx(__a, __b);
3593 }
3594 
3595 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) {
3596   return (vector int)__builtin_altivec_lvx(__a, __b);
3597 }
3598 
3599 static __inline__ vector unsigned int __ATTRS_o_ai
3600 vec_lvx(int __a, const vector unsigned int *__b) {
3601   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3602 }
3603 
3604 static __inline__ vector unsigned int __ATTRS_o_ai
3605 vec_lvx(int __a, const unsigned int *__b) {
3606   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3607 }
3608 
3609 static __inline__ vector bool int __ATTRS_o_ai
3610 vec_lvx(int __a, const vector bool int *__b) {
3611   return (vector bool int)__builtin_altivec_lvx(__a, __b);
3612 }
3613 
3614 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a,
3615                                                     const vector float *__b) {
3616   return (vector float)__builtin_altivec_lvx(__a, __b);
3617 }
3618 
3619 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) {
3620   return (vector float)__builtin_altivec_lvx(__a, __b);
3621 }
3622 
3623 /* vec_lde */
3624 
3625 static __inline__ vector signed char __ATTRS_o_ai
3626 vec_lde(int __a, const signed char *__b) {
3627   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
3628 }
3629 
3630 static __inline__ vector unsigned char __ATTRS_o_ai
3631 vec_lde(int __a, const unsigned char *__b) {
3632   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
3633 }
3634 
3635 static __inline__ vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) {
3636   return (vector short)__builtin_altivec_lvehx(__a, __b);
3637 }
3638 
3639 static __inline__ vector unsigned short __ATTRS_o_ai
3640 vec_lde(int __a, const unsigned short *__b) {
3641   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
3642 }
3643 
3644 static __inline__ vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) {
3645   return (vector int)__builtin_altivec_lvewx(__a, __b);
3646 }
3647 
3648 static __inline__ vector unsigned int __ATTRS_o_ai
3649 vec_lde(int __a, const unsigned int *__b) {
3650   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
3651 }
3652 
3653 static __inline__ vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) {
3654   return (vector float)__builtin_altivec_lvewx(__a, __b);
3655 }
3656 
3657 /* vec_lvebx */
3658 
3659 static __inline__ vector signed char __ATTRS_o_ai
3660 vec_lvebx(int __a, const signed char *__b) {
3661   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
3662 }
3663 
3664 static __inline__ vector unsigned char __ATTRS_o_ai
3665 vec_lvebx(int __a, const unsigned char *__b) {
3666   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
3667 }
3668 
3669 /* vec_lvehx */
3670 
3671 static __inline__ vector short __ATTRS_o_ai vec_lvehx(int __a,
3672                                                       const short *__b) {
3673   return (vector short)__builtin_altivec_lvehx(__a, __b);
3674 }
3675 
3676 static __inline__ vector unsigned short __ATTRS_o_ai
3677 vec_lvehx(int __a, const unsigned short *__b) {
3678   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
3679 }
3680 
3681 /* vec_lvewx */
3682 
3683 static __inline__ vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) {
3684   return (vector int)__builtin_altivec_lvewx(__a, __b);
3685 }
3686 
3687 static __inline__ vector unsigned int __ATTRS_o_ai
3688 vec_lvewx(int __a, const unsigned int *__b) {
3689   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
3690 }
3691 
3692 static __inline__ vector float __ATTRS_o_ai vec_lvewx(int __a,
3693                                                       const float *__b) {
3694   return (vector float)__builtin_altivec_lvewx(__a, __b);
3695 }
3696 
3697 /* vec_ldl */
3698 
3699 static __inline__ vector signed char __ATTRS_o_ai
3700 vec_ldl(int __a, const vector signed char *__b) {
3701   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3702 }
3703 
3704 static __inline__ vector signed char __ATTRS_o_ai
3705 vec_ldl(int __a, const signed char *__b) {
3706   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3707 }
3708 
3709 static __inline__ vector unsigned char __ATTRS_o_ai
3710 vec_ldl(int __a, const vector unsigned char *__b) {
3711   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3712 }
3713 
3714 static __inline__ vector unsigned char __ATTRS_o_ai
3715 vec_ldl(int __a, const unsigned char *__b) {
3716   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3717 }
3718 
3719 static __inline__ vector bool char __ATTRS_o_ai
3720 vec_ldl(int __a, const vector bool char *__b) {
3721   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
3722 }
3723 
3724 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a,
3725                                                     const vector short *__b) {
3726   return (vector short)__builtin_altivec_lvxl(__a, __b);
3727 }
3728 
3729 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) {
3730   return (vector short)__builtin_altivec_lvxl(__a, __b);
3731 }
3732 
3733 static __inline__ vector unsigned short __ATTRS_o_ai
3734 vec_ldl(int __a, const vector unsigned short *__b) {
3735   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3736 }
3737 
3738 static __inline__ vector unsigned short __ATTRS_o_ai
3739 vec_ldl(int __a, const unsigned short *__b) {
3740   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3741 }
3742 
3743 static __inline__ vector bool short __ATTRS_o_ai
3744 vec_ldl(int __a, const vector bool short *__b) {
3745   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
3746 }
3747 
3748 static __inline__ vector pixel __ATTRS_o_ai vec_ldl(int __a,
3749                                                     const vector pixel *__b) {
3750   return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
3751 }
3752 
3753 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a,
3754                                                   const vector int *__b) {
3755   return (vector int)__builtin_altivec_lvxl(__a, __b);
3756 }
3757 
3758 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) {
3759   return (vector int)__builtin_altivec_lvxl(__a, __b);
3760 }
3761 
3762 static __inline__ vector unsigned int __ATTRS_o_ai
3763 vec_ldl(int __a, const vector unsigned int *__b) {
3764   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3765 }
3766 
3767 static __inline__ vector unsigned int __ATTRS_o_ai
3768 vec_ldl(int __a, const unsigned int *__b) {
3769   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3770 }
3771 
3772 static __inline__ vector bool int __ATTRS_o_ai
3773 vec_ldl(int __a, const vector bool int *__b) {
3774   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
3775 }
3776 
3777 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a,
3778                                                     const vector float *__b) {
3779   return (vector float)__builtin_altivec_lvxl(__a, __b);
3780 }
3781 
3782 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) {
3783   return (vector float)__builtin_altivec_lvxl(__a, __b);
3784 }
3785 
3786 /* vec_lvxl */
3787 
3788 static __inline__ vector signed char __ATTRS_o_ai
3789 vec_lvxl(int __a, const vector signed char *__b) {
3790   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3791 }
3792 
3793 static __inline__ vector signed char __ATTRS_o_ai
3794 vec_lvxl(int __a, const signed char *__b) {
3795   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3796 }
3797 
3798 static __inline__ vector unsigned char __ATTRS_o_ai
3799 vec_lvxl(int __a, const vector unsigned char *__b) {
3800   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3801 }
3802 
3803 static __inline__ vector unsigned char __ATTRS_o_ai
3804 vec_lvxl(int __a, const unsigned char *__b) {
3805   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3806 }
3807 
3808 static __inline__ vector bool char __ATTRS_o_ai
3809 vec_lvxl(int __a, const vector bool char *__b) {
3810   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
3811 }
3812 
3813 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
3814                                                      const vector short *__b) {
3815   return (vector short)__builtin_altivec_lvxl(__a, __b);
3816 }
3817 
3818 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
3819                                                      const short *__b) {
3820   return (vector short)__builtin_altivec_lvxl(__a, __b);
3821 }
3822 
3823 static __inline__ vector unsigned short __ATTRS_o_ai
3824 vec_lvxl(int __a, const vector unsigned short *__b) {
3825   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3826 }
3827 
3828 static __inline__ vector unsigned short __ATTRS_o_ai
3829 vec_lvxl(int __a, const unsigned short *__b) {
3830   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3831 }
3832 
3833 static __inline__ vector bool short __ATTRS_o_ai
3834 vec_lvxl(int __a, const vector bool short *__b) {
3835   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
3836 }
3837 
3838 static __inline__ vector pixel __ATTRS_o_ai vec_lvxl(int __a,
3839                                                      const vector pixel *__b) {
3840   return (vector pixel)__builtin_altivec_lvxl(__a, __b);
3841 }
3842 
3843 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a,
3844                                                    const vector int *__b) {
3845   return (vector int)__builtin_altivec_lvxl(__a, __b);
3846 }
3847 
3848 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) {
3849   return (vector int)__builtin_altivec_lvxl(__a, __b);
3850 }
3851 
3852 static __inline__ vector unsigned int __ATTRS_o_ai
3853 vec_lvxl(int __a, const vector unsigned int *__b) {
3854   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3855 }
3856 
3857 static __inline__ vector unsigned int __ATTRS_o_ai
3858 vec_lvxl(int __a, const unsigned int *__b) {
3859   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3860 }
3861 
3862 static __inline__ vector bool int __ATTRS_o_ai
3863 vec_lvxl(int __a, const vector bool int *__b) {
3864   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
3865 }
3866 
3867 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
3868                                                      const vector float *__b) {
3869   return (vector float)__builtin_altivec_lvxl(__a, __b);
3870 }
3871 
3872 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
3873                                                      const float *__b) {
3874   return (vector float)__builtin_altivec_lvxl(__a, __b);
3875 }
3876 
3877 /* vec_loge */
3878 
3879 static __inline__ vector float __attribute__((__always_inline__))
3880 vec_loge(vector float __a) {
3881   return __builtin_altivec_vlogefp(__a);
3882 }
3883 
3884 /* vec_vlogefp */
3885 
3886 static __inline__ vector float __attribute__((__always_inline__))
3887 vec_vlogefp(vector float __a) {
3888   return __builtin_altivec_vlogefp(__a);
3889 }
3890 
3891 /* vec_lvsl */
3892 
3893 #ifdef __LITTLE_ENDIAN__
3894 static __inline__ vector unsigned char __ATTRS_o_ai
3895     __attribute__((__deprecated__("use assignment for unaligned little endian \
3896 loads/stores"))) vec_lvsl(int __a, const signed char *__b) {
3897   vector unsigned char mask =
3898       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3899   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3900                                   7,  6,  5,  4,  3,  2,  1, 0};
3901   return vec_perm(mask, mask, reverse);
3902 }
3903 #else
3904 static __inline__ vector unsigned char __ATTRS_o_ai
3905 vec_lvsl(int __a, const signed char *__b) {
3906   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3907 }
3908 #endif
3909 
3910 #ifdef __LITTLE_ENDIAN__
3911 static __inline__ vector unsigned char __ATTRS_o_ai
3912     __attribute__((__deprecated__("use assignment for unaligned little endian \
3913 loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) {
3914   vector unsigned char mask =
3915       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3916   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3917                                   7,  6,  5,  4,  3,  2,  1, 0};
3918   return vec_perm(mask, mask, reverse);
3919 }
3920 #else
3921 static __inline__ vector unsigned char __ATTRS_o_ai
3922 vec_lvsl(int __a, const unsigned char *__b) {
3923   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3924 }
3925 #endif
3926 
3927 #ifdef __LITTLE_ENDIAN__
3928 static __inline__ vector unsigned char __ATTRS_o_ai
3929     __attribute__((__deprecated__("use assignment for unaligned little endian \
3930 loads/stores"))) vec_lvsl(int __a, const short *__b) {
3931   vector unsigned char mask =
3932       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3933   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3934                                   7,  6,  5,  4,  3,  2,  1, 0};
3935   return vec_perm(mask, mask, reverse);
3936 }
3937 #else
3938 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
3939                                                              const short *__b) {
3940   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3941 }
3942 #endif
3943 
3944 #ifdef __LITTLE_ENDIAN__
3945 static __inline__ vector unsigned char __ATTRS_o_ai
3946     __attribute__((__deprecated__("use assignment for unaligned little endian \
3947 loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) {
3948   vector unsigned char mask =
3949       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3950   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3951                                   7,  6,  5,  4,  3,  2,  1, 0};
3952   return vec_perm(mask, mask, reverse);
3953 }
3954 #else
3955 static __inline__ vector unsigned char __ATTRS_o_ai
3956 vec_lvsl(int __a, const unsigned short *__b) {
3957   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3958 }
3959 #endif
3960 
3961 #ifdef __LITTLE_ENDIAN__
3962 static __inline__ vector unsigned char __ATTRS_o_ai
3963     __attribute__((__deprecated__("use assignment for unaligned little endian \
3964 loads/stores"))) vec_lvsl(int __a, const int *__b) {
3965   vector unsigned char mask =
3966       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3967   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3968                                   7,  6,  5,  4,  3,  2,  1, 0};
3969   return vec_perm(mask, mask, reverse);
3970 }
3971 #else
3972 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
3973                                                              const int *__b) {
3974   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3975 }
3976 #endif
3977 
3978 #ifdef __LITTLE_ENDIAN__
3979 static __inline__ vector unsigned char __ATTRS_o_ai
3980     __attribute__((__deprecated__("use assignment for unaligned little endian \
3981 loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) {
3982   vector unsigned char mask =
3983       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3984   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3985                                   7,  6,  5,  4,  3,  2,  1, 0};
3986   return vec_perm(mask, mask, reverse);
3987 }
3988 #else
3989 static __inline__ vector unsigned char __ATTRS_o_ai
3990 vec_lvsl(int __a, const unsigned int *__b) {
3991   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3992 }
3993 #endif
3994 
3995 #ifdef __LITTLE_ENDIAN__
3996 static __inline__ vector unsigned char __ATTRS_o_ai
3997     __attribute__((__deprecated__("use assignment for unaligned little endian \
3998 loads/stores"))) vec_lvsl(int __a, const float *__b) {
3999   vector unsigned char mask =
4000       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4001   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4002                                   7,  6,  5,  4,  3,  2,  1, 0};
4003   return vec_perm(mask, mask, reverse);
4004 }
4005 #else
4006 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
4007                                                              const float *__b) {
4008   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4009 }
4010 #endif
4011 
4012 /* vec_lvsr */
4013 
4014 #ifdef __LITTLE_ENDIAN__
4015 static __inline__ vector unsigned char __ATTRS_o_ai
4016     __attribute__((__deprecated__("use assignment for unaligned little endian \
4017 loads/stores"))) vec_lvsr(int __a, const signed char *__b) {
4018   vector unsigned char mask =
4019       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4020   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4021                                   7,  6,  5,  4,  3,  2,  1, 0};
4022   return vec_perm(mask, mask, reverse);
4023 }
4024 #else
4025 static __inline__ vector unsigned char __ATTRS_o_ai
4026 vec_lvsr(int __a, const signed char *__b) {
4027   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4028 }
4029 #endif
4030 
4031 #ifdef __LITTLE_ENDIAN__
4032 static __inline__ vector unsigned char __ATTRS_o_ai
4033     __attribute__((__deprecated__("use assignment for unaligned little endian \
4034 loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) {
4035   vector unsigned char mask =
4036       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4037   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4038                                   7,  6,  5,  4,  3,  2,  1, 0};
4039   return vec_perm(mask, mask, reverse);
4040 }
4041 #else
4042 static __inline__ vector unsigned char __ATTRS_o_ai
4043 vec_lvsr(int __a, const unsigned char *__b) {
4044   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4045 }
4046 #endif
4047 
4048 #ifdef __LITTLE_ENDIAN__
4049 static __inline__ vector unsigned char __ATTRS_o_ai
4050     __attribute__((__deprecated__("use assignment for unaligned little endian \
4051 loads/stores"))) vec_lvsr(int __a, const short *__b) {
4052   vector unsigned char mask =
4053       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4054   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4055                                   7,  6,  5,  4,  3,  2,  1, 0};
4056   return vec_perm(mask, mask, reverse);
4057 }
4058 #else
4059 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
4060                                                              const short *__b) {
4061   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4062 }
4063 #endif
4064 
4065 #ifdef __LITTLE_ENDIAN__
4066 static __inline__ vector unsigned char __ATTRS_o_ai
4067     __attribute__((__deprecated__("use assignment for unaligned little endian \
4068 loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) {
4069   vector unsigned char mask =
4070       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4071   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4072                                   7,  6,  5,  4,  3,  2,  1, 0};
4073   return vec_perm(mask, mask, reverse);
4074 }
4075 #else
4076 static __inline__ vector unsigned char __ATTRS_o_ai
4077 vec_lvsr(int __a, const unsigned short *__b) {
4078   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4079 }
4080 #endif
4081 
4082 #ifdef __LITTLE_ENDIAN__
4083 static __inline__ vector unsigned char __ATTRS_o_ai
4084     __attribute__((__deprecated__("use assignment for unaligned little endian \
4085 loads/stores"))) vec_lvsr(int __a, const int *__b) {
4086   vector unsigned char mask =
4087       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4088   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4089                                   7,  6,  5,  4,  3,  2,  1, 0};
4090   return vec_perm(mask, mask, reverse);
4091 }
4092 #else
4093 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
4094                                                              const int *__b) {
4095   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4096 }
4097 #endif
4098 
4099 #ifdef __LITTLE_ENDIAN__
4100 static __inline__ vector unsigned char __ATTRS_o_ai
4101     __attribute__((__deprecated__("use assignment for unaligned little endian \
4102 loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) {
4103   vector unsigned char mask =
4104       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4105   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4106                                   7,  6,  5,  4,  3,  2,  1, 0};
4107   return vec_perm(mask, mask, reverse);
4108 }
4109 #else
4110 static __inline__ vector unsigned char __ATTRS_o_ai
4111 vec_lvsr(int __a, const unsigned int *__b) {
4112   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4113 }
4114 #endif
4115 
4116 #ifdef __LITTLE_ENDIAN__
4117 static __inline__ vector unsigned char __ATTRS_o_ai
4118     __attribute__((__deprecated__("use assignment for unaligned little endian \
4119 loads/stores"))) vec_lvsr(int __a, const float *__b) {
4120   vector unsigned char mask =
4121       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4122   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4123                                   7,  6,  5,  4,  3,  2,  1, 0};
4124   return vec_perm(mask, mask, reverse);
4125 }
4126 #else
4127 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
4128                                                              const float *__b) {
4129   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4130 }
4131 #endif
4132 
4133 /* vec_madd */
4134 static __inline__ vector signed short __ATTRS_o_ai
4135 vec_mladd(vector signed short, vector signed short, vector signed short);
4136 static __inline__ vector signed short __ATTRS_o_ai
4137 vec_mladd(vector signed short, vector unsigned short, vector unsigned short);
4138 static __inline__ vector signed short __ATTRS_o_ai
4139 vec_mladd(vector unsigned short, vector signed short, vector signed short);
4140 static __inline__ vector unsigned short __ATTRS_o_ai
4141 vec_mladd(vector unsigned short, vector unsigned short, vector unsigned short);
4142 
4143 static __inline__ vector signed short __ATTRS_o_ai vec_madd(
4144     vector signed short __a, vector signed short __b, vector signed short __c) {
4145   return vec_mladd(__a, __b, __c);
4146 }
4147 
4148 static __inline__ vector signed short __ATTRS_o_ai
4149 vec_madd(vector signed short __a, vector unsigned short __b,
4150          vector unsigned short __c) {
4151   return vec_mladd(__a, __b, __c);
4152 }
4153 
4154 static __inline__ vector signed short __ATTRS_o_ai
4155 vec_madd(vector unsigned short __a, vector signed short __b,
4156          vector signed short __c) {
4157   return vec_mladd(__a, __b, __c);
4158 }
4159 
4160 static __inline__ vector unsigned short __ATTRS_o_ai
4161 vec_madd(vector unsigned short __a, vector unsigned short __b,
4162          vector unsigned short __c) {
4163   return vec_mladd(__a, __b, __c);
4164 }
4165 
4166 static __inline__ vector float __ATTRS_o_ai vec_madd(vector float __a,
4167                                                      vector float __b,
4168                                                      vector float __c) {
4169 #ifdef __VSX__
4170   return __builtin_vsx_xvmaddasp(__a, __b, __c);
4171 #else
4172   return __builtin_altivec_vmaddfp(__a, __b, __c);
4173 #endif
4174 }
4175 
4176 #ifdef __VSX__
4177 static __inline__ vector double __ATTRS_o_ai vec_madd(vector double __a,
4178                                                       vector double __b,
4179                                                       vector double __c) {
4180   return __builtin_vsx_xvmaddadp(__a, __b, __c);
4181 }
4182 #endif
4183 
4184 /* vec_vmaddfp */
4185 
4186 static __inline__ vector float __attribute__((__always_inline__))
4187 vec_vmaddfp(vector float __a, vector float __b, vector float __c) {
4188   return __builtin_altivec_vmaddfp(__a, __b, __c);
4189 }
4190 
4191 /* vec_madds */
4192 
4193 static __inline__ vector signed short __attribute__((__always_inline__))
4194 vec_madds(vector signed short __a, vector signed short __b,
4195           vector signed short __c) {
4196   return __builtin_altivec_vmhaddshs(__a, __b, __c);
4197 }
4198 
4199 /* vec_vmhaddshs */
4200 static __inline__ vector signed short __attribute__((__always_inline__))
4201 vec_vmhaddshs(vector signed short __a, vector signed short __b,
4202               vector signed short __c) {
4203   return __builtin_altivec_vmhaddshs(__a, __b, __c);
4204 }
4205 
4206 /* vec_msub */
4207 
4208 #ifdef __VSX__
4209 static __inline__ vector float __ATTRS_o_ai vec_msub(vector float __a,
4210                                                      vector float __b,
4211                                                      vector float __c) {
4212   return __builtin_vsx_xvmsubasp(__a, __b, __c);
4213 }
4214 
4215 static __inline__ vector double __ATTRS_o_ai vec_msub(vector double __a,
4216                                                       vector double __b,
4217                                                       vector double __c) {
4218   return __builtin_vsx_xvmsubadp(__a, __b, __c);
4219 }
4220 #endif
4221 
4222 /* vec_max */
4223 
4224 static __inline__ vector signed char __ATTRS_o_ai
4225 vec_max(vector signed char __a, vector signed char __b) {
4226   return __builtin_altivec_vmaxsb(__a, __b);
4227 }
4228 
4229 static __inline__ vector signed char __ATTRS_o_ai
4230 vec_max(vector bool char __a, vector signed char __b) {
4231   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
4232 }
4233 
4234 static __inline__ vector signed char __ATTRS_o_ai
4235 vec_max(vector signed char __a, vector bool char __b) {
4236   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
4237 }
4238 
4239 static __inline__ vector unsigned char __ATTRS_o_ai
4240 vec_max(vector unsigned char __a, vector unsigned char __b) {
4241   return __builtin_altivec_vmaxub(__a, __b);
4242 }
4243 
4244 static __inline__ vector unsigned char __ATTRS_o_ai
4245 vec_max(vector bool char __a, vector unsigned char __b) {
4246   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
4247 }
4248 
4249 static __inline__ vector unsigned char __ATTRS_o_ai
4250 vec_max(vector unsigned char __a, vector bool char __b) {
4251   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
4252 }
4253 
4254 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
4255                                                     vector short __b) {
4256   return __builtin_altivec_vmaxsh(__a, __b);
4257 }
4258 
4259 static __inline__ vector short __ATTRS_o_ai vec_max(vector bool short __a,
4260                                                     vector short __b) {
4261   return __builtin_altivec_vmaxsh((vector short)__a, __b);
4262 }
4263 
4264 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
4265                                                     vector bool short __b) {
4266   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
4267 }
4268 
4269 static __inline__ vector unsigned short __ATTRS_o_ai
4270 vec_max(vector unsigned short __a, vector unsigned short __b) {
4271   return __builtin_altivec_vmaxuh(__a, __b);
4272 }
4273 
4274 static __inline__ vector unsigned short __ATTRS_o_ai
4275 vec_max(vector bool short __a, vector unsigned short __b) {
4276   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
4277 }
4278 
4279 static __inline__ vector unsigned short __ATTRS_o_ai
4280 vec_max(vector unsigned short __a, vector bool short __b) {
4281   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
4282 }
4283 
4284 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
4285                                                   vector int __b) {
4286   return __builtin_altivec_vmaxsw(__a, __b);
4287 }
4288 
4289 static __inline__ vector int __ATTRS_o_ai vec_max(vector bool int __a,
4290                                                   vector int __b) {
4291   return __builtin_altivec_vmaxsw((vector int)__a, __b);
4292 }
4293 
4294 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
4295                                                   vector bool int __b) {
4296   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
4297 }
4298 
4299 static __inline__ vector unsigned int __ATTRS_o_ai
4300 vec_max(vector unsigned int __a, vector unsigned int __b) {
4301   return __builtin_altivec_vmaxuw(__a, __b);
4302 }
4303 
4304 static __inline__ vector unsigned int __ATTRS_o_ai
4305 vec_max(vector bool int __a, vector unsigned int __b) {
4306   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
4307 }
4308 
4309 static __inline__ vector unsigned int __ATTRS_o_ai
4310 vec_max(vector unsigned int __a, vector bool int __b) {
4311   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
4312 }
4313 
4314 #ifdef __POWER8_VECTOR__
4315 static __inline__ vector signed long long __ATTRS_o_ai
4316 vec_max(vector signed long long __a, vector signed long long __b) {
4317   return __builtin_altivec_vmaxsd(__a, __b);
4318 }
4319 
4320 static __inline__ vector signed long long __ATTRS_o_ai
4321 vec_max(vector bool long long __a, vector signed long long __b) {
4322   return __builtin_altivec_vmaxsd((vector signed long long)__a, __b);
4323 }
4324 
4325 static __inline__ vector signed long long __ATTRS_o_ai
4326 vec_max(vector signed long long __a, vector bool long long __b) {
4327   return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b);
4328 }
4329 
4330 static __inline__ vector unsigned long long __ATTRS_o_ai
4331 vec_max(vector unsigned long long __a, vector unsigned long long __b) {
4332   return __builtin_altivec_vmaxud(__a, __b);
4333 }
4334 
4335 static __inline__ vector unsigned long long __ATTRS_o_ai
4336 vec_max(vector bool long long __a, vector unsigned long long __b) {
4337   return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b);
4338 }
4339 
4340 static __inline__ vector unsigned long long __ATTRS_o_ai
4341 vec_max(vector unsigned long long __a, vector bool long long __b) {
4342   return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b);
4343 }
4344 #endif
4345 
4346 static __inline__ vector float __ATTRS_o_ai vec_max(vector float __a,
4347                                                     vector float __b) {
4348 #ifdef __VSX__
4349   return __builtin_vsx_xvmaxsp(__a, __b);
4350 #else
4351   return __builtin_altivec_vmaxfp(__a, __b);
4352 #endif
4353 }
4354 
4355 #ifdef __VSX__
4356 static __inline__ vector double __ATTRS_o_ai vec_max(vector double __a,
4357                                                      vector double __b) {
4358   return __builtin_vsx_xvmaxdp(__a, __b);
4359 }
4360 #endif
4361 
4362 /* vec_vmaxsb */
4363 
4364 static __inline__ vector signed char __ATTRS_o_ai
4365 vec_vmaxsb(vector signed char __a, vector signed char __b) {
4366   return __builtin_altivec_vmaxsb(__a, __b);
4367 }
4368 
4369 static __inline__ vector signed char __ATTRS_o_ai
4370 vec_vmaxsb(vector bool char __a, vector signed char __b) {
4371   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
4372 }
4373 
4374 static __inline__ vector signed char __ATTRS_o_ai
4375 vec_vmaxsb(vector signed char __a, vector bool char __b) {
4376   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
4377 }
4378 
4379 /* vec_vmaxub */
4380 
4381 static __inline__ vector unsigned char __ATTRS_o_ai
4382 vec_vmaxub(vector unsigned char __a, vector unsigned char __b) {
4383   return __builtin_altivec_vmaxub(__a, __b);
4384 }
4385 
4386 static __inline__ vector unsigned char __ATTRS_o_ai
4387 vec_vmaxub(vector bool char __a, vector unsigned char __b) {
4388   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
4389 }
4390 
4391 static __inline__ vector unsigned char __ATTRS_o_ai
4392 vec_vmaxub(vector unsigned char __a, vector bool char __b) {
4393   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
4394 }
4395 
4396 /* vec_vmaxsh */
4397 
4398 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
4399                                                        vector short __b) {
4400   return __builtin_altivec_vmaxsh(__a, __b);
4401 }
4402 
4403 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a,
4404                                                        vector short __b) {
4405   return __builtin_altivec_vmaxsh((vector short)__a, __b);
4406 }
4407 
4408 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
4409                                                        vector bool short __b) {
4410   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
4411 }
4412 
4413 /* vec_vmaxuh */
4414 
4415 static __inline__ vector unsigned short __ATTRS_o_ai
4416 vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) {
4417   return __builtin_altivec_vmaxuh(__a, __b);
4418 }
4419 
4420 static __inline__ vector unsigned short __ATTRS_o_ai
4421 vec_vmaxuh(vector bool short __a, vector unsigned short __b) {
4422   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
4423 }
4424 
4425 static __inline__ vector unsigned short __ATTRS_o_ai
4426 vec_vmaxuh(vector unsigned short __a, vector bool short __b) {
4427   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
4428 }
4429 
4430 /* vec_vmaxsw */
4431 
4432 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
4433                                                      vector int __b) {
4434   return __builtin_altivec_vmaxsw(__a, __b);
4435 }
4436 
4437 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a,
4438                                                      vector int __b) {
4439   return __builtin_altivec_vmaxsw((vector int)__a, __b);
4440 }
4441 
4442 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
4443                                                      vector bool int __b) {
4444   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
4445 }
4446 
4447 /* vec_vmaxuw */
4448 
4449 static __inline__ vector unsigned int __ATTRS_o_ai
4450 vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) {
4451   return __builtin_altivec_vmaxuw(__a, __b);
4452 }
4453 
4454 static __inline__ vector unsigned int __ATTRS_o_ai
4455 vec_vmaxuw(vector bool int __a, vector unsigned int __b) {
4456   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
4457 }
4458 
4459 static __inline__ vector unsigned int __ATTRS_o_ai
4460 vec_vmaxuw(vector unsigned int __a, vector bool int __b) {
4461   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
4462 }
4463 
4464 /* vec_vmaxfp */
4465 
4466 static __inline__ vector float __attribute__((__always_inline__))
4467 vec_vmaxfp(vector float __a, vector float __b) {
4468 #ifdef __VSX__
4469   return __builtin_vsx_xvmaxsp(__a, __b);
4470 #else
4471   return __builtin_altivec_vmaxfp(__a, __b);
4472 #endif
4473 }
4474 
4475 /* vec_mergeh */
4476 
4477 static __inline__ vector signed char __ATTRS_o_ai
4478 vec_mergeh(vector signed char __a, vector signed char __b) {
4479   return vec_perm(__a, __b,
4480                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4481                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4482                                          0x06, 0x16, 0x07, 0x17));
4483 }
4484 
4485 static __inline__ vector unsigned char __ATTRS_o_ai
4486 vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
4487   return vec_perm(__a, __b,
4488                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4489                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4490                                          0x06, 0x16, 0x07, 0x17));
4491 }
4492 
4493 static __inline__ vector bool char __ATTRS_o_ai
4494 vec_mergeh(vector bool char __a, vector bool char __b) {
4495   return vec_perm(__a, __b,
4496                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4497                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4498                                          0x06, 0x16, 0x07, 0x17));
4499 }
4500 
4501 static __inline__ vector short __ATTRS_o_ai vec_mergeh(vector short __a,
4502                                                        vector short __b) {
4503   return vec_perm(__a, __b,
4504                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4505                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4506                                          0x06, 0x07, 0x16, 0x17));
4507 }
4508 
4509 static __inline__ vector unsigned short __ATTRS_o_ai
4510 vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
4511   return vec_perm(__a, __b,
4512                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4513                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4514                                          0x06, 0x07, 0x16, 0x17));
4515 }
4516 
4517 static __inline__ vector bool short __ATTRS_o_ai
4518 vec_mergeh(vector bool short __a, vector bool short __b) {
4519   return vec_perm(__a, __b,
4520                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4521                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4522                                          0x06, 0x07, 0x16, 0x17));
4523 }
4524 
4525 static __inline__ vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a,
4526                                                        vector pixel __b) {
4527   return vec_perm(__a, __b,
4528                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4529                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4530                                          0x06, 0x07, 0x16, 0x17));
4531 }
4532 
4533 static __inline__ vector int __ATTRS_o_ai vec_mergeh(vector int __a,
4534                                                      vector int __b) {
4535   return vec_perm(__a, __b,
4536                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4537                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4538                                          0x14, 0x15, 0x16, 0x17));
4539 }
4540 
4541 static __inline__ vector unsigned int __ATTRS_o_ai
4542 vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
4543   return vec_perm(__a, __b,
4544                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4545                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4546                                          0x14, 0x15, 0x16, 0x17));
4547 }
4548 
4549 static __inline__ vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a,
4550                                                           vector bool int __b) {
4551   return vec_perm(__a, __b,
4552                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4553                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4554                                          0x14, 0x15, 0x16, 0x17));
4555 }
4556 
4557 static __inline__ vector float __ATTRS_o_ai vec_mergeh(vector float __a,
4558                                                        vector float __b) {
4559   return vec_perm(__a, __b,
4560                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4561                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4562                                          0x14, 0x15, 0x16, 0x17));
4563 }
4564 
4565 #ifdef __VSX__
4566 static __inline__ vector signed long long __ATTRS_o_ai
4567 vec_mergeh(vector signed long long __a, vector signed long long __b) {
4568   return vec_perm(__a, __b,
4569                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4570                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4571                                          0x14, 0x15, 0x16, 0x17));
4572 }
4573 
4574 static __inline__ vector signed long long __ATTRS_o_ai
4575 vec_mergeh(vector signed long long __a, vector bool long long __b) {
4576   return vec_perm(__a, (vector signed long long)__b,
4577                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4578                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4579                                          0x14, 0x15, 0x16, 0x17));
4580 }
4581 
4582 static __inline__ vector signed long long __ATTRS_o_ai
4583 vec_mergeh(vector bool long long __a, vector signed long long __b) {
4584   return vec_perm((vector signed long long)__a, __b,
4585                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4586                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4587                                          0x14, 0x15, 0x16, 0x17));
4588 }
4589 
4590 static __inline__ vector unsigned long long __ATTRS_o_ai
4591 vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
4592   return vec_perm(__a, __b,
4593                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4594                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4595                                          0x14, 0x15, 0x16, 0x17));
4596 }
4597 
4598 static __inline__ vector unsigned long long __ATTRS_o_ai
4599 vec_mergeh(vector unsigned long long __a, vector bool long long __b) {
4600   return vec_perm(__a, (vector unsigned long long)__b,
4601                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4602                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4603                                          0x14, 0x15, 0x16, 0x17));
4604 }
4605 
4606 static __inline__ vector unsigned long long __ATTRS_o_ai
4607 vec_mergeh(vector bool long long __a, vector unsigned long long __b) {
4608   return vec_perm((vector unsigned long long)__a, __b,
4609                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4610                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4611                                          0x14, 0x15, 0x16, 0x17));
4612 }
4613 
4614 static __inline__ vector bool long long __ATTRS_o_ai
4615 vec_mergeh(vector bool long long __a, vector bool long long __b) {
4616   return vec_perm(__a, __b,
4617                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4618                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4619                                          0x14, 0x15, 0x16, 0x17));
4620 }
4621 
4622 static __inline__ vector double __ATTRS_o_ai vec_mergeh(vector double __a,
4623                                                         vector double __b) {
4624   return vec_perm(__a, __b,
4625                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4626                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4627                                          0x14, 0x15, 0x16, 0x17));
4628 }
4629 static __inline__ vector double __ATTRS_o_ai
4630 vec_mergeh(vector double __a, vector bool long long __b) {
4631   return vec_perm(__a, (vector double)__b,
4632                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4633                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4634                                          0x14, 0x15, 0x16, 0x17));
4635 }
4636 static __inline__ vector double __ATTRS_o_ai
4637 vec_mergeh(vector bool long long __a, vector double __b) {
4638   return vec_perm((vector double)__a, __b,
4639                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4640                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4641                                          0x14, 0x15, 0x16, 0x17));
4642 }
4643 #endif
4644 
4645 /* vec_vmrghb */
4646 
4647 #define __builtin_altivec_vmrghb vec_vmrghb
4648 
4649 static __inline__ vector signed char __ATTRS_o_ai
4650 vec_vmrghb(vector signed char __a, vector signed char __b) {
4651   return vec_perm(__a, __b,
4652                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4653                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4654                                          0x06, 0x16, 0x07, 0x17));
4655 }
4656 
4657 static __inline__ vector unsigned char __ATTRS_o_ai
4658 vec_vmrghb(vector unsigned char __a, vector unsigned char __b) {
4659   return vec_perm(__a, __b,
4660                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4661                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4662                                          0x06, 0x16, 0x07, 0x17));
4663 }
4664 
4665 static __inline__ vector bool char __ATTRS_o_ai
4666 vec_vmrghb(vector bool char __a, vector bool char __b) {
4667   return vec_perm(__a, __b,
4668                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4669                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4670                                          0x06, 0x16, 0x07, 0x17));
4671 }
4672 
4673 /* vec_vmrghh */
4674 
4675 #define __builtin_altivec_vmrghh vec_vmrghh
4676 
4677 static __inline__ vector short __ATTRS_o_ai vec_vmrghh(vector short __a,
4678                                                        vector short __b) {
4679   return vec_perm(__a, __b,
4680                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4681                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4682                                          0x06, 0x07, 0x16, 0x17));
4683 }
4684 
4685 static __inline__ vector unsigned short __ATTRS_o_ai
4686 vec_vmrghh(vector unsigned short __a, vector unsigned short __b) {
4687   return vec_perm(__a, __b,
4688                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4689                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4690                                          0x06, 0x07, 0x16, 0x17));
4691 }
4692 
4693 static __inline__ vector bool short __ATTRS_o_ai
4694 vec_vmrghh(vector bool short __a, vector bool short __b) {
4695   return vec_perm(__a, __b,
4696                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4697                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4698                                          0x06, 0x07, 0x16, 0x17));
4699 }
4700 
4701 static __inline__ vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a,
4702                                                        vector pixel __b) {
4703   return vec_perm(__a, __b,
4704                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4705                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4706                                          0x06, 0x07, 0x16, 0x17));
4707 }
4708 
4709 /* vec_vmrghw */
4710 
4711 #define __builtin_altivec_vmrghw vec_vmrghw
4712 
4713 static __inline__ vector int __ATTRS_o_ai vec_vmrghw(vector int __a,
4714                                                      vector int __b) {
4715   return vec_perm(__a, __b,
4716                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4717                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4718                                          0x14, 0x15, 0x16, 0x17));
4719 }
4720 
4721 static __inline__ vector unsigned int __ATTRS_o_ai
4722 vec_vmrghw(vector unsigned int __a, vector unsigned int __b) {
4723   return vec_perm(__a, __b,
4724                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4725                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4726                                          0x14, 0x15, 0x16, 0x17));
4727 }
4728 
4729 static __inline__ vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a,
4730                                                           vector bool int __b) {
4731   return vec_perm(__a, __b,
4732                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4733                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4734                                          0x14, 0x15, 0x16, 0x17));
4735 }
4736 
4737 static __inline__ vector float __ATTRS_o_ai vec_vmrghw(vector float __a,
4738                                                        vector float __b) {
4739   return vec_perm(__a, __b,
4740                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4741                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4742                                          0x14, 0x15, 0x16, 0x17));
4743 }
4744 
4745 /* vec_mergel */
4746 
4747 static __inline__ vector signed char __ATTRS_o_ai
4748 vec_mergel(vector signed char __a, vector signed char __b) {
4749   return vec_perm(__a, __b,
4750                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4751                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4752                                          0x0E, 0x1E, 0x0F, 0x1F));
4753 }
4754 
4755 static __inline__ vector unsigned char __ATTRS_o_ai
4756 vec_mergel(vector unsigned char __a, vector unsigned char __b) {
4757   return vec_perm(__a, __b,
4758                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4759                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4760                                          0x0E, 0x1E, 0x0F, 0x1F));
4761 }
4762 
4763 static __inline__ vector bool char __ATTRS_o_ai
4764 vec_mergel(vector bool char __a, vector bool char __b) {
4765   return vec_perm(__a, __b,
4766                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4767                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4768                                          0x0E, 0x1E, 0x0F, 0x1F));
4769 }
4770 
4771 static __inline__ vector short __ATTRS_o_ai vec_mergel(vector short __a,
4772                                                        vector short __b) {
4773   return vec_perm(__a, __b,
4774                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4775                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4776                                          0x0E, 0x0F, 0x1E, 0x1F));
4777 }
4778 
4779 static __inline__ vector unsigned short __ATTRS_o_ai
4780 vec_mergel(vector unsigned short __a, vector unsigned short __b) {
4781   return vec_perm(__a, __b,
4782                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4783                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4784                                          0x0E, 0x0F, 0x1E, 0x1F));
4785 }
4786 
4787 static __inline__ vector bool short __ATTRS_o_ai
4788 vec_mergel(vector bool short __a, vector bool short __b) {
4789   return vec_perm(__a, __b,
4790                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4791                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4792                                          0x0E, 0x0F, 0x1E, 0x1F));
4793 }
4794 
4795 static __inline__ vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a,
4796                                                        vector pixel __b) {
4797   return vec_perm(__a, __b,
4798                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4799                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4800                                          0x0E, 0x0F, 0x1E, 0x1F));
4801 }
4802 
4803 static __inline__ vector int __ATTRS_o_ai vec_mergel(vector int __a,
4804                                                      vector int __b) {
4805   return vec_perm(__a, __b,
4806                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4807                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4808                                          0x1C, 0x1D, 0x1E, 0x1F));
4809 }
4810 
4811 static __inline__ vector unsigned int __ATTRS_o_ai
4812 vec_mergel(vector unsigned int __a, vector unsigned int __b) {
4813   return vec_perm(__a, __b,
4814                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4815                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4816                                          0x1C, 0x1D, 0x1E, 0x1F));
4817 }
4818 
4819 static __inline__ vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a,
4820                                                           vector bool int __b) {
4821   return vec_perm(__a, __b,
4822                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4823                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4824                                          0x1C, 0x1D, 0x1E, 0x1F));
4825 }
4826 
4827 static __inline__ vector float __ATTRS_o_ai vec_mergel(vector float __a,
4828                                                        vector float __b) {
4829   return vec_perm(__a, __b,
4830                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4831                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4832                                          0x1C, 0x1D, 0x1E, 0x1F));
4833 }
4834 
4835 #ifdef __VSX__
4836 static __inline__ vector signed long long __ATTRS_o_ai
4837 vec_mergel(vector signed long long __a, vector signed long long __b) {
4838   return vec_perm(__a, __b,
4839                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4840                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4841                                          0x1C, 0x1D, 0x1E, 0x1F));
4842 }
4843 static __inline__ vector signed long long __ATTRS_o_ai
4844 vec_mergel(vector signed long long __a, vector bool long long __b) {
4845   return vec_perm(__a, (vector signed long long)__b,
4846                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4847                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4848                                          0x1C, 0x1D, 0x1E, 0x1F));
4849 }
4850 static __inline__ vector signed long long __ATTRS_o_ai
4851 vec_mergel(vector bool long long __a, vector signed long long __b) {
4852   return vec_perm((vector signed long long)__a, __b,
4853                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4854                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4855                                          0x1C, 0x1D, 0x1E, 0x1F));
4856 }
4857 static __inline__ vector unsigned long long __ATTRS_o_ai
4858 vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
4859   return vec_perm(__a, __b,
4860                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4861                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4862                                          0x1C, 0x1D, 0x1E, 0x1F));
4863 }
4864 static __inline__ vector unsigned long long __ATTRS_o_ai
4865 vec_mergel(vector unsigned long long __a, vector bool long long __b) {
4866   return vec_perm(__a, (vector unsigned long long)__b,
4867                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4868                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4869                                          0x1C, 0x1D, 0x1E, 0x1F));
4870 }
4871 static __inline__ vector unsigned long long __ATTRS_o_ai
4872 vec_mergel(vector bool long long __a, vector unsigned long long __b) {
4873   return vec_perm((vector unsigned long long)__a, __b,
4874                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4875                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4876                                          0x1C, 0x1D, 0x1E, 0x1F));
4877 }
4878 static __inline__ vector bool long long __ATTRS_o_ai
4879 vec_mergel(vector bool long long __a, vector bool long long __b) {
4880   return vec_perm(__a, __b,
4881                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4882                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4883                                          0x1C, 0x1D, 0x1E, 0x1F));
4884 }
4885 static __inline__ vector double __ATTRS_o_ai vec_mergel(vector double __a,
4886                                                         vector double __b) {
4887   return vec_perm(__a, __b,
4888                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4889                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4890                                          0x1C, 0x1D, 0x1E, 0x1F));
4891 }
4892 static __inline__ vector double __ATTRS_o_ai
4893 vec_mergel(vector double __a, vector bool long long __b) {
4894   return vec_perm(__a, (vector double)__b,
4895                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4896                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4897                                          0x1C, 0x1D, 0x1E, 0x1F));
4898 }
4899 static __inline__ vector double __ATTRS_o_ai
4900 vec_mergel(vector bool long long __a, vector double __b) {
4901   return vec_perm((vector double)__a, __b,
4902                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4903                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4904                                          0x1C, 0x1D, 0x1E, 0x1F));
4905 }
4906 #endif
4907 
4908 /* vec_vmrglb */
4909 
4910 #define __builtin_altivec_vmrglb vec_vmrglb
4911 
4912 static __inline__ vector signed char __ATTRS_o_ai
4913 vec_vmrglb(vector signed char __a, vector signed char __b) {
4914   return vec_perm(__a, __b,
4915                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4916                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4917                                          0x0E, 0x1E, 0x0F, 0x1F));
4918 }
4919 
4920 static __inline__ vector unsigned char __ATTRS_o_ai
4921 vec_vmrglb(vector unsigned char __a, vector unsigned char __b) {
4922   return vec_perm(__a, __b,
4923                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4924                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4925                                          0x0E, 0x1E, 0x0F, 0x1F));
4926 }
4927 
4928 static __inline__ vector bool char __ATTRS_o_ai
4929 vec_vmrglb(vector bool char __a, vector bool char __b) {
4930   return vec_perm(__a, __b,
4931                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4932                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4933                                          0x0E, 0x1E, 0x0F, 0x1F));
4934 }
4935 
4936 /* vec_vmrglh */
4937 
4938 #define __builtin_altivec_vmrglh vec_vmrglh
4939 
4940 static __inline__ vector short __ATTRS_o_ai vec_vmrglh(vector short __a,
4941                                                        vector short __b) {
4942   return vec_perm(__a, __b,
4943                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4944                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4945                                          0x0E, 0x0F, 0x1E, 0x1F));
4946 }
4947 
4948 static __inline__ vector unsigned short __ATTRS_o_ai
4949 vec_vmrglh(vector unsigned short __a, vector unsigned short __b) {
4950   return vec_perm(__a, __b,
4951                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4952                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4953                                          0x0E, 0x0F, 0x1E, 0x1F));
4954 }
4955 
4956 static __inline__ vector bool short __ATTRS_o_ai
4957 vec_vmrglh(vector bool short __a, vector bool short __b) {
4958   return vec_perm(__a, __b,
4959                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4960                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4961                                          0x0E, 0x0F, 0x1E, 0x1F));
4962 }
4963 
4964 static __inline__ vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a,
4965                                                        vector pixel __b) {
4966   return vec_perm(__a, __b,
4967                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4968                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4969                                          0x0E, 0x0F, 0x1E, 0x1F));
4970 }
4971 
4972 /* vec_vmrglw */
4973 
4974 #define __builtin_altivec_vmrglw vec_vmrglw
4975 
4976 static __inline__ vector int __ATTRS_o_ai vec_vmrglw(vector int __a,
4977                                                      vector int __b) {
4978   return vec_perm(__a, __b,
4979                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4980                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4981                                          0x1C, 0x1D, 0x1E, 0x1F));
4982 }
4983 
4984 static __inline__ vector unsigned int __ATTRS_o_ai
4985 vec_vmrglw(vector unsigned int __a, vector unsigned int __b) {
4986   return vec_perm(__a, __b,
4987                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4988                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4989                                          0x1C, 0x1D, 0x1E, 0x1F));
4990 }
4991 
4992 static __inline__ vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a,
4993                                                           vector bool int __b) {
4994   return vec_perm(__a, __b,
4995                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4996                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4997                                          0x1C, 0x1D, 0x1E, 0x1F));
4998 }
4999 
5000 static __inline__ vector float __ATTRS_o_ai vec_vmrglw(vector float __a,
5001                                                        vector float __b) {
5002   return vec_perm(__a, __b,
5003                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5004                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5005                                          0x1C, 0x1D, 0x1E, 0x1F));
5006 }
5007 
5008 #ifdef __POWER8_VECTOR__
5009 /* vec_mergee */
5010 
5011 static __inline__ vector bool int __ATTRS_o_ai vec_mergee(vector bool int __a,
5012                                                           vector bool int __b) {
5013   return vec_perm(__a, __b,
5014                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5015                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5016                                          0x18, 0x19, 0x1A, 0x1B));
5017 }
5018 
5019 static __inline__ vector signed int __ATTRS_o_ai
5020 vec_mergee(vector signed int __a, vector signed int __b) {
5021   return vec_perm(__a, __b,
5022                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5023                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5024                                          0x18, 0x19, 0x1A, 0x1B));
5025 }
5026 
5027 static __inline__ vector unsigned int __ATTRS_o_ai
5028 vec_mergee(vector unsigned int __a, vector unsigned int __b) {
5029   return vec_perm(__a, __b,
5030                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5031                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5032                                          0x18, 0x19, 0x1A, 0x1B));
5033 }
5034 
5035 static __inline__ vector bool long long __ATTRS_o_ai
5036 vec_mergee(vector bool long long __a, vector bool long long __b) {
5037   return vec_mergeh(__a, __b);
5038 }
5039 
5040 static __inline__ vector signed long long __ATTRS_o_ai
5041 vec_mergee(vector signed long long __a, vector signed long long __b) {
5042   return vec_mergeh(__a, __b);
5043 }
5044 
5045 static __inline__ vector unsigned long long __ATTRS_o_ai
5046 vec_mergee(vector unsigned long long __a, vector unsigned long long __b) {
5047   return vec_mergeh(__a, __b);
5048 }
5049 
5050 static __inline__ vector float __ATTRS_o_ai
5051 vec_mergee(vector float __a, vector float __b) {
5052   return vec_perm(__a, __b,
5053                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5054                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5055                                          0x18, 0x19, 0x1A, 0x1B));
5056 }
5057 
5058 static __inline__ vector double __ATTRS_o_ai
5059 vec_mergee(vector double __a, vector double __b) {
5060   return vec_mergeh(__a, __b);
5061 }
5062 
5063 /* vec_mergeo */
5064 
5065 static __inline__ vector bool int __ATTRS_o_ai vec_mergeo(vector bool int __a,
5066                                                           vector bool int __b) {
5067   return vec_perm(__a, __b,
5068                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5069                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5070                                          0x1C, 0x1D, 0x1E, 0x1F));
5071 }
5072 
5073 static __inline__ vector signed int __ATTRS_o_ai
5074 vec_mergeo(vector signed int __a, vector signed int __b) {
5075   return vec_perm(__a, __b,
5076                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5077                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5078                                          0x1C, 0x1D, 0x1E, 0x1F));
5079 }
5080 
5081 static __inline__ vector unsigned int __ATTRS_o_ai
5082 vec_mergeo(vector unsigned int __a, vector unsigned int __b) {
5083   return vec_perm(__a, __b,
5084                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5085                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5086                                          0x1C, 0x1D, 0x1E, 0x1F));
5087 }
5088 
5089 static __inline__ vector bool long long __ATTRS_o_ai
5090 vec_mergeo(vector bool long long __a, vector bool long long __b) {
5091   return vec_mergel(__a, __b);
5092 }
5093 
5094 static __inline__ vector signed long long __ATTRS_o_ai
5095 vec_mergeo(vector signed long long __a, vector signed long long __b) {
5096   return vec_mergel(__a, __b);
5097 }
5098 
5099 static __inline__ vector unsigned long long __ATTRS_o_ai
5100 vec_mergeo(vector unsigned long long __a, vector unsigned long long __b) {
5101   return vec_mergel(__a, __b);
5102 }
5103 
5104 static __inline__ vector float __ATTRS_o_ai
5105 vec_mergeo(vector float __a, vector float __b) {
5106   return vec_perm(__a, __b,
5107                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5108                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5109                                          0x1C, 0x1D, 0x1E, 0x1F));
5110 }
5111 
5112 static __inline__ vector double __ATTRS_o_ai
5113 vec_mergeo(vector double __a, vector double __b) {
5114   return vec_mergel(__a, __b);
5115 }
5116 
5117 #endif
5118 
5119 /* vec_mfvscr */
5120 
5121 static __inline__ vector unsigned short __attribute__((__always_inline__))
5122 vec_mfvscr(void) {
5123   return __builtin_altivec_mfvscr();
5124 }
5125 
5126 /* vec_min */
5127 
5128 static __inline__ vector signed char __ATTRS_o_ai
5129 vec_min(vector signed char __a, vector signed char __b) {
5130   return __builtin_altivec_vminsb(__a, __b);
5131 }
5132 
5133 static __inline__ vector signed char __ATTRS_o_ai
5134 vec_min(vector bool char __a, vector signed char __b) {
5135   return __builtin_altivec_vminsb((vector signed char)__a, __b);
5136 }
5137 
5138 static __inline__ vector signed char __ATTRS_o_ai
5139 vec_min(vector signed char __a, vector bool char __b) {
5140   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
5141 }
5142 
5143 static __inline__ vector unsigned char __ATTRS_o_ai
5144 vec_min(vector unsigned char __a, vector unsigned char __b) {
5145   return __builtin_altivec_vminub(__a, __b);
5146 }
5147 
5148 static __inline__ vector unsigned char __ATTRS_o_ai
5149 vec_min(vector bool char __a, vector unsigned char __b) {
5150   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
5151 }
5152 
5153 static __inline__ vector unsigned char __ATTRS_o_ai
5154 vec_min(vector unsigned char __a, vector bool char __b) {
5155   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
5156 }
5157 
5158 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
5159                                                     vector short __b) {
5160   return __builtin_altivec_vminsh(__a, __b);
5161 }
5162 
5163 static __inline__ vector short __ATTRS_o_ai vec_min(vector bool short __a,
5164                                                     vector short __b) {
5165   return __builtin_altivec_vminsh((vector short)__a, __b);
5166 }
5167 
5168 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
5169                                                     vector bool short __b) {
5170   return __builtin_altivec_vminsh(__a, (vector short)__b);
5171 }
5172 
5173 static __inline__ vector unsigned short __ATTRS_o_ai
5174 vec_min(vector unsigned short __a, vector unsigned short __b) {
5175   return __builtin_altivec_vminuh(__a, __b);
5176 }
5177 
5178 static __inline__ vector unsigned short __ATTRS_o_ai
5179 vec_min(vector bool short __a, vector unsigned short __b) {
5180   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
5181 }
5182 
5183 static __inline__ vector unsigned short __ATTRS_o_ai
5184 vec_min(vector unsigned short __a, vector bool short __b) {
5185   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
5186 }
5187 
5188 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
5189                                                   vector int __b) {
5190   return __builtin_altivec_vminsw(__a, __b);
5191 }
5192 
5193 static __inline__ vector int __ATTRS_o_ai vec_min(vector bool int __a,
5194                                                   vector int __b) {
5195   return __builtin_altivec_vminsw((vector int)__a, __b);
5196 }
5197 
5198 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
5199                                                   vector bool int __b) {
5200   return __builtin_altivec_vminsw(__a, (vector int)__b);
5201 }
5202 
5203 static __inline__ vector unsigned int __ATTRS_o_ai
5204 vec_min(vector unsigned int __a, vector unsigned int __b) {
5205   return __builtin_altivec_vminuw(__a, __b);
5206 }
5207 
5208 static __inline__ vector unsigned int __ATTRS_o_ai
5209 vec_min(vector bool int __a, vector unsigned int __b) {
5210   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
5211 }
5212 
5213 static __inline__ vector unsigned int __ATTRS_o_ai
5214 vec_min(vector unsigned int __a, vector bool int __b) {
5215   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
5216 }
5217 
5218 #ifdef __POWER8_VECTOR__
5219 static __inline__ vector signed long long __ATTRS_o_ai
5220 vec_min(vector signed long long __a, vector signed long long __b) {
5221   return __builtin_altivec_vminsd(__a, __b);
5222 }
5223 
5224 static __inline__ vector signed long long __ATTRS_o_ai
5225 vec_min(vector bool long long __a, vector signed long long __b) {
5226   return __builtin_altivec_vminsd((vector signed long long)__a, __b);
5227 }
5228 
5229 static __inline__ vector signed long long __ATTRS_o_ai
5230 vec_min(vector signed long long __a, vector bool long long __b) {
5231   return __builtin_altivec_vminsd(__a, (vector signed long long)__b);
5232 }
5233 
5234 static __inline__ vector unsigned long long __ATTRS_o_ai
5235 vec_min(vector unsigned long long __a, vector unsigned long long __b) {
5236   return __builtin_altivec_vminud(__a, __b);
5237 }
5238 
5239 static __inline__ vector unsigned long long __ATTRS_o_ai
5240 vec_min(vector bool long long __a, vector unsigned long long __b) {
5241   return __builtin_altivec_vminud((vector unsigned long long)__a, __b);
5242 }
5243 
5244 static __inline__ vector unsigned long long __ATTRS_o_ai
5245 vec_min(vector unsigned long long __a, vector bool long long __b) {
5246   return __builtin_altivec_vminud(__a, (vector unsigned long long)__b);
5247 }
5248 #endif
5249 
5250 static __inline__ vector float __ATTRS_o_ai vec_min(vector float __a,
5251                                                     vector float __b) {
5252 #ifdef __VSX__
5253   return __builtin_vsx_xvminsp(__a, __b);
5254 #else
5255   return __builtin_altivec_vminfp(__a, __b);
5256 #endif
5257 }
5258 
5259 #ifdef __VSX__
5260 static __inline__ vector double __ATTRS_o_ai vec_min(vector double __a,
5261                                                      vector double __b) {
5262   return __builtin_vsx_xvmindp(__a, __b);
5263 }
5264 #endif
5265 
5266 /* vec_vminsb */
5267 
5268 static __inline__ vector signed char __ATTRS_o_ai
5269 vec_vminsb(vector signed char __a, vector signed char __b) {
5270   return __builtin_altivec_vminsb(__a, __b);
5271 }
5272 
5273 static __inline__ vector signed char __ATTRS_o_ai
5274 vec_vminsb(vector bool char __a, vector signed char __b) {
5275   return __builtin_altivec_vminsb((vector signed char)__a, __b);
5276 }
5277 
5278 static __inline__ vector signed char __ATTRS_o_ai
5279 vec_vminsb(vector signed char __a, vector bool char __b) {
5280   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
5281 }
5282 
5283 /* vec_vminub */
5284 
5285 static __inline__ vector unsigned char __ATTRS_o_ai
5286 vec_vminub(vector unsigned char __a, vector unsigned char __b) {
5287   return __builtin_altivec_vminub(__a, __b);
5288 }
5289 
5290 static __inline__ vector unsigned char __ATTRS_o_ai
5291 vec_vminub(vector bool char __a, vector unsigned char __b) {
5292   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
5293 }
5294 
5295 static __inline__ vector unsigned char __ATTRS_o_ai
5296 vec_vminub(vector unsigned char __a, vector bool char __b) {
5297   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
5298 }
5299 
5300 /* vec_vminsh */
5301 
5302 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
5303                                                        vector short __b) {
5304   return __builtin_altivec_vminsh(__a, __b);
5305 }
5306 
5307 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector bool short __a,
5308                                                        vector short __b) {
5309   return __builtin_altivec_vminsh((vector short)__a, __b);
5310 }
5311 
5312 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
5313                                                        vector bool short __b) {
5314   return __builtin_altivec_vminsh(__a, (vector short)__b);
5315 }
5316 
5317 /* vec_vminuh */
5318 
5319 static __inline__ vector unsigned short __ATTRS_o_ai
5320 vec_vminuh(vector unsigned short __a, vector unsigned short __b) {
5321   return __builtin_altivec_vminuh(__a, __b);
5322 }
5323 
5324 static __inline__ vector unsigned short __ATTRS_o_ai
5325 vec_vminuh(vector bool short __a, vector unsigned short __b) {
5326   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
5327 }
5328 
5329 static __inline__ vector unsigned short __ATTRS_o_ai
5330 vec_vminuh(vector unsigned short __a, vector bool short __b) {
5331   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
5332 }
5333 
5334 /* vec_vminsw */
5335 
5336 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
5337                                                      vector int __b) {
5338   return __builtin_altivec_vminsw(__a, __b);
5339 }
5340 
5341 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector bool int __a,
5342                                                      vector int __b) {
5343   return __builtin_altivec_vminsw((vector int)__a, __b);
5344 }
5345 
5346 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
5347                                                      vector bool int __b) {
5348   return __builtin_altivec_vminsw(__a, (vector int)__b);
5349 }
5350 
5351 /* vec_vminuw */
5352 
5353 static __inline__ vector unsigned int __ATTRS_o_ai
5354 vec_vminuw(vector unsigned int __a, vector unsigned int __b) {
5355   return __builtin_altivec_vminuw(__a, __b);
5356 }
5357 
5358 static __inline__ vector unsigned int __ATTRS_o_ai
5359 vec_vminuw(vector bool int __a, vector unsigned int __b) {
5360   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
5361 }
5362 
5363 static __inline__ vector unsigned int __ATTRS_o_ai
5364 vec_vminuw(vector unsigned int __a, vector bool int __b) {
5365   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
5366 }
5367 
5368 /* vec_vminfp */
5369 
5370 static __inline__ vector float __attribute__((__always_inline__))
5371 vec_vminfp(vector float __a, vector float __b) {
5372 #ifdef __VSX__
5373   return __builtin_vsx_xvminsp(__a, __b);
5374 #else
5375   return __builtin_altivec_vminfp(__a, __b);
5376 #endif
5377 }
5378 
5379 /* vec_mladd */
5380 
5381 #define __builtin_altivec_vmladduhm vec_mladd
5382 
5383 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector short __a,
5384                                                       vector short __b,
5385                                                       vector short __c) {
5386   return __a * __b + __c;
5387 }
5388 
5389 static __inline__ vector short __ATTRS_o_ai vec_mladd(
5390     vector short __a, vector unsigned short __b, vector unsigned short __c) {
5391   return __a * (vector short)__b + (vector short)__c;
5392 }
5393 
5394 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
5395                                                       vector short __b,
5396                                                       vector short __c) {
5397   return (vector short)__a * __b + __c;
5398 }
5399 
5400 static __inline__ vector unsigned short __ATTRS_o_ai
5401 vec_mladd(vector unsigned short __a, vector unsigned short __b,
5402           vector unsigned short __c) {
5403   return __a * __b + __c;
5404 }
5405 
5406 /* vec_vmladduhm */
5407 
5408 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
5409                                                           vector short __b,
5410                                                           vector short __c) {
5411   return __a * __b + __c;
5412 }
5413 
5414 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(
5415     vector short __a, vector unsigned short __b, vector unsigned short __c) {
5416   return __a * (vector short)__b + (vector short)__c;
5417 }
5418 
5419 static __inline__ vector short __ATTRS_o_ai
5420 vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) {
5421   return (vector short)__a * __b + __c;
5422 }
5423 
5424 static __inline__ vector unsigned short __ATTRS_o_ai
5425 vec_vmladduhm(vector unsigned short __a, vector unsigned short __b,
5426               vector unsigned short __c) {
5427   return __a * __b + __c;
5428 }
5429 
5430 /* vec_mradds */
5431 
5432 static __inline__ vector short __attribute__((__always_inline__))
5433 vec_mradds(vector short __a, vector short __b, vector short __c) {
5434   return __builtin_altivec_vmhraddshs(__a, __b, __c);
5435 }
5436 
5437 /* vec_vmhraddshs */
5438 
5439 static __inline__ vector short __attribute__((__always_inline__))
5440 vec_vmhraddshs(vector short __a, vector short __b, vector short __c) {
5441   return __builtin_altivec_vmhraddshs(__a, __b, __c);
5442 }
5443 
5444 /* vec_msum */
5445 
5446 static __inline__ vector int __ATTRS_o_ai vec_msum(vector signed char __a,
5447                                                    vector unsigned char __b,
5448                                                    vector int __c) {
5449   return __builtin_altivec_vmsummbm(__a, __b, __c);
5450 }
5451 
5452 static __inline__ vector unsigned int __ATTRS_o_ai
5453 vec_msum(vector unsigned char __a, vector unsigned char __b,
5454          vector unsigned int __c) {
5455   return __builtin_altivec_vmsumubm(__a, __b, __c);
5456 }
5457 
5458 static __inline__ vector int __ATTRS_o_ai vec_msum(vector short __a,
5459                                                    vector short __b,
5460                                                    vector int __c) {
5461   return __builtin_altivec_vmsumshm(__a, __b, __c);
5462 }
5463 
5464 static __inline__ vector unsigned int __ATTRS_o_ai
5465 vec_msum(vector unsigned short __a, vector unsigned short __b,
5466          vector unsigned int __c) {
5467   return __builtin_altivec_vmsumuhm(__a, __b, __c);
5468 }
5469 
5470 /* vec_vmsummbm */
5471 
5472 static __inline__ vector int __attribute__((__always_inline__))
5473 vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) {
5474   return __builtin_altivec_vmsummbm(__a, __b, __c);
5475 }
5476 
5477 /* vec_vmsumubm */
5478 
5479 static __inline__ vector unsigned int __attribute__((__always_inline__))
5480 vec_vmsumubm(vector unsigned char __a, vector unsigned char __b,
5481              vector unsigned int __c) {
5482   return __builtin_altivec_vmsumubm(__a, __b, __c);
5483 }
5484 
5485 /* vec_vmsumshm */
5486 
5487 static __inline__ vector int __attribute__((__always_inline__))
5488 vec_vmsumshm(vector short __a, vector short __b, vector int __c) {
5489   return __builtin_altivec_vmsumshm(__a, __b, __c);
5490 }
5491 
5492 /* vec_vmsumuhm */
5493 
5494 static __inline__ vector unsigned int __attribute__((__always_inline__))
5495 vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b,
5496              vector unsigned int __c) {
5497   return __builtin_altivec_vmsumuhm(__a, __b, __c);
5498 }
5499 
5500 /* vec_msums */
5501 
5502 static __inline__ vector int __ATTRS_o_ai vec_msums(vector short __a,
5503                                                     vector short __b,
5504                                                     vector int __c) {
5505   return __builtin_altivec_vmsumshs(__a, __b, __c);
5506 }
5507 
5508 static __inline__ vector unsigned int __ATTRS_o_ai
5509 vec_msums(vector unsigned short __a, vector unsigned short __b,
5510           vector unsigned int __c) {
5511   return __builtin_altivec_vmsumuhs(__a, __b, __c);
5512 }
5513 
5514 /* vec_vmsumshs */
5515 
5516 static __inline__ vector int __attribute__((__always_inline__))
5517 vec_vmsumshs(vector short __a, vector short __b, vector int __c) {
5518   return __builtin_altivec_vmsumshs(__a, __b, __c);
5519 }
5520 
5521 /* vec_vmsumuhs */
5522 
5523 static __inline__ vector unsigned int __attribute__((__always_inline__))
5524 vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b,
5525              vector unsigned int __c) {
5526   return __builtin_altivec_vmsumuhs(__a, __b, __c);
5527 }
5528 
5529 /* vec_mtvscr */
5530 
5531 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector signed char __a) {
5532   __builtin_altivec_mtvscr((vector int)__a);
5533 }
5534 
5535 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) {
5536   __builtin_altivec_mtvscr((vector int)__a);
5537 }
5538 
5539 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool char __a) {
5540   __builtin_altivec_mtvscr((vector int)__a);
5541 }
5542 
5543 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector short __a) {
5544   __builtin_altivec_mtvscr((vector int)__a);
5545 }
5546 
5547 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) {
5548   __builtin_altivec_mtvscr((vector int)__a);
5549 }
5550 
5551 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool short __a) {
5552   __builtin_altivec_mtvscr((vector int)__a);
5553 }
5554 
5555 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector pixel __a) {
5556   __builtin_altivec_mtvscr((vector int)__a);
5557 }
5558 
5559 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector int __a) {
5560   __builtin_altivec_mtvscr((vector int)__a);
5561 }
5562 
5563 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) {
5564   __builtin_altivec_mtvscr((vector int)__a);
5565 }
5566 
5567 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool int __a) {
5568   __builtin_altivec_mtvscr((vector int)__a);
5569 }
5570 
5571 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector float __a) {
5572   __builtin_altivec_mtvscr((vector int)__a);
5573 }
5574 
5575 /* vec_mul */
5576 
5577 /* Integer vector multiplication will involve multiplication of the odd/even
5578    elements separately, then truncating the results and moving to the
5579    result vector.
5580 */
5581 static __inline__ vector signed char __ATTRS_o_ai
5582 vec_mul(vector signed char __a, vector signed char __b) {
5583   return __a * __b;
5584 }
5585 
5586 static __inline__ vector unsigned char __ATTRS_o_ai
5587 vec_mul(vector unsigned char __a, vector unsigned char __b) {
5588   return __a * __b;
5589 }
5590 
5591 static __inline__ vector signed short __ATTRS_o_ai
5592 vec_mul(vector signed short __a, vector signed short __b) {
5593   return __a * __b;
5594 }
5595 
5596 static __inline__ vector unsigned short __ATTRS_o_ai
5597 vec_mul(vector unsigned short __a, vector unsigned short __b) {
5598   return __a * __b;
5599 }
5600 
5601 static __inline__ vector signed int __ATTRS_o_ai
5602 vec_mul(vector signed int __a, vector signed int __b) {
5603   return __a * __b;
5604 }
5605 
5606 static __inline__ vector unsigned int __ATTRS_o_ai
5607 vec_mul(vector unsigned int __a, vector unsigned int __b) {
5608   return __a * __b;
5609 }
5610 
5611 #ifdef __VSX__
5612 static __inline__ vector signed long long __ATTRS_o_ai
5613 vec_mul(vector signed long long __a, vector signed long long __b) {
5614   return __a * __b;
5615 }
5616 
5617 static __inline__ vector unsigned long long __ATTRS_o_ai
5618 vec_mul(vector unsigned long long __a, vector unsigned long long __b) {
5619   return __a * __b;
5620 }
5621 #endif
5622 
5623 static __inline__ vector float __ATTRS_o_ai vec_mul(vector float __a,
5624                                                     vector float __b) {
5625   return __a * __b;
5626 }
5627 
5628 #ifdef __VSX__
5629 static __inline__ vector double __ATTRS_o_ai vec_mul(vector double __a,
5630                                                      vector double __b) {
5631   return __a * __b;
5632 }
5633 #endif
5634 
5635 /* The vmulos* and vmules* instructions have a big endian bias, so
5636    we must reverse the meaning of "even" and "odd" for little endian.  */
5637 
5638 /* vec_mule */
5639 
5640 static __inline__ vector short __ATTRS_o_ai vec_mule(vector signed char __a,
5641                                                      vector signed char __b) {
5642 #ifdef __LITTLE_ENDIAN__
5643   return __builtin_altivec_vmulosb(__a, __b);
5644 #else
5645   return __builtin_altivec_vmulesb(__a, __b);
5646 #endif
5647 }
5648 
5649 static __inline__ vector unsigned short __ATTRS_o_ai
5650 vec_mule(vector unsigned char __a, vector unsigned char __b) {
5651 #ifdef __LITTLE_ENDIAN__
5652   return __builtin_altivec_vmuloub(__a, __b);
5653 #else
5654   return __builtin_altivec_vmuleub(__a, __b);
5655 #endif
5656 }
5657 
5658 static __inline__ vector int __ATTRS_o_ai vec_mule(vector short __a,
5659                                                    vector short __b) {
5660 #ifdef __LITTLE_ENDIAN__
5661   return __builtin_altivec_vmulosh(__a, __b);
5662 #else
5663   return __builtin_altivec_vmulesh(__a, __b);
5664 #endif
5665 }
5666 
5667 static __inline__ vector unsigned int __ATTRS_o_ai
5668 vec_mule(vector unsigned short __a, vector unsigned short __b) {
5669 #ifdef __LITTLE_ENDIAN__
5670   return __builtin_altivec_vmulouh(__a, __b);
5671 #else
5672   return __builtin_altivec_vmuleuh(__a, __b);
5673 #endif
5674 }
5675 
5676 #ifdef __POWER8_VECTOR__
5677 static __inline__ vector signed long long __ATTRS_o_ai
5678 vec_mule(vector signed int __a, vector signed int __b) {
5679 #ifdef __LITTLE_ENDIAN__
5680   return __builtin_altivec_vmulosw(__a, __b);
5681 #else
5682   return __builtin_altivec_vmulesw(__a, __b);
5683 #endif
5684 }
5685 
5686 static __inline__ vector unsigned long long __ATTRS_o_ai
5687 vec_mule(vector unsigned int __a, vector unsigned int __b) {
5688 #ifdef __LITTLE_ENDIAN__
5689   return __builtin_altivec_vmulouw(__a, __b);
5690 #else
5691   return __builtin_altivec_vmuleuw(__a, __b);
5692 #endif
5693 }
5694 #endif
5695 
5696 /* vec_vmulesb */
5697 
5698 static __inline__ vector short __attribute__((__always_inline__))
5699 vec_vmulesb(vector signed char __a, vector signed char __b) {
5700 #ifdef __LITTLE_ENDIAN__
5701   return __builtin_altivec_vmulosb(__a, __b);
5702 #else
5703   return __builtin_altivec_vmulesb(__a, __b);
5704 #endif
5705 }
5706 
5707 /* vec_vmuleub */
5708 
5709 static __inline__ vector unsigned short __attribute__((__always_inline__))
5710 vec_vmuleub(vector unsigned char __a, vector unsigned char __b) {
5711 #ifdef __LITTLE_ENDIAN__
5712   return __builtin_altivec_vmuloub(__a, __b);
5713 #else
5714   return __builtin_altivec_vmuleub(__a, __b);
5715 #endif
5716 }
5717 
5718 /* vec_vmulesh */
5719 
5720 static __inline__ vector int __attribute__((__always_inline__))
5721 vec_vmulesh(vector short __a, vector short __b) {
5722 #ifdef __LITTLE_ENDIAN__
5723   return __builtin_altivec_vmulosh(__a, __b);
5724 #else
5725   return __builtin_altivec_vmulesh(__a, __b);
5726 #endif
5727 }
5728 
5729 /* vec_vmuleuh */
5730 
5731 static __inline__ vector unsigned int __attribute__((__always_inline__))
5732 vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) {
5733 #ifdef __LITTLE_ENDIAN__
5734   return __builtin_altivec_vmulouh(__a, __b);
5735 #else
5736   return __builtin_altivec_vmuleuh(__a, __b);
5737 #endif
5738 }
5739 
5740 /* vec_mulo */
5741 
5742 static __inline__ vector short __ATTRS_o_ai vec_mulo(vector signed char __a,
5743                                                      vector signed char __b) {
5744 #ifdef __LITTLE_ENDIAN__
5745   return __builtin_altivec_vmulesb(__a, __b);
5746 #else
5747   return __builtin_altivec_vmulosb(__a, __b);
5748 #endif
5749 }
5750 
5751 static __inline__ vector unsigned short __ATTRS_o_ai
5752 vec_mulo(vector unsigned char __a, vector unsigned char __b) {
5753 #ifdef __LITTLE_ENDIAN__
5754   return __builtin_altivec_vmuleub(__a, __b);
5755 #else
5756   return __builtin_altivec_vmuloub(__a, __b);
5757 #endif
5758 }
5759 
5760 static __inline__ vector int __ATTRS_o_ai vec_mulo(vector short __a,
5761                                                    vector short __b) {
5762 #ifdef __LITTLE_ENDIAN__
5763   return __builtin_altivec_vmulesh(__a, __b);
5764 #else
5765   return __builtin_altivec_vmulosh(__a, __b);
5766 #endif
5767 }
5768 
5769 static __inline__ vector unsigned int __ATTRS_o_ai
5770 vec_mulo(vector unsigned short __a, vector unsigned short __b) {
5771 #ifdef __LITTLE_ENDIAN__
5772   return __builtin_altivec_vmuleuh(__a, __b);
5773 #else
5774   return __builtin_altivec_vmulouh(__a, __b);
5775 #endif
5776 }
5777 
5778 #ifdef __POWER8_VECTOR__
5779 static __inline__ vector signed long long __ATTRS_o_ai
5780 vec_mulo(vector signed int __a, vector signed int __b) {
5781 #ifdef __LITTLE_ENDIAN__
5782   return __builtin_altivec_vmulesw(__a, __b);
5783 #else
5784   return __builtin_altivec_vmulosw(__a, __b);
5785 #endif
5786 }
5787 
5788 static __inline__ vector unsigned long long __ATTRS_o_ai
5789 vec_mulo(vector unsigned int __a, vector unsigned int __b) {
5790 #ifdef __LITTLE_ENDIAN__
5791   return __builtin_altivec_vmuleuw(__a, __b);
5792 #else
5793   return __builtin_altivec_vmulouw(__a, __b);
5794 #endif
5795 }
5796 #endif
5797 
5798 /* vec_vmulosb */
5799 
5800 static __inline__ vector short __attribute__((__always_inline__))
5801 vec_vmulosb(vector signed char __a, vector signed char __b) {
5802 #ifdef __LITTLE_ENDIAN__
5803   return __builtin_altivec_vmulesb(__a, __b);
5804 #else
5805   return __builtin_altivec_vmulosb(__a, __b);
5806 #endif
5807 }
5808 
5809 /* vec_vmuloub */
5810 
5811 static __inline__ vector unsigned short __attribute__((__always_inline__))
5812 vec_vmuloub(vector unsigned char __a, vector unsigned char __b) {
5813 #ifdef __LITTLE_ENDIAN__
5814   return __builtin_altivec_vmuleub(__a, __b);
5815 #else
5816   return __builtin_altivec_vmuloub(__a, __b);
5817 #endif
5818 }
5819 
5820 /* vec_vmulosh */
5821 
5822 static __inline__ vector int __attribute__((__always_inline__))
5823 vec_vmulosh(vector short __a, vector short __b) {
5824 #ifdef __LITTLE_ENDIAN__
5825   return __builtin_altivec_vmulesh(__a, __b);
5826 #else
5827   return __builtin_altivec_vmulosh(__a, __b);
5828 #endif
5829 }
5830 
5831 /* vec_vmulouh */
5832 
5833 static __inline__ vector unsigned int __attribute__((__always_inline__))
5834 vec_vmulouh(vector unsigned short __a, vector unsigned short __b) {
5835 #ifdef __LITTLE_ENDIAN__
5836   return __builtin_altivec_vmuleuh(__a, __b);
5837 #else
5838   return __builtin_altivec_vmulouh(__a, __b);
5839 #endif
5840 }
5841 
5842 /*  vec_nand */
5843 
5844 #ifdef __POWER8_VECTOR__
5845 static __inline__ vector signed char __ATTRS_o_ai
5846 vec_nand(vector signed char __a, vector signed char __b) {
5847   return ~(__a & __b);
5848 }
5849 
5850 static __inline__ vector signed char __ATTRS_o_ai
5851 vec_nand(vector signed char __a, vector bool char __b) {
5852   return ~(__a & __b);
5853 }
5854 
5855 static __inline__ vector signed char __ATTRS_o_ai
5856 vec_nand(vector bool char __a, vector signed char __b) {
5857   return ~(__a & __b);
5858 }
5859 
5860 static __inline__ vector unsigned char __ATTRS_o_ai
5861 vec_nand(vector unsigned char __a, vector unsigned char __b) {
5862   return ~(__a & __b);
5863 }
5864 
5865 static __inline__ vector unsigned char __ATTRS_o_ai
5866 vec_nand(vector unsigned char __a, vector bool char __b) {
5867   return ~(__a & __b);
5868 }
5869 
5870 static __inline__ vector unsigned char __ATTRS_o_ai
5871 vec_nand(vector bool char __a, vector unsigned char __b) {
5872   return ~(__a & __b);
5873 }
5874 
5875 static __inline__ vector bool char __ATTRS_o_ai vec_nand(vector bool char __a,
5876                                                          vector bool char __b) {
5877   return ~(__a & __b);
5878 }
5879 
5880 static __inline__ vector signed short __ATTRS_o_ai
5881 vec_nand(vector signed short __a, vector signed short __b) {
5882   return ~(__a & __b);
5883 }
5884 
5885 static __inline__ vector signed short __ATTRS_o_ai
5886 vec_nand(vector signed short __a, vector bool short __b) {
5887   return ~(__a & __b);
5888 }
5889 
5890 static __inline__ vector signed short __ATTRS_o_ai
5891 vec_nand(vector bool short __a, vector signed short __b) {
5892   return ~(__a & __b);
5893 }
5894 
5895 static __inline__ vector unsigned short __ATTRS_o_ai
5896 vec_nand(vector unsigned short __a, vector unsigned short __b) {
5897   return ~(__a & __b);
5898 }
5899 
5900 static __inline__ vector unsigned short __ATTRS_o_ai
5901 vec_nand(vector unsigned short __a, vector bool short __b) {
5902   return ~(__a & __b);
5903 }
5904 
5905 static __inline__ vector bool short __ATTRS_o_ai
5906 vec_nand(vector bool short __a, vector bool short __b) {
5907   return ~(__a & __b);
5908 }
5909 
5910 static __inline__ vector signed int __ATTRS_o_ai
5911 vec_nand(vector signed int __a, vector signed int __b) {
5912   return ~(__a & __b);
5913 }
5914 
5915 static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
5916                                                           vector bool int __b) {
5917   return ~(__a & __b);
5918 }
5919 
5920 static __inline__ vector signed int __ATTRS_o_ai
5921 vec_nand(vector bool int __a, vector signed int __b) {
5922   return ~(__a & __b);
5923 }
5924 
5925 static __inline__ vector unsigned int __ATTRS_o_ai
5926 vec_nand(vector unsigned int __a, vector unsigned int __b) {
5927   return ~(__a & __b);
5928 }
5929 
5930 static __inline__ vector unsigned int __ATTRS_o_ai
5931 vec_nand(vector unsigned int __a, vector bool int __b) {
5932   return ~(__a & __b);
5933 }
5934 
5935 static __inline__ vector unsigned int __ATTRS_o_ai
5936 vec_nand(vector bool int __a, vector unsigned int __b) {
5937   return ~(__a & __b);
5938 }
5939 
5940 static __inline__ vector bool int __ATTRS_o_ai vec_nand(vector bool int __a,
5941                                                         vector bool int __b) {
5942   return ~(__a & __b);
5943 }
5944 
5945 static __inline__ vector float __ATTRS_o_ai
5946 vec_nand(vector float __a, vector float __b) {
5947   return (vector float)(~((vector unsigned int)__a &
5948                           (vector unsigned int)__b));
5949 }
5950 
5951 static __inline__ vector signed long long __ATTRS_o_ai
5952 vec_nand(vector signed long long __a, vector signed long long __b) {
5953   return ~(__a & __b);
5954 }
5955 
5956 static __inline__ vector signed long long __ATTRS_o_ai
5957 vec_nand(vector signed long long __a, vector bool long long __b) {
5958   return ~(__a & __b);
5959 }
5960 
5961 static __inline__ vector signed long long __ATTRS_o_ai
5962 vec_nand(vector bool long long __a, vector signed long long __b) {
5963   return ~(__a & __b);
5964 }
5965 
5966 static __inline__ vector unsigned long long __ATTRS_o_ai
5967 vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
5968   return ~(__a & __b);
5969 }
5970 
5971 static __inline__ vector unsigned long long __ATTRS_o_ai
5972 vec_nand(vector unsigned long long __a, vector bool long long __b) {
5973   return ~(__a & __b);
5974 }
5975 
5976 static __inline__ vector unsigned long long __ATTRS_o_ai
5977 vec_nand(vector bool long long __a, vector unsigned long long __b) {
5978   return ~(__a & __b);
5979 }
5980 
5981 static __inline__ vector bool long long __ATTRS_o_ai
5982 vec_nand(vector bool long long __a, vector bool long long __b) {
5983   return ~(__a & __b);
5984 }
5985 
5986 static __inline__ vector double __ATTRS_o_ai
5987 vec_nand(vector double __a, vector double __b) {
5988   return (vector double)(~((vector unsigned long long)__a &
5989                            (vector unsigned long long)__b));
5990 }
5991 
5992 #endif
5993 
5994 /* vec_nmadd */
5995 
5996 #ifdef __VSX__
5997 static __inline__ vector float __ATTRS_o_ai vec_nmadd(vector float __a,
5998                                                       vector float __b,
5999                                                       vector float __c) {
6000   return __builtin_vsx_xvnmaddasp(__a, __b, __c);
6001 }
6002 
6003 static __inline__ vector double __ATTRS_o_ai vec_nmadd(vector double __a,
6004                                                        vector double __b,
6005                                                        vector double __c) {
6006   return __builtin_vsx_xvnmaddadp(__a, __b, __c);
6007 }
6008 #endif
6009 
6010 /* vec_nmsub */
6011 
6012 static __inline__ vector float __ATTRS_o_ai vec_nmsub(vector float __a,
6013                                                       vector float __b,
6014                                                       vector float __c) {
6015 #ifdef __VSX__
6016   return __builtin_vsx_xvnmsubasp(__a, __b, __c);
6017 #else
6018   return __builtin_altivec_vnmsubfp(__a, __b, __c);
6019 #endif
6020 }
6021 
6022 #ifdef __VSX__
6023 static __inline__ vector double __ATTRS_o_ai vec_nmsub(vector double __a,
6024                                                        vector double __b,
6025                                                        vector double __c) {
6026   return __builtin_vsx_xvnmsubadp(__a, __b, __c);
6027 }
6028 #endif
6029 
6030 /* vec_vnmsubfp */
6031 
6032 static __inline__ vector float __attribute__((__always_inline__))
6033 vec_vnmsubfp(vector float __a, vector float __b, vector float __c) {
6034   return __builtin_altivec_vnmsubfp(__a, __b, __c);
6035 }
6036 
6037 /* vec_nor */
6038 
6039 #define __builtin_altivec_vnor vec_nor
6040 
6041 static __inline__ vector signed char __ATTRS_o_ai
6042 vec_nor(vector signed char __a, vector signed char __b) {
6043   return ~(__a | __b);
6044 }
6045 
6046 static __inline__ vector unsigned char __ATTRS_o_ai
6047 vec_nor(vector unsigned char __a, vector unsigned char __b) {
6048   return ~(__a | __b);
6049 }
6050 
6051 static __inline__ vector bool char __ATTRS_o_ai vec_nor(vector bool char __a,
6052                                                         vector bool char __b) {
6053   return ~(__a | __b);
6054 }
6055 
6056 static __inline__ vector short __ATTRS_o_ai vec_nor(vector short __a,
6057                                                     vector short __b) {
6058   return ~(__a | __b);
6059 }
6060 
6061 static __inline__ vector unsigned short __ATTRS_o_ai
6062 vec_nor(vector unsigned short __a, vector unsigned short __b) {
6063   return ~(__a | __b);
6064 }
6065 
6066 static __inline__ vector bool short __ATTRS_o_ai
6067 vec_nor(vector bool short __a, vector bool short __b) {
6068   return ~(__a | __b);
6069 }
6070 
6071 static __inline__ vector int __ATTRS_o_ai vec_nor(vector int __a,
6072                                                   vector int __b) {
6073   return ~(__a | __b);
6074 }
6075 
6076 static __inline__ vector unsigned int __ATTRS_o_ai
6077 vec_nor(vector unsigned int __a, vector unsigned int __b) {
6078   return ~(__a | __b);
6079 }
6080 
6081 static __inline__ vector bool int __ATTRS_o_ai vec_nor(vector bool int __a,
6082                                                        vector bool int __b) {
6083   return ~(__a | __b);
6084 }
6085 
6086 static __inline__ vector float __ATTRS_o_ai vec_nor(vector float __a,
6087                                                     vector float __b) {
6088   vector unsigned int __res =
6089       ~((vector unsigned int)__a | (vector unsigned int)__b);
6090   return (vector float)__res;
6091 }
6092 
6093 #ifdef __VSX__
6094 static __inline__ vector double __ATTRS_o_ai vec_nor(vector double __a,
6095                                                      vector double __b) {
6096   vector unsigned long long __res =
6097       ~((vector unsigned long long)__a | (vector unsigned long long)__b);
6098   return (vector double)__res;
6099 }
6100 #endif
6101 
6102 /* vec_vnor */
6103 
6104 static __inline__ vector signed char __ATTRS_o_ai
6105 vec_vnor(vector signed char __a, vector signed char __b) {
6106   return ~(__a | __b);
6107 }
6108 
6109 static __inline__ vector unsigned char __ATTRS_o_ai
6110 vec_vnor(vector unsigned char __a, vector unsigned char __b) {
6111   return ~(__a | __b);
6112 }
6113 
6114 static __inline__ vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a,
6115                                                          vector bool char __b) {
6116   return ~(__a | __b);
6117 }
6118 
6119 static __inline__ vector short __ATTRS_o_ai vec_vnor(vector short __a,
6120                                                      vector short __b) {
6121   return ~(__a | __b);
6122 }
6123 
6124 static __inline__ vector unsigned short __ATTRS_o_ai
6125 vec_vnor(vector unsigned short __a, vector unsigned short __b) {
6126   return ~(__a | __b);
6127 }
6128 
6129 static __inline__ vector bool short __ATTRS_o_ai
6130 vec_vnor(vector bool short __a, vector bool short __b) {
6131   return ~(__a | __b);
6132 }
6133 
6134 static __inline__ vector int __ATTRS_o_ai vec_vnor(vector int __a,
6135                                                    vector int __b) {
6136   return ~(__a | __b);
6137 }
6138 
6139 static __inline__ vector unsigned int __ATTRS_o_ai
6140 vec_vnor(vector unsigned int __a, vector unsigned int __b) {
6141   return ~(__a | __b);
6142 }
6143 
6144 static __inline__ vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a,
6145                                                         vector bool int __b) {
6146   return ~(__a | __b);
6147 }
6148 
6149 static __inline__ vector float __ATTRS_o_ai vec_vnor(vector float __a,
6150                                                      vector float __b) {
6151   vector unsigned int __res =
6152       ~((vector unsigned int)__a | (vector unsigned int)__b);
6153   return (vector float)__res;
6154 }
6155 
6156 #ifdef __VSX__
6157 static __inline__ vector signed long long __ATTRS_o_ai
6158 vec_nor(vector signed long long __a, vector signed long long __b) {
6159   return ~(__a | __b);
6160 }
6161 
6162 static __inline__ vector unsigned long long __ATTRS_o_ai
6163 vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
6164   return ~(__a | __b);
6165 }
6166 
6167 static __inline__ vector bool long long __ATTRS_o_ai
6168 vec_nor(vector bool long long __a, vector bool long long __b) {
6169   return ~(__a | __b);
6170 }
6171 #endif
6172 
6173 /* vec_or */
6174 
6175 #define __builtin_altivec_vor vec_or
6176 
6177 static __inline__ vector signed char __ATTRS_o_ai
6178 vec_or(vector signed char __a, vector signed char __b) {
6179   return __a | __b;
6180 }
6181 
6182 static __inline__ vector signed char __ATTRS_o_ai
6183 vec_or(vector bool char __a, vector signed char __b) {
6184   return (vector signed char)__a | __b;
6185 }
6186 
6187 static __inline__ vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
6188                                                          vector bool char __b) {
6189   return __a | (vector signed char)__b;
6190 }
6191 
6192 static __inline__ vector unsigned char __ATTRS_o_ai
6193 vec_or(vector unsigned char __a, vector unsigned char __b) {
6194   return __a | __b;
6195 }
6196 
6197 static __inline__ vector unsigned char __ATTRS_o_ai
6198 vec_or(vector bool char __a, vector unsigned char __b) {
6199   return (vector unsigned char)__a | __b;
6200 }
6201 
6202 static __inline__ vector unsigned char __ATTRS_o_ai
6203 vec_or(vector unsigned char __a, vector bool char __b) {
6204   return __a | (vector unsigned char)__b;
6205 }
6206 
6207 static __inline__ vector bool char __ATTRS_o_ai vec_or(vector bool char __a,
6208                                                        vector bool char __b) {
6209   return __a | __b;
6210 }
6211 
6212 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
6213                                                    vector short __b) {
6214   return __a | __b;
6215 }
6216 
6217 static __inline__ vector short __ATTRS_o_ai vec_or(vector bool short __a,
6218                                                    vector short __b) {
6219   return (vector short)__a | __b;
6220 }
6221 
6222 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
6223                                                    vector bool short __b) {
6224   return __a | (vector short)__b;
6225 }
6226 
6227 static __inline__ vector unsigned short __ATTRS_o_ai
6228 vec_or(vector unsigned short __a, vector unsigned short __b) {
6229   return __a | __b;
6230 }
6231 
6232 static __inline__ vector unsigned short __ATTRS_o_ai
6233 vec_or(vector bool short __a, vector unsigned short __b) {
6234   return (vector unsigned short)__a | __b;
6235 }
6236 
6237 static __inline__ vector unsigned short __ATTRS_o_ai
6238 vec_or(vector unsigned short __a, vector bool short __b) {
6239   return __a | (vector unsigned short)__b;
6240 }
6241 
6242 static __inline__ vector bool short __ATTRS_o_ai vec_or(vector bool short __a,
6243                                                         vector bool short __b) {
6244   return __a | __b;
6245 }
6246 
6247 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
6248                                                  vector int __b) {
6249   return __a | __b;
6250 }
6251 
6252 static __inline__ vector int __ATTRS_o_ai vec_or(vector bool int __a,
6253                                                  vector int __b) {
6254   return (vector int)__a | __b;
6255 }
6256 
6257 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
6258                                                  vector bool int __b) {
6259   return __a | (vector int)__b;
6260 }
6261 
6262 static __inline__ vector unsigned int __ATTRS_o_ai
6263 vec_or(vector unsigned int __a, vector unsigned int __b) {
6264   return __a | __b;
6265 }
6266 
6267 static __inline__ vector unsigned int __ATTRS_o_ai
6268 vec_or(vector bool int __a, vector unsigned int __b) {
6269   return (vector unsigned int)__a | __b;
6270 }
6271 
6272 static __inline__ vector unsigned int __ATTRS_o_ai
6273 vec_or(vector unsigned int __a, vector bool int __b) {
6274   return __a | (vector unsigned int)__b;
6275 }
6276 
6277 static __inline__ vector bool int __ATTRS_o_ai vec_or(vector bool int __a,
6278                                                       vector bool int __b) {
6279   return __a | __b;
6280 }
6281 
6282 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
6283                                                    vector float __b) {
6284   vector unsigned int __res =
6285       (vector unsigned int)__a | (vector unsigned int)__b;
6286   return (vector float)__res;
6287 }
6288 
6289 static __inline__ vector float __ATTRS_o_ai vec_or(vector bool int __a,
6290                                                    vector float __b) {
6291   vector unsigned int __res =
6292       (vector unsigned int)__a | (vector unsigned int)__b;
6293   return (vector float)__res;
6294 }
6295 
6296 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
6297                                                    vector bool int __b) {
6298   vector unsigned int __res =
6299       (vector unsigned int)__a | (vector unsigned int)__b;
6300   return (vector float)__res;
6301 }
6302 
6303 #ifdef __VSX__
6304 static __inline__ vector double __ATTRS_o_ai vec_or(vector bool long long __a,
6305                                                     vector double __b) {
6306   return (vector double)((vector unsigned long long)__a |
6307                          (vector unsigned long long)__b);
6308 }
6309 
6310 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
6311                                                     vector bool long long __b) {
6312   return (vector double)((vector unsigned long long)__a |
6313                          (vector unsigned long long)__b);
6314 }
6315 
6316 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
6317                                                     vector double __b) {
6318   return (vector double)((vector unsigned long long)__a |
6319                          (vector unsigned long long)__b);
6320 }
6321 
6322 static __inline__ vector signed long long __ATTRS_o_ai
6323 vec_or(vector signed long long __a, vector signed long long __b) {
6324   return __a | __b;
6325 }
6326 
6327 static __inline__ vector signed long long __ATTRS_o_ai
6328 vec_or(vector bool long long __a, vector signed long long __b) {
6329   return (vector signed long long)__a | __b;
6330 }
6331 
6332 static __inline__ vector signed long long __ATTRS_o_ai
6333 vec_or(vector signed long long __a, vector bool long long __b) {
6334   return __a | (vector signed long long)__b;
6335 }
6336 
6337 static __inline__ vector unsigned long long __ATTRS_o_ai
6338 vec_or(vector unsigned long long __a, vector unsigned long long __b) {
6339   return __a | __b;
6340 }
6341 
6342 static __inline__ vector unsigned long long __ATTRS_o_ai
6343 vec_or(vector bool long long __a, vector unsigned long long __b) {
6344   return (vector unsigned long long)__a | __b;
6345 }
6346 
6347 static __inline__ vector unsigned long long __ATTRS_o_ai
6348 vec_or(vector unsigned long long __a, vector bool long long __b) {
6349   return __a | (vector unsigned long long)__b;
6350 }
6351 
6352 static __inline__ vector bool long long __ATTRS_o_ai
6353 vec_or(vector bool long long __a, vector bool long long __b) {
6354   return __a | __b;
6355 }
6356 #endif
6357 
6358 #ifdef __POWER8_VECTOR__
6359 static __inline__ vector signed char __ATTRS_o_ai
6360 vec_orc(vector signed char __a, vector signed char __b) {
6361   return __a | ~__b;
6362 }
6363 
6364 static __inline__ vector signed char __ATTRS_o_ai
6365 vec_orc(vector signed char __a, vector bool char __b) {
6366   return __a | ~__b;
6367 }
6368 
6369 static __inline__ vector signed char __ATTRS_o_ai
6370 vec_orc(vector bool char __a, vector signed char __b) {
6371   return __a | ~__b;
6372 }
6373 
6374 static __inline__ vector unsigned char __ATTRS_o_ai
6375 vec_orc(vector unsigned char __a, vector unsigned char __b) {
6376   return __a | ~__b;
6377 }
6378 
6379 static __inline__ vector unsigned char __ATTRS_o_ai
6380 vec_orc(vector unsigned char __a, vector bool char __b) {
6381   return __a | ~__b;
6382 }
6383 
6384 static __inline__ vector unsigned char __ATTRS_o_ai
6385 vec_orc(vector bool char __a, vector unsigned char __b) {
6386   return __a | ~__b;
6387 }
6388 
6389 static __inline__ vector bool char __ATTRS_o_ai vec_orc(vector bool char __a,
6390                                                         vector bool char __b) {
6391   return __a | ~__b;
6392 }
6393 
6394 static __inline__ vector signed short __ATTRS_o_ai
6395 vec_orc(vector signed short __a, vector signed short __b) {
6396   return __a | ~__b;
6397 }
6398 
6399 static __inline__ vector signed short __ATTRS_o_ai
6400 vec_orc(vector signed short __a, vector bool short __b) {
6401   return __a | ~__b;
6402 }
6403 
6404 static __inline__ vector signed short __ATTRS_o_ai
6405 vec_orc(vector bool short __a, vector signed short __b) {
6406   return __a | ~__b;
6407 }
6408 
6409 static __inline__ vector unsigned short __ATTRS_o_ai
6410 vec_orc(vector unsigned short __a, vector unsigned short __b) {
6411   return __a | ~__b;
6412 }
6413 
6414 static __inline__ vector unsigned short __ATTRS_o_ai
6415 vec_orc(vector unsigned short __a, vector bool short __b) {
6416   return __a | ~__b;
6417 }
6418 
6419 static __inline__ vector unsigned short __ATTRS_o_ai
6420 vec_orc(vector bool short __a, vector unsigned short __b) {
6421   return __a | ~__b;
6422 }
6423 
6424 static __inline__ vector bool short __ATTRS_o_ai
6425 vec_orc(vector bool short __a, vector bool short __b) {
6426   return __a | ~__b;
6427 }
6428 
6429 static __inline__ vector signed int __ATTRS_o_ai
6430 vec_orc(vector signed int __a, vector signed int __b) {
6431   return __a | ~__b;
6432 }
6433 
6434 static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
6435                                                          vector bool int __b) {
6436   return __a | ~__b;
6437 }
6438 
6439 static __inline__ vector signed int __ATTRS_o_ai
6440 vec_orc(vector bool int __a, vector signed int __b) {
6441   return __a | ~__b;
6442 }
6443 
6444 static __inline__ vector unsigned int __ATTRS_o_ai
6445 vec_orc(vector unsigned int __a, vector unsigned int __b) {
6446   return __a | ~__b;
6447 }
6448 
6449 static __inline__ vector unsigned int __ATTRS_o_ai
6450 vec_orc(vector unsigned int __a, vector bool int __b) {
6451   return __a | ~__b;
6452 }
6453 
6454 static __inline__ vector unsigned int __ATTRS_o_ai
6455 vec_orc(vector bool int __a, vector unsigned int __b) {
6456   return __a | ~__b;
6457 }
6458 
6459 static __inline__ vector bool int __ATTRS_o_ai vec_orc(vector bool int __a,
6460                                                        vector bool int __b) {
6461   return __a | ~__b;
6462 }
6463 
6464 static __inline__ vector float __ATTRS_o_ai
6465 vec_orc(vector bool int __a, vector float __b) {
6466  return (vector float)(__a | ~(vector unsigned int)__b);
6467 }
6468 
6469 static __inline__ vector float __ATTRS_o_ai
6470 vec_orc(vector float __a, vector bool int __b) {
6471   return (vector float)((vector unsigned int)__a | ~__b);
6472 }
6473 
6474 static __inline__ vector signed long long __ATTRS_o_ai
6475 vec_orc(vector signed long long __a, vector signed long long __b) {
6476   return __a | ~__b;
6477 }
6478 
6479 static __inline__ vector signed long long __ATTRS_o_ai
6480 vec_orc(vector signed long long __a, vector bool long long __b) {
6481   return __a | ~__b;
6482 }
6483 
6484 static __inline__ vector signed long long __ATTRS_o_ai
6485 vec_orc(vector bool long long __a, vector signed long long __b) {
6486   return __a | ~__b;
6487 }
6488 
6489 static __inline__ vector unsigned long long __ATTRS_o_ai
6490 vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
6491   return __a | ~__b;
6492 }
6493 
6494 static __inline__ vector unsigned long long __ATTRS_o_ai
6495 vec_orc(vector unsigned long long __a, vector bool long long __b) {
6496   return __a | ~__b;
6497 }
6498 
6499 static __inline__ vector unsigned long long __ATTRS_o_ai
6500 vec_orc(vector bool long long __a, vector unsigned long long __b) {
6501   return __a | ~__b;
6502 }
6503 
6504 static __inline__ vector bool long long __ATTRS_o_ai
6505 vec_orc(vector bool long long __a, vector bool long long __b) {
6506   return __a | ~__b;
6507 }
6508 
6509 static __inline__ vector double __ATTRS_o_ai
6510 vec_orc(vector double __a, vector bool long long __b) {
6511   return (vector double)((vector unsigned long long)__a | ~__b);
6512 }
6513 
6514 static __inline__ vector double __ATTRS_o_ai
6515 vec_orc(vector bool long long __a, vector double __b) {
6516   return (vector double)(__a | ~(vector unsigned long long)__b);
6517 }
6518 #endif
6519 
6520 /* vec_vor */
6521 
6522 static __inline__ vector signed char __ATTRS_o_ai
6523 vec_vor(vector signed char __a, vector signed char __b) {
6524   return __a | __b;
6525 }
6526 
6527 static __inline__ vector signed char __ATTRS_o_ai
6528 vec_vor(vector bool char __a, vector signed char __b) {
6529   return (vector signed char)__a | __b;
6530 }
6531 
6532 static __inline__ vector signed char __ATTRS_o_ai
6533 vec_vor(vector signed char __a, vector bool char __b) {
6534   return __a | (vector signed char)__b;
6535 }
6536 
6537 static __inline__ vector unsigned char __ATTRS_o_ai
6538 vec_vor(vector unsigned char __a, vector unsigned char __b) {
6539   return __a | __b;
6540 }
6541 
6542 static __inline__ vector unsigned char __ATTRS_o_ai
6543 vec_vor(vector bool char __a, vector unsigned char __b) {
6544   return (vector unsigned char)__a | __b;
6545 }
6546 
6547 static __inline__ vector unsigned char __ATTRS_o_ai
6548 vec_vor(vector unsigned char __a, vector bool char __b) {
6549   return __a | (vector unsigned char)__b;
6550 }
6551 
6552 static __inline__ vector bool char __ATTRS_o_ai vec_vor(vector bool char __a,
6553                                                         vector bool char __b) {
6554   return __a | __b;
6555 }
6556 
6557 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
6558                                                     vector short __b) {
6559   return __a | __b;
6560 }
6561 
6562 static __inline__ vector short __ATTRS_o_ai vec_vor(vector bool short __a,
6563                                                     vector short __b) {
6564   return (vector short)__a | __b;
6565 }
6566 
6567 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
6568                                                     vector bool short __b) {
6569   return __a | (vector short)__b;
6570 }
6571 
6572 static __inline__ vector unsigned short __ATTRS_o_ai
6573 vec_vor(vector unsigned short __a, vector unsigned short __b) {
6574   return __a | __b;
6575 }
6576 
6577 static __inline__ vector unsigned short __ATTRS_o_ai
6578 vec_vor(vector bool short __a, vector unsigned short __b) {
6579   return (vector unsigned short)__a | __b;
6580 }
6581 
6582 static __inline__ vector unsigned short __ATTRS_o_ai
6583 vec_vor(vector unsigned short __a, vector bool short __b) {
6584   return __a | (vector unsigned short)__b;
6585 }
6586 
6587 static __inline__ vector bool short __ATTRS_o_ai
6588 vec_vor(vector bool short __a, vector bool short __b) {
6589   return __a | __b;
6590 }
6591 
6592 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
6593                                                   vector int __b) {
6594   return __a | __b;
6595 }
6596 
6597 static __inline__ vector int __ATTRS_o_ai vec_vor(vector bool int __a,
6598                                                   vector int __b) {
6599   return (vector int)__a | __b;
6600 }
6601 
6602 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
6603                                                   vector bool int __b) {
6604   return __a | (vector int)__b;
6605 }
6606 
6607 static __inline__ vector unsigned int __ATTRS_o_ai
6608 vec_vor(vector unsigned int __a, vector unsigned int __b) {
6609   return __a | __b;
6610 }
6611 
6612 static __inline__ vector unsigned int __ATTRS_o_ai
6613 vec_vor(vector bool int __a, vector unsigned int __b) {
6614   return (vector unsigned int)__a | __b;
6615 }
6616 
6617 static __inline__ vector unsigned int __ATTRS_o_ai
6618 vec_vor(vector unsigned int __a, vector bool int __b) {
6619   return __a | (vector unsigned int)__b;
6620 }
6621 
6622 static __inline__ vector bool int __ATTRS_o_ai vec_vor(vector bool int __a,
6623                                                        vector bool int __b) {
6624   return __a | __b;
6625 }
6626 
6627 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
6628                                                     vector float __b) {
6629   vector unsigned int __res =
6630       (vector unsigned int)__a | (vector unsigned int)__b;
6631   return (vector float)__res;
6632 }
6633 
6634 static __inline__ vector float __ATTRS_o_ai vec_vor(vector bool int __a,
6635                                                     vector float __b) {
6636   vector unsigned int __res =
6637       (vector unsigned int)__a | (vector unsigned int)__b;
6638   return (vector float)__res;
6639 }
6640 
6641 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
6642                                                     vector bool int __b) {
6643   vector unsigned int __res =
6644       (vector unsigned int)__a | (vector unsigned int)__b;
6645   return (vector float)__res;
6646 }
6647 
6648 #ifdef __VSX__
6649 static __inline__ vector signed long long __ATTRS_o_ai
6650 vec_vor(vector signed long long __a, vector signed long long __b) {
6651   return __a | __b;
6652 }
6653 
6654 static __inline__ vector signed long long __ATTRS_o_ai
6655 vec_vor(vector bool long long __a, vector signed long long __b) {
6656   return (vector signed long long)__a | __b;
6657 }
6658 
6659 static __inline__ vector signed long long __ATTRS_o_ai
6660 vec_vor(vector signed long long __a, vector bool long long __b) {
6661   return __a | (vector signed long long)__b;
6662 }
6663 
6664 static __inline__ vector unsigned long long __ATTRS_o_ai
6665 vec_vor(vector unsigned long long __a, vector unsigned long long __b) {
6666   return __a | __b;
6667 }
6668 
6669 static __inline__ vector unsigned long long __ATTRS_o_ai
6670 vec_vor(vector bool long long __a, vector unsigned long long __b) {
6671   return (vector unsigned long long)__a | __b;
6672 }
6673 
6674 static __inline__ vector unsigned long long __ATTRS_o_ai
6675 vec_vor(vector unsigned long long __a, vector bool long long __b) {
6676   return __a | (vector unsigned long long)__b;
6677 }
6678 
6679 static __inline__ vector bool long long __ATTRS_o_ai
6680 vec_vor(vector bool long long __a, vector bool long long __b) {
6681   return __a | __b;
6682 }
6683 #endif
6684 
6685 /* vec_pack */
6686 
6687 /* The various vector pack instructions have a big-endian bias, so for
6688    little endian we must handle reversed element numbering.  */
6689 
6690 static __inline__ vector signed char __ATTRS_o_ai
6691 vec_pack(vector signed short __a, vector signed short __b) {
6692 #ifdef __LITTLE_ENDIAN__
6693   return (vector signed char)vec_perm(
6694       __a, __b,
6695       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6696                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6697 #else
6698   return (vector signed char)vec_perm(
6699       __a, __b,
6700       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6701                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6702 #endif
6703 }
6704 
6705 static __inline__ vector unsigned char __ATTRS_o_ai
6706 vec_pack(vector unsigned short __a, vector unsigned short __b) {
6707 #ifdef __LITTLE_ENDIAN__
6708   return (vector unsigned char)vec_perm(
6709       __a, __b,
6710       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6711                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6712 #else
6713   return (vector unsigned char)vec_perm(
6714       __a, __b,
6715       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6716                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6717 #endif
6718 }
6719 
6720 static __inline__ vector bool char __ATTRS_o_ai
6721 vec_pack(vector bool short __a, vector bool short __b) {
6722 #ifdef __LITTLE_ENDIAN__
6723   return (vector bool char)vec_perm(
6724       __a, __b,
6725       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6726                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6727 #else
6728   return (vector bool char)vec_perm(
6729       __a, __b,
6730       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6731                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6732 #endif
6733 }
6734 
6735 static __inline__ vector short __ATTRS_o_ai vec_pack(vector int __a,
6736                                                      vector int __b) {
6737 #ifdef __LITTLE_ENDIAN__
6738   return (vector short)vec_perm(
6739       __a, __b,
6740       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6741                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6742 #else
6743   return (vector short)vec_perm(
6744       __a, __b,
6745       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6746                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6747 #endif
6748 }
6749 
6750 static __inline__ vector unsigned short __ATTRS_o_ai
6751 vec_pack(vector unsigned int __a, vector unsigned int __b) {
6752 #ifdef __LITTLE_ENDIAN__
6753   return (vector unsigned short)vec_perm(
6754       __a, __b,
6755       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6756                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6757 #else
6758   return (vector unsigned short)vec_perm(
6759       __a, __b,
6760       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6761                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6762 #endif
6763 }
6764 
6765 static __inline__ vector bool short __ATTRS_o_ai vec_pack(vector bool int __a,
6766                                                           vector bool int __b) {
6767 #ifdef __LITTLE_ENDIAN__
6768   return (vector bool short)vec_perm(
6769       __a, __b,
6770       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6771                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6772 #else
6773   return (vector bool short)vec_perm(
6774       __a, __b,
6775       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6776                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6777 #endif
6778 }
6779 
6780 #ifdef __VSX__
6781 static __inline__ vector signed int __ATTRS_o_ai
6782 vec_pack(vector signed long long __a, vector signed long long __b) {
6783 #ifdef __LITTLE_ENDIAN__
6784   return (vector signed int)vec_perm(
6785       __a, __b,
6786       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6787                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6788 #else
6789   return (vector signed int)vec_perm(
6790       __a, __b,
6791       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6792                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6793 #endif
6794 }
6795 static __inline__ vector unsigned int __ATTRS_o_ai
6796 vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
6797 #ifdef __LITTLE_ENDIAN__
6798   return (vector unsigned int)vec_perm(
6799       __a, __b,
6800       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6801                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6802 #else
6803   return (vector unsigned int)vec_perm(
6804       __a, __b,
6805       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6806                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6807 #endif
6808 }
6809 
6810 static __inline__ vector bool int __ATTRS_o_ai
6811 vec_pack(vector bool long long __a, vector bool long long __b) {
6812 #ifdef __LITTLE_ENDIAN__
6813   return (vector bool int)vec_perm(
6814       __a, __b,
6815       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6816                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6817 #else
6818   return (vector bool int)vec_perm(
6819       __a, __b,
6820       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6821                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6822 #endif
6823 }
6824 
6825 static __inline__ vector float __ATTRS_o_ai
6826 vec_pack(vector double __a, vector double __b) {
6827   return (vector float) (__a[0], __a[1], __b[0], __b[1]);
6828 }
6829 #endif
6830 
6831 #ifdef __POWER9_VECTOR__
6832 static __inline__ vector unsigned short __ATTRS_o_ai
6833 vec_pack_to_short_fp32(vector float __a, vector float __b) {
6834   vector float __resa = __builtin_vsx_xvcvsphp(__a);
6835   vector float __resb = __builtin_vsx_xvcvsphp(__b);
6836 #ifdef __LITTLE_ENDIAN__
6837   return (vector unsigned short)vec_mergee(__resa, __resb);
6838 #else
6839   return (vector unsigned short)vec_mergeo(__resa, __resb);
6840 #endif
6841 }
6842 
6843 #endif
6844 /* vec_vpkuhum */
6845 
6846 #define __builtin_altivec_vpkuhum vec_vpkuhum
6847 
6848 static __inline__ vector signed char __ATTRS_o_ai
6849 vec_vpkuhum(vector signed short __a, vector signed short __b) {
6850 #ifdef __LITTLE_ENDIAN__
6851   return (vector signed char)vec_perm(
6852       __a, __b,
6853       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6854                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6855 #else
6856   return (vector signed char)vec_perm(
6857       __a, __b,
6858       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6859                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6860 #endif
6861 }
6862 
6863 static __inline__ vector unsigned char __ATTRS_o_ai
6864 vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) {
6865 #ifdef __LITTLE_ENDIAN__
6866   return (vector unsigned char)vec_perm(
6867       __a, __b,
6868       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6869                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6870 #else
6871   return (vector unsigned char)vec_perm(
6872       __a, __b,
6873       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6874                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6875 #endif
6876 }
6877 
6878 static __inline__ vector bool char __ATTRS_o_ai
6879 vec_vpkuhum(vector bool short __a, vector bool short __b) {
6880 #ifdef __LITTLE_ENDIAN__
6881   return (vector bool char)vec_perm(
6882       __a, __b,
6883       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6884                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6885 #else
6886   return (vector bool char)vec_perm(
6887       __a, __b,
6888       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6889                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6890 #endif
6891 }
6892 
6893 /* vec_vpkuwum */
6894 
6895 #define __builtin_altivec_vpkuwum vec_vpkuwum
6896 
6897 static __inline__ vector short __ATTRS_o_ai vec_vpkuwum(vector int __a,
6898                                                         vector int __b) {
6899 #ifdef __LITTLE_ENDIAN__
6900   return (vector short)vec_perm(
6901       __a, __b,
6902       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6903                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6904 #else
6905   return (vector short)vec_perm(
6906       __a, __b,
6907       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6908                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6909 #endif
6910 }
6911 
6912 static __inline__ vector unsigned short __ATTRS_o_ai
6913 vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) {
6914 #ifdef __LITTLE_ENDIAN__
6915   return (vector unsigned short)vec_perm(
6916       __a, __b,
6917       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6918                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6919 #else
6920   return (vector unsigned short)vec_perm(
6921       __a, __b,
6922       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6923                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6924 #endif
6925 }
6926 
6927 static __inline__ vector bool short __ATTRS_o_ai
6928 vec_vpkuwum(vector bool int __a, vector bool int __b) {
6929 #ifdef __LITTLE_ENDIAN__
6930   return (vector bool short)vec_perm(
6931       __a, __b,
6932       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6933                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6934 #else
6935   return (vector bool short)vec_perm(
6936       __a, __b,
6937       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6938                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6939 #endif
6940 }
6941 
6942 /* vec_vpkudum */
6943 
6944 #ifdef __POWER8_VECTOR__
6945 #define __builtin_altivec_vpkudum vec_vpkudum
6946 
6947 static __inline__ vector int __ATTRS_o_ai vec_vpkudum(vector long long __a,
6948                                                       vector long long __b) {
6949 #ifdef __LITTLE_ENDIAN__
6950   return (vector int)vec_perm(
6951       __a, __b,
6952       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6953                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6954 #else
6955   return (vector int)vec_perm(
6956       __a, __b,
6957       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6958                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6959 #endif
6960 }
6961 
6962 static __inline__ vector unsigned int __ATTRS_o_ai
6963 vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) {
6964 #ifdef __LITTLE_ENDIAN__
6965   return (vector unsigned int)vec_perm(
6966       __a, __b,
6967       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6968                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6969 #else
6970   return (vector unsigned int)vec_perm(
6971       __a, __b,
6972       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6973                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6974 #endif
6975 }
6976 
6977 static __inline__ vector bool int __ATTRS_o_ai
6978 vec_vpkudum(vector bool long long __a, vector bool long long __b) {
6979 #ifdef __LITTLE_ENDIAN__
6980   return (vector bool int)vec_perm(
6981       (vector long long)__a, (vector long long)__b,
6982       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6983                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6984 #else
6985   return (vector bool int)vec_perm(
6986       (vector long long)__a, (vector long long)__b,
6987       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6988                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6989 #endif
6990 }
6991 #endif
6992 
6993 /* vec_packpx */
6994 
6995 static __inline__ vector pixel __attribute__((__always_inline__))
6996 vec_packpx(vector unsigned int __a, vector unsigned int __b) {
6997 #ifdef __LITTLE_ENDIAN__
6998   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
6999 #else
7000   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
7001 #endif
7002 }
7003 
7004 /* vec_vpkpx */
7005 
7006 static __inline__ vector pixel __attribute__((__always_inline__))
7007 vec_vpkpx(vector unsigned int __a, vector unsigned int __b) {
7008 #ifdef __LITTLE_ENDIAN__
7009   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
7010 #else
7011   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
7012 #endif
7013 }
7014 
7015 /* vec_packs */
7016 
7017 static __inline__ vector signed char __ATTRS_o_ai vec_packs(vector short __a,
7018                                                             vector short __b) {
7019 #ifdef __LITTLE_ENDIAN__
7020   return __builtin_altivec_vpkshss(__b, __a);
7021 #else
7022   return __builtin_altivec_vpkshss(__a, __b);
7023 #endif
7024 }
7025 
7026 static __inline__ vector unsigned char __ATTRS_o_ai
7027 vec_packs(vector unsigned short __a, vector unsigned short __b) {
7028 #ifdef __LITTLE_ENDIAN__
7029   return __builtin_altivec_vpkuhus(__b, __a);
7030 #else
7031   return __builtin_altivec_vpkuhus(__a, __b);
7032 #endif
7033 }
7034 
7035 static __inline__ vector signed short __ATTRS_o_ai vec_packs(vector int __a,
7036                                                              vector int __b) {
7037 #ifdef __LITTLE_ENDIAN__
7038   return __builtin_altivec_vpkswss(__b, __a);
7039 #else
7040   return __builtin_altivec_vpkswss(__a, __b);
7041 #endif
7042 }
7043 
7044 static __inline__ vector unsigned short __ATTRS_o_ai
7045 vec_packs(vector unsigned int __a, vector unsigned int __b) {
7046 #ifdef __LITTLE_ENDIAN__
7047   return __builtin_altivec_vpkuwus(__b, __a);
7048 #else
7049   return __builtin_altivec_vpkuwus(__a, __b);
7050 #endif
7051 }
7052 
7053 #ifdef __POWER8_VECTOR__
7054 static __inline__ vector int __ATTRS_o_ai vec_packs(vector long long __a,
7055                                                     vector long long __b) {
7056 #ifdef __LITTLE_ENDIAN__
7057   return __builtin_altivec_vpksdss(__b, __a);
7058 #else
7059   return __builtin_altivec_vpksdss(__a, __b);
7060 #endif
7061 }
7062 
7063 static __inline__ vector unsigned int __ATTRS_o_ai
7064 vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
7065 #ifdef __LITTLE_ENDIAN__
7066   return __builtin_altivec_vpkudus(__b, __a);
7067 #else
7068   return __builtin_altivec_vpkudus(__a, __b);
7069 #endif
7070 }
7071 #endif
7072 
7073 /* vec_vpkshss */
7074 
7075 static __inline__ vector signed char __attribute__((__always_inline__))
7076 vec_vpkshss(vector short __a, vector short __b) {
7077 #ifdef __LITTLE_ENDIAN__
7078   return __builtin_altivec_vpkshss(__b, __a);
7079 #else
7080   return __builtin_altivec_vpkshss(__a, __b);
7081 #endif
7082 }
7083 
7084 /* vec_vpksdss */
7085 
7086 #ifdef __POWER8_VECTOR__
7087 static __inline__ vector int __ATTRS_o_ai vec_vpksdss(vector long long __a,
7088                                                       vector long long __b) {
7089 #ifdef __LITTLE_ENDIAN__
7090   return __builtin_altivec_vpksdss(__b, __a);
7091 #else
7092   return __builtin_altivec_vpksdss(__a, __b);
7093 #endif
7094 }
7095 #endif
7096 
7097 /* vec_vpkuhus */
7098 
7099 static __inline__ vector unsigned char __attribute__((__always_inline__))
7100 vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) {
7101 #ifdef __LITTLE_ENDIAN__
7102   return __builtin_altivec_vpkuhus(__b, __a);
7103 #else
7104   return __builtin_altivec_vpkuhus(__a, __b);
7105 #endif
7106 }
7107 
7108 /* vec_vpkudus */
7109 
7110 #ifdef __POWER8_VECTOR__
7111 static __inline__ vector unsigned int __attribute__((__always_inline__))
7112 vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) {
7113 #ifdef __LITTLE_ENDIAN__
7114   return __builtin_altivec_vpkudus(__b, __a);
7115 #else
7116   return __builtin_altivec_vpkudus(__a, __b);
7117 #endif
7118 }
7119 #endif
7120 
7121 /* vec_vpkswss */
7122 
7123 static __inline__ vector signed short __attribute__((__always_inline__))
7124 vec_vpkswss(vector int __a, vector int __b) {
7125 #ifdef __LITTLE_ENDIAN__
7126   return __builtin_altivec_vpkswss(__b, __a);
7127 #else
7128   return __builtin_altivec_vpkswss(__a, __b);
7129 #endif
7130 }
7131 
7132 /* vec_vpkuwus */
7133 
7134 static __inline__ vector unsigned short __attribute__((__always_inline__))
7135 vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) {
7136 #ifdef __LITTLE_ENDIAN__
7137   return __builtin_altivec_vpkuwus(__b, __a);
7138 #else
7139   return __builtin_altivec_vpkuwus(__a, __b);
7140 #endif
7141 }
7142 
7143 /* vec_packsu */
7144 
7145 static __inline__ vector unsigned char __ATTRS_o_ai
7146 vec_packsu(vector short __a, vector short __b) {
7147 #ifdef __LITTLE_ENDIAN__
7148   return __builtin_altivec_vpkshus(__b, __a);
7149 #else
7150   return __builtin_altivec_vpkshus(__a, __b);
7151 #endif
7152 }
7153 
7154 static __inline__ vector unsigned char __ATTRS_o_ai
7155 vec_packsu(vector unsigned short __a, vector unsigned short __b) {
7156 #ifdef __LITTLE_ENDIAN__
7157   return __builtin_altivec_vpkuhus(__b, __a);
7158 #else
7159   return __builtin_altivec_vpkuhus(__a, __b);
7160 #endif
7161 }
7162 
7163 static __inline__ vector unsigned short __ATTRS_o_ai
7164 vec_packsu(vector int __a, vector int __b) {
7165 #ifdef __LITTLE_ENDIAN__
7166   return __builtin_altivec_vpkswus(__b, __a);
7167 #else
7168   return __builtin_altivec_vpkswus(__a, __b);
7169 #endif
7170 }
7171 
7172 static __inline__ vector unsigned short __ATTRS_o_ai
7173 vec_packsu(vector unsigned int __a, vector unsigned int __b) {
7174 #ifdef __LITTLE_ENDIAN__
7175   return __builtin_altivec_vpkuwus(__b, __a);
7176 #else
7177   return __builtin_altivec_vpkuwus(__a, __b);
7178 #endif
7179 }
7180 
7181 #ifdef __POWER8_VECTOR__
7182 static __inline__ vector unsigned int __ATTRS_o_ai
7183 vec_packsu(vector long long __a, vector long long __b) {
7184 #ifdef __LITTLE_ENDIAN__
7185   return __builtin_altivec_vpksdus(__b, __a);
7186 #else
7187   return __builtin_altivec_vpksdus(__a, __b);
7188 #endif
7189 }
7190 
7191 static __inline__ vector unsigned int __ATTRS_o_ai
7192 vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
7193 #ifdef __LITTLE_ENDIAN__
7194   return __builtin_altivec_vpkudus(__b, __a);
7195 #else
7196   return __builtin_altivec_vpkudus(__a, __b);
7197 #endif
7198 }
7199 #endif
7200 
7201 /* vec_vpkshus */
7202 
7203 static __inline__ vector unsigned char __ATTRS_o_ai
7204 vec_vpkshus(vector short __a, vector short __b) {
7205 #ifdef __LITTLE_ENDIAN__
7206   return __builtin_altivec_vpkshus(__b, __a);
7207 #else
7208   return __builtin_altivec_vpkshus(__a, __b);
7209 #endif
7210 }
7211 
7212 static __inline__ vector unsigned char __ATTRS_o_ai
7213 vec_vpkshus(vector unsigned short __a, vector unsigned short __b) {
7214 #ifdef __LITTLE_ENDIAN__
7215   return __builtin_altivec_vpkuhus(__b, __a);
7216 #else
7217   return __builtin_altivec_vpkuhus(__a, __b);
7218 #endif
7219 }
7220 
7221 /* vec_vpkswus */
7222 
7223 static __inline__ vector unsigned short __ATTRS_o_ai
7224 vec_vpkswus(vector int __a, vector int __b) {
7225 #ifdef __LITTLE_ENDIAN__
7226   return __builtin_altivec_vpkswus(__b, __a);
7227 #else
7228   return __builtin_altivec_vpkswus(__a, __b);
7229 #endif
7230 }
7231 
7232 static __inline__ vector unsigned short __ATTRS_o_ai
7233 vec_vpkswus(vector unsigned int __a, vector unsigned int __b) {
7234 #ifdef __LITTLE_ENDIAN__
7235   return __builtin_altivec_vpkuwus(__b, __a);
7236 #else
7237   return __builtin_altivec_vpkuwus(__a, __b);
7238 #endif
7239 }
7240 
7241 /* vec_vpksdus */
7242 
7243 #ifdef __POWER8_VECTOR__
7244 static __inline__ vector unsigned int __ATTRS_o_ai
7245 vec_vpksdus(vector long long __a, vector long long __b) {
7246 #ifdef __LITTLE_ENDIAN__
7247   return __builtin_altivec_vpksdus(__b, __a);
7248 #else
7249   return __builtin_altivec_vpksdus(__a, __b);
7250 #endif
7251 }
7252 #endif
7253 
7254 /* vec_perm */
7255 
7256 // The vperm instruction is defined architecturally with a big-endian bias.
7257 // For little endian, we swap the input operands and invert the permute
7258 // control vector.  Only the rightmost 5 bits matter, so we could use
7259 // a vector of all 31s instead of all 255s to perform the inversion.
7260 // However, when the PCV is not a constant, using 255 has an advantage
7261 // in that the vec_xor can be recognized as a vec_nor (and for P8 and
7262 // later, possibly a vec_nand).
7263 
7264 static __inline__ vector signed char __ATTRS_o_ai vec_perm(
7265     vector signed char __a, vector signed char __b, vector unsigned char __c) {
7266 #ifdef __LITTLE_ENDIAN__
7267   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7268                               255, 255, 255, 255, 255, 255, 255, 255};
7269   __d = vec_xor(__c, __d);
7270   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b,
7271                                                          (vector int)__a, __d);
7272 #else
7273   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a,
7274                                                          (vector int)__b, __c);
7275 #endif
7276 }
7277 
7278 static __inline__ vector unsigned char __ATTRS_o_ai
7279 vec_perm(vector unsigned char __a, vector unsigned char __b,
7280          vector unsigned char __c) {
7281 #ifdef __LITTLE_ENDIAN__
7282   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7283                               255, 255, 255, 255, 255, 255, 255, 255};
7284   __d = vec_xor(__c, __d);
7285   return (vector unsigned char)__builtin_altivec_vperm_4si(
7286       (vector int)__b, (vector int)__a, __d);
7287 #else
7288   return (vector unsigned char)__builtin_altivec_vperm_4si(
7289       (vector int)__a, (vector int)__b, __c);
7290 #endif
7291 }
7292 
7293 static __inline__ vector bool char __ATTRS_o_ai
7294 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) {
7295 #ifdef __LITTLE_ENDIAN__
7296   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7297                               255, 255, 255, 255, 255, 255, 255, 255};
7298   __d = vec_xor(__c, __d);
7299   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b,
7300                                                        (vector int)__a, __d);
7301 #else
7302   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a,
7303                                                        (vector int)__b, __c);
7304 #endif
7305 }
7306 
7307 static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
7308                                                      vector signed short __b,
7309                                                      vector unsigned char __c) {
7310 #ifdef __LITTLE_ENDIAN__
7311   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7312                               255, 255, 255, 255, 255, 255, 255, 255};
7313   __d = vec_xor(__c, __d);
7314   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b,
7315                                                           (vector int)__a, __d);
7316 #else
7317   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a,
7318                                                           (vector int)__b, __c);
7319 #endif
7320 }
7321 
7322 static __inline__ vector unsigned short __ATTRS_o_ai
7323 vec_perm(vector unsigned short __a, vector unsigned short __b,
7324          vector unsigned char __c) {
7325 #ifdef __LITTLE_ENDIAN__
7326   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7327                               255, 255, 255, 255, 255, 255, 255, 255};
7328   __d = vec_xor(__c, __d);
7329   return (vector unsigned short)__builtin_altivec_vperm_4si(
7330       (vector int)__b, (vector int)__a, __d);
7331 #else
7332   return (vector unsigned short)__builtin_altivec_vperm_4si(
7333       (vector int)__a, (vector int)__b, __c);
7334 #endif
7335 }
7336 
7337 static __inline__ vector bool short __ATTRS_o_ai vec_perm(
7338     vector bool short __a, vector bool short __b, vector unsigned char __c) {
7339 #ifdef __LITTLE_ENDIAN__
7340   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7341                               255, 255, 255, 255, 255, 255, 255, 255};
7342   __d = vec_xor(__c, __d);
7343   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b,
7344                                                         (vector int)__a, __d);
7345 #else
7346   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a,
7347                                                         (vector int)__b, __c);
7348 #endif
7349 }
7350 
7351 static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
7352                                                      vector pixel __b,
7353                                                      vector unsigned char __c) {
7354 #ifdef __LITTLE_ENDIAN__
7355   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7356                               255, 255, 255, 255, 255, 255, 255, 255};
7357   __d = vec_xor(__c, __d);
7358   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b,
7359                                                    (vector int)__a, __d);
7360 #else
7361   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a,
7362                                                    (vector int)__b, __c);
7363 #endif
7364 }
7365 
7366 static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
7367                                                    vector signed int __b,
7368                                                    vector unsigned char __c) {
7369 #ifdef __LITTLE_ENDIAN__
7370   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7371                               255, 255, 255, 255, 255, 255, 255, 255};
7372   __d = vec_xor(__c, __d);
7373   return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d);
7374 #else
7375   return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c);
7376 #endif
7377 }
7378 
7379 static __inline__ vector unsigned int __ATTRS_o_ai
7380 vec_perm(vector unsigned int __a, vector unsigned int __b,
7381          vector unsigned char __c) {
7382 #ifdef __LITTLE_ENDIAN__
7383   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7384                               255, 255, 255, 255, 255, 255, 255, 255};
7385   __d = vec_xor(__c, __d);
7386   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b,
7387                                                           (vector int)__a, __d);
7388 #else
7389   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a,
7390                                                           (vector int)__b, __c);
7391 #endif
7392 }
7393 
7394 static __inline__ vector bool int __ATTRS_o_ai
7395 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
7396 #ifdef __LITTLE_ENDIAN__
7397   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7398                               255, 255, 255, 255, 255, 255, 255, 255};
7399   __d = vec_xor(__c, __d);
7400   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b,
7401                                                       (vector int)__a, __d);
7402 #else
7403   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a,
7404                                                       (vector int)__b, __c);
7405 #endif
7406 }
7407 
7408 static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
7409                                                      vector float __b,
7410                                                      vector unsigned char __c) {
7411 #ifdef __LITTLE_ENDIAN__
7412   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7413                               255, 255, 255, 255, 255, 255, 255, 255};
7414   __d = vec_xor(__c, __d);
7415   return (vector float)__builtin_altivec_vperm_4si((vector int)__b,
7416                                                    (vector int)__a, __d);
7417 #else
7418   return (vector float)__builtin_altivec_vperm_4si((vector int)__a,
7419                                                    (vector int)__b, __c);
7420 #endif
7421 }
7422 
7423 #ifdef __VSX__
7424 static __inline__ vector long long __ATTRS_o_ai
7425 vec_perm(vector signed long long __a, vector signed long long __b,
7426          vector unsigned char __c) {
7427 #ifdef __LITTLE_ENDIAN__
7428   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7429                               255, 255, 255, 255, 255, 255, 255, 255};
7430   __d = vec_xor(__c, __d);
7431   return (vector signed long long)__builtin_altivec_vperm_4si(
7432       (vector int)__b, (vector int)__a, __d);
7433 #else
7434   return (vector signed long long)__builtin_altivec_vperm_4si(
7435       (vector int)__a, (vector int)__b, __c);
7436 #endif
7437 }
7438 
7439 static __inline__ vector unsigned long long __ATTRS_o_ai
7440 vec_perm(vector unsigned long long __a, vector unsigned long long __b,
7441          vector unsigned char __c) {
7442 #ifdef __LITTLE_ENDIAN__
7443   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7444                               255, 255, 255, 255, 255, 255, 255, 255};
7445   __d = vec_xor(__c, __d);
7446   return (vector unsigned long long)__builtin_altivec_vperm_4si(
7447       (vector int)__b, (vector int)__a, __d);
7448 #else
7449   return (vector unsigned long long)__builtin_altivec_vperm_4si(
7450       (vector int)__a, (vector int)__b, __c);
7451 #endif
7452 }
7453 
7454 static __inline__ vector bool long long __ATTRS_o_ai
7455 vec_perm(vector bool long long __a, vector bool long long __b,
7456          vector unsigned char __c) {
7457 #ifdef __LITTLE_ENDIAN__
7458   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7459                               255, 255, 255, 255, 255, 255, 255, 255};
7460   __d = vec_xor(__c, __d);
7461   return (vector bool long long)__builtin_altivec_vperm_4si(
7462       (vector int)__b, (vector int)__a, __d);
7463 #else
7464   return (vector bool long long)__builtin_altivec_vperm_4si(
7465       (vector int)__a, (vector int)__b, __c);
7466 #endif
7467 }
7468 
7469 static __inline__ vector double __ATTRS_o_ai
7470 vec_perm(vector double __a, vector double __b, vector unsigned char __c) {
7471 #ifdef __LITTLE_ENDIAN__
7472   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7473                               255, 255, 255, 255, 255, 255, 255, 255};
7474   __d = vec_xor(__c, __d);
7475   return (vector double)__builtin_altivec_vperm_4si((vector int)__b,
7476                                                     (vector int)__a, __d);
7477 #else
7478   return (vector double)__builtin_altivec_vperm_4si((vector int)__a,
7479                                                     (vector int)__b, __c);
7480 #endif
7481 }
7482 #endif
7483 
7484 /* vec_vperm */
7485 
7486 static __inline__ vector signed char __ATTRS_o_ai vec_vperm(
7487     vector signed char __a, vector signed char __b, vector unsigned char __c) {
7488   return vec_perm(__a, __b, __c);
7489 }
7490 
7491 static __inline__ vector unsigned char __ATTRS_o_ai
7492 vec_vperm(vector unsigned char __a, vector unsigned char __b,
7493           vector unsigned char __c) {
7494   return vec_perm(__a, __b, __c);
7495 }
7496 
7497 static __inline__ vector bool char __ATTRS_o_ai vec_vperm(
7498     vector bool char __a, vector bool char __b, vector unsigned char __c) {
7499   return vec_perm(__a, __b, __c);
7500 }
7501 
7502 static __inline__ vector short __ATTRS_o_ai
7503 vec_vperm(vector short __a, vector short __b, vector unsigned char __c) {
7504   return vec_perm(__a, __b, __c);
7505 }
7506 
7507 static __inline__ vector unsigned short __ATTRS_o_ai
7508 vec_vperm(vector unsigned short __a, vector unsigned short __b,
7509           vector unsigned char __c) {
7510   return vec_perm(__a, __b, __c);
7511 }
7512 
7513 static __inline__ vector bool short __ATTRS_o_ai vec_vperm(
7514     vector bool short __a, vector bool short __b, vector unsigned char __c) {
7515   return vec_perm(__a, __b, __c);
7516 }
7517 
7518 static __inline__ vector pixel __ATTRS_o_ai
7519 vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) {
7520   return vec_perm(__a, __b, __c);
7521 }
7522 
7523 static __inline__ vector int __ATTRS_o_ai vec_vperm(vector int __a,
7524                                                     vector int __b,
7525                                                     vector unsigned char __c) {
7526   return vec_perm(__a, __b, __c);
7527 }
7528 
7529 static __inline__ vector unsigned int __ATTRS_o_ai
7530 vec_vperm(vector unsigned int __a, vector unsigned int __b,
7531           vector unsigned char __c) {
7532   return vec_perm(__a, __b, __c);
7533 }
7534 
7535 static __inline__ vector bool int __ATTRS_o_ai
7536 vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
7537   return vec_perm(__a, __b, __c);
7538 }
7539 
7540 static __inline__ vector float __ATTRS_o_ai
7541 vec_vperm(vector float __a, vector float __b, vector unsigned char __c) {
7542   return vec_perm(__a, __b, __c);
7543 }
7544 
7545 #ifdef __VSX__
7546 static __inline__ vector long long __ATTRS_o_ai vec_vperm(
7547     vector long long __a, vector long long __b, vector unsigned char __c) {
7548   return vec_perm(__a, __b, __c);
7549 }
7550 
7551 static __inline__ vector unsigned long long __ATTRS_o_ai
7552 vec_vperm(vector unsigned long long __a, vector unsigned long long __b,
7553           vector unsigned char __c) {
7554   return vec_perm(__a, __b, __c);
7555 }
7556 
7557 static __inline__ vector double __ATTRS_o_ai
7558 vec_vperm(vector double __a, vector double __b, vector unsigned char __c) {
7559   return vec_perm(__a, __b, __c);
7560 }
7561 #endif
7562 
7563 /* vec_re */
7564 
7565 static __inline__ vector float __ATTRS_o_ai vec_re(vector float __a) {
7566 #ifdef __VSX__
7567   return __builtin_vsx_xvresp(__a);
7568 #else
7569   return __builtin_altivec_vrefp(__a);
7570 #endif
7571 }
7572 
7573 #ifdef __VSX__
7574 static __inline__ vector double __ATTRS_o_ai vec_re(vector double __a) {
7575   return __builtin_vsx_xvredp(__a);
7576 }
7577 #endif
7578 
7579 /* vec_vrefp */
7580 
7581 static __inline__ vector float __attribute__((__always_inline__))
7582 vec_vrefp(vector float __a) {
7583   return __builtin_altivec_vrefp(__a);
7584 }
7585 
7586 /* vec_rl */
7587 
7588 static __inline__ vector signed char __ATTRS_o_ai
7589 vec_rl(vector signed char __a, vector unsigned char __b) {
7590   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
7591 }
7592 
7593 static __inline__ vector unsigned char __ATTRS_o_ai
7594 vec_rl(vector unsigned char __a, vector unsigned char __b) {
7595   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
7596 }
7597 
7598 static __inline__ vector short __ATTRS_o_ai vec_rl(vector short __a,
7599                                                    vector unsigned short __b) {
7600   return __builtin_altivec_vrlh(__a, __b);
7601 }
7602 
7603 static __inline__ vector unsigned short __ATTRS_o_ai
7604 vec_rl(vector unsigned short __a, vector unsigned short __b) {
7605   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
7606 }
7607 
7608 static __inline__ vector int __ATTRS_o_ai vec_rl(vector int __a,
7609                                                  vector unsigned int __b) {
7610   return __builtin_altivec_vrlw(__a, __b);
7611 }
7612 
7613 static __inline__ vector unsigned int __ATTRS_o_ai
7614 vec_rl(vector unsigned int __a, vector unsigned int __b) {
7615   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
7616 }
7617 
7618 #ifdef __POWER8_VECTOR__
7619 static __inline__ vector signed long long __ATTRS_o_ai
7620 vec_rl(vector signed long long __a, vector unsigned long long __b) {
7621   return __builtin_altivec_vrld(__a, __b);
7622 }
7623 
7624 static __inline__ vector unsigned long long __ATTRS_o_ai
7625 vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
7626   return __builtin_altivec_vrld(__a, __b);
7627 }
7628 #endif
7629 
7630 /* vec_rlmi */
7631 #ifdef __POWER9_VECTOR__
7632 static __inline__ vector unsigned int __ATTRS_o_ai
7633 vec_rlmi(vector unsigned int __a, vector unsigned int __b,
7634          vector unsigned int __c) {
7635   return __builtin_altivec_vrlwmi(__a, __c, __b);
7636 }
7637 
7638 static __inline__ vector unsigned long long __ATTRS_o_ai
7639 vec_rlmi(vector unsigned long long __a, vector unsigned long long __b,
7640          vector unsigned long long __c) {
7641   return __builtin_altivec_vrldmi(__a, __c, __b);
7642 }
7643 
7644 /* vec_rlnm */
7645 static __inline__ vector unsigned int __ATTRS_o_ai
7646 vec_rlnm(vector unsigned int __a, vector unsigned int __b,
7647          vector unsigned int __c) {
7648   vector unsigned int OneByte = { 0x8, 0x8, 0x8, 0x8 };
7649   return __builtin_altivec_vrlwnm(__a, ((__c << OneByte) | __b));
7650 }
7651 
7652 static __inline__ vector unsigned long long __ATTRS_o_ai
7653 vec_rlnm(vector unsigned long long __a, vector unsigned long long __b,
7654          vector unsigned long long __c) {
7655   vector unsigned long long OneByte = { 0x8, 0x8 };
7656   return __builtin_altivec_vrldnm(__a, ((__c << OneByte) | __b));
7657 }
7658 #endif
7659 
7660 /* vec_vrlb */
7661 
7662 static __inline__ vector signed char __ATTRS_o_ai
7663 vec_vrlb(vector signed char __a, vector unsigned char __b) {
7664   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
7665 }
7666 
7667 static __inline__ vector unsigned char __ATTRS_o_ai
7668 vec_vrlb(vector unsigned char __a, vector unsigned char __b) {
7669   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
7670 }
7671 
7672 /* vec_vrlh */
7673 
7674 static __inline__ vector short __ATTRS_o_ai
7675 vec_vrlh(vector short __a, vector unsigned short __b) {
7676   return __builtin_altivec_vrlh(__a, __b);
7677 }
7678 
7679 static __inline__ vector unsigned short __ATTRS_o_ai
7680 vec_vrlh(vector unsigned short __a, vector unsigned short __b) {
7681   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
7682 }
7683 
7684 /* vec_vrlw */
7685 
7686 static __inline__ vector int __ATTRS_o_ai vec_vrlw(vector int __a,
7687                                                    vector unsigned int __b) {
7688   return __builtin_altivec_vrlw(__a, __b);
7689 }
7690 
7691 static __inline__ vector unsigned int __ATTRS_o_ai
7692 vec_vrlw(vector unsigned int __a, vector unsigned int __b) {
7693   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
7694 }
7695 
7696 /* vec_round */
7697 
7698 static __inline__ vector float __ATTRS_o_ai vec_round(vector float __a) {
7699 #ifdef __VSX__
7700   return __builtin_vsx_xvrspi(__a);
7701 #else
7702   return __builtin_altivec_vrfin(__a);
7703 #endif
7704 }
7705 
7706 #ifdef __VSX__
7707 static __inline__ vector double __ATTRS_o_ai vec_round(vector double __a) {
7708   return __builtin_vsx_xvrdpi(__a);
7709 }
7710 
7711 /* vec_rint */
7712 
7713 static __inline__ vector float __ATTRS_o_ai vec_rint(vector float __a) {
7714   return __builtin_vsx_xvrspic(__a);
7715 }
7716 
7717 static __inline__ vector double __ATTRS_o_ai vec_rint(vector double __a) {
7718   return __builtin_vsx_xvrdpic(__a);
7719 }
7720 
7721 /* vec_nearbyint */
7722 
7723 static __inline__ vector float __ATTRS_o_ai vec_nearbyint(vector float __a) {
7724   return __builtin_vsx_xvrspi(__a);
7725 }
7726 
7727 static __inline__ vector double __ATTRS_o_ai vec_nearbyint(vector double __a) {
7728   return __builtin_vsx_xvrdpi(__a);
7729 }
7730 #endif
7731 
7732 /* vec_vrfin */
7733 
7734 static __inline__ vector float __attribute__((__always_inline__))
7735 vec_vrfin(vector float __a) {
7736   return __builtin_altivec_vrfin(__a);
7737 }
7738 
7739 /* vec_sqrt */
7740 
7741 #ifdef __VSX__
7742 static __inline__ vector float __ATTRS_o_ai vec_sqrt(vector float __a) {
7743   return __builtin_vsx_xvsqrtsp(__a);
7744 }
7745 
7746 static __inline__ vector double __ATTRS_o_ai vec_sqrt(vector double __a) {
7747   return __builtin_vsx_xvsqrtdp(__a);
7748 }
7749 #endif
7750 
7751 /* vec_rsqrte */
7752 
7753 static __inline__ vector float __ATTRS_o_ai vec_rsqrte(vector float __a) {
7754 #ifdef __VSX__
7755   return __builtin_vsx_xvrsqrtesp(__a);
7756 #else
7757   return __builtin_altivec_vrsqrtefp(__a);
7758 #endif
7759 }
7760 
7761 #ifdef __VSX__
7762 static __inline__ vector double __ATTRS_o_ai vec_rsqrte(vector double __a) {
7763   return __builtin_vsx_xvrsqrtedp(__a);
7764 }
7765 #endif
7766 
7767 /* vec_vrsqrtefp */
7768 
7769 static __inline__ __vector float __attribute__((__always_inline__))
7770 vec_vrsqrtefp(vector float __a) {
7771   return __builtin_altivec_vrsqrtefp(__a);
7772 }
7773 
7774 /* vec_sel */
7775 
7776 #define __builtin_altivec_vsel_4si vec_sel
7777 
7778 static __inline__ vector signed char __ATTRS_o_ai vec_sel(
7779     vector signed char __a, vector signed char __b, vector unsigned char __c) {
7780   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
7781 }
7782 
7783 static __inline__ vector signed char __ATTRS_o_ai
7784 vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
7785   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
7786 }
7787 
7788 static __inline__ vector unsigned char __ATTRS_o_ai
7789 vec_sel(vector unsigned char __a, vector unsigned char __b,
7790         vector unsigned char __c) {
7791   return (__a & ~__c) | (__b & __c);
7792 }
7793 
7794 static __inline__ vector unsigned char __ATTRS_o_ai vec_sel(
7795     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
7796   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
7797 }
7798 
7799 static __inline__ vector bool char __ATTRS_o_ai
7800 vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
7801   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
7802 }
7803 
7804 static __inline__ vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
7805                                                         vector bool char __b,
7806                                                         vector bool char __c) {
7807   return (__a & ~__c) | (__b & __c);
7808 }
7809 
7810 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
7811                                                     vector short __b,
7812                                                     vector unsigned short __c) {
7813   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
7814 }
7815 
7816 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
7817                                                     vector short __b,
7818                                                     vector bool short __c) {
7819   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
7820 }
7821 
7822 static __inline__ vector unsigned short __ATTRS_o_ai
7823 vec_sel(vector unsigned short __a, vector unsigned short __b,
7824         vector unsigned short __c) {
7825   return (__a & ~__c) | (__b & __c);
7826 }
7827 
7828 static __inline__ vector unsigned short __ATTRS_o_ai
7829 vec_sel(vector unsigned short __a, vector unsigned short __b,
7830         vector bool short __c) {
7831   return (__a & ~(vector unsigned short)__c) |
7832          (__b & (vector unsigned short)__c);
7833 }
7834 
7835 static __inline__ vector bool short __ATTRS_o_ai vec_sel(
7836     vector bool short __a, vector bool short __b, vector unsigned short __c) {
7837   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
7838 }
7839 
7840 static __inline__ vector bool short __ATTRS_o_ai
7841 vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
7842   return (__a & ~__c) | (__b & __c);
7843 }
7844 
7845 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
7846                                                   vector int __b,
7847                                                   vector unsigned int __c) {
7848   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
7849 }
7850 
7851 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
7852                                                   vector int __b,
7853                                                   vector bool int __c) {
7854   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
7855 }
7856 
7857 static __inline__ vector unsigned int __ATTRS_o_ai vec_sel(
7858     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
7859   return (__a & ~__c) | (__b & __c);
7860 }
7861 
7862 static __inline__ vector unsigned int __ATTRS_o_ai
7863 vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
7864   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
7865 }
7866 
7867 static __inline__ vector bool int __ATTRS_o_ai
7868 vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
7869   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
7870 }
7871 
7872 static __inline__ vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
7873                                                        vector bool int __b,
7874                                                        vector bool int __c) {
7875   return (__a & ~__c) | (__b & __c);
7876 }
7877 
7878 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
7879                                                     vector float __b,
7880                                                     vector unsigned int __c) {
7881   vector int __res = ((vector int)__a & ~(vector int)__c) |
7882                      ((vector int)__b & (vector int)__c);
7883   return (vector float)__res;
7884 }
7885 
7886 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
7887                                                     vector float __b,
7888                                                     vector bool int __c) {
7889   vector int __res = ((vector int)__a & ~(vector int)__c) |
7890                      ((vector int)__b & (vector int)__c);
7891   return (vector float)__res;
7892 }
7893 
7894 #ifdef __VSX__
7895 static __inline__ vector double __ATTRS_o_ai
7896 vec_sel(vector double __a, vector double __b, vector bool long long __c) {
7897   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
7898                            ((vector long long)__b & (vector long long)__c);
7899   return (vector double)__res;
7900 }
7901 
7902 static __inline__ vector double __ATTRS_o_ai
7903 vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
7904   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
7905                            ((vector long long)__b & (vector long long)__c);
7906   return (vector double)__res;
7907 }
7908 #endif
7909 
7910 /* vec_vsel */
7911 
7912 static __inline__ vector signed char __ATTRS_o_ai vec_vsel(
7913     vector signed char __a, vector signed char __b, vector unsigned char __c) {
7914   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
7915 }
7916 
7917 static __inline__ vector signed char __ATTRS_o_ai
7918 vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) {
7919   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
7920 }
7921 
7922 static __inline__ vector unsigned char __ATTRS_o_ai
7923 vec_vsel(vector unsigned char __a, vector unsigned char __b,
7924          vector unsigned char __c) {
7925   return (__a & ~__c) | (__b & __c);
7926 }
7927 
7928 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsel(
7929     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
7930   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
7931 }
7932 
7933 static __inline__ vector bool char __ATTRS_o_ai
7934 vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
7935   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
7936 }
7937 
7938 static __inline__ vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
7939                                                          vector bool char __b,
7940                                                          vector bool char __c) {
7941   return (__a & ~__c) | (__b & __c);
7942 }
7943 
7944 static __inline__ vector short __ATTRS_o_ai
7945 vec_vsel(vector short __a, vector short __b, vector unsigned short __c) {
7946   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
7947 }
7948 
7949 static __inline__ vector short __ATTRS_o_ai vec_vsel(vector short __a,
7950                                                      vector short __b,
7951                                                      vector bool short __c) {
7952   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
7953 }
7954 
7955 static __inline__ vector unsigned short __ATTRS_o_ai
7956 vec_vsel(vector unsigned short __a, vector unsigned short __b,
7957          vector unsigned short __c) {
7958   return (__a & ~__c) | (__b & __c);
7959 }
7960 
7961 static __inline__ vector unsigned short __ATTRS_o_ai
7962 vec_vsel(vector unsigned short __a, vector unsigned short __b,
7963          vector bool short __c) {
7964   return (__a & ~(vector unsigned short)__c) |
7965          (__b & (vector unsigned short)__c);
7966 }
7967 
7968 static __inline__ vector bool short __ATTRS_o_ai vec_vsel(
7969     vector bool short __a, vector bool short __b, vector unsigned short __c) {
7970   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
7971 }
7972 
7973 static __inline__ vector bool short __ATTRS_o_ai
7974 vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) {
7975   return (__a & ~__c) | (__b & __c);
7976 }
7977 
7978 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
7979                                                    vector int __b,
7980                                                    vector unsigned int __c) {
7981   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
7982 }
7983 
7984 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
7985                                                    vector int __b,
7986                                                    vector bool int __c) {
7987   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
7988 }
7989 
7990 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
7991     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
7992   return (__a & ~__c) | (__b & __c);
7993 }
7994 
7995 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
7996     vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
7997   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
7998 }
7999 
8000 static __inline__ vector bool int __ATTRS_o_ai
8001 vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
8002   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
8003 }
8004 
8005 static __inline__ vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
8006                                                         vector bool int __b,
8007                                                         vector bool int __c) {
8008   return (__a & ~__c) | (__b & __c);
8009 }
8010 
8011 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
8012                                                      vector float __b,
8013                                                      vector unsigned int __c) {
8014   vector int __res = ((vector int)__a & ~(vector int)__c) |
8015                      ((vector int)__b & (vector int)__c);
8016   return (vector float)__res;
8017 }
8018 
8019 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
8020                                                      vector float __b,
8021                                                      vector bool int __c) {
8022   vector int __res = ((vector int)__a & ~(vector int)__c) |
8023                      ((vector int)__b & (vector int)__c);
8024   return (vector float)__res;
8025 }
8026 
8027 /* vec_sl */
8028 
8029 // vec_sl does modulo arithmetic on __b first, so __b is allowed to be more
8030 // than the length of __a.
8031 static __inline__ vector unsigned char __ATTRS_o_ai
8032 vec_sl(vector unsigned char __a, vector unsigned char __b) {
8033   return __a << (__b %
8034                  (vector unsigned char)(sizeof(unsigned char) * __CHAR_BIT__));
8035 }
8036 
8037 static __inline__ vector signed char __ATTRS_o_ai
8038 vec_sl(vector signed char __a, vector unsigned char __b) {
8039   return (vector signed char)vec_sl((vector unsigned char)__a, __b);
8040 }
8041 
8042 static __inline__ vector unsigned short __ATTRS_o_ai
8043 vec_sl(vector unsigned short __a, vector unsigned short __b) {
8044   return __a << (__b % (vector unsigned short)(sizeof(unsigned short) *
8045                                                __CHAR_BIT__));
8046 }
8047 
8048 static __inline__ vector short __ATTRS_o_ai vec_sl(vector short __a,
8049                                                    vector unsigned short __b) {
8050   return (vector short)vec_sl((vector unsigned short)__a, __b);
8051 }
8052 
8053 static __inline__ vector unsigned int __ATTRS_o_ai
8054 vec_sl(vector unsigned int __a, vector unsigned int __b) {
8055   return __a << (__b %
8056                  (vector unsigned int)(sizeof(unsigned int) * __CHAR_BIT__));
8057 }
8058 
8059 static __inline__ vector int __ATTRS_o_ai vec_sl(vector int __a,
8060                                                  vector unsigned int __b) {
8061   return (vector int)vec_sl((vector unsigned int)__a, __b);
8062 }
8063 
8064 #ifdef __POWER8_VECTOR__
8065 static __inline__ vector unsigned long long __ATTRS_o_ai
8066 vec_sl(vector unsigned long long __a, vector unsigned long long __b) {
8067   return __a << (__b % (vector unsigned long long)(sizeof(unsigned long long) *
8068                                                    __CHAR_BIT__));
8069 }
8070 
8071 static __inline__ vector long long __ATTRS_o_ai
8072 vec_sl(vector long long __a, vector unsigned long long __b) {
8073   return (vector long long)vec_sl((vector unsigned long long)__a, __b);
8074 }
8075 #endif
8076 
8077 /* vec_vslb */
8078 
8079 #define __builtin_altivec_vslb vec_vslb
8080 
8081 static __inline__ vector signed char __ATTRS_o_ai
8082 vec_vslb(vector signed char __a, vector unsigned char __b) {
8083   return vec_sl(__a, __b);
8084 }
8085 
8086 static __inline__ vector unsigned char __ATTRS_o_ai
8087 vec_vslb(vector unsigned char __a, vector unsigned char __b) {
8088   return vec_sl(__a, __b);
8089 }
8090 
8091 /* vec_vslh */
8092 
8093 #define __builtin_altivec_vslh vec_vslh
8094 
8095 static __inline__ vector short __ATTRS_o_ai
8096 vec_vslh(vector short __a, vector unsigned short __b) {
8097   return vec_sl(__a, __b);
8098 }
8099 
8100 static __inline__ vector unsigned short __ATTRS_o_ai
8101 vec_vslh(vector unsigned short __a, vector unsigned short __b) {
8102   return vec_sl(__a, __b);
8103 }
8104 
8105 /* vec_vslw */
8106 
8107 #define __builtin_altivec_vslw vec_vslw
8108 
8109 static __inline__ vector int __ATTRS_o_ai vec_vslw(vector int __a,
8110                                                    vector unsigned int __b) {
8111   return vec_sl(__a, __b);
8112 }
8113 
8114 static __inline__ vector unsigned int __ATTRS_o_ai
8115 vec_vslw(vector unsigned int __a, vector unsigned int __b) {
8116   return vec_sl(__a, __b);
8117 }
8118 
8119 /* vec_sld */
8120 
8121 #define __builtin_altivec_vsldoi_4si vec_sld
8122 
8123 static __inline__ vector signed char __ATTRS_o_ai vec_sld(
8124     vector signed char __a, vector signed char __b, unsigned const int __c) {
8125   unsigned char __d = __c & 0x0F;
8126 #ifdef __LITTLE_ENDIAN__
8127   return vec_perm(
8128       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8129                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8130                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8131                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8132 #else
8133   return vec_perm(
8134       __a, __b,
8135       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8136                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8137                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8138 #endif
8139 }
8140 
8141 static __inline__ vector unsigned char __ATTRS_o_ai
8142 vec_sld(vector unsigned char __a, vector unsigned char __b,
8143         unsigned const int __c) {
8144   unsigned char __d = __c & 0x0F;
8145 #ifdef __LITTLE_ENDIAN__
8146   return vec_perm(
8147       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8148                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8149                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8150                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8151 #else
8152   return vec_perm(
8153       __a, __b,
8154       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8155                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8156                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8157 #endif
8158 }
8159 
8160 static __inline__ vector bool char __ATTRS_o_ai
8161 vec_sld(vector bool char __a, vector bool char __b, unsigned const int __c) {
8162   unsigned char __d = __c & 0x0F;
8163 #ifdef __LITTLE_ENDIAN__
8164   return vec_perm(
8165       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8166                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8167                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8168                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8169 #else
8170   return vec_perm(
8171       __a, __b,
8172       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8173                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8174                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8175 #endif
8176 }
8177 
8178 static __inline__ vector signed short __ATTRS_o_ai vec_sld(
8179     vector signed short __a, vector signed short __b, unsigned const int __c) {
8180   unsigned char __d = __c & 0x0F;
8181 #ifdef __LITTLE_ENDIAN__
8182   return vec_perm(
8183       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8184                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8185                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8186                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8187 #else
8188   return vec_perm(
8189       __a, __b,
8190       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8191                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8192                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8193 #endif
8194 }
8195 
8196 static __inline__ vector unsigned short __ATTRS_o_ai
8197 vec_sld(vector unsigned short __a, vector unsigned short __b,
8198         unsigned const int __c) {
8199   unsigned char __d = __c & 0x0F;
8200 #ifdef __LITTLE_ENDIAN__
8201   return vec_perm(
8202       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8203                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8204                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8205                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8206 #else
8207   return vec_perm(
8208       __a, __b,
8209       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8210                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8211                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8212 #endif
8213 }
8214 
8215 static __inline__ vector bool short __ATTRS_o_ai
8216 vec_sld(vector bool short __a, vector bool short __b, unsigned const int __c) {
8217   unsigned char __d = __c & 0x0F;
8218 #ifdef __LITTLE_ENDIAN__
8219   return vec_perm(
8220       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8221                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8222                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8223                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8224 #else
8225   return vec_perm(
8226       __a, __b,
8227       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8228                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8229                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8230 #endif
8231 }
8232 
8233 static __inline__ vector pixel __ATTRS_o_ai vec_sld(vector pixel __a,
8234                                                     vector pixel __b,
8235                                                     unsigned const int __c) {
8236   unsigned char __d = __c & 0x0F;
8237 #ifdef __LITTLE_ENDIAN__
8238   return vec_perm(
8239       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8240                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8241                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8242                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8243 #else
8244   return vec_perm(
8245       __a, __b,
8246       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8247                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8248                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8249 #endif
8250 }
8251 
8252 static __inline__ vector signed int __ATTRS_o_ai
8253 vec_sld(vector signed int __a, vector signed int __b, unsigned const int __c) {
8254   unsigned char __d = __c & 0x0F;
8255 #ifdef __LITTLE_ENDIAN__
8256   return vec_perm(
8257       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8258                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8259                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8260                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8261 #else
8262   return vec_perm(
8263       __a, __b,
8264       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8265                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8266                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8267 #endif
8268 }
8269 
8270 static __inline__ vector unsigned int __ATTRS_o_ai vec_sld(
8271     vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
8272   unsigned char __d = __c & 0x0F;
8273 #ifdef __LITTLE_ENDIAN__
8274   return vec_perm(
8275       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8276                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8277                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8278                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8279 #else
8280   return vec_perm(
8281       __a, __b,
8282       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8283                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8284                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8285 #endif
8286 }
8287 
8288 static __inline__ vector bool int __ATTRS_o_ai vec_sld(vector bool int __a,
8289                                                        vector bool int __b,
8290                                                        unsigned const int __c) {
8291   unsigned char __d = __c & 0x0F;
8292 #ifdef __LITTLE_ENDIAN__
8293   return vec_perm(
8294       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8295                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8296                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8297                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8298 #else
8299   return vec_perm(
8300       __a, __b,
8301       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8302                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8303                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8304 #endif
8305 }
8306 
8307 static __inline__ vector float __ATTRS_o_ai vec_sld(vector float __a,
8308                                                     vector float __b,
8309                                                     unsigned const int __c) {
8310   unsigned char __d = __c & 0x0F;
8311 #ifdef __LITTLE_ENDIAN__
8312   return vec_perm(
8313       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8314                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8315                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8316                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8317 #else
8318   return vec_perm(
8319       __a, __b,
8320       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8321                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8322                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8323 #endif
8324 }
8325 
8326 #ifdef __VSX__
8327 static __inline__ vector bool long long __ATTRS_o_ai
8328 vec_sld(vector bool long long __a, vector bool long long __b,
8329         unsigned const int __c) {
8330   unsigned char __d = __c & 0x0F;
8331 #ifdef __LITTLE_ENDIAN__
8332   return vec_perm(
8333       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8334                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8335                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8336                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8337 #else
8338   return vec_perm(
8339       __a, __b,
8340       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8341                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8342                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8343 #endif
8344 }
8345 
8346 static __inline__ vector signed long long __ATTRS_o_ai
8347 vec_sld(vector signed long long __a, vector signed long long __b,
8348         unsigned const int __c) {
8349   unsigned char __d = __c & 0x0F;
8350 #ifdef __LITTLE_ENDIAN__
8351   return vec_perm(
8352       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8353                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8354                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8355                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8356 #else
8357   return vec_perm(
8358       __a, __b,
8359       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8360                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8361                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8362 #endif
8363 }
8364 
8365 static __inline__ vector unsigned long long __ATTRS_o_ai
8366 vec_sld(vector unsigned long long __a, vector unsigned long long __b,
8367         unsigned const int __c) {
8368   unsigned char __d = __c & 0x0F;
8369 #ifdef __LITTLE_ENDIAN__
8370   return vec_perm(
8371       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8372                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8373                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8374                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8375 #else
8376   return vec_perm(
8377       __a, __b,
8378       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8379                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8380                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8381 #endif
8382 }
8383 
8384 static __inline__ vector double __ATTRS_o_ai vec_sld(vector double __a,
8385                                                      vector double __b,
8386                                                      unsigned const int __c) {
8387   unsigned char __d = __c & 0x0F;
8388 #ifdef __LITTLE_ENDIAN__
8389   return vec_perm(
8390       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8391                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8392                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8393                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8394 #else
8395   return vec_perm(
8396       __a, __b,
8397       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8398                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8399                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8400 #endif
8401 }
8402 #endif
8403 
8404 /* vec_sldw */
8405 static __inline__ vector signed char __ATTRS_o_ai vec_sldw(
8406     vector signed char __a, vector signed char __b, unsigned const int __c) {
8407   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8408 }
8409 
8410 static __inline__ vector unsigned char __ATTRS_o_ai
8411 vec_sldw(vector unsigned char __a, vector unsigned char __b,
8412          unsigned const int __c) {
8413   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8414 }
8415 
8416 static __inline__ vector signed short __ATTRS_o_ai vec_sldw(
8417     vector signed short __a, vector signed short __b, unsigned const int __c) {
8418   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8419 }
8420 
8421 static __inline__ vector unsigned short __ATTRS_o_ai
8422 vec_sldw(vector unsigned short __a, vector unsigned short __b,
8423          unsigned const int __c) {
8424   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8425 }
8426 
8427 static __inline__ vector signed int __ATTRS_o_ai
8428 vec_sldw(vector signed int __a, vector signed int __b, unsigned const int __c) {
8429   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8430 }
8431 
8432 static __inline__ vector unsigned int __ATTRS_o_ai vec_sldw(
8433     vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
8434   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8435 }
8436 
8437 #ifdef __VSX__
8438 static __inline__ vector signed long long __ATTRS_o_ai
8439 vec_sldw(vector signed long long __a, vector signed long long __b,
8440          unsigned const int __c) {
8441   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8442 }
8443 
8444 static __inline__ vector unsigned long long __ATTRS_o_ai
8445 vec_sldw(vector unsigned long long __a, vector unsigned long long __b,
8446          unsigned const int __c) {
8447   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8448 }
8449 #endif
8450 
8451 #ifdef __POWER9_VECTOR__
8452 /* vec_slv */
8453 static __inline__ vector unsigned char __ATTRS_o_ai
8454 vec_slv(vector unsigned char __a, vector unsigned char __b) {
8455   return __builtin_altivec_vslv(__a, __b);
8456 }
8457 
8458 /* vec_srv */
8459 static __inline__ vector unsigned char __ATTRS_o_ai
8460 vec_srv(vector unsigned char __a, vector unsigned char __b) {
8461   return __builtin_altivec_vsrv(__a, __b);
8462 }
8463 #endif
8464 
8465 /* vec_vsldoi */
8466 
8467 static __inline__ vector signed char __ATTRS_o_ai
8468 vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) {
8469   unsigned char __d = __c & 0x0F;
8470 #ifdef __LITTLE_ENDIAN__
8471   return vec_perm(
8472       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8473                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8474                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8475                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8476 #else
8477   return vec_perm(
8478       __a, __b,
8479       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8480                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8481                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8482 #endif
8483 }
8484 
8485 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsldoi(
8486     vector unsigned char __a, vector unsigned char __b, unsigned char __c) {
8487   unsigned char __d = __c & 0x0F;
8488 #ifdef __LITTLE_ENDIAN__
8489   return vec_perm(
8490       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8491                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8492                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8493                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8494 #else
8495   return vec_perm(
8496       __a, __b,
8497       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8498                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8499                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8500 #endif
8501 }
8502 
8503 static __inline__ vector short __ATTRS_o_ai vec_vsldoi(vector short __a,
8504                                                        vector short __b,
8505                                                        unsigned char __c) {
8506   unsigned char __d = __c & 0x0F;
8507 #ifdef __LITTLE_ENDIAN__
8508   return vec_perm(
8509       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8510                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8511                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8512                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8513 #else
8514   return vec_perm(
8515       __a, __b,
8516       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8517                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8518                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8519 #endif
8520 }
8521 
8522 static __inline__ vector unsigned short __ATTRS_o_ai vec_vsldoi(
8523     vector unsigned short __a, vector unsigned short __b, unsigned char __c) {
8524   unsigned char __d = __c & 0x0F;
8525 #ifdef __LITTLE_ENDIAN__
8526   return vec_perm(
8527       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8528                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8529                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8530                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8531 #else
8532   return vec_perm(
8533       __a, __b,
8534       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8535                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8536                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8537 #endif
8538 }
8539 
8540 static __inline__ vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a,
8541                                                        vector pixel __b,
8542                                                        unsigned char __c) {
8543   unsigned char __d = __c & 0x0F;
8544 #ifdef __LITTLE_ENDIAN__
8545   return vec_perm(
8546       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8547                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8548                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8549                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8550 #else
8551   return vec_perm(
8552       __a, __b,
8553       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8554                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8555                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8556 #endif
8557 }
8558 
8559 static __inline__ vector int __ATTRS_o_ai vec_vsldoi(vector int __a,
8560                                                      vector int __b,
8561                                                      unsigned char __c) {
8562   unsigned char __d = __c & 0x0F;
8563 #ifdef __LITTLE_ENDIAN__
8564   return vec_perm(
8565       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8566                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8567                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8568                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8569 #else
8570   return vec_perm(
8571       __a, __b,
8572       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8573                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8574                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8575 #endif
8576 }
8577 
8578 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsldoi(
8579     vector unsigned int __a, vector unsigned int __b, unsigned char __c) {
8580   unsigned char __d = __c & 0x0F;
8581 #ifdef __LITTLE_ENDIAN__
8582   return vec_perm(
8583       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8584                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8585                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8586                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8587 #else
8588   return vec_perm(
8589       __a, __b,
8590       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8591                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8592                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8593 #endif
8594 }
8595 
8596 static __inline__ vector float __ATTRS_o_ai vec_vsldoi(vector float __a,
8597                                                        vector float __b,
8598                                                        unsigned char __c) {
8599   unsigned char __d = __c & 0x0F;
8600 #ifdef __LITTLE_ENDIAN__
8601   return vec_perm(
8602       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8603                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
8604                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
8605                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
8606 #else
8607   return vec_perm(
8608       __a, __b,
8609       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8610                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8611                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8612 #endif
8613 }
8614 
8615 /* vec_sll */
8616 
8617 static __inline__ vector signed char __ATTRS_o_ai
8618 vec_sll(vector signed char __a, vector unsigned char __b) {
8619   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8620                                                    (vector int)__b);
8621 }
8622 
8623 static __inline__ vector signed char __ATTRS_o_ai
8624 vec_sll(vector signed char __a, vector unsigned short __b) {
8625   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8626                                                    (vector int)__b);
8627 }
8628 
8629 static __inline__ vector signed char __ATTRS_o_ai
8630 vec_sll(vector signed char __a, vector unsigned int __b) {
8631   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8632                                                    (vector int)__b);
8633 }
8634 
8635 static __inline__ vector unsigned char __ATTRS_o_ai
8636 vec_sll(vector unsigned char __a, vector unsigned char __b) {
8637   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8638                                                      (vector int)__b);
8639 }
8640 
8641 static __inline__ vector unsigned char __ATTRS_o_ai
8642 vec_sll(vector unsigned char __a, vector unsigned short __b) {
8643   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8644                                                      (vector int)__b);
8645 }
8646 
8647 static __inline__ vector unsigned char __ATTRS_o_ai
8648 vec_sll(vector unsigned char __a, vector unsigned int __b) {
8649   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8650                                                      (vector int)__b);
8651 }
8652 
8653 static __inline__ vector bool char __ATTRS_o_ai
8654 vec_sll(vector bool char __a, vector unsigned char __b) {
8655   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8656                                                  (vector int)__b);
8657 }
8658 
8659 static __inline__ vector bool char __ATTRS_o_ai
8660 vec_sll(vector bool char __a, vector unsigned short __b) {
8661   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8662                                                  (vector int)__b);
8663 }
8664 
8665 static __inline__ vector bool char __ATTRS_o_ai
8666 vec_sll(vector bool char __a, vector unsigned int __b) {
8667   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8668                                                  (vector int)__b);
8669 }
8670 
8671 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
8672                                                     vector unsigned char __b) {
8673   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8674 }
8675 
8676 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
8677                                                     vector unsigned short __b) {
8678   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8679 }
8680 
8681 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
8682                                                     vector unsigned int __b) {
8683   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8684 }
8685 
8686 static __inline__ vector unsigned short __ATTRS_o_ai
8687 vec_sll(vector unsigned short __a, vector unsigned char __b) {
8688   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8689                                                       (vector int)__b);
8690 }
8691 
8692 static __inline__ vector unsigned short __ATTRS_o_ai
8693 vec_sll(vector unsigned short __a, vector unsigned short __b) {
8694   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8695                                                       (vector int)__b);
8696 }
8697 
8698 static __inline__ vector unsigned short __ATTRS_o_ai
8699 vec_sll(vector unsigned short __a, vector unsigned int __b) {
8700   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8701                                                       (vector int)__b);
8702 }
8703 
8704 static __inline__ vector bool short __ATTRS_o_ai
8705 vec_sll(vector bool short __a, vector unsigned char __b) {
8706   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8707                                                   (vector int)__b);
8708 }
8709 
8710 static __inline__ vector bool short __ATTRS_o_ai
8711 vec_sll(vector bool short __a, vector unsigned short __b) {
8712   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8713                                                   (vector int)__b);
8714 }
8715 
8716 static __inline__ vector bool short __ATTRS_o_ai
8717 vec_sll(vector bool short __a, vector unsigned int __b) {
8718   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8719                                                   (vector int)__b);
8720 }
8721 
8722 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
8723                                                     vector unsigned char __b) {
8724   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8725 }
8726 
8727 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
8728                                                     vector unsigned short __b) {
8729   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8730 }
8731 
8732 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
8733                                                     vector unsigned int __b) {
8734   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8735 }
8736 
8737 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
8738                                                   vector unsigned char __b) {
8739   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8740 }
8741 
8742 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
8743                                                   vector unsigned short __b) {
8744   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8745 }
8746 
8747 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
8748                                                   vector unsigned int __b) {
8749   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8750 }
8751 
8752 static __inline__ vector unsigned int __ATTRS_o_ai
8753 vec_sll(vector unsigned int __a, vector unsigned char __b) {
8754   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8755                                                     (vector int)__b);
8756 }
8757 
8758 static __inline__ vector unsigned int __ATTRS_o_ai
8759 vec_sll(vector unsigned int __a, vector unsigned short __b) {
8760   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8761                                                     (vector int)__b);
8762 }
8763 
8764 static __inline__ vector unsigned int __ATTRS_o_ai
8765 vec_sll(vector unsigned int __a, vector unsigned int __b) {
8766   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8767                                                     (vector int)__b);
8768 }
8769 
8770 static __inline__ vector bool int __ATTRS_o_ai
8771 vec_sll(vector bool int __a, vector unsigned char __b) {
8772   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8773                                                 (vector int)__b);
8774 }
8775 
8776 static __inline__ vector bool int __ATTRS_o_ai
8777 vec_sll(vector bool int __a, vector unsigned short __b) {
8778   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8779                                                 (vector int)__b);
8780 }
8781 
8782 static __inline__ vector bool int __ATTRS_o_ai
8783 vec_sll(vector bool int __a, vector unsigned int __b) {
8784   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8785                                                 (vector int)__b);
8786 }
8787 
8788 #ifdef __VSX__
8789 static __inline__ vector signed long long __ATTRS_o_ai
8790 vec_sll(vector signed long long __a, vector unsigned char __b) {
8791   return (vector signed long long)__builtin_altivec_vsl((vector int)__a,
8792                                                         (vector int)__b);
8793 }
8794 
8795 static __inline__ vector unsigned long long __ATTRS_o_ai
8796 vec_sll(vector unsigned long long __a, vector unsigned char __b) {
8797   return (vector unsigned long long)__builtin_altivec_vsl((vector int)__a,
8798                                                           (vector int)__b);
8799 }
8800 #endif
8801 
8802 /* vec_vsl */
8803 
8804 static __inline__ vector signed char __ATTRS_o_ai
8805 vec_vsl(vector signed char __a, vector unsigned char __b) {
8806   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8807                                                    (vector int)__b);
8808 }
8809 
8810 static __inline__ vector signed char __ATTRS_o_ai
8811 vec_vsl(vector signed char __a, vector unsigned short __b) {
8812   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8813                                                    (vector int)__b);
8814 }
8815 
8816 static __inline__ vector signed char __ATTRS_o_ai
8817 vec_vsl(vector signed char __a, vector unsigned int __b) {
8818   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8819                                                    (vector int)__b);
8820 }
8821 
8822 static __inline__ vector unsigned char __ATTRS_o_ai
8823 vec_vsl(vector unsigned char __a, vector unsigned char __b) {
8824   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8825                                                      (vector int)__b);
8826 }
8827 
8828 static __inline__ vector unsigned char __ATTRS_o_ai
8829 vec_vsl(vector unsigned char __a, vector unsigned short __b) {
8830   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8831                                                      (vector int)__b);
8832 }
8833 
8834 static __inline__ vector unsigned char __ATTRS_o_ai
8835 vec_vsl(vector unsigned char __a, vector unsigned int __b) {
8836   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8837                                                      (vector int)__b);
8838 }
8839 
8840 static __inline__ vector bool char __ATTRS_o_ai
8841 vec_vsl(vector bool char __a, vector unsigned char __b) {
8842   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8843                                                  (vector int)__b);
8844 }
8845 
8846 static __inline__ vector bool char __ATTRS_o_ai
8847 vec_vsl(vector bool char __a, vector unsigned short __b) {
8848   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8849                                                  (vector int)__b);
8850 }
8851 
8852 static __inline__ vector bool char __ATTRS_o_ai
8853 vec_vsl(vector bool char __a, vector unsigned int __b) {
8854   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8855                                                  (vector int)__b);
8856 }
8857 
8858 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
8859                                                     vector unsigned char __b) {
8860   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8861 }
8862 
8863 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
8864                                                     vector unsigned short __b) {
8865   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8866 }
8867 
8868 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
8869                                                     vector unsigned int __b) {
8870   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8871 }
8872 
8873 static __inline__ vector unsigned short __ATTRS_o_ai
8874 vec_vsl(vector unsigned short __a, vector unsigned char __b) {
8875   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8876                                                       (vector int)__b);
8877 }
8878 
8879 static __inline__ vector unsigned short __ATTRS_o_ai
8880 vec_vsl(vector unsigned short __a, vector unsigned short __b) {
8881   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8882                                                       (vector int)__b);
8883 }
8884 
8885 static __inline__ vector unsigned short __ATTRS_o_ai
8886 vec_vsl(vector unsigned short __a, vector unsigned int __b) {
8887   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8888                                                       (vector int)__b);
8889 }
8890 
8891 static __inline__ vector bool short __ATTRS_o_ai
8892 vec_vsl(vector bool short __a, vector unsigned char __b) {
8893   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8894                                                   (vector int)__b);
8895 }
8896 
8897 static __inline__ vector bool short __ATTRS_o_ai
8898 vec_vsl(vector bool short __a, vector unsigned short __b) {
8899   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8900                                                   (vector int)__b);
8901 }
8902 
8903 static __inline__ vector bool short __ATTRS_o_ai
8904 vec_vsl(vector bool short __a, vector unsigned int __b) {
8905   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8906                                                   (vector int)__b);
8907 }
8908 
8909 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
8910                                                     vector unsigned char __b) {
8911   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8912 }
8913 
8914 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
8915                                                     vector unsigned short __b) {
8916   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8917 }
8918 
8919 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
8920                                                     vector unsigned int __b) {
8921   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8922 }
8923 
8924 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
8925                                                   vector unsigned char __b) {
8926   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8927 }
8928 
8929 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
8930                                                   vector unsigned short __b) {
8931   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8932 }
8933 
8934 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
8935                                                   vector unsigned int __b) {
8936   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8937 }
8938 
8939 static __inline__ vector unsigned int __ATTRS_o_ai
8940 vec_vsl(vector unsigned int __a, vector unsigned char __b) {
8941   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8942                                                     (vector int)__b);
8943 }
8944 
8945 static __inline__ vector unsigned int __ATTRS_o_ai
8946 vec_vsl(vector unsigned int __a, vector unsigned short __b) {
8947   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8948                                                     (vector int)__b);
8949 }
8950 
8951 static __inline__ vector unsigned int __ATTRS_o_ai
8952 vec_vsl(vector unsigned int __a, vector unsigned int __b) {
8953   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8954                                                     (vector int)__b);
8955 }
8956 
8957 static __inline__ vector bool int __ATTRS_o_ai
8958 vec_vsl(vector bool int __a, vector unsigned char __b) {
8959   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8960                                                 (vector int)__b);
8961 }
8962 
8963 static __inline__ vector bool int __ATTRS_o_ai
8964 vec_vsl(vector bool int __a, vector unsigned short __b) {
8965   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8966                                                 (vector int)__b);
8967 }
8968 
8969 static __inline__ vector bool int __ATTRS_o_ai
8970 vec_vsl(vector bool int __a, vector unsigned int __b) {
8971   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8972                                                 (vector int)__b);
8973 }
8974 
8975 /* vec_slo */
8976 
8977 static __inline__ vector signed char __ATTRS_o_ai
8978 vec_slo(vector signed char __a, vector signed char __b) {
8979   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
8980                                                     (vector int)__b);
8981 }
8982 
8983 static __inline__ vector signed char __ATTRS_o_ai
8984 vec_slo(vector signed char __a, vector unsigned char __b) {
8985   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
8986                                                     (vector int)__b);
8987 }
8988 
8989 static __inline__ vector unsigned char __ATTRS_o_ai
8990 vec_slo(vector unsigned char __a, vector signed char __b) {
8991   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
8992                                                       (vector int)__b);
8993 }
8994 
8995 static __inline__ vector unsigned char __ATTRS_o_ai
8996 vec_slo(vector unsigned char __a, vector unsigned char __b) {
8997   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
8998                                                       (vector int)__b);
8999 }
9000 
9001 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
9002                                                     vector signed char __b) {
9003   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9004 }
9005 
9006 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
9007                                                     vector unsigned char __b) {
9008   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9009 }
9010 
9011 static __inline__ vector unsigned short __ATTRS_o_ai
9012 vec_slo(vector unsigned short __a, vector signed char __b) {
9013   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9014                                                        (vector int)__b);
9015 }
9016 
9017 static __inline__ vector unsigned short __ATTRS_o_ai
9018 vec_slo(vector unsigned short __a, vector unsigned char __b) {
9019   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9020                                                        (vector int)__b);
9021 }
9022 
9023 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
9024                                                     vector signed char __b) {
9025   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9026 }
9027 
9028 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
9029                                                     vector unsigned char __b) {
9030   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9031 }
9032 
9033 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
9034                                                   vector signed char __b) {
9035   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9036 }
9037 
9038 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
9039                                                   vector unsigned char __b) {
9040   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9041 }
9042 
9043 static __inline__ vector unsigned int __ATTRS_o_ai
9044 vec_slo(vector unsigned int __a, vector signed char __b) {
9045   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9046                                                      (vector int)__b);
9047 }
9048 
9049 static __inline__ vector unsigned int __ATTRS_o_ai
9050 vec_slo(vector unsigned int __a, vector unsigned char __b) {
9051   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9052                                                      (vector int)__b);
9053 }
9054 
9055 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
9056                                                     vector signed char __b) {
9057   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9058 }
9059 
9060 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
9061                                                     vector unsigned char __b) {
9062   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9063 }
9064 
9065 #ifdef __VSX__
9066 static __inline__ vector signed long long __ATTRS_o_ai
9067 vec_slo(vector signed long long __a, vector signed char __b) {
9068   return (vector signed long long)__builtin_altivec_vslo((vector int)__a,
9069                                                          (vector int)__b);
9070 }
9071 
9072 static __inline__ vector signed long long __ATTRS_o_ai
9073 vec_slo(vector signed long long __a, vector unsigned char __b) {
9074   return (vector signed long long)__builtin_altivec_vslo((vector int)__a,
9075                                                          (vector int)__b);
9076 }
9077 
9078 static __inline__ vector unsigned long long __ATTRS_o_ai
9079 vec_slo(vector unsigned long long __a, vector signed char __b) {
9080   return (vector unsigned long long)__builtin_altivec_vslo((vector int)__a,
9081                                                            (vector int)__b);
9082 }
9083 
9084 static __inline__ vector unsigned long long __ATTRS_o_ai
9085 vec_slo(vector unsigned long long __a, vector unsigned char __b) {
9086   return (vector unsigned long long)__builtin_altivec_vslo((vector int)__a,
9087                                                            (vector int)__b);
9088 }
9089 #endif
9090 
9091 /* vec_vslo */
9092 
9093 static __inline__ vector signed char __ATTRS_o_ai
9094 vec_vslo(vector signed char __a, vector signed char __b) {
9095   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
9096                                                     (vector int)__b);
9097 }
9098 
9099 static __inline__ vector signed char __ATTRS_o_ai
9100 vec_vslo(vector signed char __a, vector unsigned char __b) {
9101   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
9102                                                     (vector int)__b);
9103 }
9104 
9105 static __inline__ vector unsigned char __ATTRS_o_ai
9106 vec_vslo(vector unsigned char __a, vector signed char __b) {
9107   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9108                                                       (vector int)__b);
9109 }
9110 
9111 static __inline__ vector unsigned char __ATTRS_o_ai
9112 vec_vslo(vector unsigned char __a, vector unsigned char __b) {
9113   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9114                                                       (vector int)__b);
9115 }
9116 
9117 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
9118                                                      vector signed char __b) {
9119   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9120 }
9121 
9122 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
9123                                                      vector unsigned char __b) {
9124   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9125 }
9126 
9127 static __inline__ vector unsigned short __ATTRS_o_ai
9128 vec_vslo(vector unsigned short __a, vector signed char __b) {
9129   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9130                                                        (vector int)__b);
9131 }
9132 
9133 static __inline__ vector unsigned short __ATTRS_o_ai
9134 vec_vslo(vector unsigned short __a, vector unsigned char __b) {
9135   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9136                                                        (vector int)__b);
9137 }
9138 
9139 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
9140                                                      vector signed char __b) {
9141   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9142 }
9143 
9144 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
9145                                                      vector unsigned char __b) {
9146   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9147 }
9148 
9149 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
9150                                                    vector signed char __b) {
9151   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9152 }
9153 
9154 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
9155                                                    vector unsigned char __b) {
9156   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9157 }
9158 
9159 static __inline__ vector unsigned int __ATTRS_o_ai
9160 vec_vslo(vector unsigned int __a, vector signed char __b) {
9161   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9162                                                      (vector int)__b);
9163 }
9164 
9165 static __inline__ vector unsigned int __ATTRS_o_ai
9166 vec_vslo(vector unsigned int __a, vector unsigned char __b) {
9167   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9168                                                      (vector int)__b);
9169 }
9170 
9171 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
9172                                                      vector signed char __b) {
9173   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9174 }
9175 
9176 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
9177                                                      vector unsigned char __b) {
9178   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9179 }
9180 
9181 /* vec_splat */
9182 
9183 static __inline__ vector signed char __ATTRS_o_ai
9184 vec_splat(vector signed char __a, unsigned const int __b) {
9185   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
9186 }
9187 
9188 static __inline__ vector unsigned char __ATTRS_o_ai
9189 vec_splat(vector unsigned char __a, unsigned const int __b) {
9190   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
9191 }
9192 
9193 static __inline__ vector bool char __ATTRS_o_ai
9194 vec_splat(vector bool char __a, unsigned const int __b) {
9195   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
9196 }
9197 
9198 static __inline__ vector signed short __ATTRS_o_ai
9199 vec_splat(vector signed short __a, unsigned const int __b) {
9200   unsigned char b0 = (__b & 0x07) * 2;
9201   unsigned char b1 = b0 + 1;
9202   return vec_perm(__a, __a,
9203                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9204                                          b0, b1, b0, b1, b0, b1));
9205 }
9206 
9207 static __inline__ vector unsigned short __ATTRS_o_ai
9208 vec_splat(vector unsigned short __a, unsigned const int __b) {
9209   unsigned char b0 = (__b & 0x07) * 2;
9210   unsigned char b1 = b0 + 1;
9211   return vec_perm(__a, __a,
9212                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9213                                          b0, b1, b0, b1, b0, b1));
9214 }
9215 
9216 static __inline__ vector bool short __ATTRS_o_ai
9217 vec_splat(vector bool short __a, unsigned const int __b) {
9218   unsigned char b0 = (__b & 0x07) * 2;
9219   unsigned char b1 = b0 + 1;
9220   return vec_perm(__a, __a,
9221                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9222                                          b0, b1, b0, b1, b0, b1));
9223 }
9224 
9225 static __inline__ vector pixel __ATTRS_o_ai vec_splat(vector pixel __a,
9226                                                       unsigned const int __b) {
9227   unsigned char b0 = (__b & 0x07) * 2;
9228   unsigned char b1 = b0 + 1;
9229   return vec_perm(__a, __a,
9230                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9231                                          b0, b1, b0, b1, b0, b1));
9232 }
9233 
9234 static __inline__ vector signed int __ATTRS_o_ai
9235 vec_splat(vector signed int __a, unsigned const int __b) {
9236   unsigned char b0 = (__b & 0x03) * 4;
9237   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9238   return vec_perm(__a, __a,
9239                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9240                                          b2, b3, b0, b1, b2, b3));
9241 }
9242 
9243 static __inline__ vector unsigned int __ATTRS_o_ai
9244 vec_splat(vector unsigned int __a, unsigned const int __b) {
9245   unsigned char b0 = (__b & 0x03) * 4;
9246   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9247   return vec_perm(__a, __a,
9248                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9249                                          b2, b3, b0, b1, b2, b3));
9250 }
9251 
9252 static __inline__ vector bool int __ATTRS_o_ai
9253 vec_splat(vector bool int __a, unsigned const int __b) {
9254   unsigned char b0 = (__b & 0x03) * 4;
9255   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9256   return vec_perm(__a, __a,
9257                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9258                                          b2, b3, b0, b1, b2, b3));
9259 }
9260 
9261 static __inline__ vector float __ATTRS_o_ai vec_splat(vector float __a,
9262                                                       unsigned const int __b) {
9263   unsigned char b0 = (__b & 0x03) * 4;
9264   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9265   return vec_perm(__a, __a,
9266                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9267                                          b2, b3, b0, b1, b2, b3));
9268 }
9269 
9270 #ifdef __VSX__
9271 static __inline__ vector double __ATTRS_o_ai vec_splat(vector double __a,
9272                                                        unsigned const int __b) {
9273   unsigned char b0 = (__b & 0x01) * 8;
9274   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9275                 b6 = b0 + 6, b7 = b0 + 7;
9276   return vec_perm(__a, __a,
9277                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9278                                          b2, b3, b4, b5, b6, b7));
9279 }
9280 static __inline__ vector bool long long __ATTRS_o_ai
9281 vec_splat(vector bool long long __a, unsigned const int __b) {
9282   unsigned char b0 = (__b & 0x01) * 8;
9283   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9284                 b6 = b0 + 6, b7 = b0 + 7;
9285   return vec_perm(__a, __a,
9286                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9287                                          b2, b3, b4, b5, b6, b7));
9288 }
9289 static __inline__ vector signed long long __ATTRS_o_ai
9290 vec_splat(vector signed long long __a, unsigned const int __b) {
9291   unsigned char b0 = (__b & 0x01) * 8;
9292   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9293                 b6 = b0 + 6, b7 = b0 + 7;
9294   return vec_perm(__a, __a,
9295                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9296                                          b2, b3, b4, b5, b6, b7));
9297 }
9298 static __inline__ vector unsigned long long __ATTRS_o_ai
9299 vec_splat(vector unsigned long long __a, unsigned const int __b) {
9300   unsigned char b0 = (__b & 0x01) * 8;
9301   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9302                 b6 = b0 + 6, b7 = b0 + 7;
9303   return vec_perm(__a, __a,
9304                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9305                                          b2, b3, b4, b5, b6, b7));
9306 }
9307 #endif
9308 
9309 /* vec_vspltb */
9310 
9311 #define __builtin_altivec_vspltb vec_vspltb
9312 
9313 static __inline__ vector signed char __ATTRS_o_ai
9314 vec_vspltb(vector signed char __a, unsigned char __b) {
9315   return vec_perm(__a, __a, (vector unsigned char)(__b));
9316 }
9317 
9318 static __inline__ vector unsigned char __ATTRS_o_ai
9319 vec_vspltb(vector unsigned char __a, unsigned char __b) {
9320   return vec_perm(__a, __a, (vector unsigned char)(__b));
9321 }
9322 
9323 static __inline__ vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a,
9324                                                            unsigned char __b) {
9325   return vec_perm(__a, __a, (vector unsigned char)(__b));
9326 }
9327 
9328 /* vec_vsplth */
9329 
9330 #define __builtin_altivec_vsplth vec_vsplth
9331 
9332 static __inline__ vector short __ATTRS_o_ai vec_vsplth(vector short __a,
9333                                                        unsigned char __b) {
9334   __b *= 2;
9335   unsigned char b1 = __b + 1;
9336   return vec_perm(__a, __a,
9337                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9338                                          __b, b1, __b, b1, __b, b1, __b, b1));
9339 }
9340 
9341 static __inline__ vector unsigned short __ATTRS_o_ai
9342 vec_vsplth(vector unsigned short __a, unsigned char __b) {
9343   __b *= 2;
9344   unsigned char b1 = __b + 1;
9345   return vec_perm(__a, __a,
9346                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9347                                          __b, b1, __b, b1, __b, b1, __b, b1));
9348 }
9349 
9350 static __inline__ vector bool short __ATTRS_o_ai
9351 vec_vsplth(vector bool short __a, unsigned char __b) {
9352   __b *= 2;
9353   unsigned char b1 = __b + 1;
9354   return vec_perm(__a, __a,
9355                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9356                                          __b, b1, __b, b1, __b, b1, __b, b1));
9357 }
9358 
9359 static __inline__ vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a,
9360                                                        unsigned char __b) {
9361   __b *= 2;
9362   unsigned char b1 = __b + 1;
9363   return vec_perm(__a, __a,
9364                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9365                                          __b, b1, __b, b1, __b, b1, __b, b1));
9366 }
9367 
9368 /* vec_vspltw */
9369 
9370 #define __builtin_altivec_vspltw vec_vspltw
9371 
9372 static __inline__ vector int __ATTRS_o_ai vec_vspltw(vector int __a,
9373                                                      unsigned char __b) {
9374   __b *= 4;
9375   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9376   return vec_perm(__a, __a,
9377                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9378                                          b1, b2, b3, __b, b1, b2, b3));
9379 }
9380 
9381 static __inline__ vector unsigned int __ATTRS_o_ai
9382 vec_vspltw(vector unsigned int __a, unsigned char __b) {
9383   __b *= 4;
9384   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9385   return vec_perm(__a, __a,
9386                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9387                                          b1, b2, b3, __b, b1, b2, b3));
9388 }
9389 
9390 static __inline__ vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a,
9391                                                           unsigned char __b) {
9392   __b *= 4;
9393   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9394   return vec_perm(__a, __a,
9395                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9396                                          b1, b2, b3, __b, b1, b2, b3));
9397 }
9398 
9399 static __inline__ vector float __ATTRS_o_ai vec_vspltw(vector float __a,
9400                                                        unsigned char __b) {
9401   __b *= 4;
9402   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9403   return vec_perm(__a, __a,
9404                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9405                                          b1, b2, b3, __b, b1, b2, b3));
9406 }
9407 
9408 /* vec_splat_s8 */
9409 
9410 #define __builtin_altivec_vspltisb vec_splat_s8
9411 
9412 // FIXME: parameter should be treated as 5-bit signed literal
9413 static __inline__ vector signed char __ATTRS_o_ai
9414 vec_splat_s8(signed char __a) {
9415   return (vector signed char)(__a);
9416 }
9417 
9418 /* vec_vspltisb */
9419 
9420 // FIXME: parameter should be treated as 5-bit signed literal
9421 static __inline__ vector signed char __ATTRS_o_ai
9422 vec_vspltisb(signed char __a) {
9423   return (vector signed char)(__a);
9424 }
9425 
9426 /* vec_splat_s16 */
9427 
9428 #define __builtin_altivec_vspltish vec_splat_s16
9429 
9430 // FIXME: parameter should be treated as 5-bit signed literal
9431 static __inline__ vector short __ATTRS_o_ai vec_splat_s16(signed char __a) {
9432   return (vector short)(__a);
9433 }
9434 
9435 /* vec_vspltish */
9436 
9437 // FIXME: parameter should be treated as 5-bit signed literal
9438 static __inline__ vector short __ATTRS_o_ai vec_vspltish(signed char __a) {
9439   return (vector short)(__a);
9440 }
9441 
9442 /* vec_splat_s32 */
9443 
9444 #define __builtin_altivec_vspltisw vec_splat_s32
9445 
9446 // FIXME: parameter should be treated as 5-bit signed literal
9447 static __inline__ vector int __ATTRS_o_ai vec_splat_s32(signed char __a) {
9448   return (vector int)(__a);
9449 }
9450 
9451 /* vec_vspltisw */
9452 
9453 // FIXME: parameter should be treated as 5-bit signed literal
9454 static __inline__ vector int __ATTRS_o_ai vec_vspltisw(signed char __a) {
9455   return (vector int)(__a);
9456 }
9457 
9458 /* vec_splat_u8 */
9459 
9460 // FIXME: parameter should be treated as 5-bit signed literal
9461 static __inline__ vector unsigned char __ATTRS_o_ai
9462 vec_splat_u8(unsigned char __a) {
9463   return (vector unsigned char)(__a);
9464 }
9465 
9466 /* vec_splat_u16 */
9467 
9468 // FIXME: parameter should be treated as 5-bit signed literal
9469 static __inline__ vector unsigned short __ATTRS_o_ai
9470 vec_splat_u16(signed char __a) {
9471   return (vector unsigned short)(__a);
9472 }
9473 
9474 /* vec_splat_u32 */
9475 
9476 // FIXME: parameter should be treated as 5-bit signed literal
9477 static __inline__ vector unsigned int __ATTRS_o_ai
9478 vec_splat_u32(signed char __a) {
9479   return (vector unsigned int)(__a);
9480 }
9481 
9482 /* vec_sr */
9483 
9484 // vec_sr does modulo arithmetic on __b first, so __b is allowed to be more
9485 // than the length of __a.
9486 static __inline__ vector unsigned char __ATTRS_o_ai
9487 vec_sr(vector unsigned char __a, vector unsigned char __b) {
9488   return __a >>
9489          (__b % (vector unsigned char)(sizeof(unsigned char) * __CHAR_BIT__));
9490 }
9491 
9492 static __inline__ vector signed char __ATTRS_o_ai
9493 vec_sr(vector signed char __a, vector unsigned char __b) {
9494   return (vector signed char)vec_sr((vector unsigned char)__a, __b);
9495 }
9496 
9497 static __inline__ vector unsigned short __ATTRS_o_ai
9498 vec_sr(vector unsigned short __a, vector unsigned short __b) {
9499   return __a >>
9500          (__b % (vector unsigned short)(sizeof(unsigned short) * __CHAR_BIT__));
9501 }
9502 
9503 static __inline__ vector short __ATTRS_o_ai vec_sr(vector short __a,
9504                                                    vector unsigned short __b) {
9505   return (vector short)vec_sr((vector unsigned short)__a, __b);
9506 }
9507 
9508 static __inline__ vector unsigned int __ATTRS_o_ai
9509 vec_sr(vector unsigned int __a, vector unsigned int __b) {
9510   return __a >>
9511          (__b % (vector unsigned int)(sizeof(unsigned int) * __CHAR_BIT__));
9512 }
9513 
9514 static __inline__ vector int __ATTRS_o_ai vec_sr(vector int __a,
9515                                                  vector unsigned int __b) {
9516   return (vector int)vec_sr((vector unsigned int)__a, __b);
9517 }
9518 
9519 #ifdef __POWER8_VECTOR__
9520 static __inline__ vector unsigned long long __ATTRS_o_ai
9521 vec_sr(vector unsigned long long __a, vector unsigned long long __b) {
9522   return __a >> (__b % (vector unsigned long long)(sizeof(unsigned long long) *
9523                                                    __CHAR_BIT__));
9524 }
9525 
9526 static __inline__ vector long long __ATTRS_o_ai
9527 vec_sr(vector long long __a, vector unsigned long long __b) {
9528   return (vector long long)vec_sr((vector unsigned long long)__a, __b);
9529 }
9530 #endif
9531 
9532 /* vec_vsrb */
9533 
9534 #define __builtin_altivec_vsrb vec_vsrb
9535 
9536 static __inline__ vector signed char __ATTRS_o_ai
9537 vec_vsrb(vector signed char __a, vector unsigned char __b) {
9538   return vec_sr(__a, __b);
9539 }
9540 
9541 static __inline__ vector unsigned char __ATTRS_o_ai
9542 vec_vsrb(vector unsigned char __a, vector unsigned char __b) {
9543   return vec_sr(__a, __b);
9544 }
9545 
9546 /* vec_vsrh */
9547 
9548 #define __builtin_altivec_vsrh vec_vsrh
9549 
9550 static __inline__ vector short __ATTRS_o_ai
9551 vec_vsrh(vector short __a, vector unsigned short __b) {
9552   return vec_sr(__a, __b);
9553 }
9554 
9555 static __inline__ vector unsigned short __ATTRS_o_ai
9556 vec_vsrh(vector unsigned short __a, vector unsigned short __b) {
9557   return vec_sr(__a, __b);
9558 }
9559 
9560 /* vec_vsrw */
9561 
9562 #define __builtin_altivec_vsrw vec_vsrw
9563 
9564 static __inline__ vector int __ATTRS_o_ai vec_vsrw(vector int __a,
9565                                                    vector unsigned int __b) {
9566   return vec_sr(__a, __b);
9567 }
9568 
9569 static __inline__ vector unsigned int __ATTRS_o_ai
9570 vec_vsrw(vector unsigned int __a, vector unsigned int __b) {
9571   return vec_sr(__a, __b);
9572 }
9573 
9574 /* vec_sra */
9575 
9576 static __inline__ vector signed char __ATTRS_o_ai
9577 vec_sra(vector signed char __a, vector unsigned char __b) {
9578   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
9579 }
9580 
9581 static __inline__ vector unsigned char __ATTRS_o_ai
9582 vec_sra(vector unsigned char __a, vector unsigned char __b) {
9583   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
9584 }
9585 
9586 static __inline__ vector short __ATTRS_o_ai vec_sra(vector short __a,
9587                                                     vector unsigned short __b) {
9588   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
9589 }
9590 
9591 static __inline__ vector unsigned short __ATTRS_o_ai
9592 vec_sra(vector unsigned short __a, vector unsigned short __b) {
9593   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
9594 }
9595 
9596 static __inline__ vector int __ATTRS_o_ai vec_sra(vector int __a,
9597                                                   vector unsigned int __b) {
9598   return __builtin_altivec_vsraw(__a, __b);
9599 }
9600 
9601 static __inline__ vector unsigned int __ATTRS_o_ai
9602 vec_sra(vector unsigned int __a, vector unsigned int __b) {
9603   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
9604 }
9605 
9606 #ifdef __POWER8_VECTOR__
9607 static __inline__ vector signed long long __ATTRS_o_ai
9608 vec_sra(vector signed long long __a, vector unsigned long long __b) {
9609   return __a >> __b;
9610 }
9611 
9612 static __inline__ vector unsigned long long __ATTRS_o_ai
9613 vec_sra(vector unsigned long long __a, vector unsigned long long __b) {
9614   return (vector unsigned long long)((vector signed long long)__a >> __b);
9615 }
9616 #endif
9617 
9618 /* vec_vsrab */
9619 
9620 static __inline__ vector signed char __ATTRS_o_ai
9621 vec_vsrab(vector signed char __a, vector unsigned char __b) {
9622   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
9623 }
9624 
9625 static __inline__ vector unsigned char __ATTRS_o_ai
9626 vec_vsrab(vector unsigned char __a, vector unsigned char __b) {
9627   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
9628 }
9629 
9630 /* vec_vsrah */
9631 
9632 static __inline__ vector short __ATTRS_o_ai
9633 vec_vsrah(vector short __a, vector unsigned short __b) {
9634   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
9635 }
9636 
9637 static __inline__ vector unsigned short __ATTRS_o_ai
9638 vec_vsrah(vector unsigned short __a, vector unsigned short __b) {
9639   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
9640 }
9641 
9642 /* vec_vsraw */
9643 
9644 static __inline__ vector int __ATTRS_o_ai vec_vsraw(vector int __a,
9645                                                     vector unsigned int __b) {
9646   return __builtin_altivec_vsraw(__a, __b);
9647 }
9648 
9649 static __inline__ vector unsigned int __ATTRS_o_ai
9650 vec_vsraw(vector unsigned int __a, vector unsigned int __b) {
9651   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
9652 }
9653 
9654 /* vec_srl */
9655 
9656 static __inline__ vector signed char __ATTRS_o_ai
9657 vec_srl(vector signed char __a, vector unsigned char __b) {
9658   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9659                                                    (vector int)__b);
9660 }
9661 
9662 static __inline__ vector signed char __ATTRS_o_ai
9663 vec_srl(vector signed char __a, vector unsigned short __b) {
9664   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9665                                                    (vector int)__b);
9666 }
9667 
9668 static __inline__ vector signed char __ATTRS_o_ai
9669 vec_srl(vector signed char __a, vector unsigned int __b) {
9670   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9671                                                    (vector int)__b);
9672 }
9673 
9674 static __inline__ vector unsigned char __ATTRS_o_ai
9675 vec_srl(vector unsigned char __a, vector unsigned char __b) {
9676   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9677                                                      (vector int)__b);
9678 }
9679 
9680 static __inline__ vector unsigned char __ATTRS_o_ai
9681 vec_srl(vector unsigned char __a, vector unsigned short __b) {
9682   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9683                                                      (vector int)__b);
9684 }
9685 
9686 static __inline__ vector unsigned char __ATTRS_o_ai
9687 vec_srl(vector unsigned char __a, vector unsigned int __b) {
9688   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9689                                                      (vector int)__b);
9690 }
9691 
9692 static __inline__ vector bool char __ATTRS_o_ai
9693 vec_srl(vector bool char __a, vector unsigned char __b) {
9694   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9695                                                  (vector int)__b);
9696 }
9697 
9698 static __inline__ vector bool char __ATTRS_o_ai
9699 vec_srl(vector bool char __a, vector unsigned short __b) {
9700   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9701                                                  (vector int)__b);
9702 }
9703 
9704 static __inline__ vector bool char __ATTRS_o_ai
9705 vec_srl(vector bool char __a, vector unsigned int __b) {
9706   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9707                                                  (vector int)__b);
9708 }
9709 
9710 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
9711                                                     vector unsigned char __b) {
9712   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9713 }
9714 
9715 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
9716                                                     vector unsigned short __b) {
9717   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9718 }
9719 
9720 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
9721                                                     vector unsigned int __b) {
9722   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9723 }
9724 
9725 static __inline__ vector unsigned short __ATTRS_o_ai
9726 vec_srl(vector unsigned short __a, vector unsigned char __b) {
9727   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9728                                                       (vector int)__b);
9729 }
9730 
9731 static __inline__ vector unsigned short __ATTRS_o_ai
9732 vec_srl(vector unsigned short __a, vector unsigned short __b) {
9733   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9734                                                       (vector int)__b);
9735 }
9736 
9737 static __inline__ vector unsigned short __ATTRS_o_ai
9738 vec_srl(vector unsigned short __a, vector unsigned int __b) {
9739   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9740                                                       (vector int)__b);
9741 }
9742 
9743 static __inline__ vector bool short __ATTRS_o_ai
9744 vec_srl(vector bool short __a, vector unsigned char __b) {
9745   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9746                                                   (vector int)__b);
9747 }
9748 
9749 static __inline__ vector bool short __ATTRS_o_ai
9750 vec_srl(vector bool short __a, vector unsigned short __b) {
9751   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9752                                                   (vector int)__b);
9753 }
9754 
9755 static __inline__ vector bool short __ATTRS_o_ai
9756 vec_srl(vector bool short __a, vector unsigned int __b) {
9757   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9758                                                   (vector int)__b);
9759 }
9760 
9761 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
9762                                                     vector unsigned char __b) {
9763   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9764 }
9765 
9766 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
9767                                                     vector unsigned short __b) {
9768   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9769 }
9770 
9771 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
9772                                                     vector unsigned int __b) {
9773   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9774 }
9775 
9776 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
9777                                                   vector unsigned char __b) {
9778   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9779 }
9780 
9781 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
9782                                                   vector unsigned short __b) {
9783   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9784 }
9785 
9786 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
9787                                                   vector unsigned int __b) {
9788   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9789 }
9790 
9791 static __inline__ vector unsigned int __ATTRS_o_ai
9792 vec_srl(vector unsigned int __a, vector unsigned char __b) {
9793   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9794                                                     (vector int)__b);
9795 }
9796 
9797 static __inline__ vector unsigned int __ATTRS_o_ai
9798 vec_srl(vector unsigned int __a, vector unsigned short __b) {
9799   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9800                                                     (vector int)__b);
9801 }
9802 
9803 static __inline__ vector unsigned int __ATTRS_o_ai
9804 vec_srl(vector unsigned int __a, vector unsigned int __b) {
9805   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9806                                                     (vector int)__b);
9807 }
9808 
9809 static __inline__ vector bool int __ATTRS_o_ai
9810 vec_srl(vector bool int __a, vector unsigned char __b) {
9811   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
9812                                                 (vector int)__b);
9813 }
9814 
9815 static __inline__ vector bool int __ATTRS_o_ai
9816 vec_srl(vector bool int __a, vector unsigned short __b) {
9817   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
9818                                                 (vector int)__b);
9819 }
9820 
9821 static __inline__ vector bool int __ATTRS_o_ai
9822 vec_srl(vector bool int __a, vector unsigned int __b) {
9823   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
9824                                                 (vector int)__b);
9825 }
9826 
9827 #ifdef __VSX__
9828 static __inline__ vector signed long long __ATTRS_o_ai
9829 vec_srl(vector signed long long __a, vector unsigned char __b) {
9830   return (vector signed long long)__builtin_altivec_vsr((vector int)__a,
9831                                                         (vector int)__b);
9832 }
9833 
9834 static __inline__ vector unsigned long long __ATTRS_o_ai
9835 vec_srl(vector unsigned long long __a, vector unsigned char __b) {
9836   return (vector unsigned long long)__builtin_altivec_vsr((vector int)__a,
9837                                                           (vector int)__b);
9838 }
9839 #endif
9840 
9841 /* vec_vsr */
9842 
9843 static __inline__ vector signed char __ATTRS_o_ai
9844 vec_vsr(vector signed char __a, vector unsigned char __b) {
9845   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9846                                                    (vector int)__b);
9847 }
9848 
9849 static __inline__ vector signed char __ATTRS_o_ai
9850 vec_vsr(vector signed char __a, vector unsigned short __b) {
9851   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9852                                                    (vector int)__b);
9853 }
9854 
9855 static __inline__ vector signed char __ATTRS_o_ai
9856 vec_vsr(vector signed char __a, vector unsigned int __b) {
9857   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9858                                                    (vector int)__b);
9859 }
9860 
9861 static __inline__ vector unsigned char __ATTRS_o_ai
9862 vec_vsr(vector unsigned char __a, vector unsigned char __b) {
9863   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9864                                                      (vector int)__b);
9865 }
9866 
9867 static __inline__ vector unsigned char __ATTRS_o_ai
9868 vec_vsr(vector unsigned char __a, vector unsigned short __b) {
9869   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9870                                                      (vector int)__b);
9871 }
9872 
9873 static __inline__ vector unsigned char __ATTRS_o_ai
9874 vec_vsr(vector unsigned char __a, vector unsigned int __b) {
9875   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9876                                                      (vector int)__b);
9877 }
9878 
9879 static __inline__ vector bool char __ATTRS_o_ai
9880 vec_vsr(vector bool char __a, vector unsigned char __b) {
9881   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9882                                                  (vector int)__b);
9883 }
9884 
9885 static __inline__ vector bool char __ATTRS_o_ai
9886 vec_vsr(vector bool char __a, vector unsigned short __b) {
9887   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9888                                                  (vector int)__b);
9889 }
9890 
9891 static __inline__ vector bool char __ATTRS_o_ai
9892 vec_vsr(vector bool char __a, vector unsigned int __b) {
9893   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9894                                                  (vector int)__b);
9895 }
9896 
9897 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
9898                                                     vector unsigned char __b) {
9899   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9900 }
9901 
9902 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
9903                                                     vector unsigned short __b) {
9904   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9905 }
9906 
9907 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
9908                                                     vector unsigned int __b) {
9909   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9910 }
9911 
9912 static __inline__ vector unsigned short __ATTRS_o_ai
9913 vec_vsr(vector unsigned short __a, vector unsigned char __b) {
9914   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9915                                                       (vector int)__b);
9916 }
9917 
9918 static __inline__ vector unsigned short __ATTRS_o_ai
9919 vec_vsr(vector unsigned short __a, vector unsigned short __b) {
9920   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9921                                                       (vector int)__b);
9922 }
9923 
9924 static __inline__ vector unsigned short __ATTRS_o_ai
9925 vec_vsr(vector unsigned short __a, vector unsigned int __b) {
9926   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9927                                                       (vector int)__b);
9928 }
9929 
9930 static __inline__ vector bool short __ATTRS_o_ai
9931 vec_vsr(vector bool short __a, vector unsigned char __b) {
9932   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9933                                                   (vector int)__b);
9934 }
9935 
9936 static __inline__ vector bool short __ATTRS_o_ai
9937 vec_vsr(vector bool short __a, vector unsigned short __b) {
9938   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9939                                                   (vector int)__b);
9940 }
9941 
9942 static __inline__ vector bool short __ATTRS_o_ai
9943 vec_vsr(vector bool short __a, vector unsigned int __b) {
9944   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9945                                                   (vector int)__b);
9946 }
9947 
9948 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
9949                                                     vector unsigned char __b) {
9950   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9951 }
9952 
9953 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
9954                                                     vector unsigned short __b) {
9955   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9956 }
9957 
9958 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
9959                                                     vector unsigned int __b) {
9960   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9961 }
9962 
9963 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
9964                                                   vector unsigned char __b) {
9965   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9966 }
9967 
9968 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
9969                                                   vector unsigned short __b) {
9970   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9971 }
9972 
9973 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
9974                                                   vector unsigned int __b) {
9975   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9976 }
9977 
9978 static __inline__ vector unsigned int __ATTRS_o_ai
9979 vec_vsr(vector unsigned int __a, vector unsigned char __b) {
9980   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9981                                                     (vector int)__b);
9982 }
9983 
9984 static __inline__ vector unsigned int __ATTRS_o_ai
9985 vec_vsr(vector unsigned int __a, vector unsigned short __b) {
9986   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9987                                                     (vector int)__b);
9988 }
9989 
9990 static __inline__ vector unsigned int __ATTRS_o_ai
9991 vec_vsr(vector unsigned int __a, vector unsigned int __b) {
9992   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9993                                                     (vector int)__b);
9994 }
9995 
9996 static __inline__ vector bool int __ATTRS_o_ai
9997 vec_vsr(vector bool int __a, vector unsigned char __b) {
9998   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
9999                                                 (vector int)__b);
10000 }
10001 
10002 static __inline__ vector bool int __ATTRS_o_ai
10003 vec_vsr(vector bool int __a, vector unsigned short __b) {
10004   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10005                                                 (vector int)__b);
10006 }
10007 
10008 static __inline__ vector bool int __ATTRS_o_ai
10009 vec_vsr(vector bool int __a, vector unsigned int __b) {
10010   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10011                                                 (vector int)__b);
10012 }
10013 
10014 /* vec_sro */
10015 
10016 static __inline__ vector signed char __ATTRS_o_ai
10017 vec_sro(vector signed char __a, vector signed char __b) {
10018   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10019                                                     (vector int)__b);
10020 }
10021 
10022 static __inline__ vector signed char __ATTRS_o_ai
10023 vec_sro(vector signed char __a, vector unsigned char __b) {
10024   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10025                                                     (vector int)__b);
10026 }
10027 
10028 static __inline__ vector unsigned char __ATTRS_o_ai
10029 vec_sro(vector unsigned char __a, vector signed char __b) {
10030   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10031                                                       (vector int)__b);
10032 }
10033 
10034 static __inline__ vector unsigned char __ATTRS_o_ai
10035 vec_sro(vector unsigned char __a, vector unsigned char __b) {
10036   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10037                                                       (vector int)__b);
10038 }
10039 
10040 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
10041                                                     vector signed char __b) {
10042   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10043 }
10044 
10045 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
10046                                                     vector unsigned char __b) {
10047   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10048 }
10049 
10050 static __inline__ vector unsigned short __ATTRS_o_ai
10051 vec_sro(vector unsigned short __a, vector signed char __b) {
10052   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10053                                                        (vector int)__b);
10054 }
10055 
10056 static __inline__ vector unsigned short __ATTRS_o_ai
10057 vec_sro(vector unsigned short __a, vector unsigned char __b) {
10058   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10059                                                        (vector int)__b);
10060 }
10061 
10062 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
10063                                                     vector signed char __b) {
10064   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10065 }
10066 
10067 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
10068                                                     vector unsigned char __b) {
10069   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10070 }
10071 
10072 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
10073                                                   vector signed char __b) {
10074   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10075 }
10076 
10077 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
10078                                                   vector unsigned char __b) {
10079   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10080 }
10081 
10082 static __inline__ vector unsigned int __ATTRS_o_ai
10083 vec_sro(vector unsigned int __a, vector signed char __b) {
10084   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10085                                                      (vector int)__b);
10086 }
10087 
10088 static __inline__ vector unsigned int __ATTRS_o_ai
10089 vec_sro(vector unsigned int __a, vector unsigned char __b) {
10090   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10091                                                      (vector int)__b);
10092 }
10093 
10094 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
10095                                                     vector signed char __b) {
10096   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10097 }
10098 
10099 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
10100                                                     vector unsigned char __b) {
10101   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10102 }
10103 
10104 #ifdef __VSX__
10105 static __inline__ vector signed long long __ATTRS_o_ai
10106 vec_sro(vector signed long long __a, vector signed char __b) {
10107   return (vector signed long long)__builtin_altivec_vsro((vector int)__a,
10108                                                          (vector int)__b);
10109 }
10110 
10111 static __inline__ vector signed long long __ATTRS_o_ai
10112 vec_sro(vector signed long long __a, vector unsigned char __b) {
10113   return (vector signed long long)__builtin_altivec_vsro((vector int)__a,
10114                                                          (vector int)__b);
10115 }
10116 
10117 static __inline__ vector unsigned long long __ATTRS_o_ai
10118 vec_sro(vector unsigned long long __a, vector signed char __b) {
10119   return (vector unsigned long long)__builtin_altivec_vsro((vector int)__a,
10120                                                            (vector int)__b);
10121 }
10122 
10123 static __inline__ vector unsigned long long __ATTRS_o_ai
10124 vec_sro(vector unsigned long long __a, vector unsigned char __b) {
10125   return (vector unsigned long long)__builtin_altivec_vsro((vector int)__a,
10126                                                            (vector int)__b);
10127 }
10128 #endif
10129 
10130 /* vec_vsro */
10131 
10132 static __inline__ vector signed char __ATTRS_o_ai
10133 vec_vsro(vector signed char __a, vector signed char __b) {
10134   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10135                                                     (vector int)__b);
10136 }
10137 
10138 static __inline__ vector signed char __ATTRS_o_ai
10139 vec_vsro(vector signed char __a, vector unsigned char __b) {
10140   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10141                                                     (vector int)__b);
10142 }
10143 
10144 static __inline__ vector unsigned char __ATTRS_o_ai
10145 vec_vsro(vector unsigned char __a, vector signed char __b) {
10146   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10147                                                       (vector int)__b);
10148 }
10149 
10150 static __inline__ vector unsigned char __ATTRS_o_ai
10151 vec_vsro(vector unsigned char __a, vector unsigned char __b) {
10152   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10153                                                       (vector int)__b);
10154 }
10155 
10156 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
10157                                                      vector signed char __b) {
10158   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10159 }
10160 
10161 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
10162                                                      vector unsigned char __b) {
10163   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10164 }
10165 
10166 static __inline__ vector unsigned short __ATTRS_o_ai
10167 vec_vsro(vector unsigned short __a, vector signed char __b) {
10168   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10169                                                        (vector int)__b);
10170 }
10171 
10172 static __inline__ vector unsigned short __ATTRS_o_ai
10173 vec_vsro(vector unsigned short __a, vector unsigned char __b) {
10174   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10175                                                        (vector int)__b);
10176 }
10177 
10178 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
10179                                                      vector signed char __b) {
10180   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10181 }
10182 
10183 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
10184                                                      vector unsigned char __b) {
10185   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10186 }
10187 
10188 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
10189                                                    vector signed char __b) {
10190   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10191 }
10192 
10193 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
10194                                                    vector unsigned char __b) {
10195   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10196 }
10197 
10198 static __inline__ vector unsigned int __ATTRS_o_ai
10199 vec_vsro(vector unsigned int __a, vector signed char __b) {
10200   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10201                                                      (vector int)__b);
10202 }
10203 
10204 static __inline__ vector unsigned int __ATTRS_o_ai
10205 vec_vsro(vector unsigned int __a, vector unsigned char __b) {
10206   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10207                                                      (vector int)__b);
10208 }
10209 
10210 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
10211                                                      vector signed char __b) {
10212   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10213 }
10214 
10215 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
10216                                                      vector unsigned char __b) {
10217   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10218 }
10219 
10220 /* vec_st */
10221 
10222 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
10223                                            vector signed char *__c) {
10224   __builtin_altivec_stvx((vector int)__a, __b, __c);
10225 }
10226 
10227 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
10228                                            signed char *__c) {
10229   __builtin_altivec_stvx((vector int)__a, __b, __c);
10230 }
10231 
10232 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
10233                                            vector unsigned char *__c) {
10234   __builtin_altivec_stvx((vector int)__a, __b, __c);
10235 }
10236 
10237 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
10238                                            unsigned char *__c) {
10239   __builtin_altivec_stvx((vector int)__a, __b, __c);
10240 }
10241 
10242 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
10243                                            signed char *__c) {
10244   __builtin_altivec_stvx((vector int)__a, __b, __c);
10245 }
10246 
10247 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
10248                                            unsigned char *__c) {
10249   __builtin_altivec_stvx((vector int)__a, __b, __c);
10250 }
10251 
10252 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
10253                                            vector bool char *__c) {
10254   __builtin_altivec_stvx((vector int)__a, __b, __c);
10255 }
10256 
10257 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
10258                                            vector short *__c) {
10259   __builtin_altivec_stvx((vector int)__a, __b, __c);
10260 }
10261 
10262 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
10263                                            short *__c) {
10264   __builtin_altivec_stvx((vector int)__a, __b, __c);
10265 }
10266 
10267 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
10268                                            vector unsigned short *__c) {
10269   __builtin_altivec_stvx((vector int)__a, __b, __c);
10270 }
10271 
10272 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
10273                                            unsigned short *__c) {
10274   __builtin_altivec_stvx((vector int)__a, __b, __c);
10275 }
10276 
10277 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
10278                                            short *__c) {
10279   __builtin_altivec_stvx((vector int)__a, __b, __c);
10280 }
10281 
10282 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
10283                                            unsigned short *__c) {
10284   __builtin_altivec_stvx((vector int)__a, __b, __c);
10285 }
10286 
10287 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
10288                                            vector bool short *__c) {
10289   __builtin_altivec_stvx((vector int)__a, __b, __c);
10290 }
10291 
10292 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
10293                                            short *__c) {
10294   __builtin_altivec_stvx((vector int)__a, __b, __c);
10295 }
10296 
10297 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
10298                                            unsigned short *__c) {
10299   __builtin_altivec_stvx((vector int)__a, __b, __c);
10300 }
10301 
10302 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
10303                                            vector pixel *__c) {
10304   __builtin_altivec_stvx((vector int)__a, __b, __c);
10305 }
10306 
10307 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b,
10308                                            vector int *__c) {
10309   __builtin_altivec_stvx(__a, __b, __c);
10310 }
10311 
10312 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) {
10313   __builtin_altivec_stvx(__a, __b, __c);
10314 }
10315 
10316 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
10317                                            vector unsigned int *__c) {
10318   __builtin_altivec_stvx((vector int)__a, __b, __c);
10319 }
10320 
10321 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
10322                                            unsigned int *__c) {
10323   __builtin_altivec_stvx((vector int)__a, __b, __c);
10324 }
10325 
10326 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
10327                                            int *__c) {
10328   __builtin_altivec_stvx((vector int)__a, __b, __c);
10329 }
10330 
10331 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
10332                                            unsigned int *__c) {
10333   __builtin_altivec_stvx((vector int)__a, __b, __c);
10334 }
10335 
10336 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
10337                                            vector bool int *__c) {
10338   __builtin_altivec_stvx((vector int)__a, __b, __c);
10339 }
10340 
10341 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
10342                                            vector float *__c) {
10343   __builtin_altivec_stvx((vector int)__a, __b, __c);
10344 }
10345 
10346 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
10347                                            float *__c) {
10348   __builtin_altivec_stvx((vector int)__a, __b, __c);
10349 }
10350 
10351 /* vec_stvx */
10352 
10353 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
10354                                              vector signed char *__c) {
10355   __builtin_altivec_stvx((vector int)__a, __b, __c);
10356 }
10357 
10358 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
10359                                              signed char *__c) {
10360   __builtin_altivec_stvx((vector int)__a, __b, __c);
10361 }
10362 
10363 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
10364                                              vector unsigned char *__c) {
10365   __builtin_altivec_stvx((vector int)__a, __b, __c);
10366 }
10367 
10368 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
10369                                              unsigned char *__c) {
10370   __builtin_altivec_stvx((vector int)__a, __b, __c);
10371 }
10372 
10373 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
10374                                              signed char *__c) {
10375   __builtin_altivec_stvx((vector int)__a, __b, __c);
10376 }
10377 
10378 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
10379                                              unsigned char *__c) {
10380   __builtin_altivec_stvx((vector int)__a, __b, __c);
10381 }
10382 
10383 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
10384                                              vector bool char *__c) {
10385   __builtin_altivec_stvx((vector int)__a, __b, __c);
10386 }
10387 
10388 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
10389                                              vector short *__c) {
10390   __builtin_altivec_stvx((vector int)__a, __b, __c);
10391 }
10392 
10393 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
10394                                              short *__c) {
10395   __builtin_altivec_stvx((vector int)__a, __b, __c);
10396 }
10397 
10398 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
10399                                              vector unsigned short *__c) {
10400   __builtin_altivec_stvx((vector int)__a, __b, __c);
10401 }
10402 
10403 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
10404                                              unsigned short *__c) {
10405   __builtin_altivec_stvx((vector int)__a, __b, __c);
10406 }
10407 
10408 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
10409                                              short *__c) {
10410   __builtin_altivec_stvx((vector int)__a, __b, __c);
10411 }
10412 
10413 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
10414                                              unsigned short *__c) {
10415   __builtin_altivec_stvx((vector int)__a, __b, __c);
10416 }
10417 
10418 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
10419                                              vector bool short *__c) {
10420   __builtin_altivec_stvx((vector int)__a, __b, __c);
10421 }
10422 
10423 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
10424                                              short *__c) {
10425   __builtin_altivec_stvx((vector int)__a, __b, __c);
10426 }
10427 
10428 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
10429                                              unsigned short *__c) {
10430   __builtin_altivec_stvx((vector int)__a, __b, __c);
10431 }
10432 
10433 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
10434                                              vector pixel *__c) {
10435   __builtin_altivec_stvx((vector int)__a, __b, __c);
10436 }
10437 
10438 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
10439                                              vector int *__c) {
10440   __builtin_altivec_stvx(__a, __b, __c);
10441 }
10442 
10443 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
10444                                              int *__c) {
10445   __builtin_altivec_stvx(__a, __b, __c);
10446 }
10447 
10448 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
10449                                              vector unsigned int *__c) {
10450   __builtin_altivec_stvx((vector int)__a, __b, __c);
10451 }
10452 
10453 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
10454                                              unsigned int *__c) {
10455   __builtin_altivec_stvx((vector int)__a, __b, __c);
10456 }
10457 
10458 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
10459                                              int *__c) {
10460   __builtin_altivec_stvx((vector int)__a, __b, __c);
10461 }
10462 
10463 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
10464                                              unsigned int *__c) {
10465   __builtin_altivec_stvx((vector int)__a, __b, __c);
10466 }
10467 
10468 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
10469                                              vector bool int *__c) {
10470   __builtin_altivec_stvx((vector int)__a, __b, __c);
10471 }
10472 
10473 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
10474                                              vector float *__c) {
10475   __builtin_altivec_stvx((vector int)__a, __b, __c);
10476 }
10477 
10478 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
10479                                              float *__c) {
10480   __builtin_altivec_stvx((vector int)__a, __b, __c);
10481 }
10482 
10483 /* vec_ste */
10484 
10485 static __inline__ void __ATTRS_o_ai vec_ste(vector signed char __a, int __b,
10486                                             signed char *__c) {
10487   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10488 }
10489 
10490 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b,
10491                                             unsigned char *__c) {
10492   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10493 }
10494 
10495 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
10496                                             signed char *__c) {
10497   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10498 }
10499 
10500 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
10501                                             unsigned char *__c) {
10502   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10503 }
10504 
10505 static __inline__ void __ATTRS_o_ai vec_ste(vector short __a, int __b,
10506                                             short *__c) {
10507   __builtin_altivec_stvehx(__a, __b, __c);
10508 }
10509 
10510 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b,
10511                                             unsigned short *__c) {
10512   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10513 }
10514 
10515 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
10516                                             short *__c) {
10517   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10518 }
10519 
10520 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
10521                                             unsigned short *__c) {
10522   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10523 }
10524 
10525 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
10526                                             short *__c) {
10527   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10528 }
10529 
10530 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
10531                                             unsigned short *__c) {
10532   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10533 }
10534 
10535 static __inline__ void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) {
10536   __builtin_altivec_stvewx(__a, __b, __c);
10537 }
10538 
10539 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b,
10540                                             unsigned int *__c) {
10541   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10542 }
10543 
10544 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
10545                                             int *__c) {
10546   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10547 }
10548 
10549 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
10550                                             unsigned int *__c) {
10551   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10552 }
10553 
10554 static __inline__ void __ATTRS_o_ai vec_ste(vector float __a, int __b,
10555                                             float *__c) {
10556   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10557 }
10558 
10559 /* vec_stvebx */
10560 
10561 static __inline__ void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b,
10562                                                signed char *__c) {
10563   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10564 }
10565 
10566 static __inline__ void __ATTRS_o_ai vec_stvebx(vector unsigned char __a,
10567                                                int __b, unsigned char *__c) {
10568   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10569 }
10570 
10571 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
10572                                                signed char *__c) {
10573   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10574 }
10575 
10576 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
10577                                                unsigned char *__c) {
10578   __builtin_altivec_stvebx((vector char)__a, __b, __c);
10579 }
10580 
10581 /* vec_stvehx */
10582 
10583 static __inline__ void __ATTRS_o_ai vec_stvehx(vector short __a, int __b,
10584                                                short *__c) {
10585   __builtin_altivec_stvehx(__a, __b, __c);
10586 }
10587 
10588 static __inline__ void __ATTRS_o_ai vec_stvehx(vector unsigned short __a,
10589                                                int __b, unsigned short *__c) {
10590   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10591 }
10592 
10593 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
10594                                                short *__c) {
10595   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10596 }
10597 
10598 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
10599                                                unsigned short *__c) {
10600   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10601 }
10602 
10603 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
10604                                                short *__c) {
10605   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10606 }
10607 
10608 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
10609                                                unsigned short *__c) {
10610   __builtin_altivec_stvehx((vector short)__a, __b, __c);
10611 }
10612 
10613 /* vec_stvewx */
10614 
10615 static __inline__ void __ATTRS_o_ai vec_stvewx(vector int __a, int __b,
10616                                                int *__c) {
10617   __builtin_altivec_stvewx(__a, __b, __c);
10618 }
10619 
10620 static __inline__ void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b,
10621                                                unsigned int *__c) {
10622   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10623 }
10624 
10625 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
10626                                                int *__c) {
10627   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10628 }
10629 
10630 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
10631                                                unsigned int *__c) {
10632   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10633 }
10634 
10635 static __inline__ void __ATTRS_o_ai vec_stvewx(vector float __a, int __b,
10636                                                float *__c) {
10637   __builtin_altivec_stvewx((vector int)__a, __b, __c);
10638 }
10639 
10640 /* vec_stl */
10641 
10642 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
10643                                             vector signed char *__c) {
10644   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10645 }
10646 
10647 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
10648                                             signed char *__c) {
10649   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10650 }
10651 
10652 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
10653                                             vector unsigned char *__c) {
10654   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10655 }
10656 
10657 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
10658                                             unsigned char *__c) {
10659   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10660 }
10661 
10662 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
10663                                             signed char *__c) {
10664   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10665 }
10666 
10667 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
10668                                             unsigned char *__c) {
10669   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10670 }
10671 
10672 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
10673                                             vector bool char *__c) {
10674   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10675 }
10676 
10677 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
10678                                             vector short *__c) {
10679   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10680 }
10681 
10682 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
10683                                             short *__c) {
10684   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10685 }
10686 
10687 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
10688                                             vector unsigned short *__c) {
10689   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10690 }
10691 
10692 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
10693                                             unsigned short *__c) {
10694   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10695 }
10696 
10697 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
10698                                             short *__c) {
10699   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10700 }
10701 
10702 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
10703                                             unsigned short *__c) {
10704   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10705 }
10706 
10707 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
10708                                             vector bool short *__c) {
10709   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10710 }
10711 
10712 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
10713                                             short *__c) {
10714   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10715 }
10716 
10717 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
10718                                             unsigned short *__c) {
10719   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10720 }
10721 
10722 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
10723                                             vector pixel *__c) {
10724   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10725 }
10726 
10727 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b,
10728                                             vector int *__c) {
10729   __builtin_altivec_stvxl(__a, __b, __c);
10730 }
10731 
10732 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) {
10733   __builtin_altivec_stvxl(__a, __b, __c);
10734 }
10735 
10736 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
10737                                             vector unsigned int *__c) {
10738   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10739 }
10740 
10741 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
10742                                             unsigned int *__c) {
10743   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10744 }
10745 
10746 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
10747                                             int *__c) {
10748   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10749 }
10750 
10751 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
10752                                             unsigned int *__c) {
10753   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10754 }
10755 
10756 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
10757                                             vector bool int *__c) {
10758   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10759 }
10760 
10761 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
10762                                             vector float *__c) {
10763   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10764 }
10765 
10766 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
10767                                             float *__c) {
10768   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10769 }
10770 
10771 /* vec_stvxl */
10772 
10773 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
10774                                               vector signed char *__c) {
10775   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10776 }
10777 
10778 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
10779                                               signed char *__c) {
10780   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10781 }
10782 
10783 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
10784                                               vector unsigned char *__c) {
10785   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10786 }
10787 
10788 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
10789                                               unsigned char *__c) {
10790   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10791 }
10792 
10793 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
10794                                               signed char *__c) {
10795   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10796 }
10797 
10798 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
10799                                               unsigned char *__c) {
10800   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10801 }
10802 
10803 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
10804                                               vector bool char *__c) {
10805   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10806 }
10807 
10808 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
10809                                               vector short *__c) {
10810   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10811 }
10812 
10813 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
10814                                               short *__c) {
10815   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10816 }
10817 
10818 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
10819                                               int __b,
10820                                               vector unsigned short *__c) {
10821   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10822 }
10823 
10824 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
10825                                               int __b, unsigned short *__c) {
10826   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10827 }
10828 
10829 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
10830                                               short *__c) {
10831   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10832 }
10833 
10834 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
10835                                               unsigned short *__c) {
10836   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10837 }
10838 
10839 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
10840                                               vector bool short *__c) {
10841   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10842 }
10843 
10844 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
10845                                               short *__c) {
10846   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10847 }
10848 
10849 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
10850                                               unsigned short *__c) {
10851   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10852 }
10853 
10854 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
10855                                               vector pixel *__c) {
10856   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10857 }
10858 
10859 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
10860                                               vector int *__c) {
10861   __builtin_altivec_stvxl(__a, __b, __c);
10862 }
10863 
10864 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
10865                                               int *__c) {
10866   __builtin_altivec_stvxl(__a, __b, __c);
10867 }
10868 
10869 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
10870                                               vector unsigned int *__c) {
10871   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10872 }
10873 
10874 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
10875                                               unsigned int *__c) {
10876   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10877 }
10878 
10879 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
10880                                               int *__c) {
10881   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10882 }
10883 
10884 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
10885                                               unsigned int *__c) {
10886   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10887 }
10888 
10889 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
10890                                               vector bool int *__c) {
10891   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10892 }
10893 
10894 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
10895                                               vector float *__c) {
10896   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10897 }
10898 
10899 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
10900                                               float *__c) {
10901   __builtin_altivec_stvxl((vector int)__a, __b, __c);
10902 }
10903 
10904 /* vec_sub */
10905 
10906 static __inline__ vector signed char __ATTRS_o_ai
10907 vec_sub(vector signed char __a, vector signed char __b) {
10908   return __a - __b;
10909 }
10910 
10911 static __inline__ vector signed char __ATTRS_o_ai
10912 vec_sub(vector bool char __a, vector signed char __b) {
10913   return (vector signed char)__a - __b;
10914 }
10915 
10916 static __inline__ vector signed char __ATTRS_o_ai
10917 vec_sub(vector signed char __a, vector bool char __b) {
10918   return __a - (vector signed char)__b;
10919 }
10920 
10921 static __inline__ vector unsigned char __ATTRS_o_ai
10922 vec_sub(vector unsigned char __a, vector unsigned char __b) {
10923   return __a - __b;
10924 }
10925 
10926 static __inline__ vector unsigned char __ATTRS_o_ai
10927 vec_sub(vector bool char __a, vector unsigned char __b) {
10928   return (vector unsigned char)__a - __b;
10929 }
10930 
10931 static __inline__ vector unsigned char __ATTRS_o_ai
10932 vec_sub(vector unsigned char __a, vector bool char __b) {
10933   return __a - (vector unsigned char)__b;
10934 }
10935 
10936 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
10937                                                     vector short __b) {
10938   return __a - __b;
10939 }
10940 
10941 static __inline__ vector short __ATTRS_o_ai vec_sub(vector bool short __a,
10942                                                     vector short __b) {
10943   return (vector short)__a - __b;
10944 }
10945 
10946 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
10947                                                     vector bool short __b) {
10948   return __a - (vector short)__b;
10949 }
10950 
10951 static __inline__ vector unsigned short __ATTRS_o_ai
10952 vec_sub(vector unsigned short __a, vector unsigned short __b) {
10953   return __a - __b;
10954 }
10955 
10956 static __inline__ vector unsigned short __ATTRS_o_ai
10957 vec_sub(vector bool short __a, vector unsigned short __b) {
10958   return (vector unsigned short)__a - __b;
10959 }
10960 
10961 static __inline__ vector unsigned short __ATTRS_o_ai
10962 vec_sub(vector unsigned short __a, vector bool short __b) {
10963   return __a - (vector unsigned short)__b;
10964 }
10965 
10966 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
10967                                                   vector int __b) {
10968   return __a - __b;
10969 }
10970 
10971 static __inline__ vector int __ATTRS_o_ai vec_sub(vector bool int __a,
10972                                                   vector int __b) {
10973   return (vector int)__a - __b;
10974 }
10975 
10976 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
10977                                                   vector bool int __b) {
10978   return __a - (vector int)__b;
10979 }
10980 
10981 static __inline__ vector unsigned int __ATTRS_o_ai
10982 vec_sub(vector unsigned int __a, vector unsigned int __b) {
10983   return __a - __b;
10984 }
10985 
10986 static __inline__ vector unsigned int __ATTRS_o_ai
10987 vec_sub(vector bool int __a, vector unsigned int __b) {
10988   return (vector unsigned int)__a - __b;
10989 }
10990 
10991 static __inline__ vector unsigned int __ATTRS_o_ai
10992 vec_sub(vector unsigned int __a, vector bool int __b) {
10993   return __a - (vector unsigned int)__b;
10994 }
10995 
10996 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
10997 static __inline__ vector signed __int128 __ATTRS_o_ai
10998 vec_sub(vector signed __int128 __a, vector signed __int128 __b) {
10999   return __a - __b;
11000 }
11001 
11002 static __inline__ vector unsigned __int128 __ATTRS_o_ai
11003 vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11004   return __a - __b;
11005 }
11006 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11007 
11008 #ifdef __VSX__
11009 static __inline__ vector signed long long __ATTRS_o_ai
11010 vec_sub(vector signed long long __a, vector signed long long __b) {
11011   return __a - __b;
11012 }
11013 
11014 static __inline__ vector unsigned long long __ATTRS_o_ai
11015 vec_sub(vector unsigned long long __a, vector unsigned long long __b) {
11016   return __a - __b;
11017 }
11018 
11019 static __inline__ vector double __ATTRS_o_ai vec_sub(vector double __a,
11020                                                      vector double __b) {
11021   return __a - __b;
11022 }
11023 #endif
11024 
11025 static __inline__ vector float __ATTRS_o_ai vec_sub(vector float __a,
11026                                                     vector float __b) {
11027   return __a - __b;
11028 }
11029 
11030 /* vec_vsububm */
11031 
11032 #define __builtin_altivec_vsububm vec_vsububm
11033 
11034 static __inline__ vector signed char __ATTRS_o_ai
11035 vec_vsububm(vector signed char __a, vector signed char __b) {
11036   return __a - __b;
11037 }
11038 
11039 static __inline__ vector signed char __ATTRS_o_ai
11040 vec_vsububm(vector bool char __a, vector signed char __b) {
11041   return (vector signed char)__a - __b;
11042 }
11043 
11044 static __inline__ vector signed char __ATTRS_o_ai
11045 vec_vsububm(vector signed char __a, vector bool char __b) {
11046   return __a - (vector signed char)__b;
11047 }
11048 
11049 static __inline__ vector unsigned char __ATTRS_o_ai
11050 vec_vsububm(vector unsigned char __a, vector unsigned char __b) {
11051   return __a - __b;
11052 }
11053 
11054 static __inline__ vector unsigned char __ATTRS_o_ai
11055 vec_vsububm(vector bool char __a, vector unsigned char __b) {
11056   return (vector unsigned char)__a - __b;
11057 }
11058 
11059 static __inline__ vector unsigned char __ATTRS_o_ai
11060 vec_vsububm(vector unsigned char __a, vector bool char __b) {
11061   return __a - (vector unsigned char)__b;
11062 }
11063 
11064 /* vec_vsubuhm */
11065 
11066 #define __builtin_altivec_vsubuhm vec_vsubuhm
11067 
11068 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
11069                                                         vector short __b) {
11070   return __a - __b;
11071 }
11072 
11073 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a,
11074                                                         vector short __b) {
11075   return (vector short)__a - __b;
11076 }
11077 
11078 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
11079                                                         vector bool short __b) {
11080   return __a - (vector short)__b;
11081 }
11082 
11083 static __inline__ vector unsigned short __ATTRS_o_ai
11084 vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) {
11085   return __a - __b;
11086 }
11087 
11088 static __inline__ vector unsigned short __ATTRS_o_ai
11089 vec_vsubuhm(vector bool short __a, vector unsigned short __b) {
11090   return (vector unsigned short)__a - __b;
11091 }
11092 
11093 static __inline__ vector unsigned short __ATTRS_o_ai
11094 vec_vsubuhm(vector unsigned short __a, vector bool short __b) {
11095   return __a - (vector unsigned short)__b;
11096 }
11097 
11098 /* vec_vsubuwm */
11099 
11100 #define __builtin_altivec_vsubuwm vec_vsubuwm
11101 
11102 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
11103                                                       vector int __b) {
11104   return __a - __b;
11105 }
11106 
11107 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
11108                                                       vector int __b) {
11109   return (vector int)__a - __b;
11110 }
11111 
11112 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
11113                                                       vector bool int __b) {
11114   return __a - (vector int)__b;
11115 }
11116 
11117 static __inline__ vector unsigned int __ATTRS_o_ai
11118 vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) {
11119   return __a - __b;
11120 }
11121 
11122 static __inline__ vector unsigned int __ATTRS_o_ai
11123 vec_vsubuwm(vector bool int __a, vector unsigned int __b) {
11124   return (vector unsigned int)__a - __b;
11125 }
11126 
11127 static __inline__ vector unsigned int __ATTRS_o_ai
11128 vec_vsubuwm(vector unsigned int __a, vector bool int __b) {
11129   return __a - (vector unsigned int)__b;
11130 }
11131 
11132 /* vec_vsubfp */
11133 
11134 #define __builtin_altivec_vsubfp vec_vsubfp
11135 
11136 static __inline__ vector float __attribute__((__always_inline__))
11137 vec_vsubfp(vector float __a, vector float __b) {
11138   return __a - __b;
11139 }
11140 
11141 /* vec_subc */
11142 
11143 static __inline__ vector signed int __ATTRS_o_ai
11144 vec_subc(vector signed int __a, vector signed int __b) {
11145   return (vector signed int)__builtin_altivec_vsubcuw((vector unsigned int)__a,
11146                                                       (vector unsigned int) __b);
11147 }
11148 
11149 static __inline__ vector unsigned int __ATTRS_o_ai
11150 vec_subc(vector unsigned int __a, vector unsigned int __b) {
11151   return __builtin_altivec_vsubcuw(__a, __b);
11152 }
11153 
11154 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11155 static __inline__ vector unsigned __int128 __ATTRS_o_ai
11156 vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11157   return __builtin_altivec_vsubcuq(__a, __b);
11158 }
11159 
11160 static __inline__ vector signed __int128 __ATTRS_o_ai
11161 vec_subc(vector signed __int128 __a, vector signed __int128 __b) {
11162   return __builtin_altivec_vsubcuq(__a, __b);
11163 }
11164 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11165 
11166 /* vec_vsubcuw */
11167 
11168 static __inline__ vector unsigned int __attribute__((__always_inline__))
11169 vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) {
11170   return __builtin_altivec_vsubcuw(__a, __b);
11171 }
11172 
11173 /* vec_subs */
11174 
11175 static __inline__ vector signed char __ATTRS_o_ai
11176 vec_subs(vector signed char __a, vector signed char __b) {
11177   return __builtin_altivec_vsubsbs(__a, __b);
11178 }
11179 
11180 static __inline__ vector signed char __ATTRS_o_ai
11181 vec_subs(vector bool char __a, vector signed char __b) {
11182   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
11183 }
11184 
11185 static __inline__ vector signed char __ATTRS_o_ai
11186 vec_subs(vector signed char __a, vector bool char __b) {
11187   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
11188 }
11189 
11190 static __inline__ vector unsigned char __ATTRS_o_ai
11191 vec_subs(vector unsigned char __a, vector unsigned char __b) {
11192   return __builtin_altivec_vsububs(__a, __b);
11193 }
11194 
11195 static __inline__ vector unsigned char __ATTRS_o_ai
11196 vec_subs(vector bool char __a, vector unsigned char __b) {
11197   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
11198 }
11199 
11200 static __inline__ vector unsigned char __ATTRS_o_ai
11201 vec_subs(vector unsigned char __a, vector bool char __b) {
11202   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
11203 }
11204 
11205 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
11206                                                      vector short __b) {
11207   return __builtin_altivec_vsubshs(__a, __b);
11208 }
11209 
11210 static __inline__ vector short __ATTRS_o_ai vec_subs(vector bool short __a,
11211                                                      vector short __b) {
11212   return __builtin_altivec_vsubshs((vector short)__a, __b);
11213 }
11214 
11215 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
11216                                                      vector bool short __b) {
11217   return __builtin_altivec_vsubshs(__a, (vector short)__b);
11218 }
11219 
11220 static __inline__ vector unsigned short __ATTRS_o_ai
11221 vec_subs(vector unsigned short __a, vector unsigned short __b) {
11222   return __builtin_altivec_vsubuhs(__a, __b);
11223 }
11224 
11225 static __inline__ vector unsigned short __ATTRS_o_ai
11226 vec_subs(vector bool short __a, vector unsigned short __b) {
11227   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
11228 }
11229 
11230 static __inline__ vector unsigned short __ATTRS_o_ai
11231 vec_subs(vector unsigned short __a, vector bool short __b) {
11232   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
11233 }
11234 
11235 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
11236                                                    vector int __b) {
11237   return __builtin_altivec_vsubsws(__a, __b);
11238 }
11239 
11240 static __inline__ vector int __ATTRS_o_ai vec_subs(vector bool int __a,
11241                                                    vector int __b) {
11242   return __builtin_altivec_vsubsws((vector int)__a, __b);
11243 }
11244 
11245 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
11246                                                    vector bool int __b) {
11247   return __builtin_altivec_vsubsws(__a, (vector int)__b);
11248 }
11249 
11250 static __inline__ vector unsigned int __ATTRS_o_ai
11251 vec_subs(vector unsigned int __a, vector unsigned int __b) {
11252   return __builtin_altivec_vsubuws(__a, __b);
11253 }
11254 
11255 static __inline__ vector unsigned int __ATTRS_o_ai
11256 vec_subs(vector bool int __a, vector unsigned int __b) {
11257   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
11258 }
11259 
11260 static __inline__ vector unsigned int __ATTRS_o_ai
11261 vec_subs(vector unsigned int __a, vector bool int __b) {
11262   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
11263 }
11264 
11265 /* vec_vsubsbs */
11266 
11267 static __inline__ vector signed char __ATTRS_o_ai
11268 vec_vsubsbs(vector signed char __a, vector signed char __b) {
11269   return __builtin_altivec_vsubsbs(__a, __b);
11270 }
11271 
11272 static __inline__ vector signed char __ATTRS_o_ai
11273 vec_vsubsbs(vector bool char __a, vector signed char __b) {
11274   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
11275 }
11276 
11277 static __inline__ vector signed char __ATTRS_o_ai
11278 vec_vsubsbs(vector signed char __a, vector bool char __b) {
11279   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
11280 }
11281 
11282 /* vec_vsububs */
11283 
11284 static __inline__ vector unsigned char __ATTRS_o_ai
11285 vec_vsububs(vector unsigned char __a, vector unsigned char __b) {
11286   return __builtin_altivec_vsububs(__a, __b);
11287 }
11288 
11289 static __inline__ vector unsigned char __ATTRS_o_ai
11290 vec_vsububs(vector bool char __a, vector unsigned char __b) {
11291   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
11292 }
11293 
11294 static __inline__ vector unsigned char __ATTRS_o_ai
11295 vec_vsububs(vector unsigned char __a, vector bool char __b) {
11296   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
11297 }
11298 
11299 /* vec_vsubshs */
11300 
11301 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
11302                                                         vector short __b) {
11303   return __builtin_altivec_vsubshs(__a, __b);
11304 }
11305 
11306 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a,
11307                                                         vector short __b) {
11308   return __builtin_altivec_vsubshs((vector short)__a, __b);
11309 }
11310 
11311 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
11312                                                         vector bool short __b) {
11313   return __builtin_altivec_vsubshs(__a, (vector short)__b);
11314 }
11315 
11316 /* vec_vsubuhs */
11317 
11318 static __inline__ vector unsigned short __ATTRS_o_ai
11319 vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) {
11320   return __builtin_altivec_vsubuhs(__a, __b);
11321 }
11322 
11323 static __inline__ vector unsigned short __ATTRS_o_ai
11324 vec_vsubuhs(vector bool short __a, vector unsigned short __b) {
11325   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
11326 }
11327 
11328 static __inline__ vector unsigned short __ATTRS_o_ai
11329 vec_vsubuhs(vector unsigned short __a, vector bool short __b) {
11330   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
11331 }
11332 
11333 /* vec_vsubsws */
11334 
11335 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
11336                                                       vector int __b) {
11337   return __builtin_altivec_vsubsws(__a, __b);
11338 }
11339 
11340 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a,
11341                                                       vector int __b) {
11342   return __builtin_altivec_vsubsws((vector int)__a, __b);
11343 }
11344 
11345 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
11346                                                       vector bool int __b) {
11347   return __builtin_altivec_vsubsws(__a, (vector int)__b);
11348 }
11349 
11350 /* vec_vsubuws */
11351 
11352 static __inline__ vector unsigned int __ATTRS_o_ai
11353 vec_vsubuws(vector unsigned int __a, vector unsigned int __b) {
11354   return __builtin_altivec_vsubuws(__a, __b);
11355 }
11356 
11357 static __inline__ vector unsigned int __ATTRS_o_ai
11358 vec_vsubuws(vector bool int __a, vector unsigned int __b) {
11359   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
11360 }
11361 
11362 static __inline__ vector unsigned int __ATTRS_o_ai
11363 vec_vsubuws(vector unsigned int __a, vector bool int __b) {
11364   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
11365 }
11366 
11367 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11368 /* vec_vsubuqm */
11369 
11370 static __inline__ vector signed __int128 __ATTRS_o_ai
11371 vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) {
11372   return __a - __b;
11373 }
11374 
11375 static __inline__ vector unsigned __int128 __ATTRS_o_ai
11376 vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11377   return __a - __b;
11378 }
11379 
11380 /* vec_vsubeuqm */
11381 
11382 
11383 static __inline__ vector signed __int128 __ATTRS_o_ai
11384 vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b,
11385              vector signed __int128 __c) {
11386   return __builtin_altivec_vsubeuqm(__a, __b, __c);
11387 }
11388 
11389 static __inline__ vector unsigned __int128 __ATTRS_o_ai
11390 vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
11391              vector unsigned __int128 __c) {
11392   return __builtin_altivec_vsubeuqm(__a, __b, __c);
11393 }
11394 
11395 static __inline__ vector signed __int128 __ATTRS_o_ai
11396 vec_sube(vector signed __int128 __a, vector signed __int128 __b,
11397              vector signed __int128 __c) {
11398   return __builtin_altivec_vsubeuqm(__a, __b, __c);
11399 }
11400 
11401 static __inline__ vector unsigned __int128 __ATTRS_o_ai
11402 vec_sube(vector unsigned __int128 __a, vector unsigned __int128 __b,
11403              vector unsigned __int128 __c) {
11404   return __builtin_altivec_vsubeuqm(__a, __b, __c);
11405 }
11406 
11407 /* vec_vsubcuq */
11408 
11409 static __inline__ vector signed __int128 __ATTRS_o_ai
11410 vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) {
11411   return __builtin_altivec_vsubcuq(__a, __b);
11412 }
11413 
11414 static __inline__ vector unsigned __int128 __ATTRS_o_ai
11415 vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11416   return __builtin_altivec_vsubcuq(__a, __b);
11417 }
11418 
11419 /* vec_vsubecuq */
11420 
11421 static __inline__ vector signed __int128 __ATTRS_o_ai
11422 vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b,
11423              vector signed __int128 __c) {
11424   return __builtin_altivec_vsubecuq(__a, __b, __c);
11425 }
11426 
11427 static __inline__ vector unsigned __int128 __ATTRS_o_ai
11428 vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
11429              vector unsigned __int128 __c) {
11430   return __builtin_altivec_vsubecuq(__a, __b, __c);
11431 }
11432 
11433 static __inline__ vector signed int __ATTRS_o_ai
11434 vec_subec(vector signed int __a, vector signed int __b,
11435              vector signed int __c) {
11436   return vec_addec(__a, ~__b, __c);
11437 }
11438 
11439 static __inline__ vector unsigned int __ATTRS_o_ai
11440 vec_subec(vector unsigned int __a, vector unsigned int __b,
11441              vector unsigned int __c) {
11442   return vec_addec(__a, ~__b, __c);
11443 }
11444 
11445 static __inline__ vector signed __int128 __ATTRS_o_ai
11446 vec_subec(vector signed __int128 __a, vector signed __int128 __b,
11447              vector signed __int128 __c) {
11448   return __builtin_altivec_vsubecuq(__a, __b, __c);
11449 }
11450 
11451 static __inline__ vector unsigned __int128 __ATTRS_o_ai
11452 vec_subec(vector unsigned __int128 __a, vector unsigned __int128 __b,
11453              vector unsigned __int128 __c) {
11454   return __builtin_altivec_vsubecuq(__a, __b, __c);
11455 }
11456 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11457 
11458 static __inline__ vector signed int __ATTRS_o_ai
11459 vec_sube(vector signed int __a, vector signed int __b,
11460          vector signed int __c) {
11461   vector signed int __mask = {1, 1, 1, 1};
11462   vector signed int __carry = __c & __mask;
11463   return vec_adde(__a, ~__b, __carry);
11464 }
11465 
11466 static __inline__ vector unsigned int __ATTRS_o_ai
11467 vec_sube(vector unsigned int __a, vector unsigned int __b,
11468          vector unsigned int __c) {
11469   vector unsigned int __mask = {1, 1, 1, 1};
11470   vector unsigned int __carry = __c & __mask;
11471   return vec_adde(__a, ~__b, __carry);
11472 }
11473 /* vec_sum4s */
11474 
11475 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed char __a,
11476                                                     vector int __b) {
11477   return __builtin_altivec_vsum4sbs(__a, __b);
11478 }
11479 
11480 static __inline__ vector unsigned int __ATTRS_o_ai
11481 vec_sum4s(vector unsigned char __a, vector unsigned int __b) {
11482   return __builtin_altivec_vsum4ubs(__a, __b);
11483 }
11484 
11485 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed short __a,
11486                                                     vector int __b) {
11487   return __builtin_altivec_vsum4shs(__a, __b);
11488 }
11489 
11490 /* vec_vsum4sbs */
11491 
11492 static __inline__ vector int __attribute__((__always_inline__))
11493 vec_vsum4sbs(vector signed char __a, vector int __b) {
11494   return __builtin_altivec_vsum4sbs(__a, __b);
11495 }
11496 
11497 /* vec_vsum4ubs */
11498 
11499 static __inline__ vector unsigned int __attribute__((__always_inline__))
11500 vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) {
11501   return __builtin_altivec_vsum4ubs(__a, __b);
11502 }
11503 
11504 /* vec_vsum4shs */
11505 
11506 static __inline__ vector int __attribute__((__always_inline__))
11507 vec_vsum4shs(vector signed short __a, vector int __b) {
11508   return __builtin_altivec_vsum4shs(__a, __b);
11509 }
11510 
11511 /* vec_sum2s */
11512 
11513 /* The vsum2sws instruction has a big-endian bias, so that the second
11514    input vector and the result always reference big-endian elements
11515    1 and 3 (little-endian element 0 and 2).  For ease of porting the
11516    programmer wants elements 1 and 3 in both cases, so for little
11517    endian we must perform some permutes.  */
11518 
11519 static __inline__ vector signed int __attribute__((__always_inline__))
11520 vec_sum2s(vector int __a, vector int __b) {
11521 #ifdef __LITTLE_ENDIAN__
11522   vector int __c = (vector signed int)vec_perm(
11523       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11524                                        8, 9, 10, 11));
11525   __c = __builtin_altivec_vsum2sws(__a, __c);
11526   return (vector signed int)vec_perm(
11527       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11528                                        8, 9, 10, 11));
11529 #else
11530   return __builtin_altivec_vsum2sws(__a, __b);
11531 #endif
11532 }
11533 
11534 /* vec_vsum2sws */
11535 
11536 static __inline__ vector signed int __attribute__((__always_inline__))
11537 vec_vsum2sws(vector int __a, vector int __b) {
11538 #ifdef __LITTLE_ENDIAN__
11539   vector int __c = (vector signed int)vec_perm(
11540       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11541                                        8, 9, 10, 11));
11542   __c = __builtin_altivec_vsum2sws(__a, __c);
11543   return (vector signed int)vec_perm(
11544       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11545                                        8, 9, 10, 11));
11546 #else
11547   return __builtin_altivec_vsum2sws(__a, __b);
11548 #endif
11549 }
11550 
11551 /* vec_sums */
11552 
11553 /* The vsumsws instruction has a big-endian bias, so that the second
11554    input vector and the result always reference big-endian element 3
11555    (little-endian element 0).  For ease of porting the programmer
11556    wants element 3 in both cases, so for little endian we must perform
11557    some permutes.  */
11558 
11559 static __inline__ vector signed int __attribute__((__always_inline__))
11560 vec_sums(vector signed int __a, vector signed int __b) {
11561 #ifdef __LITTLE_ENDIAN__
11562   __b = (vector signed int)vec_splat(__b, 3);
11563   __b = __builtin_altivec_vsumsws(__a, __b);
11564   return (vector signed int)(0, 0, 0, __b[0]);
11565 #else
11566   return __builtin_altivec_vsumsws(__a, __b);
11567 #endif
11568 }
11569 
11570 /* vec_vsumsws */
11571 
11572 static __inline__ vector signed int __attribute__((__always_inline__))
11573 vec_vsumsws(vector signed int __a, vector signed int __b) {
11574 #ifdef __LITTLE_ENDIAN__
11575   __b = (vector signed int)vec_splat(__b, 3);
11576   __b = __builtin_altivec_vsumsws(__a, __b);
11577   return (vector signed int)(0, 0, 0, __b[0]);
11578 #else
11579   return __builtin_altivec_vsumsws(__a, __b);
11580 #endif
11581 }
11582 
11583 /* vec_trunc */
11584 
11585 static __inline__ vector float __ATTRS_o_ai vec_trunc(vector float __a) {
11586 #ifdef __VSX__
11587   return __builtin_vsx_xvrspiz(__a);
11588 #else
11589   return __builtin_altivec_vrfiz(__a);
11590 #endif
11591 }
11592 
11593 #ifdef __VSX__
11594 static __inline__ vector double __ATTRS_o_ai vec_trunc(vector double __a) {
11595   return __builtin_vsx_xvrdpiz(__a);
11596 }
11597 #endif
11598 
11599 /* vec_vrfiz */
11600 
11601 static __inline__ vector float __attribute__((__always_inline__))
11602 vec_vrfiz(vector float __a) {
11603   return __builtin_altivec_vrfiz(__a);
11604 }
11605 
11606 /* vec_unpackh */
11607 
11608 /* The vector unpack instructions all have a big-endian bias, so for
11609    little endian we must reverse the meanings of "high" and "low."  */
11610 
11611 static __inline__ vector short __ATTRS_o_ai
11612 vec_unpackh(vector signed char __a) {
11613 #ifdef __LITTLE_ENDIAN__
11614   return __builtin_altivec_vupklsb((vector char)__a);
11615 #else
11616   return __builtin_altivec_vupkhsb((vector char)__a);
11617 #endif
11618 }
11619 
11620 static __inline__ vector bool short __ATTRS_o_ai
11621 vec_unpackh(vector bool char __a) {
11622 #ifdef __LITTLE_ENDIAN__
11623   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
11624 #else
11625   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
11626 #endif
11627 }
11628 
11629 static __inline__ vector int __ATTRS_o_ai vec_unpackh(vector short __a) {
11630 #ifdef __LITTLE_ENDIAN__
11631   return __builtin_altivec_vupklsh(__a);
11632 #else
11633   return __builtin_altivec_vupkhsh(__a);
11634 #endif
11635 }
11636 
11637 static __inline__ vector bool int __ATTRS_o_ai
11638 vec_unpackh(vector bool short __a) {
11639 #ifdef __LITTLE_ENDIAN__
11640   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
11641 #else
11642   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
11643 #endif
11644 }
11645 
11646 static __inline__ vector unsigned int __ATTRS_o_ai
11647 vec_unpackh(vector pixel __a) {
11648 #ifdef __LITTLE_ENDIAN__
11649   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
11650 #else
11651   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
11652 #endif
11653 }
11654 
11655 #ifdef __POWER8_VECTOR__
11656 static __inline__ vector long long __ATTRS_o_ai vec_unpackh(vector int __a) {
11657 #ifdef __LITTLE_ENDIAN__
11658   return __builtin_altivec_vupklsw(__a);
11659 #else
11660   return __builtin_altivec_vupkhsw(__a);
11661 #endif
11662 }
11663 
11664 static __inline__ vector bool long long __ATTRS_o_ai
11665 vec_unpackh(vector bool int __a) {
11666 #ifdef __LITTLE_ENDIAN__
11667   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
11668 #else
11669   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
11670 #endif
11671 }
11672 
11673 static __inline__ vector double __ATTRS_o_ai
11674 vec_unpackh(vector float __a) {
11675   return (vector double)(__a[0], __a[1]);
11676 }
11677 #endif
11678 
11679 /* vec_vupkhsb */
11680 
11681 static __inline__ vector short __ATTRS_o_ai
11682 vec_vupkhsb(vector signed char __a) {
11683 #ifdef __LITTLE_ENDIAN__
11684   return __builtin_altivec_vupklsb((vector char)__a);
11685 #else
11686   return __builtin_altivec_vupkhsb((vector char)__a);
11687 #endif
11688 }
11689 
11690 static __inline__ vector bool short __ATTRS_o_ai
11691 vec_vupkhsb(vector bool char __a) {
11692 #ifdef __LITTLE_ENDIAN__
11693   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
11694 #else
11695   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
11696 #endif
11697 }
11698 
11699 /* vec_vupkhsh */
11700 
11701 static __inline__ vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) {
11702 #ifdef __LITTLE_ENDIAN__
11703   return __builtin_altivec_vupklsh(__a);
11704 #else
11705   return __builtin_altivec_vupkhsh(__a);
11706 #endif
11707 }
11708 
11709 static __inline__ vector bool int __ATTRS_o_ai
11710 vec_vupkhsh(vector bool short __a) {
11711 #ifdef __LITTLE_ENDIAN__
11712   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
11713 #else
11714   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
11715 #endif
11716 }
11717 
11718 static __inline__ vector unsigned int __ATTRS_o_ai
11719 vec_vupkhsh(vector pixel __a) {
11720 #ifdef __LITTLE_ENDIAN__
11721   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
11722 #else
11723   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
11724 #endif
11725 }
11726 
11727 /* vec_vupkhsw */
11728 
11729 #ifdef __POWER8_VECTOR__
11730 static __inline__ vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) {
11731 #ifdef __LITTLE_ENDIAN__
11732   return __builtin_altivec_vupklsw(__a);
11733 #else
11734   return __builtin_altivec_vupkhsw(__a);
11735 #endif
11736 }
11737 
11738 static __inline__ vector bool long long __ATTRS_o_ai
11739 vec_vupkhsw(vector bool int __a) {
11740 #ifdef __LITTLE_ENDIAN__
11741   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
11742 #else
11743   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
11744 #endif
11745 }
11746 #endif
11747 
11748 /* vec_unpackl */
11749 
11750 static __inline__ vector short __ATTRS_o_ai
11751 vec_unpackl(vector signed char __a) {
11752 #ifdef __LITTLE_ENDIAN__
11753   return __builtin_altivec_vupkhsb((vector char)__a);
11754 #else
11755   return __builtin_altivec_vupklsb((vector char)__a);
11756 #endif
11757 }
11758 
11759 static __inline__ vector bool short __ATTRS_o_ai
11760 vec_unpackl(vector bool char __a) {
11761 #ifdef __LITTLE_ENDIAN__
11762   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
11763 #else
11764   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
11765 #endif
11766 }
11767 
11768 static __inline__ vector int __ATTRS_o_ai vec_unpackl(vector short __a) {
11769 #ifdef __LITTLE_ENDIAN__
11770   return __builtin_altivec_vupkhsh(__a);
11771 #else
11772   return __builtin_altivec_vupklsh(__a);
11773 #endif
11774 }
11775 
11776 static __inline__ vector bool int __ATTRS_o_ai
11777 vec_unpackl(vector bool short __a) {
11778 #ifdef __LITTLE_ENDIAN__
11779   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
11780 #else
11781   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
11782 #endif
11783 }
11784 
11785 static __inline__ vector unsigned int __ATTRS_o_ai
11786 vec_unpackl(vector pixel __a) {
11787 #ifdef __LITTLE_ENDIAN__
11788   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
11789 #else
11790   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
11791 #endif
11792 }
11793 
11794 #ifdef __POWER8_VECTOR__
11795 static __inline__ vector long long __ATTRS_o_ai vec_unpackl(vector int __a) {
11796 #ifdef __LITTLE_ENDIAN__
11797   return __builtin_altivec_vupkhsw(__a);
11798 #else
11799   return __builtin_altivec_vupklsw(__a);
11800 #endif
11801 }
11802 
11803 static __inline__ vector bool long long __ATTRS_o_ai
11804 vec_unpackl(vector bool int __a) {
11805 #ifdef __LITTLE_ENDIAN__
11806   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
11807 #else
11808   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
11809 #endif
11810 }
11811 
11812 static __inline__ vector double __ATTRS_o_ai
11813 vec_unpackl(vector float __a) {
11814   return (vector double)(__a[2], __a[3]);
11815 }
11816 #endif
11817 
11818 /* vec_vupklsb */
11819 
11820 static __inline__ vector short __ATTRS_o_ai
11821 vec_vupklsb(vector signed char __a) {
11822 #ifdef __LITTLE_ENDIAN__
11823   return __builtin_altivec_vupkhsb((vector char)__a);
11824 #else
11825   return __builtin_altivec_vupklsb((vector char)__a);
11826 #endif
11827 }
11828 
11829 static __inline__ vector bool short __ATTRS_o_ai
11830 vec_vupklsb(vector bool char __a) {
11831 #ifdef __LITTLE_ENDIAN__
11832   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
11833 #else
11834   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
11835 #endif
11836 }
11837 
11838 /* vec_vupklsh */
11839 
11840 static __inline__ vector int __ATTRS_o_ai vec_vupklsh(vector short __a) {
11841 #ifdef __LITTLE_ENDIAN__
11842   return __builtin_altivec_vupkhsh(__a);
11843 #else
11844   return __builtin_altivec_vupklsh(__a);
11845 #endif
11846 }
11847 
11848 static __inline__ vector bool int __ATTRS_o_ai
11849 vec_vupklsh(vector bool short __a) {
11850 #ifdef __LITTLE_ENDIAN__
11851   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
11852 #else
11853   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
11854 #endif
11855 }
11856 
11857 static __inline__ vector unsigned int __ATTRS_o_ai
11858 vec_vupklsh(vector pixel __a) {
11859 #ifdef __LITTLE_ENDIAN__
11860   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
11861 #else
11862   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
11863 #endif
11864 }
11865 
11866 /* vec_vupklsw */
11867 
11868 #ifdef __POWER8_VECTOR__
11869 static __inline__ vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) {
11870 #ifdef __LITTLE_ENDIAN__
11871   return __builtin_altivec_vupkhsw(__a);
11872 #else
11873   return __builtin_altivec_vupklsw(__a);
11874 #endif
11875 }
11876 
11877 static __inline__ vector bool long long __ATTRS_o_ai
11878 vec_vupklsw(vector bool int __a) {
11879 #ifdef __LITTLE_ENDIAN__
11880   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
11881 #else
11882   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
11883 #endif
11884 }
11885 #endif
11886 
11887 /* vec_vsx_ld */
11888 
11889 #ifdef __VSX__
11890 
11891 static __inline__ vector bool int __ATTRS_o_ai
11892 vec_vsx_ld(int __a, const vector bool int *__b) {
11893   return (vector bool int)__builtin_vsx_lxvw4x(__a, __b);
11894 }
11895 
11896 static __inline__ vector signed int __ATTRS_o_ai
11897 vec_vsx_ld(int __a, const vector signed int *__b) {
11898   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
11899 }
11900 
11901 static __inline__ vector signed int __ATTRS_o_ai
11902 vec_vsx_ld(int __a, const signed int *__b) {
11903   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
11904 }
11905 
11906 static __inline__ vector unsigned int __ATTRS_o_ai
11907 vec_vsx_ld(int __a, const vector unsigned int *__b) {
11908   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
11909 }
11910 
11911 static __inline__ vector unsigned int __ATTRS_o_ai
11912 vec_vsx_ld(int __a, const unsigned int *__b) {
11913   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
11914 }
11915 
11916 static __inline__ vector float __ATTRS_o_ai
11917 vec_vsx_ld(int __a, const vector float *__b) {
11918   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
11919 }
11920 
11921 static __inline__ vector float __ATTRS_o_ai vec_vsx_ld(int __a,
11922                                                        const float *__b) {
11923   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
11924 }
11925 
11926 static __inline__ vector signed long long __ATTRS_o_ai
11927 vec_vsx_ld(int __a, const vector signed long long *__b) {
11928   return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b);
11929 }
11930 
11931 static __inline__ vector unsigned long long __ATTRS_o_ai
11932 vec_vsx_ld(int __a, const vector unsigned long long *__b) {
11933   return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b);
11934 }
11935 
11936 static __inline__ vector double __ATTRS_o_ai
11937 vec_vsx_ld(int __a, const vector double *__b) {
11938   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
11939 }
11940 
11941 static __inline__ vector double __ATTRS_o_ai
11942 vec_vsx_ld(int __a, const double *__b) {
11943   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
11944 }
11945 
11946 static __inline__ vector bool short __ATTRS_o_ai
11947 vec_vsx_ld(int __a, const vector bool short *__b) {
11948   return (vector bool short)__builtin_vsx_lxvw4x(__a, __b);
11949 }
11950 
11951 static __inline__ vector signed short __ATTRS_o_ai
11952 vec_vsx_ld(int __a, const vector signed short *__b) {
11953   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
11954 }
11955 
11956 static __inline__ vector signed short __ATTRS_o_ai
11957 vec_vsx_ld(int __a, const signed short *__b) {
11958   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
11959 }
11960 
11961 static __inline__ vector unsigned short __ATTRS_o_ai
11962 vec_vsx_ld(int __a, const vector unsigned short *__b) {
11963   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
11964 }
11965 
11966 static __inline__ vector unsigned short __ATTRS_o_ai
11967 vec_vsx_ld(int __a, const unsigned short *__b) {
11968   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
11969 }
11970 
11971 static __inline__ vector bool char __ATTRS_o_ai
11972 vec_vsx_ld(int __a, const vector bool char *__b) {
11973   return (vector bool char)__builtin_vsx_lxvw4x(__a, __b);
11974 }
11975 
11976 static __inline__ vector signed char __ATTRS_o_ai
11977 vec_vsx_ld(int __a, const vector signed char *__b) {
11978   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
11979 }
11980 
11981 static __inline__ vector signed char __ATTRS_o_ai
11982 vec_vsx_ld(int __a, const signed char *__b) {
11983   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
11984 }
11985 
11986 static __inline__ vector unsigned char __ATTRS_o_ai
11987 vec_vsx_ld(int __a, const vector unsigned char *__b) {
11988   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
11989 }
11990 
11991 static __inline__ vector unsigned char __ATTRS_o_ai
11992 vec_vsx_ld(int __a, const unsigned char *__b) {
11993   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
11994 }
11995 
11996 #endif
11997 
11998 /* vec_vsx_st */
11999 
12000 #ifdef __VSX__
12001 
12002 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
12003                                                vector bool int *__c) {
12004   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12005 }
12006 
12007 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
12008                                                signed int *__c) {
12009   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12010 }
12011 
12012 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
12013                                                unsigned int *__c) {
12014   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12015 }
12016 
12017 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
12018                                                vector signed int *__c) {
12019   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12020 }
12021 
12022 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
12023                                                signed int *__c) {
12024   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12025 }
12026 
12027 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
12028                                                vector unsigned int *__c) {
12029   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12030 }
12031 
12032 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
12033                                                unsigned int *__c) {
12034   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12035 }
12036 
12037 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
12038                                                vector float *__c) {
12039   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12040 }
12041 
12042 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
12043                                                float *__c) {
12044   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12045 }
12046 
12047 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed long long __a,
12048                                                int __b,
12049                                                vector signed long long *__c) {
12050   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12051 }
12052 
12053 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a,
12054                                                int __b,
12055                                                vector unsigned long long *__c) {
12056   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12057 }
12058 
12059 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
12060                                                vector double *__c) {
12061   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12062 }
12063 
12064 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
12065                                                double *__c) {
12066   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12067 }
12068 
12069 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
12070                                                vector bool short *__c) {
12071   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12072 }
12073 
12074 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
12075                                                signed short *__c) {
12076   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12077 }
12078 
12079 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
12080                                                unsigned short *__c) {
12081   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12082 }
12083 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
12084                                                vector signed short *__c) {
12085   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12086 }
12087 
12088 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
12089                                                signed short *__c) {
12090   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12091 }
12092 
12093 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
12094                                                int __b,
12095                                                vector unsigned short *__c) {
12096   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12097 }
12098 
12099 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
12100                                                int __b, unsigned short *__c) {
12101   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12102 }
12103 
12104 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
12105                                                vector bool char *__c) {
12106   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12107 }
12108 
12109 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
12110                                                signed char *__c) {
12111   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12112 }
12113 
12114 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
12115                                                unsigned char *__c) {
12116   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12117 }
12118 
12119 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
12120                                                vector signed char *__c) {
12121   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12122 }
12123 
12124 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
12125                                                signed char *__c) {
12126   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12127 }
12128 
12129 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
12130                                                int __b,
12131                                                vector unsigned char *__c) {
12132   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12133 }
12134 
12135 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
12136                                                int __b, unsigned char *__c) {
12137   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12138 }
12139 
12140 #endif
12141 
12142 #ifdef __VSX__
12143 #define vec_xxpermdi __builtin_vsx_xxpermdi
12144 #define vec_xxsldwi __builtin_vsx_xxsldwi
12145 #endif
12146 
12147 /* vec_xor */
12148 
12149 #define __builtin_altivec_vxor vec_xor
12150 
12151 static __inline__ vector signed char __ATTRS_o_ai
12152 vec_xor(vector signed char __a, vector signed char __b) {
12153   return __a ^ __b;
12154 }
12155 
12156 static __inline__ vector signed char __ATTRS_o_ai
12157 vec_xor(vector bool char __a, vector signed char __b) {
12158   return (vector signed char)__a ^ __b;
12159 }
12160 
12161 static __inline__ vector signed char __ATTRS_o_ai
12162 vec_xor(vector signed char __a, vector bool char __b) {
12163   return __a ^ (vector signed char)__b;
12164 }
12165 
12166 static __inline__ vector unsigned char __ATTRS_o_ai
12167 vec_xor(vector unsigned char __a, vector unsigned char __b) {
12168   return __a ^ __b;
12169 }
12170 
12171 static __inline__ vector unsigned char __ATTRS_o_ai
12172 vec_xor(vector bool char __a, vector unsigned char __b) {
12173   return (vector unsigned char)__a ^ __b;
12174 }
12175 
12176 static __inline__ vector unsigned char __ATTRS_o_ai
12177 vec_xor(vector unsigned char __a, vector bool char __b) {
12178   return __a ^ (vector unsigned char)__b;
12179 }
12180 
12181 static __inline__ vector bool char __ATTRS_o_ai vec_xor(vector bool char __a,
12182                                                         vector bool char __b) {
12183   return __a ^ __b;
12184 }
12185 
12186 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
12187                                                     vector short __b) {
12188   return __a ^ __b;
12189 }
12190 
12191 static __inline__ vector short __ATTRS_o_ai vec_xor(vector bool short __a,
12192                                                     vector short __b) {
12193   return (vector short)__a ^ __b;
12194 }
12195 
12196 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
12197                                                     vector bool short __b) {
12198   return __a ^ (vector short)__b;
12199 }
12200 
12201 static __inline__ vector unsigned short __ATTRS_o_ai
12202 vec_xor(vector unsigned short __a, vector unsigned short __b) {
12203   return __a ^ __b;
12204 }
12205 
12206 static __inline__ vector unsigned short __ATTRS_o_ai
12207 vec_xor(vector bool short __a, vector unsigned short __b) {
12208   return (vector unsigned short)__a ^ __b;
12209 }
12210 
12211 static __inline__ vector unsigned short __ATTRS_o_ai
12212 vec_xor(vector unsigned short __a, vector bool short __b) {
12213   return __a ^ (vector unsigned short)__b;
12214 }
12215 
12216 static __inline__ vector bool short __ATTRS_o_ai
12217 vec_xor(vector bool short __a, vector bool short __b) {
12218   return __a ^ __b;
12219 }
12220 
12221 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
12222                                                   vector int __b) {
12223   return __a ^ __b;
12224 }
12225 
12226 static __inline__ vector int __ATTRS_o_ai vec_xor(vector bool int __a,
12227                                                   vector int __b) {
12228   return (vector int)__a ^ __b;
12229 }
12230 
12231 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
12232                                                   vector bool int __b) {
12233   return __a ^ (vector int)__b;
12234 }
12235 
12236 static __inline__ vector unsigned int __ATTRS_o_ai
12237 vec_xor(vector unsigned int __a, vector unsigned int __b) {
12238   return __a ^ __b;
12239 }
12240 
12241 static __inline__ vector unsigned int __ATTRS_o_ai
12242 vec_xor(vector bool int __a, vector unsigned int __b) {
12243   return (vector unsigned int)__a ^ __b;
12244 }
12245 
12246 static __inline__ vector unsigned int __ATTRS_o_ai
12247 vec_xor(vector unsigned int __a, vector bool int __b) {
12248   return __a ^ (vector unsigned int)__b;
12249 }
12250 
12251 static __inline__ vector bool int __ATTRS_o_ai vec_xor(vector bool int __a,
12252                                                        vector bool int __b) {
12253   return __a ^ __b;
12254 }
12255 
12256 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
12257                                                     vector float __b) {
12258   vector unsigned int __res =
12259       (vector unsigned int)__a ^ (vector unsigned int)__b;
12260   return (vector float)__res;
12261 }
12262 
12263 static __inline__ vector float __ATTRS_o_ai vec_xor(vector bool int __a,
12264                                                     vector float __b) {
12265   vector unsigned int __res =
12266       (vector unsigned int)__a ^ (vector unsigned int)__b;
12267   return (vector float)__res;
12268 }
12269 
12270 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
12271                                                     vector bool int __b) {
12272   vector unsigned int __res =
12273       (vector unsigned int)__a ^ (vector unsigned int)__b;
12274   return (vector float)__res;
12275 }
12276 
12277 #ifdef __VSX__
12278 static __inline__ vector signed long long __ATTRS_o_ai
12279 vec_xor(vector signed long long __a, vector signed long long __b) {
12280   return __a ^ __b;
12281 }
12282 
12283 static __inline__ vector signed long long __ATTRS_o_ai
12284 vec_xor(vector bool long long __a, vector signed long long __b) {
12285   return (vector signed long long)__a ^ __b;
12286 }
12287 
12288 static __inline__ vector signed long long __ATTRS_o_ai
12289 vec_xor(vector signed long long __a, vector bool long long __b) {
12290   return __a ^ (vector signed long long)__b;
12291 }
12292 
12293 static __inline__ vector unsigned long long __ATTRS_o_ai
12294 vec_xor(vector unsigned long long __a, vector unsigned long long __b) {
12295   return __a ^ __b;
12296 }
12297 
12298 static __inline__ vector unsigned long long __ATTRS_o_ai
12299 vec_xor(vector bool long long __a, vector unsigned long long __b) {
12300   return (vector unsigned long long)__a ^ __b;
12301 }
12302 
12303 static __inline__ vector unsigned long long __ATTRS_o_ai
12304 vec_xor(vector unsigned long long __a, vector bool long long __b) {
12305   return __a ^ (vector unsigned long long)__b;
12306 }
12307 
12308 static __inline__ vector bool long long __ATTRS_o_ai
12309 vec_xor(vector bool long long __a, vector bool long long __b) {
12310   return __a ^ __b;
12311 }
12312 
12313 static __inline__ vector double __ATTRS_o_ai vec_xor(vector double __a,
12314                                                      vector double __b) {
12315   return (vector double)((vector unsigned long long)__a ^
12316                          (vector unsigned long long)__b);
12317 }
12318 
12319 static __inline__ vector double __ATTRS_o_ai
12320 vec_xor(vector double __a, vector bool long long __b) {
12321   return (vector double)((vector unsigned long long)__a ^
12322                          (vector unsigned long long)__b);
12323 }
12324 
12325 static __inline__ vector double __ATTRS_o_ai vec_xor(vector bool long long __a,
12326                                                      vector double __b) {
12327   return (vector double)((vector unsigned long long)__a ^
12328                          (vector unsigned long long)__b);
12329 }
12330 #endif
12331 
12332 /* vec_vxor */
12333 
12334 static __inline__ vector signed char __ATTRS_o_ai
12335 vec_vxor(vector signed char __a, vector signed char __b) {
12336   return __a ^ __b;
12337 }
12338 
12339 static __inline__ vector signed char __ATTRS_o_ai
12340 vec_vxor(vector bool char __a, vector signed char __b) {
12341   return (vector signed char)__a ^ __b;
12342 }
12343 
12344 static __inline__ vector signed char __ATTRS_o_ai
12345 vec_vxor(vector signed char __a, vector bool char __b) {
12346   return __a ^ (vector signed char)__b;
12347 }
12348 
12349 static __inline__ vector unsigned char __ATTRS_o_ai
12350 vec_vxor(vector unsigned char __a, vector unsigned char __b) {
12351   return __a ^ __b;
12352 }
12353 
12354 static __inline__ vector unsigned char __ATTRS_o_ai
12355 vec_vxor(vector bool char __a, vector unsigned char __b) {
12356   return (vector unsigned char)__a ^ __b;
12357 }
12358 
12359 static __inline__ vector unsigned char __ATTRS_o_ai
12360 vec_vxor(vector unsigned char __a, vector bool char __b) {
12361   return __a ^ (vector unsigned char)__b;
12362 }
12363 
12364 static __inline__ vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a,
12365                                                          vector bool char __b) {
12366   return __a ^ __b;
12367 }
12368 
12369 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
12370                                                      vector short __b) {
12371   return __a ^ __b;
12372 }
12373 
12374 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector bool short __a,
12375                                                      vector short __b) {
12376   return (vector short)__a ^ __b;
12377 }
12378 
12379 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
12380                                                      vector bool short __b) {
12381   return __a ^ (vector short)__b;
12382 }
12383 
12384 static __inline__ vector unsigned short __ATTRS_o_ai
12385 vec_vxor(vector unsigned short __a, vector unsigned short __b) {
12386   return __a ^ __b;
12387 }
12388 
12389 static __inline__ vector unsigned short __ATTRS_o_ai
12390 vec_vxor(vector bool short __a, vector unsigned short __b) {
12391   return (vector unsigned short)__a ^ __b;
12392 }
12393 
12394 static __inline__ vector unsigned short __ATTRS_o_ai
12395 vec_vxor(vector unsigned short __a, vector bool short __b) {
12396   return __a ^ (vector unsigned short)__b;
12397 }
12398 
12399 static __inline__ vector bool short __ATTRS_o_ai
12400 vec_vxor(vector bool short __a, vector bool short __b) {
12401   return __a ^ __b;
12402 }
12403 
12404 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
12405                                                    vector int __b) {
12406   return __a ^ __b;
12407 }
12408 
12409 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector bool int __a,
12410                                                    vector int __b) {
12411   return (vector int)__a ^ __b;
12412 }
12413 
12414 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
12415                                                    vector bool int __b) {
12416   return __a ^ (vector int)__b;
12417 }
12418 
12419 static __inline__ vector unsigned int __ATTRS_o_ai
12420 vec_vxor(vector unsigned int __a, vector unsigned int __b) {
12421   return __a ^ __b;
12422 }
12423 
12424 static __inline__ vector unsigned int __ATTRS_o_ai
12425 vec_vxor(vector bool int __a, vector unsigned int __b) {
12426   return (vector unsigned int)__a ^ __b;
12427 }
12428 
12429 static __inline__ vector unsigned int __ATTRS_o_ai
12430 vec_vxor(vector unsigned int __a, vector bool int __b) {
12431   return __a ^ (vector unsigned int)__b;
12432 }
12433 
12434 static __inline__ vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a,
12435                                                         vector bool int __b) {
12436   return __a ^ __b;
12437 }
12438 
12439 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
12440                                                      vector float __b) {
12441   vector unsigned int __res =
12442       (vector unsigned int)__a ^ (vector unsigned int)__b;
12443   return (vector float)__res;
12444 }
12445 
12446 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector bool int __a,
12447                                                      vector float __b) {
12448   vector unsigned int __res =
12449       (vector unsigned int)__a ^ (vector unsigned int)__b;
12450   return (vector float)__res;
12451 }
12452 
12453 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
12454                                                      vector bool int __b) {
12455   vector unsigned int __res =
12456       (vector unsigned int)__a ^ (vector unsigned int)__b;
12457   return (vector float)__res;
12458 }
12459 
12460 #ifdef __VSX__
12461 static __inline__ vector signed long long __ATTRS_o_ai
12462 vec_vxor(vector signed long long __a, vector signed long long __b) {
12463   return __a ^ __b;
12464 }
12465 
12466 static __inline__ vector signed long long __ATTRS_o_ai
12467 vec_vxor(vector bool long long __a, vector signed long long __b) {
12468   return (vector signed long long)__a ^ __b;
12469 }
12470 
12471 static __inline__ vector signed long long __ATTRS_o_ai
12472 vec_vxor(vector signed long long __a, vector bool long long __b) {
12473   return __a ^ (vector signed long long)__b;
12474 }
12475 
12476 static __inline__ vector unsigned long long __ATTRS_o_ai
12477 vec_vxor(vector unsigned long long __a, vector unsigned long long __b) {
12478   return __a ^ __b;
12479 }
12480 
12481 static __inline__ vector unsigned long long __ATTRS_o_ai
12482 vec_vxor(vector bool long long __a, vector unsigned long long __b) {
12483   return (vector unsigned long long)__a ^ __b;
12484 }
12485 
12486 static __inline__ vector unsigned long long __ATTRS_o_ai
12487 vec_vxor(vector unsigned long long __a, vector bool long long __b) {
12488   return __a ^ (vector unsigned long long)__b;
12489 }
12490 
12491 static __inline__ vector bool long long __ATTRS_o_ai
12492 vec_vxor(vector bool long long __a, vector bool long long __b) {
12493   return __a ^ __b;
12494 }
12495 #endif
12496 
12497 /* ------------------------ extensions for CBEA ----------------------------- */
12498 
12499 /* vec_extract */
12500 
12501 static __inline__ signed char __ATTRS_o_ai vec_extract(vector signed char __a,
12502                                                        int __b) {
12503   return __a[__b];
12504 }
12505 
12506 static __inline__ unsigned char __ATTRS_o_ai
12507 vec_extract(vector unsigned char __a, int __b) {
12508   return __a[__b];
12509 }
12510 
12511 static __inline__ unsigned char __ATTRS_o_ai vec_extract(vector bool char __a,
12512                                                          int __b) {
12513   return __a[__b];
12514 }
12515 
12516 static __inline__ signed short __ATTRS_o_ai vec_extract(vector signed short __a,
12517                                                         int __b) {
12518   return __a[__b];
12519 }
12520 
12521 static __inline__ unsigned short __ATTRS_o_ai
12522 vec_extract(vector unsigned short __a, int __b) {
12523   return __a[__b];
12524 }
12525 
12526 static __inline__ unsigned short __ATTRS_o_ai vec_extract(vector bool short __a,
12527                                                           int __b) {
12528   return __a[__b];
12529 }
12530 
12531 static __inline__ signed int __ATTRS_o_ai vec_extract(vector signed int __a,
12532                                                       int __b) {
12533   return __a[__b];
12534 }
12535 
12536 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a,
12537                                                         int __b) {
12538   return __a[__b];
12539 }
12540 
12541 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector bool int __a,
12542                                                         int __b) {
12543   return __a[__b];
12544 }
12545 
12546 #ifdef __VSX__
12547 static __inline__ signed long long __ATTRS_o_ai
12548 vec_extract(vector signed long long __a, int __b) {
12549   return __a[__b];
12550 }
12551 
12552 static __inline__ unsigned long long __ATTRS_o_ai
12553 vec_extract(vector unsigned long long __a, int __b) {
12554   return __a[__b];
12555 }
12556 
12557 static __inline__ unsigned long long __ATTRS_o_ai
12558 vec_extract(vector bool long long __a, int __b) {
12559   return __a[__b];
12560 }
12561 
12562 static __inline__ double __ATTRS_o_ai vec_extract(vector double __a, int __b) {
12563   return __a[__b];
12564 }
12565 #endif
12566 
12567 static __inline__ float __ATTRS_o_ai vec_extract(vector float __a, int __b) {
12568   return __a[__b];
12569 }
12570 
12571 #ifdef __POWER9_VECTOR__
12572 
12573 #define vec_insert4b __builtin_vsx_insertword
12574 #define vec_extract4b __builtin_vsx_extractuword
12575 
12576 /* vec_extract_exp */
12577 
12578 static __inline__ vector unsigned int __ATTRS_o_ai
12579 vec_extract_exp(vector float __a) {
12580   return __builtin_vsx_xvxexpsp(__a);
12581 }
12582 
12583 static __inline__ vector unsigned long long __ATTRS_o_ai
12584 vec_extract_exp(vector double __a) {
12585   return __builtin_vsx_xvxexpdp(__a);
12586 }
12587 
12588 /* vec_extract_sig */
12589 
12590 static __inline__ vector unsigned int __ATTRS_o_ai
12591 vec_extract_sig(vector float __a) {
12592   return __builtin_vsx_xvxsigsp(__a);
12593 }
12594 
12595 static __inline__ vector unsigned long long __ATTRS_o_ai
12596 vec_extract_sig (vector double __a) {
12597   return __builtin_vsx_xvxsigdp(__a);
12598 }
12599 
12600 static __inline__ vector float __ATTRS_o_ai
12601 vec_extract_fp32_from_shorth(vector unsigned short __a) {
12602   vector unsigned short __b =
12603 #ifdef __LITTLE_ENDIAN__
12604             __builtin_shufflevector(__a, __a, 0, -1, 1, -1, 2, -1, 3, -1);
12605 #else
12606             __builtin_shufflevector(__a, __a, -1, 0, -1, 1, -1, 2, -1, 3);
12607 #endif
12608   return __builtin_vsx_xvcvhpsp(__b);
12609 }
12610 
12611 static __inline__ vector float __ATTRS_o_ai
12612 vec_extract_fp32_from_shortl(vector unsigned short __a) {
12613   vector unsigned short __b =
12614 #ifdef __LITTLE_ENDIAN__
12615             __builtin_shufflevector(__a, __a, 4, -1, 5, -1, 6, -1, 7, -1);
12616 #else
12617             __builtin_shufflevector(__a, __a, -1, 4, -1, 5, -1, 6, -1, 7);
12618 #endif
12619   return __builtin_vsx_xvcvhpsp(__b);
12620 }
12621 #endif /* __POWER9_VECTOR__ */
12622 
12623 /* vec_insert */
12624 
12625 static __inline__ vector signed char __ATTRS_o_ai
12626 vec_insert(signed char __a, vector signed char __b, int __c) {
12627   __b[__c] = __a;
12628   return __b;
12629 }
12630 
12631 static __inline__ vector unsigned char __ATTRS_o_ai
12632 vec_insert(unsigned char __a, vector unsigned char __b, int __c) {
12633   __b[__c] = __a;
12634   return __b;
12635 }
12636 
12637 static __inline__ vector bool char __ATTRS_o_ai vec_insert(unsigned char __a,
12638                                                            vector bool char __b,
12639                                                            int __c) {
12640   __b[__c] = __a;
12641   return __b;
12642 }
12643 
12644 static __inline__ vector signed short __ATTRS_o_ai
12645 vec_insert(signed short __a, vector signed short __b, int __c) {
12646   __b[__c] = __a;
12647   return __b;
12648 }
12649 
12650 static __inline__ vector unsigned short __ATTRS_o_ai
12651 vec_insert(unsigned short __a, vector unsigned short __b, int __c) {
12652   __b[__c] = __a;
12653   return __b;
12654 }
12655 
12656 static __inline__ vector bool short __ATTRS_o_ai
12657 vec_insert(unsigned short __a, vector bool short __b, int __c) {
12658   __b[__c] = __a;
12659   return __b;
12660 }
12661 
12662 static __inline__ vector signed int __ATTRS_o_ai
12663 vec_insert(signed int __a, vector signed int __b, int __c) {
12664   __b[__c] = __a;
12665   return __b;
12666 }
12667 
12668 static __inline__ vector unsigned int __ATTRS_o_ai
12669 vec_insert(unsigned int __a, vector unsigned int __b, int __c) {
12670   __b[__c] = __a;
12671   return __b;
12672 }
12673 
12674 static __inline__ vector bool int __ATTRS_o_ai vec_insert(unsigned int __a,
12675                                                           vector bool int __b,
12676                                                           int __c) {
12677   __b[__c] = __a;
12678   return __b;
12679 }
12680 
12681 #ifdef __VSX__
12682 static __inline__ vector signed long long __ATTRS_o_ai
12683 vec_insert(signed long long __a, vector signed long long __b, int __c) {
12684   __b[__c] = __a;
12685   return __b;
12686 }
12687 
12688 static __inline__ vector unsigned long long __ATTRS_o_ai
12689 vec_insert(unsigned long long __a, vector unsigned long long __b, int __c) {
12690   __b[__c] = __a;
12691   return __b;
12692 }
12693 
12694 static __inline__ vector bool long long __ATTRS_o_ai
12695 vec_insert(unsigned long long __a, vector bool long long __b, int __c) {
12696   __b[__c] = __a;
12697   return __b;
12698 }
12699 static __inline__ vector double __ATTRS_o_ai vec_insert(double __a,
12700                                                         vector double __b,
12701                                                         int __c) {
12702   __b[__c] = __a;
12703   return __b;
12704 }
12705 #endif
12706 
12707 static __inline__ vector float __ATTRS_o_ai vec_insert(float __a,
12708                                                        vector float __b,
12709                                                        int __c) {
12710   __b[__c] = __a;
12711   return __b;
12712 }
12713 
12714 /* vec_lvlx */
12715 
12716 static __inline__ vector signed char __ATTRS_o_ai
12717 vec_lvlx(int __a, const signed char *__b) {
12718   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
12719                   vec_lvsl(__a, __b));
12720 }
12721 
12722 static __inline__ vector signed char __ATTRS_o_ai
12723 vec_lvlx(int __a, const vector signed char *__b) {
12724   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
12725                   vec_lvsl(__a, (unsigned char *)__b));
12726 }
12727 
12728 static __inline__ vector unsigned char __ATTRS_o_ai
12729 vec_lvlx(int __a, const unsigned char *__b) {
12730   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
12731                   vec_lvsl(__a, __b));
12732 }
12733 
12734 static __inline__ vector unsigned char __ATTRS_o_ai
12735 vec_lvlx(int __a, const vector unsigned char *__b) {
12736   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
12737                   vec_lvsl(__a, (unsigned char *)__b));
12738 }
12739 
12740 static __inline__ vector bool char __ATTRS_o_ai
12741 vec_lvlx(int __a, const vector bool char *__b) {
12742   return vec_perm(vec_ld(__a, __b), (vector bool char)(0),
12743                   vec_lvsl(__a, (unsigned char *)__b));
12744 }
12745 
12746 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
12747                                                      const short *__b) {
12748   return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
12749 }
12750 
12751 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
12752                                                      const vector short *__b) {
12753   return vec_perm(vec_ld(__a, __b), (vector short)(0),
12754                   vec_lvsl(__a, (unsigned char *)__b));
12755 }
12756 
12757 static __inline__ vector unsigned short __ATTRS_o_ai
12758 vec_lvlx(int __a, const unsigned short *__b) {
12759   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
12760                   vec_lvsl(__a, __b));
12761 }
12762 
12763 static __inline__ vector unsigned short __ATTRS_o_ai
12764 vec_lvlx(int __a, const vector unsigned short *__b) {
12765   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
12766                   vec_lvsl(__a, (unsigned char *)__b));
12767 }
12768 
12769 static __inline__ vector bool short __ATTRS_o_ai
12770 vec_lvlx(int __a, const vector bool short *__b) {
12771   return vec_perm(vec_ld(__a, __b), (vector bool short)(0),
12772                   vec_lvsl(__a, (unsigned char *)__b));
12773 }
12774 
12775 static __inline__ vector pixel __ATTRS_o_ai vec_lvlx(int __a,
12776                                                      const vector pixel *__b) {
12777   return vec_perm(vec_ld(__a, __b), (vector pixel)(0),
12778                   vec_lvsl(__a, (unsigned char *)__b));
12779 }
12780 
12781 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) {
12782   return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
12783 }
12784 
12785 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a,
12786                                                    const vector int *__b) {
12787   return vec_perm(vec_ld(__a, __b), (vector int)(0),
12788                   vec_lvsl(__a, (unsigned char *)__b));
12789 }
12790 
12791 static __inline__ vector unsigned int __ATTRS_o_ai
12792 vec_lvlx(int __a, const unsigned int *__b) {
12793   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
12794                   vec_lvsl(__a, __b));
12795 }
12796 
12797 static __inline__ vector unsigned int __ATTRS_o_ai
12798 vec_lvlx(int __a, const vector unsigned int *__b) {
12799   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
12800                   vec_lvsl(__a, (unsigned char *)__b));
12801 }
12802 
12803 static __inline__ vector bool int __ATTRS_o_ai
12804 vec_lvlx(int __a, const vector bool int *__b) {
12805   return vec_perm(vec_ld(__a, __b), (vector bool int)(0),
12806                   vec_lvsl(__a, (unsigned char *)__b));
12807 }
12808 
12809 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
12810                                                      const float *__b) {
12811   return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
12812 }
12813 
12814 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
12815                                                      const vector float *__b) {
12816   return vec_perm(vec_ld(__a, __b), (vector float)(0),
12817                   vec_lvsl(__a, (unsigned char *)__b));
12818 }
12819 
12820 /* vec_lvlxl */
12821 
12822 static __inline__ vector signed char __ATTRS_o_ai
12823 vec_lvlxl(int __a, const signed char *__b) {
12824   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
12825                   vec_lvsl(__a, __b));
12826 }
12827 
12828 static __inline__ vector signed char __ATTRS_o_ai
12829 vec_lvlxl(int __a, const vector signed char *__b) {
12830   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
12831                   vec_lvsl(__a, (unsigned char *)__b));
12832 }
12833 
12834 static __inline__ vector unsigned char __ATTRS_o_ai
12835 vec_lvlxl(int __a, const unsigned char *__b) {
12836   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
12837                   vec_lvsl(__a, __b));
12838 }
12839 
12840 static __inline__ vector unsigned char __ATTRS_o_ai
12841 vec_lvlxl(int __a, const vector unsigned char *__b) {
12842   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
12843                   vec_lvsl(__a, (unsigned char *)__b));
12844 }
12845 
12846 static __inline__ vector bool char __ATTRS_o_ai
12847 vec_lvlxl(int __a, const vector bool char *__b) {
12848   return vec_perm(vec_ldl(__a, __b), (vector bool char)(0),
12849                   vec_lvsl(__a, (unsigned char *)__b));
12850 }
12851 
12852 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
12853                                                       const short *__b) {
12854   return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
12855 }
12856 
12857 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
12858                                                       const vector short *__b) {
12859   return vec_perm(vec_ldl(__a, __b), (vector short)(0),
12860                   vec_lvsl(__a, (unsigned char *)__b));
12861 }
12862 
12863 static __inline__ vector unsigned short __ATTRS_o_ai
12864 vec_lvlxl(int __a, const unsigned short *__b) {
12865   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
12866                   vec_lvsl(__a, __b));
12867 }
12868 
12869 static __inline__ vector unsigned short __ATTRS_o_ai
12870 vec_lvlxl(int __a, const vector unsigned short *__b) {
12871   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
12872                   vec_lvsl(__a, (unsigned char *)__b));
12873 }
12874 
12875 static __inline__ vector bool short __ATTRS_o_ai
12876 vec_lvlxl(int __a, const vector bool short *__b) {
12877   return vec_perm(vec_ldl(__a, __b), (vector bool short)(0),
12878                   vec_lvsl(__a, (unsigned char *)__b));
12879 }
12880 
12881 static __inline__ vector pixel __ATTRS_o_ai vec_lvlxl(int __a,
12882                                                       const vector pixel *__b) {
12883   return vec_perm(vec_ldl(__a, __b), (vector pixel)(0),
12884                   vec_lvsl(__a, (unsigned char *)__b));
12885 }
12886 
12887 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) {
12888   return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
12889 }
12890 
12891 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a,
12892                                                     const vector int *__b) {
12893   return vec_perm(vec_ldl(__a, __b), (vector int)(0),
12894                   vec_lvsl(__a, (unsigned char *)__b));
12895 }
12896 
12897 static __inline__ vector unsigned int __ATTRS_o_ai
12898 vec_lvlxl(int __a, const unsigned int *__b) {
12899   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
12900                   vec_lvsl(__a, __b));
12901 }
12902 
12903 static __inline__ vector unsigned int __ATTRS_o_ai
12904 vec_lvlxl(int __a, const vector unsigned int *__b) {
12905   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
12906                   vec_lvsl(__a, (unsigned char *)__b));
12907 }
12908 
12909 static __inline__ vector bool int __ATTRS_o_ai
12910 vec_lvlxl(int __a, const vector bool int *__b) {
12911   return vec_perm(vec_ldl(__a, __b), (vector bool int)(0),
12912                   vec_lvsl(__a, (unsigned char *)__b));
12913 }
12914 
12915 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
12916                                                       const float *__b) {
12917   return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
12918 }
12919 
12920 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
12921                                                       vector float *__b) {
12922   return vec_perm(vec_ldl(__a, __b), (vector float)(0),
12923                   vec_lvsl(__a, (unsigned char *)__b));
12924 }
12925 
12926 /* vec_lvrx */
12927 
12928 static __inline__ vector signed char __ATTRS_o_ai
12929 vec_lvrx(int __a, const signed char *__b) {
12930   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
12931                   vec_lvsl(__a, __b));
12932 }
12933 
12934 static __inline__ vector signed char __ATTRS_o_ai
12935 vec_lvrx(int __a, const vector signed char *__b) {
12936   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
12937                   vec_lvsl(__a, (unsigned char *)__b));
12938 }
12939 
12940 static __inline__ vector unsigned char __ATTRS_o_ai
12941 vec_lvrx(int __a, const unsigned char *__b) {
12942   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
12943                   vec_lvsl(__a, __b));
12944 }
12945 
12946 static __inline__ vector unsigned char __ATTRS_o_ai
12947 vec_lvrx(int __a, const vector unsigned char *__b) {
12948   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
12949                   vec_lvsl(__a, (unsigned char *)__b));
12950 }
12951 
12952 static __inline__ vector bool char __ATTRS_o_ai
12953 vec_lvrx(int __a, const vector bool char *__b) {
12954   return vec_perm((vector bool char)(0), vec_ld(__a, __b),
12955                   vec_lvsl(__a, (unsigned char *)__b));
12956 }
12957 
12958 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
12959                                                      const short *__b) {
12960   return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
12961 }
12962 
12963 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
12964                                                      const vector short *__b) {
12965   return vec_perm((vector short)(0), vec_ld(__a, __b),
12966                   vec_lvsl(__a, (unsigned char *)__b));
12967 }
12968 
12969 static __inline__ vector unsigned short __ATTRS_o_ai
12970 vec_lvrx(int __a, const unsigned short *__b) {
12971   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
12972                   vec_lvsl(__a, __b));
12973 }
12974 
12975 static __inline__ vector unsigned short __ATTRS_o_ai
12976 vec_lvrx(int __a, const vector unsigned short *__b) {
12977   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
12978                   vec_lvsl(__a, (unsigned char *)__b));
12979 }
12980 
12981 static __inline__ vector bool short __ATTRS_o_ai
12982 vec_lvrx(int __a, const vector bool short *__b) {
12983   return vec_perm((vector bool short)(0), vec_ld(__a, __b),
12984                   vec_lvsl(__a, (unsigned char *)__b));
12985 }
12986 
12987 static __inline__ vector pixel __ATTRS_o_ai vec_lvrx(int __a,
12988                                                      const vector pixel *__b) {
12989   return vec_perm((vector pixel)(0), vec_ld(__a, __b),
12990                   vec_lvsl(__a, (unsigned char *)__b));
12991 }
12992 
12993 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) {
12994   return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
12995 }
12996 
12997 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a,
12998                                                    const vector int *__b) {
12999   return vec_perm((vector int)(0), vec_ld(__a, __b),
13000                   vec_lvsl(__a, (unsigned char *)__b));
13001 }
13002 
13003 static __inline__ vector unsigned int __ATTRS_o_ai
13004 vec_lvrx(int __a, const unsigned int *__b) {
13005   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
13006                   vec_lvsl(__a, __b));
13007 }
13008 
13009 static __inline__ vector unsigned int __ATTRS_o_ai
13010 vec_lvrx(int __a, const vector unsigned int *__b) {
13011   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
13012                   vec_lvsl(__a, (unsigned char *)__b));
13013 }
13014 
13015 static __inline__ vector bool int __ATTRS_o_ai
13016 vec_lvrx(int __a, const vector bool int *__b) {
13017   return vec_perm((vector bool int)(0), vec_ld(__a, __b),
13018                   vec_lvsl(__a, (unsigned char *)__b));
13019 }
13020 
13021 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
13022                                                      const float *__b) {
13023   return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
13024 }
13025 
13026 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
13027                                                      const vector float *__b) {
13028   return vec_perm((vector float)(0), vec_ld(__a, __b),
13029                   vec_lvsl(__a, (unsigned char *)__b));
13030 }
13031 
13032 /* vec_lvrxl */
13033 
13034 static __inline__ vector signed char __ATTRS_o_ai
13035 vec_lvrxl(int __a, const signed char *__b) {
13036   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
13037                   vec_lvsl(__a, __b));
13038 }
13039 
13040 static __inline__ vector signed char __ATTRS_o_ai
13041 vec_lvrxl(int __a, const vector signed char *__b) {
13042   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
13043                   vec_lvsl(__a, (unsigned char *)__b));
13044 }
13045 
13046 static __inline__ vector unsigned char __ATTRS_o_ai
13047 vec_lvrxl(int __a, const unsigned char *__b) {
13048   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
13049                   vec_lvsl(__a, __b));
13050 }
13051 
13052 static __inline__ vector unsigned char __ATTRS_o_ai
13053 vec_lvrxl(int __a, const vector unsigned char *__b) {
13054   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
13055                   vec_lvsl(__a, (unsigned char *)__b));
13056 }
13057 
13058 static __inline__ vector bool char __ATTRS_o_ai
13059 vec_lvrxl(int __a, const vector bool char *__b) {
13060   return vec_perm((vector bool char)(0), vec_ldl(__a, __b),
13061                   vec_lvsl(__a, (unsigned char *)__b));
13062 }
13063 
13064 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
13065                                                       const short *__b) {
13066   return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
13067 }
13068 
13069 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
13070                                                       const vector short *__b) {
13071   return vec_perm((vector short)(0), vec_ldl(__a, __b),
13072                   vec_lvsl(__a, (unsigned char *)__b));
13073 }
13074 
13075 static __inline__ vector unsigned short __ATTRS_o_ai
13076 vec_lvrxl(int __a, const unsigned short *__b) {
13077   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
13078                   vec_lvsl(__a, __b));
13079 }
13080 
13081 static __inline__ vector unsigned short __ATTRS_o_ai
13082 vec_lvrxl(int __a, const vector unsigned short *__b) {
13083   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
13084                   vec_lvsl(__a, (unsigned char *)__b));
13085 }
13086 
13087 static __inline__ vector bool short __ATTRS_o_ai
13088 vec_lvrxl(int __a, const vector bool short *__b) {
13089   return vec_perm((vector bool short)(0), vec_ldl(__a, __b),
13090                   vec_lvsl(__a, (unsigned char *)__b));
13091 }
13092 
13093 static __inline__ vector pixel __ATTRS_o_ai vec_lvrxl(int __a,
13094                                                       const vector pixel *__b) {
13095   return vec_perm((vector pixel)(0), vec_ldl(__a, __b),
13096                   vec_lvsl(__a, (unsigned char *)__b));
13097 }
13098 
13099 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) {
13100   return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
13101 }
13102 
13103 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a,
13104                                                     const vector int *__b) {
13105   return vec_perm((vector int)(0), vec_ldl(__a, __b),
13106                   vec_lvsl(__a, (unsigned char *)__b));
13107 }
13108 
13109 static __inline__ vector unsigned int __ATTRS_o_ai
13110 vec_lvrxl(int __a, const unsigned int *__b) {
13111   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
13112                   vec_lvsl(__a, __b));
13113 }
13114 
13115 static __inline__ vector unsigned int __ATTRS_o_ai
13116 vec_lvrxl(int __a, const vector unsigned int *__b) {
13117   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
13118                   vec_lvsl(__a, (unsigned char *)__b));
13119 }
13120 
13121 static __inline__ vector bool int __ATTRS_o_ai
13122 vec_lvrxl(int __a, const vector bool int *__b) {
13123   return vec_perm((vector bool int)(0), vec_ldl(__a, __b),
13124                   vec_lvsl(__a, (unsigned char *)__b));
13125 }
13126 
13127 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
13128                                                       const float *__b) {
13129   return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
13130 }
13131 
13132 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
13133                                                       const vector float *__b) {
13134   return vec_perm((vector float)(0), vec_ldl(__a, __b),
13135                   vec_lvsl(__a, (unsigned char *)__b));
13136 }
13137 
13138 /* vec_stvlx */
13139 
13140 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
13141                                               signed char *__c) {
13142   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13143                 __c);
13144 }
13145 
13146 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
13147                                               vector signed char *__c) {
13148   return vec_st(
13149       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13150       __b, __c);
13151 }
13152 
13153 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
13154                                               unsigned char *__c) {
13155   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13156                 __c);
13157 }
13158 
13159 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
13160                                               vector unsigned char *__c) {
13161   return vec_st(
13162       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13163       __b, __c);
13164 }
13165 
13166 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b,
13167                                               vector bool char *__c) {
13168   return vec_st(
13169       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13170       __b, __c);
13171 }
13172 
13173 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
13174                                               short *__c) {
13175   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13176                 __c);
13177 }
13178 
13179 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
13180                                               vector short *__c) {
13181   return vec_st(
13182       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13183       __b, __c);
13184 }
13185 
13186 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
13187                                               int __b, unsigned short *__c) {
13188   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13189                 __c);
13190 }
13191 
13192 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
13193                                               int __b,
13194                                               vector unsigned short *__c) {
13195   return vec_st(
13196       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13197       __b, __c);
13198 }
13199 
13200 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b,
13201                                               vector bool short *__c) {
13202   return vec_st(
13203       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13204       __b, __c);
13205 }
13206 
13207 static __inline__ void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b,
13208                                               vector pixel *__c) {
13209   return vec_st(
13210       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13211       __b, __c);
13212 }
13213 
13214 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
13215                                               int *__c) {
13216   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13217                 __c);
13218 }
13219 
13220 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
13221                                               vector int *__c) {
13222   return vec_st(
13223       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13224       __b, __c);
13225 }
13226 
13227 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
13228                                               unsigned int *__c) {
13229   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13230                 __c);
13231 }
13232 
13233 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
13234                                               vector unsigned int *__c) {
13235   return vec_st(
13236       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13237       __b, __c);
13238 }
13239 
13240 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b,
13241                                               vector bool int *__c) {
13242   return vec_st(
13243       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13244       __b, __c);
13245 }
13246 
13247 static __inline__ void __ATTRS_o_ai vec_stvlx(vector float __a, int __b,
13248                                               vector float *__c) {
13249   return vec_st(
13250       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13251       __b, __c);
13252 }
13253 
13254 /* vec_stvlxl */
13255 
13256 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
13257                                                signed char *__c) {
13258   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13259                  __c);
13260 }
13261 
13262 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
13263                                                vector signed char *__c) {
13264   return vec_stl(
13265       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13266       __b, __c);
13267 }
13268 
13269 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
13270                                                int __b, unsigned char *__c) {
13271   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13272                  __c);
13273 }
13274 
13275 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
13276                                                int __b,
13277                                                vector unsigned char *__c) {
13278   return vec_stl(
13279       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13280       __b, __c);
13281 }
13282 
13283 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b,
13284                                                vector bool char *__c) {
13285   return vec_stl(
13286       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13287       __b, __c);
13288 }
13289 
13290 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
13291                                                short *__c) {
13292   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13293                  __c);
13294 }
13295 
13296 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
13297                                                vector short *__c) {
13298   return vec_stl(
13299       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13300       __b, __c);
13301 }
13302 
13303 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
13304                                                int __b, unsigned short *__c) {
13305   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13306                  __c);
13307 }
13308 
13309 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
13310                                                int __b,
13311                                                vector unsigned short *__c) {
13312   return vec_stl(
13313       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13314       __b, __c);
13315 }
13316 
13317 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b,
13318                                                vector bool short *__c) {
13319   return vec_stl(
13320       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13321       __b, __c);
13322 }
13323 
13324 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b,
13325                                                vector pixel *__c) {
13326   return vec_stl(
13327       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13328       __b, __c);
13329 }
13330 
13331 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
13332                                                int *__c) {
13333   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13334                  __c);
13335 }
13336 
13337 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
13338                                                vector int *__c) {
13339   return vec_stl(
13340       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13341       __b, __c);
13342 }
13343 
13344 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
13345                                                unsigned int *__c) {
13346   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13347                  __c);
13348 }
13349 
13350 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
13351                                                vector unsigned int *__c) {
13352   return vec_stl(
13353       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13354       __b, __c);
13355 }
13356 
13357 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b,
13358                                                vector bool int *__c) {
13359   return vec_stl(
13360       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13361       __b, __c);
13362 }
13363 
13364 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b,
13365                                                vector float *__c) {
13366   return vec_stl(
13367       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13368       __b, __c);
13369 }
13370 
13371 /* vec_stvrx */
13372 
13373 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
13374                                               signed char *__c) {
13375   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13376                 __c);
13377 }
13378 
13379 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
13380                                               vector signed char *__c) {
13381   return vec_st(
13382       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13383       __b, __c);
13384 }
13385 
13386 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
13387                                               unsigned char *__c) {
13388   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13389                 __c);
13390 }
13391 
13392 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
13393                                               vector unsigned char *__c) {
13394   return vec_st(
13395       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13396       __b, __c);
13397 }
13398 
13399 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b,
13400                                               vector bool char *__c) {
13401   return vec_st(
13402       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13403       __b, __c);
13404 }
13405 
13406 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
13407                                               short *__c) {
13408   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13409                 __c);
13410 }
13411 
13412 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
13413                                               vector short *__c) {
13414   return vec_st(
13415       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13416       __b, __c);
13417 }
13418 
13419 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
13420                                               int __b, unsigned short *__c) {
13421   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13422                 __c);
13423 }
13424 
13425 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
13426                                               int __b,
13427                                               vector unsigned short *__c) {
13428   return vec_st(
13429       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13430       __b, __c);
13431 }
13432 
13433 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b,
13434                                               vector bool short *__c) {
13435   return vec_st(
13436       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13437       __b, __c);
13438 }
13439 
13440 static __inline__ void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b,
13441                                               vector pixel *__c) {
13442   return vec_st(
13443       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13444       __b, __c);
13445 }
13446 
13447 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
13448                                               int *__c) {
13449   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13450                 __c);
13451 }
13452 
13453 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
13454                                               vector int *__c) {
13455   return vec_st(
13456       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13457       __b, __c);
13458 }
13459 
13460 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
13461                                               unsigned int *__c) {
13462   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13463                 __c);
13464 }
13465 
13466 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
13467                                               vector unsigned int *__c) {
13468   return vec_st(
13469       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13470       __b, __c);
13471 }
13472 
13473 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b,
13474                                               vector bool int *__c) {
13475   return vec_st(
13476       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13477       __b, __c);
13478 }
13479 
13480 static __inline__ void __ATTRS_o_ai vec_stvrx(vector float __a, int __b,
13481                                               vector float *__c) {
13482   return vec_st(
13483       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13484       __b, __c);
13485 }
13486 
13487 /* vec_stvrxl */
13488 
13489 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
13490                                                signed char *__c) {
13491   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13492                  __c);
13493 }
13494 
13495 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
13496                                                vector signed char *__c) {
13497   return vec_stl(
13498       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13499       __b, __c);
13500 }
13501 
13502 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
13503                                                int __b, unsigned char *__c) {
13504   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13505                  __c);
13506 }
13507 
13508 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
13509                                                int __b,
13510                                                vector unsigned char *__c) {
13511   return vec_stl(
13512       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13513       __b, __c);
13514 }
13515 
13516 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b,
13517                                                vector bool char *__c) {
13518   return vec_stl(
13519       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13520       __b, __c);
13521 }
13522 
13523 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
13524                                                short *__c) {
13525   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13526                  __c);
13527 }
13528 
13529 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
13530                                                vector short *__c) {
13531   return vec_stl(
13532       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13533       __b, __c);
13534 }
13535 
13536 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
13537                                                int __b, unsigned short *__c) {
13538   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13539                  __c);
13540 }
13541 
13542 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
13543                                                int __b,
13544                                                vector unsigned short *__c) {
13545   return vec_stl(
13546       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13547       __b, __c);
13548 }
13549 
13550 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b,
13551                                                vector bool short *__c) {
13552   return vec_stl(
13553       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13554       __b, __c);
13555 }
13556 
13557 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b,
13558                                                vector pixel *__c) {
13559   return vec_stl(
13560       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13561       __b, __c);
13562 }
13563 
13564 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
13565                                                int *__c) {
13566   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13567                  __c);
13568 }
13569 
13570 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
13571                                                vector int *__c) {
13572   return vec_stl(
13573       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13574       __b, __c);
13575 }
13576 
13577 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
13578                                                unsigned int *__c) {
13579   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13580                  __c);
13581 }
13582 
13583 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
13584                                                vector unsigned int *__c) {
13585   return vec_stl(
13586       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13587       __b, __c);
13588 }
13589 
13590 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b,
13591                                                vector bool int *__c) {
13592   return vec_stl(
13593       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13594       __b, __c);
13595 }
13596 
13597 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
13598                                                vector float *__c) {
13599   return vec_stl(
13600       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13601       __b, __c);
13602 }
13603 
13604 /* vec_promote */
13605 
13606 static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
13607                                                               int __b) {
13608   vector signed char __res = (vector signed char)(0);
13609   __res[__b] = __a;
13610   return __res;
13611 }
13612 
13613 static __inline__ vector unsigned char __ATTRS_o_ai
13614 vec_promote(unsigned char __a, int __b) {
13615   vector unsigned char __res = (vector unsigned char)(0);
13616   __res[__b] = __a;
13617   return __res;
13618 }
13619 
13620 static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
13621   vector short __res = (vector short)(0);
13622   __res[__b] = __a;
13623   return __res;
13624 }
13625 
13626 static __inline__ vector unsigned short __ATTRS_o_ai
13627 vec_promote(unsigned short __a, int __b) {
13628   vector unsigned short __res = (vector unsigned short)(0);
13629   __res[__b] = __a;
13630   return __res;
13631 }
13632 
13633 static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
13634   vector int __res = (vector int)(0);
13635   __res[__b] = __a;
13636   return __res;
13637 }
13638 
13639 static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
13640                                                                int __b) {
13641   vector unsigned int __res = (vector unsigned int)(0);
13642   __res[__b] = __a;
13643   return __res;
13644 }
13645 
13646 static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
13647   vector float __res = (vector float)(0);
13648   __res[__b] = __a;
13649   return __res;
13650 }
13651 
13652 /* vec_splats */
13653 
13654 static __inline__ vector signed char __ATTRS_o_ai vec_splats(signed char __a) {
13655   return (vector signed char)(__a);
13656 }
13657 
13658 static __inline__ vector unsigned char __ATTRS_o_ai
13659 vec_splats(unsigned char __a) {
13660   return (vector unsigned char)(__a);
13661 }
13662 
13663 static __inline__ vector short __ATTRS_o_ai vec_splats(short __a) {
13664   return (vector short)(__a);
13665 }
13666 
13667 static __inline__ vector unsigned short __ATTRS_o_ai
13668 vec_splats(unsigned short __a) {
13669   return (vector unsigned short)(__a);
13670 }
13671 
13672 static __inline__ vector int __ATTRS_o_ai vec_splats(int __a) {
13673   return (vector int)(__a);
13674 }
13675 
13676 static __inline__ vector unsigned int __ATTRS_o_ai
13677 vec_splats(unsigned int __a) {
13678   return (vector unsigned int)(__a);
13679 }
13680 
13681 #ifdef __VSX__
13682 static __inline__ vector signed long long __ATTRS_o_ai
13683 vec_splats(signed long long __a) {
13684   return (vector signed long long)(__a);
13685 }
13686 
13687 static __inline__ vector unsigned long long __ATTRS_o_ai
13688 vec_splats(unsigned long long __a) {
13689   return (vector unsigned long long)(__a);
13690 }
13691 
13692 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
13693 static __inline__ vector signed __int128 __ATTRS_o_ai
13694 vec_splats(signed __int128 __a) {
13695   return (vector signed __int128)(__a);
13696 }
13697 
13698 static __inline__ vector unsigned __int128 __ATTRS_o_ai
13699 vec_splats(unsigned __int128 __a) {
13700   return (vector unsigned __int128)(__a);
13701 }
13702 
13703 #endif
13704 
13705 static __inline__ vector double __ATTRS_o_ai vec_splats(double __a) {
13706   return (vector double)(__a);
13707 }
13708 #endif
13709 
13710 static __inline__ vector float __ATTRS_o_ai vec_splats(float __a) {
13711   return (vector float)(__a);
13712 }
13713 
13714 /* ----------------------------- predicates --------------------------------- */
13715 
13716 /* vec_all_eq */
13717 
13718 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
13719                                               vector signed char __b) {
13720   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13721                                       (vector char)__b);
13722 }
13723 
13724 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
13725                                               vector bool char __b) {
13726   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13727                                       (vector char)__b);
13728 }
13729 
13730 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
13731                                               vector unsigned char __b) {
13732   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13733                                       (vector char)__b);
13734 }
13735 
13736 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
13737                                               vector bool char __b) {
13738   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13739                                       (vector char)__b);
13740 }
13741 
13742 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
13743                                               vector signed char __b) {
13744   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13745                                       (vector char)__b);
13746 }
13747 
13748 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
13749                                               vector unsigned char __b) {
13750   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13751                                       (vector char)__b);
13752 }
13753 
13754 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
13755                                               vector bool char __b) {
13756   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13757                                       (vector char)__b);
13758 }
13759 
13760 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
13761                                               vector short __b) {
13762   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
13763 }
13764 
13765 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
13766                                               vector bool short __b) {
13767   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
13768 }
13769 
13770 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
13771                                               vector unsigned short __b) {
13772   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13773                                       (vector short)__b);
13774 }
13775 
13776 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
13777                                               vector bool short __b) {
13778   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13779                                       (vector short)__b);
13780 }
13781 
13782 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
13783                                               vector short __b) {
13784   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13785                                       (vector short)__b);
13786 }
13787 
13788 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
13789                                               vector unsigned short __b) {
13790   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13791                                       (vector short)__b);
13792 }
13793 
13794 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
13795                                               vector bool short __b) {
13796   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13797                                       (vector short)__b);
13798 }
13799 
13800 static __inline__ int __ATTRS_o_ai vec_all_eq(vector pixel __a,
13801                                               vector pixel __b) {
13802   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13803                                       (vector short)__b);
13804 }
13805 
13806 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) {
13807   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
13808 }
13809 
13810 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a,
13811                                               vector bool int __b) {
13812   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
13813 }
13814 
13815 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
13816                                               vector unsigned int __b) {
13817   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13818                                       (vector int)__b);
13819 }
13820 
13821 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
13822                                               vector bool int __b) {
13823   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13824                                       (vector int)__b);
13825 }
13826 
13827 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
13828                                               vector int __b) {
13829   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13830                                       (vector int)__b);
13831 }
13832 
13833 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
13834                                               vector unsigned int __b) {
13835   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13836                                       (vector int)__b);
13837 }
13838 
13839 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
13840                                               vector bool int __b) {
13841   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13842                                       (vector int)__b);
13843 }
13844 
13845 #ifdef __POWER8_VECTOR__
13846 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed long long __a,
13847                                               vector signed long long __b) {
13848   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b);
13849 }
13850 
13851 static __inline__ int __ATTRS_o_ai vec_all_eq(vector long long __a,
13852                                               vector bool long long __b) {
13853   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b);
13854 }
13855 
13856 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
13857                                               vector unsigned long long __b) {
13858   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13859                                       (vector long long)__b);
13860 }
13861 
13862 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
13863                                               vector bool long long __b) {
13864   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13865                                       (vector long long)__b);
13866 }
13867 
13868 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
13869                                               vector long long __b) {
13870   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13871                                       (vector long long)__b);
13872 }
13873 
13874 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
13875                                               vector unsigned long long __b) {
13876   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13877                                       (vector long long)__b);
13878 }
13879 
13880 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
13881                                               vector bool long long __b) {
13882   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13883                                       (vector long long)__b);
13884 }
13885 #endif
13886 
13887 static __inline__ int __ATTRS_o_ai vec_all_eq(vector float __a,
13888                                               vector float __b) {
13889 #ifdef __VSX__
13890   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT, __a, __b);
13891 #else
13892   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
13893 #endif
13894 }
13895 
13896 #ifdef __VSX__
13897 static __inline__ int __ATTRS_o_ai vec_all_eq(vector double __a,
13898                                               vector double __b) {
13899   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT, __a, __b);
13900 }
13901 #endif
13902 
13903 /* vec_all_ge */
13904 
13905 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
13906                                               vector signed char __b) {
13907   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
13908 }
13909 
13910 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
13911                                               vector bool char __b) {
13912   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
13913 }
13914 
13915 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
13916                                               vector unsigned char __b) {
13917   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
13918 }
13919 
13920 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
13921                                               vector bool char __b) {
13922   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
13923 }
13924 
13925 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
13926                                               vector signed char __b) {
13927   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
13928                                       (vector unsigned char)__a);
13929 }
13930 
13931 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
13932                                               vector unsigned char __b) {
13933   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
13934 }
13935 
13936 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
13937                                               vector bool char __b) {
13938   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
13939                                       (vector unsigned char)__a);
13940 }
13941 
13942 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
13943                                               vector short __b) {
13944   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
13945 }
13946 
13947 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
13948                                               vector bool short __b) {
13949   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
13950 }
13951 
13952 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
13953                                               vector unsigned short __b) {
13954   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
13955 }
13956 
13957 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
13958                                               vector bool short __b) {
13959   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
13960                                       __a);
13961 }
13962 
13963 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
13964                                               vector short __b) {
13965   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
13966                                       (vector unsigned short)__a);
13967 }
13968 
13969 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
13970                                               vector unsigned short __b) {
13971   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b,
13972                                       (vector unsigned short)__a);
13973 }
13974 
13975 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
13976                                               vector bool short __b) {
13977   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
13978                                       (vector unsigned short)__a);
13979 }
13980 
13981 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) {
13982   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
13983 }
13984 
13985 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a,
13986                                               vector bool int __b) {
13987   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
13988 }
13989 
13990 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
13991                                               vector unsigned int __b) {
13992   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
13993 }
13994 
13995 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
13996                                               vector bool int __b) {
13997   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
13998 }
13999 
14000 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
14001                                               vector int __b) {
14002   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
14003                                       (vector unsigned int)__a);
14004 }
14005 
14006 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
14007                                               vector unsigned int __b) {
14008   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
14009 }
14010 
14011 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
14012                                               vector bool int __b) {
14013   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
14014                                       (vector unsigned int)__a);
14015 }
14016 
14017 #ifdef __POWER8_VECTOR__
14018 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
14019                                               vector signed long long __b) {
14020   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a);
14021 }
14022 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
14023                                               vector bool long long __b) {
14024   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b,
14025                                       __a);
14026 }
14027 
14028 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
14029                                               vector unsigned long long __b) {
14030   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a);
14031 }
14032 
14033 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
14034                                               vector bool long long __b) {
14035   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
14036                                       __a);
14037 }
14038 
14039 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
14040                                               vector signed long long __b) {
14041   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
14042                                       (vector unsigned long long)__a);
14043 }
14044 
14045 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
14046                                               vector unsigned long long __b) {
14047   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b,
14048                                       (vector unsigned long long)__a);
14049 }
14050 
14051 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
14052                                               vector bool long long __b) {
14053   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
14054                                       (vector unsigned long long)__a);
14055 }
14056 #endif
14057 
14058 static __inline__ int __ATTRS_o_ai vec_all_ge(vector float __a,
14059                                               vector float __b) {
14060 #ifdef __VSX__
14061   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __a, __b);
14062 #else
14063   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
14064 #endif
14065 }
14066 
14067 #ifdef __VSX__
14068 static __inline__ int __ATTRS_o_ai vec_all_ge(vector double __a,
14069                                               vector double __b) {
14070   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __a, __b);
14071 }
14072 #endif
14073 
14074 /* vec_all_gt */
14075 
14076 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
14077                                               vector signed char __b) {
14078   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
14079 }
14080 
14081 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
14082                                               vector bool char __b) {
14083   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
14084 }
14085 
14086 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
14087                                               vector unsigned char __b) {
14088   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
14089 }
14090 
14091 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
14092                                               vector bool char __b) {
14093   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
14094 }
14095 
14096 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
14097                                               vector signed char __b) {
14098   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
14099                                       (vector unsigned char)__b);
14100 }
14101 
14102 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
14103                                               vector unsigned char __b) {
14104   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
14105 }
14106 
14107 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
14108                                               vector bool char __b) {
14109   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
14110                                       (vector unsigned char)__b);
14111 }
14112 
14113 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
14114                                               vector short __b) {
14115   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
14116 }
14117 
14118 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
14119                                               vector bool short __b) {
14120   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
14121 }
14122 
14123 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
14124                                               vector unsigned short __b) {
14125   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
14126 }
14127 
14128 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
14129                                               vector bool short __b) {
14130   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a,
14131                                       (vector unsigned short)__b);
14132 }
14133 
14134 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
14135                                               vector short __b) {
14136   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
14137                                       (vector unsigned short)__b);
14138 }
14139 
14140 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
14141                                               vector unsigned short __b) {
14142   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
14143                                       __b);
14144 }
14145 
14146 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
14147                                               vector bool short __b) {
14148   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
14149                                       (vector unsigned short)__b);
14150 }
14151 
14152 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) {
14153   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
14154 }
14155 
14156 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a,
14157                                               vector bool int __b) {
14158   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
14159 }
14160 
14161 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
14162                                               vector unsigned int __b) {
14163   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
14164 }
14165 
14166 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
14167                                               vector bool int __b) {
14168   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
14169 }
14170 
14171 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
14172                                               vector int __b) {
14173   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
14174                                       (vector unsigned int)__b);
14175 }
14176 
14177 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
14178                                               vector unsigned int __b) {
14179   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
14180 }
14181 
14182 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
14183                                               vector bool int __b) {
14184   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
14185                                       (vector unsigned int)__b);
14186 }
14187 
14188 #ifdef __POWER8_VECTOR__
14189 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
14190                                               vector signed long long __b) {
14191   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b);
14192 }
14193 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
14194                                               vector bool long long __b) {
14195   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a,
14196                                       (vector signed long long)__b);
14197 }
14198 
14199 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
14200                                               vector unsigned long long __b) {
14201   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b);
14202 }
14203 
14204 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
14205                                               vector bool long long __b) {
14206   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a,
14207                                       (vector unsigned long long)__b);
14208 }
14209 
14210 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
14211                                               vector signed long long __b) {
14212   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
14213                                       (vector unsigned long long)__b);
14214 }
14215 
14216 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
14217                                               vector unsigned long long __b) {
14218   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
14219                                       __b);
14220 }
14221 
14222 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
14223                                               vector bool long long __b) {
14224   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
14225                                       (vector unsigned long long)__b);
14226 }
14227 #endif
14228 
14229 static __inline__ int __ATTRS_o_ai vec_all_gt(vector float __a,
14230                                               vector float __b) {
14231 #ifdef __VSX__
14232   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __a, __b);
14233 #else
14234   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
14235 #endif
14236 }
14237 
14238 #ifdef __VSX__
14239 static __inline__ int __ATTRS_o_ai vec_all_gt(vector double __a,
14240                                               vector double __b) {
14241   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __a, __b);
14242 }
14243 #endif
14244 
14245 /* vec_all_in */
14246 
14247 static __inline__ int __attribute__((__always_inline__))
14248 vec_all_in(vector float __a, vector float __b) {
14249   return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
14250 }
14251 
14252 /* vec_all_le */
14253 
14254 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
14255                                               vector signed char __b) {
14256   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
14257 }
14258 
14259 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
14260                                               vector bool char __b) {
14261   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
14262 }
14263 
14264 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
14265                                               vector unsigned char __b) {
14266   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
14267 }
14268 
14269 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
14270                                               vector bool char __b) {
14271   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
14272 }
14273 
14274 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
14275                                               vector signed char __b) {
14276   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
14277                                       (vector unsigned char)__b);
14278 }
14279 
14280 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
14281                                               vector unsigned char __b) {
14282   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
14283 }
14284 
14285 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
14286                                               vector bool char __b) {
14287   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
14288                                       (vector unsigned char)__b);
14289 }
14290 
14291 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
14292                                               vector short __b) {
14293   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
14294 }
14295 
14296 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
14297                                               vector bool short __b) {
14298   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
14299 }
14300 
14301 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
14302                                               vector unsigned short __b) {
14303   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
14304 }
14305 
14306 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
14307                                               vector bool short __b) {
14308   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a,
14309                                       (vector unsigned short)__b);
14310 }
14311 
14312 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
14313                                               vector short __b) {
14314   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
14315                                       (vector unsigned short)__b);
14316 }
14317 
14318 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
14319                                               vector unsigned short __b) {
14320   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
14321                                       __b);
14322 }
14323 
14324 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
14325                                               vector bool short __b) {
14326   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
14327                                       (vector unsigned short)__b);
14328 }
14329 
14330 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) {
14331   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
14332 }
14333 
14334 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a,
14335                                               vector bool int __b) {
14336   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
14337 }
14338 
14339 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
14340                                               vector unsigned int __b) {
14341   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
14342 }
14343 
14344 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
14345                                               vector bool int __b) {
14346   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
14347 }
14348 
14349 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
14350                                               vector int __b) {
14351   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
14352                                       (vector unsigned int)__b);
14353 }
14354 
14355 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
14356                                               vector unsigned int __b) {
14357   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
14358 }
14359 
14360 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
14361                                               vector bool int __b) {
14362   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
14363                                       (vector unsigned int)__b);
14364 }
14365 
14366 #ifdef __POWER8_VECTOR__
14367 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
14368                                               vector signed long long __b) {
14369   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b);
14370 }
14371 
14372 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
14373                                               vector unsigned long long __b) {
14374   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b);
14375 }
14376 
14377 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
14378                                               vector bool long long __b) {
14379   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a,
14380                                       (vector signed long long)__b);
14381 }
14382 
14383 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
14384                                               vector bool long long __b) {
14385   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a,
14386                                       (vector unsigned long long)__b);
14387 }
14388 
14389 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
14390                                               vector signed long long __b) {
14391   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
14392                                       (vector unsigned long long)__b);
14393 }
14394 
14395 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
14396                                               vector unsigned long long __b) {
14397   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
14398                                       __b);
14399 }
14400 
14401 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
14402                                               vector bool long long __b) {
14403   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
14404                                       (vector unsigned long long)__b);
14405 }
14406 #endif
14407 
14408 static __inline__ int __ATTRS_o_ai vec_all_le(vector float __a,
14409                                               vector float __b) {
14410 #ifdef __VSX__
14411   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __b, __a);
14412 #else
14413   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
14414 #endif
14415 }
14416 
14417 #ifdef __VSX__
14418 static __inline__ int __ATTRS_o_ai vec_all_le(vector double __a,
14419                                               vector double __b) {
14420   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __b, __a);
14421 }
14422 #endif
14423 
14424 /* vec_all_lt */
14425 
14426 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
14427                                               vector signed char __b) {
14428   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
14429 }
14430 
14431 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
14432                                               vector bool char __b) {
14433   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
14434 }
14435 
14436 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
14437                                               vector unsigned char __b) {
14438   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
14439 }
14440 
14441 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
14442                                               vector bool char __b) {
14443   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
14444 }
14445 
14446 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
14447                                               vector signed char __b) {
14448   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
14449                                       (vector unsigned char)__a);
14450 }
14451 
14452 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
14453                                               vector unsigned char __b) {
14454   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
14455 }
14456 
14457 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
14458                                               vector bool char __b) {
14459   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
14460                                       (vector unsigned char)__a);
14461 }
14462 
14463 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
14464                                               vector short __b) {
14465   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
14466 }
14467 
14468 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
14469                                               vector bool short __b) {
14470   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
14471 }
14472 
14473 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
14474                                               vector unsigned short __b) {
14475   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
14476 }
14477 
14478 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
14479                                               vector bool short __b) {
14480   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
14481                                       __a);
14482 }
14483 
14484 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
14485                                               vector short __b) {
14486   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
14487                                       (vector unsigned short)__a);
14488 }
14489 
14490 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
14491                                               vector unsigned short __b) {
14492   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b,
14493                                       (vector unsigned short)__a);
14494 }
14495 
14496 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
14497                                               vector bool short __b) {
14498   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
14499                                       (vector unsigned short)__a);
14500 }
14501 
14502 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) {
14503   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
14504 }
14505 
14506 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a,
14507                                               vector bool int __b) {
14508   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
14509 }
14510 
14511 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
14512                                               vector unsigned int __b) {
14513   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
14514 }
14515 
14516 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
14517                                               vector bool int __b) {
14518   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
14519 }
14520 
14521 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
14522                                               vector int __b) {
14523   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
14524                                       (vector unsigned int)__a);
14525 }
14526 
14527 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
14528                                               vector unsigned int __b) {
14529   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
14530 }
14531 
14532 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
14533                                               vector bool int __b) {
14534   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
14535                                       (vector unsigned int)__a);
14536 }
14537 
14538 #ifdef __POWER8_VECTOR__
14539 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
14540                                               vector signed long long __b) {
14541   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a);
14542 }
14543 
14544 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
14545                                               vector unsigned long long __b) {
14546   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a);
14547 }
14548 
14549 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
14550                                               vector bool long long __b) {
14551   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b,
14552                                       __a);
14553 }
14554 
14555 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
14556                                               vector bool long long __b) {
14557   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
14558                                       __a);
14559 }
14560 
14561 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
14562                                               vector signed long long __b) {
14563   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
14564                                       (vector unsigned long long)__a);
14565 }
14566 
14567 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
14568                                               vector unsigned long long __b) {
14569   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b,
14570                                       (vector unsigned long long)__a);
14571 }
14572 
14573 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
14574                                               vector bool long long __b) {
14575   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
14576                                       (vector unsigned long long)__a);
14577 }
14578 #endif
14579 
14580 static __inline__ int __ATTRS_o_ai vec_all_lt(vector float __a,
14581                                               vector float __b) {
14582 #ifdef __VSX__
14583   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __b, __a);
14584 #else
14585   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
14586 #endif
14587 }
14588 
14589 #ifdef __VSX__
14590 static __inline__ int __ATTRS_o_ai vec_all_lt(vector double __a,
14591                                               vector double __b) {
14592   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __b, __a);
14593 }
14594 #endif
14595 
14596 /* vec_all_nan */
14597 
14598 static __inline__ int __ATTRS_o_ai vec_all_nan(vector float __a) {
14599 #ifdef __VSX__
14600   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __a);
14601 #else
14602   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
14603 #endif
14604 }
14605 
14606 #ifdef __VSX__
14607 static __inline__ int __ATTRS_o_ai vec_all_nan(vector double __a) {
14608   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __a);
14609 }
14610 #endif
14611 
14612 /* vec_all_ne */
14613 
14614 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
14615                                               vector signed char __b) {
14616   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14617                                       (vector char)__b);
14618 }
14619 
14620 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
14621                                               vector bool char __b) {
14622   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14623                                       (vector char)__b);
14624 }
14625 
14626 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
14627                                               vector unsigned char __b) {
14628   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14629                                       (vector char)__b);
14630 }
14631 
14632 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
14633                                               vector bool char __b) {
14634   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14635                                       (vector char)__b);
14636 }
14637 
14638 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
14639                                               vector signed char __b) {
14640   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14641                                       (vector char)__b);
14642 }
14643 
14644 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
14645                                               vector unsigned char __b) {
14646   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14647                                       (vector char)__b);
14648 }
14649 
14650 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
14651                                               vector bool char __b) {
14652   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14653                                       (vector char)__b);
14654 }
14655 
14656 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
14657                                               vector short __b) {
14658   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
14659 }
14660 
14661 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
14662                                               vector bool short __b) {
14663   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
14664 }
14665 
14666 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
14667                                               vector unsigned short __b) {
14668   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14669                                       (vector short)__b);
14670 }
14671 
14672 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
14673                                               vector bool short __b) {
14674   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14675                                       (vector short)__b);
14676 }
14677 
14678 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
14679                                               vector short __b) {
14680   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14681                                       (vector short)__b);
14682 }
14683 
14684 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
14685                                               vector unsigned short __b) {
14686   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14687                                       (vector short)__b);
14688 }
14689 
14690 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
14691                                               vector bool short __b) {
14692   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14693                                       (vector short)__b);
14694 }
14695 
14696 static __inline__ int __ATTRS_o_ai vec_all_ne(vector pixel __a,
14697                                               vector pixel __b) {
14698   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14699                                       (vector short)__b);
14700 }
14701 
14702 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) {
14703   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
14704 }
14705 
14706 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a,
14707                                               vector bool int __b) {
14708   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
14709 }
14710 
14711 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
14712                                               vector unsigned int __b) {
14713   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14714                                       (vector int)__b);
14715 }
14716 
14717 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
14718                                               vector bool int __b) {
14719   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14720                                       (vector int)__b);
14721 }
14722 
14723 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
14724                                               vector int __b) {
14725   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14726                                       (vector int)__b);
14727 }
14728 
14729 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
14730                                               vector unsigned int __b) {
14731   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14732                                       (vector int)__b);
14733 }
14734 
14735 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
14736                                               vector bool int __b) {
14737   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14738                                       (vector int)__b);
14739 }
14740 
14741 #ifdef __POWER8_VECTOR__
14742 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
14743                                               vector signed long long __b) {
14744   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b);
14745 }
14746 
14747 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
14748                                               vector unsigned long long __b) {
14749   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a,
14750                                       (vector long long)__b);
14751 }
14752 
14753 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
14754                                               vector bool long long __b) {
14755   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a,
14756                                       (vector signed long long)__b);
14757 }
14758 
14759 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
14760                                               vector bool long long __b) {
14761   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
14762                                       (vector signed long long)__b);
14763 }
14764 
14765 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
14766                                               vector signed long long __b) {
14767   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
14768                                       (vector signed long long)__b);
14769 }
14770 
14771 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
14772                                               vector unsigned long long __b) {
14773   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
14774                                       (vector signed long long)__b);
14775 }
14776 
14777 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
14778                                               vector bool long long __b) {
14779   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
14780                                       (vector signed long long)__b);
14781 }
14782 #endif
14783 
14784 static __inline__ int __ATTRS_o_ai vec_all_ne(vector float __a,
14785                                               vector float __b) {
14786 #ifdef __VSX__
14787   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __b);
14788 #else
14789   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
14790 #endif
14791 }
14792 
14793 #ifdef __VSX__
14794 static __inline__ int __ATTRS_o_ai vec_all_ne(vector double __a,
14795                                               vector double __b) {
14796   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
14797 }
14798 #endif
14799 
14800 /* vec_all_nge */
14801 
14802 static __inline__ int __ATTRS_o_ai vec_all_nge(vector float __a,
14803                                                vector float __b) {
14804 #ifdef __VSX__
14805   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ, __a, __b);
14806 #else
14807   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
14808 #endif
14809 }
14810 
14811 #ifdef __VSX__
14812 static __inline__ int __ATTRS_o_ai vec_all_nge(vector double __a,
14813                                                vector double __b) {
14814   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ, __a, __b);
14815 }
14816 #endif
14817 
14818 /* vec_all_ngt */
14819 
14820 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector float __a,
14821                                                vector float __b) {
14822 #ifdef __VSX__
14823   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ, __a, __b);
14824 #else
14825   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
14826 #endif
14827 }
14828 
14829 #ifdef __VSX__
14830 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector double __a,
14831                                                vector double __b) {
14832   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ, __a, __b);
14833 }
14834 #endif
14835 
14836 /* vec_all_nle */
14837 
14838 static __inline__ int __attribute__((__always_inline__))
14839 vec_all_nle(vector float __a, vector float __b) {
14840   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
14841 }
14842 
14843 /* vec_all_nlt */
14844 
14845 static __inline__ int __attribute__((__always_inline__))
14846 vec_all_nlt(vector float __a, vector float __b) {
14847   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
14848 }
14849 
14850 /* vec_all_numeric */
14851 
14852 static __inline__ int __attribute__((__always_inline__))
14853 vec_all_numeric(vector float __a) {
14854   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
14855 }
14856 
14857 /* vec_any_eq */
14858 
14859 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
14860                                               vector signed char __b) {
14861   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14862                                       (vector char)__b);
14863 }
14864 
14865 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
14866                                               vector bool char __b) {
14867   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14868                                       (vector char)__b);
14869 }
14870 
14871 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
14872                                               vector unsigned char __b) {
14873   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14874                                       (vector char)__b);
14875 }
14876 
14877 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
14878                                               vector bool char __b) {
14879   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14880                                       (vector char)__b);
14881 }
14882 
14883 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
14884                                               vector signed char __b) {
14885   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14886                                       (vector char)__b);
14887 }
14888 
14889 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
14890                                               vector unsigned char __b) {
14891   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14892                                       (vector char)__b);
14893 }
14894 
14895 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
14896                                               vector bool char __b) {
14897   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14898                                       (vector char)__b);
14899 }
14900 
14901 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
14902                                               vector short __b) {
14903   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
14904 }
14905 
14906 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
14907                                               vector bool short __b) {
14908   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
14909 }
14910 
14911 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
14912                                               vector unsigned short __b) {
14913   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14914                                       (vector short)__b);
14915 }
14916 
14917 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
14918                                               vector bool short __b) {
14919   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14920                                       (vector short)__b);
14921 }
14922 
14923 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
14924                                               vector short __b) {
14925   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14926                                       (vector short)__b);
14927 }
14928 
14929 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
14930                                               vector unsigned short __b) {
14931   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14932                                       (vector short)__b);
14933 }
14934 
14935 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
14936                                               vector bool short __b) {
14937   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14938                                       (vector short)__b);
14939 }
14940 
14941 static __inline__ int __ATTRS_o_ai vec_any_eq(vector pixel __a,
14942                                               vector pixel __b) {
14943   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14944                                       (vector short)__b);
14945 }
14946 
14947 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) {
14948   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
14949 }
14950 
14951 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a,
14952                                               vector bool int __b) {
14953   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
14954 }
14955 
14956 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
14957                                               vector unsigned int __b) {
14958   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14959                                       (vector int)__b);
14960 }
14961 
14962 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
14963                                               vector bool int __b) {
14964   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14965                                       (vector int)__b);
14966 }
14967 
14968 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
14969                                               vector int __b) {
14970   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14971                                       (vector int)__b);
14972 }
14973 
14974 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
14975                                               vector unsigned int __b) {
14976   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14977                                       (vector int)__b);
14978 }
14979 
14980 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
14981                                               vector bool int __b) {
14982   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14983                                       (vector int)__b);
14984 }
14985 
14986 #ifdef __POWER8_VECTOR__
14987 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
14988                                               vector signed long long __b) {
14989   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b);
14990 }
14991 
14992 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
14993                                               vector unsigned long long __b) {
14994   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a,
14995                                       (vector long long)__b);
14996 }
14997 
14998 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
14999                                               vector bool long long __b) {
15000   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a,
15001                                       (vector signed long long)__b);
15002 }
15003 
15004 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
15005                                               vector bool long long __b) {
15006   return __builtin_altivec_vcmpequd_p(
15007       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15008 }
15009 
15010 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
15011                                               vector signed long long __b) {
15012   return __builtin_altivec_vcmpequd_p(
15013       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15014 }
15015 
15016 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
15017                                               vector unsigned long long __b) {
15018   return __builtin_altivec_vcmpequd_p(
15019       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15020 }
15021 
15022 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
15023                                               vector bool long long __b) {
15024   return __builtin_altivec_vcmpequd_p(
15025       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15026 }
15027 #endif
15028 
15029 static __inline__ int __ATTRS_o_ai vec_any_eq(vector float __a,
15030                                               vector float __b) {
15031 #ifdef __VSX__
15032   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ_REV, __a, __b);
15033 #else
15034   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
15035 #endif
15036 }
15037 
15038 #ifdef __VSX__
15039 static __inline__ int __ATTRS_o_ai vec_any_eq(vector double __a,
15040                                               vector double __b) {
15041   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ_REV, __a, __b);
15042 }
15043 #endif
15044 
15045 /* vec_any_ge */
15046 
15047 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
15048                                               vector signed char __b) {
15049   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
15050 }
15051 
15052 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
15053                                               vector bool char __b) {
15054   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b,
15055                                       __a);
15056 }
15057 
15058 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
15059                                               vector unsigned char __b) {
15060   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
15061 }
15062 
15063 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
15064                                               vector bool char __b) {
15065   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
15066                                       __a);
15067 }
15068 
15069 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
15070                                               vector signed char __b) {
15071   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
15072                                       (vector unsigned char)__a);
15073 }
15074 
15075 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
15076                                               vector unsigned char __b) {
15077   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b,
15078                                       (vector unsigned char)__a);
15079 }
15080 
15081 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
15082                                               vector bool char __b) {
15083   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
15084                                       (vector unsigned char)__a);
15085 }
15086 
15087 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
15088                                               vector short __b) {
15089   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
15090 }
15091 
15092 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
15093                                               vector bool short __b) {
15094   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
15095 }
15096 
15097 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
15098                                               vector unsigned short __b) {
15099   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
15100 }
15101 
15102 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
15103                                               vector bool short __b) {
15104   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
15105                                       __a);
15106 }
15107 
15108 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
15109                                               vector short __b) {
15110   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
15111                                       (vector unsigned short)__a);
15112 }
15113 
15114 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
15115                                               vector unsigned short __b) {
15116   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b,
15117                                       (vector unsigned short)__a);
15118 }
15119 
15120 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
15121                                               vector bool short __b) {
15122   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
15123                                       (vector unsigned short)__a);
15124 }
15125 
15126 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) {
15127   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
15128 }
15129 
15130 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a,
15131                                               vector bool int __b) {
15132   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
15133 }
15134 
15135 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
15136                                               vector unsigned int __b) {
15137   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
15138 }
15139 
15140 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
15141                                               vector bool int __b) {
15142   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
15143                                       __a);
15144 }
15145 
15146 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
15147                                               vector int __b) {
15148   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
15149                                       (vector unsigned int)__a);
15150 }
15151 
15152 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
15153                                               vector unsigned int __b) {
15154   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b,
15155                                       (vector unsigned int)__a);
15156 }
15157 
15158 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
15159                                               vector bool int __b) {
15160   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
15161                                       (vector unsigned int)__a);
15162 }
15163 
15164 #ifdef __POWER8_VECTOR__
15165 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
15166                                               vector signed long long __b) {
15167   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a);
15168 }
15169 
15170 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
15171                                               vector unsigned long long __b) {
15172   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a);
15173 }
15174 
15175 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
15176                                               vector bool long long __b) {
15177   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV,
15178                                       (vector signed long long)__b, __a);
15179 }
15180 
15181 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
15182                                               vector bool long long __b) {
15183   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15184                                       (vector unsigned long long)__b, __a);
15185 }
15186 
15187 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
15188                                               vector signed long long __b) {
15189   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15190                                       (vector unsigned long long)__b,
15191                                       (vector unsigned long long)__a);
15192 }
15193 
15194 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
15195                                               vector unsigned long long __b) {
15196   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b,
15197                                       (vector unsigned long long)__a);
15198 }
15199 
15200 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
15201                                               vector bool long long __b) {
15202   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15203                                       (vector unsigned long long)__b,
15204                                       (vector unsigned long long)__a);
15205 }
15206 #endif
15207 
15208 static __inline__ int __ATTRS_o_ai vec_any_ge(vector float __a,
15209                                               vector float __b) {
15210 #ifdef __VSX__
15211   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __a, __b);
15212 #else
15213   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
15214 #endif
15215 }
15216 
15217 #ifdef __VSX__
15218 static __inline__ int __ATTRS_o_ai vec_any_ge(vector double __a,
15219                                               vector double __b) {
15220   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __a, __b);
15221 }
15222 #endif
15223 
15224 /* vec_any_gt */
15225 
15226 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
15227                                               vector signed char __b) {
15228   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
15229 }
15230 
15231 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
15232                                               vector bool char __b) {
15233   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a,
15234                                       (vector signed char)__b);
15235 }
15236 
15237 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
15238                                               vector unsigned char __b) {
15239   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
15240 }
15241 
15242 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
15243                                               vector bool char __b) {
15244   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a,
15245                                       (vector unsigned char)__b);
15246 }
15247 
15248 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
15249                                               vector signed char __b) {
15250   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
15251                                       (vector unsigned char)__b);
15252 }
15253 
15254 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
15255                                               vector unsigned char __b) {
15256   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
15257                                       __b);
15258 }
15259 
15260 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
15261                                               vector bool char __b) {
15262   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
15263                                       (vector unsigned char)__b);
15264 }
15265 
15266 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
15267                                               vector short __b) {
15268   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
15269 }
15270 
15271 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
15272                                               vector bool short __b) {
15273   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
15274 }
15275 
15276 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
15277                                               vector unsigned short __b) {
15278   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
15279 }
15280 
15281 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
15282                                               vector bool short __b) {
15283   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a,
15284                                       (vector unsigned short)__b);
15285 }
15286 
15287 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
15288                                               vector short __b) {
15289   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
15290                                       (vector unsigned short)__b);
15291 }
15292 
15293 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
15294                                               vector unsigned short __b) {
15295   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
15296                                       __b);
15297 }
15298 
15299 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
15300                                               vector bool short __b) {
15301   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
15302                                       (vector unsigned short)__b);
15303 }
15304 
15305 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) {
15306   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
15307 }
15308 
15309 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a,
15310                                               vector bool int __b) {
15311   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
15312 }
15313 
15314 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
15315                                               vector unsigned int __b) {
15316   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
15317 }
15318 
15319 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
15320                                               vector bool int __b) {
15321   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a,
15322                                       (vector unsigned int)__b);
15323 }
15324 
15325 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
15326                                               vector int __b) {
15327   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
15328                                       (vector unsigned int)__b);
15329 }
15330 
15331 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
15332                                               vector unsigned int __b) {
15333   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
15334                                       __b);
15335 }
15336 
15337 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
15338                                               vector bool int __b) {
15339   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
15340                                       (vector unsigned int)__b);
15341 }
15342 
15343 #ifdef __POWER8_VECTOR__
15344 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
15345                                               vector signed long long __b) {
15346   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b);
15347 }
15348 
15349 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
15350                                               vector unsigned long long __b) {
15351   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b);
15352 }
15353 
15354 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
15355                                               vector bool long long __b) {
15356   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a,
15357                                       (vector signed long long)__b);
15358 }
15359 
15360 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
15361                                               vector bool long long __b) {
15362   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a,
15363                                       (vector unsigned long long)__b);
15364 }
15365 
15366 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
15367                                               vector signed long long __b) {
15368   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15369                                       (vector unsigned long long)__a,
15370                                       (vector unsigned long long)__b);
15371 }
15372 
15373 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
15374                                               vector unsigned long long __b) {
15375   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15376                                       (vector unsigned long long)__a, __b);
15377 }
15378 
15379 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
15380                                               vector bool long long __b) {
15381   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15382                                       (vector unsigned long long)__a,
15383                                       (vector unsigned long long)__b);
15384 }
15385 #endif
15386 
15387 static __inline__ int __ATTRS_o_ai vec_any_gt(vector float __a,
15388                                               vector float __b) {
15389 #ifdef __VSX__
15390   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __a, __b);
15391 #else
15392   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
15393 #endif
15394 }
15395 
15396 #ifdef __VSX__
15397 static __inline__ int __ATTRS_o_ai vec_any_gt(vector double __a,
15398                                               vector double __b) {
15399   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __a, __b);
15400 }
15401 #endif
15402 
15403 /* vec_any_le */
15404 
15405 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
15406                                               vector signed char __b) {
15407   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
15408 }
15409 
15410 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
15411                                               vector bool char __b) {
15412   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a,
15413                                       (vector signed char)__b);
15414 }
15415 
15416 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
15417                                               vector unsigned char __b) {
15418   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
15419 }
15420 
15421 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
15422                                               vector bool char __b) {
15423   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a,
15424                                       (vector unsigned char)__b);
15425 }
15426 
15427 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
15428                                               vector signed char __b) {
15429   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
15430                                       (vector unsigned char)__b);
15431 }
15432 
15433 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
15434                                               vector unsigned char __b) {
15435   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
15436                                       __b);
15437 }
15438 
15439 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
15440                                               vector bool char __b) {
15441   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
15442                                       (vector unsigned char)__b);
15443 }
15444 
15445 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
15446                                               vector short __b) {
15447   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
15448 }
15449 
15450 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
15451                                               vector bool short __b) {
15452   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
15453 }
15454 
15455 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
15456                                               vector unsigned short __b) {
15457   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
15458 }
15459 
15460 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
15461                                               vector bool short __b) {
15462   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a,
15463                                       (vector unsigned short)__b);
15464 }
15465 
15466 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
15467                                               vector short __b) {
15468   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
15469                                       (vector unsigned short)__b);
15470 }
15471 
15472 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
15473                                               vector unsigned short __b) {
15474   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
15475                                       __b);
15476 }
15477 
15478 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
15479                                               vector bool short __b) {
15480   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
15481                                       (vector unsigned short)__b);
15482 }
15483 
15484 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) {
15485   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
15486 }
15487 
15488 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a,
15489                                               vector bool int __b) {
15490   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
15491 }
15492 
15493 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
15494                                               vector unsigned int __b) {
15495   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
15496 }
15497 
15498 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
15499                                               vector bool int __b) {
15500   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a,
15501                                       (vector unsigned int)__b);
15502 }
15503 
15504 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
15505                                               vector int __b) {
15506   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
15507                                       (vector unsigned int)__b);
15508 }
15509 
15510 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
15511                                               vector unsigned int __b) {
15512   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
15513                                       __b);
15514 }
15515 
15516 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
15517                                               vector bool int __b) {
15518   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
15519                                       (vector unsigned int)__b);
15520 }
15521 
15522 #ifdef __POWER8_VECTOR__
15523 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
15524                                               vector signed long long __b) {
15525   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b);
15526 }
15527 
15528 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
15529                                               vector unsigned long long __b) {
15530   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b);
15531 }
15532 
15533 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
15534                                               vector bool long long __b) {
15535   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a,
15536                                       (vector signed long long)__b);
15537 }
15538 
15539 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
15540                                               vector bool long long __b) {
15541   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a,
15542                                       (vector unsigned long long)__b);
15543 }
15544 
15545 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
15546                                               vector signed long long __b) {
15547   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15548                                       (vector unsigned long long)__a,
15549                                       (vector unsigned long long)__b);
15550 }
15551 
15552 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
15553                                               vector unsigned long long __b) {
15554   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15555                                       (vector unsigned long long)__a, __b);
15556 }
15557 
15558 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
15559                                               vector bool long long __b) {
15560   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15561                                       (vector unsigned long long)__a,
15562                                       (vector unsigned long long)__b);
15563 }
15564 #endif
15565 
15566 static __inline__ int __ATTRS_o_ai vec_any_le(vector float __a,
15567                                               vector float __b) {
15568 #ifdef __VSX__
15569   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __b, __a);
15570 #else
15571   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
15572 #endif
15573 }
15574 
15575 #ifdef __VSX__
15576 static __inline__ int __ATTRS_o_ai vec_any_le(vector double __a,
15577                                               vector double __b) {
15578   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __b, __a);
15579 }
15580 #endif
15581 
15582 /* vec_any_lt */
15583 
15584 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
15585                                               vector signed char __b) {
15586   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
15587 }
15588 
15589 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
15590                                               vector bool char __b) {
15591   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b,
15592                                       __a);
15593 }
15594 
15595 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
15596                                               vector unsigned char __b) {
15597   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
15598 }
15599 
15600 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
15601                                               vector bool char __b) {
15602   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
15603                                       __a);
15604 }
15605 
15606 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
15607                                               vector signed char __b) {
15608   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
15609                                       (vector unsigned char)__a);
15610 }
15611 
15612 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
15613                                               vector unsigned char __b) {
15614   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b,
15615                                       (vector unsigned char)__a);
15616 }
15617 
15618 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
15619                                               vector bool char __b) {
15620   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
15621                                       (vector unsigned char)__a);
15622 }
15623 
15624 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
15625                                               vector short __b) {
15626   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
15627 }
15628 
15629 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
15630                                               vector bool short __b) {
15631   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
15632 }
15633 
15634 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
15635                                               vector unsigned short __b) {
15636   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
15637 }
15638 
15639 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
15640                                               vector bool short __b) {
15641   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
15642                                       __a);
15643 }
15644 
15645 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
15646                                               vector short __b) {
15647   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
15648                                       (vector unsigned short)__a);
15649 }
15650 
15651 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
15652                                               vector unsigned short __b) {
15653   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b,
15654                                       (vector unsigned short)__a);
15655 }
15656 
15657 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
15658                                               vector bool short __b) {
15659   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
15660                                       (vector unsigned short)__a);
15661 }
15662 
15663 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) {
15664   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
15665 }
15666 
15667 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a,
15668                                               vector bool int __b) {
15669   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
15670 }
15671 
15672 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
15673                                               vector unsigned int __b) {
15674   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
15675 }
15676 
15677 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
15678                                               vector bool int __b) {
15679   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
15680                                       __a);
15681 }
15682 
15683 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
15684                                               vector int __b) {
15685   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
15686                                       (vector unsigned int)__a);
15687 }
15688 
15689 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
15690                                               vector unsigned int __b) {
15691   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b,
15692                                       (vector unsigned int)__a);
15693 }
15694 
15695 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
15696                                               vector bool int __b) {
15697   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
15698                                       (vector unsigned int)__a);
15699 }
15700 
15701 #ifdef __POWER8_VECTOR__
15702 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
15703                                               vector signed long long __b) {
15704   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a);
15705 }
15706 
15707 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
15708                                               vector unsigned long long __b) {
15709   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a);
15710 }
15711 
15712 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
15713                                               vector bool long long __b) {
15714   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV,
15715                                       (vector signed long long)__b, __a);
15716 }
15717 
15718 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
15719                                               vector bool long long __b) {
15720   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15721                                       (vector unsigned long long)__b, __a);
15722 }
15723 
15724 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
15725                                               vector signed long long __b) {
15726   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15727                                       (vector unsigned long long)__b,
15728                                       (vector unsigned long long)__a);
15729 }
15730 
15731 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
15732                                               vector unsigned long long __b) {
15733   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b,
15734                                       (vector unsigned long long)__a);
15735 }
15736 
15737 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
15738                                               vector bool long long __b) {
15739   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15740                                       (vector unsigned long long)__b,
15741                                       (vector unsigned long long)__a);
15742 }
15743 #endif
15744 
15745 static __inline__ int __ATTRS_o_ai vec_any_lt(vector float __a,
15746                                               vector float __b) {
15747 #ifdef __VSX__
15748   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __b, __a);
15749 #else
15750   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
15751 #endif
15752 }
15753 
15754 #ifdef __VSX__
15755 static __inline__ int __ATTRS_o_ai vec_any_lt(vector double __a,
15756                                               vector double __b) {
15757   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __b, __a);
15758 }
15759 #endif
15760 
15761 /* vec_any_nan */
15762 
15763 static __inline__ int __attribute__((__always_inline__))
15764 vec_any_nan(vector float __a) {
15765   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
15766 }
15767 
15768 /* vec_any_ne */
15769 
15770 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
15771                                               vector signed char __b) {
15772   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15773                                       (vector char)__b);
15774 }
15775 
15776 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
15777                                               vector bool char __b) {
15778   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15779                                       (vector char)__b);
15780 }
15781 
15782 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
15783                                               vector unsigned char __b) {
15784   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15785                                       (vector char)__b);
15786 }
15787 
15788 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
15789                                               vector bool char __b) {
15790   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15791                                       (vector char)__b);
15792 }
15793 
15794 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
15795                                               vector signed char __b) {
15796   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15797                                       (vector char)__b);
15798 }
15799 
15800 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
15801                                               vector unsigned char __b) {
15802   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15803                                       (vector char)__b);
15804 }
15805 
15806 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
15807                                               vector bool char __b) {
15808   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15809                                       (vector char)__b);
15810 }
15811 
15812 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
15813                                               vector short __b) {
15814   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
15815 }
15816 
15817 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
15818                                               vector bool short __b) {
15819   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
15820 }
15821 
15822 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
15823                                               vector unsigned short __b) {
15824   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15825                                       (vector short)__b);
15826 }
15827 
15828 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
15829                                               vector bool short __b) {
15830   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15831                                       (vector short)__b);
15832 }
15833 
15834 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
15835                                               vector short __b) {
15836   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15837                                       (vector short)__b);
15838 }
15839 
15840 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
15841                                               vector unsigned short __b) {
15842   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15843                                       (vector short)__b);
15844 }
15845 
15846 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
15847                                               vector bool short __b) {
15848   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15849                                       (vector short)__b);
15850 }
15851 
15852 static __inline__ int __ATTRS_o_ai vec_any_ne(vector pixel __a,
15853                                               vector pixel __b) {
15854   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15855                                       (vector short)__b);
15856 }
15857 
15858 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) {
15859   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
15860 }
15861 
15862 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a,
15863                                               vector bool int __b) {
15864   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
15865 }
15866 
15867 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
15868                                               vector unsigned int __b) {
15869   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15870                                       (vector int)__b);
15871 }
15872 
15873 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
15874                                               vector bool int __b) {
15875   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15876                                       (vector int)__b);
15877 }
15878 
15879 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
15880                                               vector int __b) {
15881   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15882                                       (vector int)__b);
15883 }
15884 
15885 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
15886                                               vector unsigned int __b) {
15887   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15888                                       (vector int)__b);
15889 }
15890 
15891 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
15892                                               vector bool int __b) {
15893   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15894                                       (vector int)__b);
15895 }
15896 
15897 #ifdef __POWER8_VECTOR__
15898 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
15899                                               vector signed long long __b) {
15900   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b);
15901 }
15902 
15903 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
15904                                               vector unsigned long long __b) {
15905   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a,
15906                                       (vector long long)__b);
15907 }
15908 
15909 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
15910                                               vector bool long long __b) {
15911   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a,
15912                                       (vector signed long long)__b);
15913 }
15914 
15915 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
15916                                               vector bool long long __b) {
15917   return __builtin_altivec_vcmpequd_p(
15918       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
15919 }
15920 
15921 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
15922                                               vector signed long long __b) {
15923   return __builtin_altivec_vcmpequd_p(
15924       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
15925 }
15926 
15927 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
15928                                               vector unsigned long long __b) {
15929   return __builtin_altivec_vcmpequd_p(
15930       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
15931 }
15932 
15933 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
15934                                               vector bool long long __b) {
15935   return __builtin_altivec_vcmpequd_p(
15936       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
15937 }
15938 #endif
15939 
15940 static __inline__ int __ATTRS_o_ai vec_any_ne(vector float __a,
15941                                               vector float __b) {
15942 #ifdef __VSX__
15943   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT_REV, __a, __b);
15944 #else
15945   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
15946 #endif
15947 }
15948 
15949 #ifdef __VSX__
15950 static __inline__ int __ATTRS_o_ai vec_any_ne(vector double __a,
15951                                               vector double __b) {
15952   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT_REV, __a, __b);
15953 }
15954 #endif
15955 
15956 /* vec_any_nge */
15957 
15958 static __inline__ int __attribute__((__always_inline__))
15959 vec_any_nge(vector float __a, vector float __b) {
15960   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
15961 }
15962 
15963 /* vec_any_ngt */
15964 
15965 static __inline__ int __attribute__((__always_inline__))
15966 vec_any_ngt(vector float __a, vector float __b) {
15967   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
15968 }
15969 
15970 /* vec_any_nle */
15971 
15972 static __inline__ int __attribute__((__always_inline__))
15973 vec_any_nle(vector float __a, vector float __b) {
15974   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
15975 }
15976 
15977 /* vec_any_nlt */
15978 
15979 static __inline__ int __attribute__((__always_inline__))
15980 vec_any_nlt(vector float __a, vector float __b) {
15981   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
15982 }
15983 
15984 /* vec_any_numeric */
15985 
15986 static __inline__ int __attribute__((__always_inline__))
15987 vec_any_numeric(vector float __a) {
15988   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
15989 }
15990 
15991 /* vec_any_out */
15992 
15993 static __inline__ int __attribute__((__always_inline__))
15994 vec_any_out(vector float __a, vector float __b) {
15995   return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
15996 }
15997 
15998 /* Power 8 Crypto functions
15999 Note: We diverge from the current GCC implementation with regard
16000 to cryptography and related functions as follows:
16001 - Only the SHA and AES instructions and builtins are disabled by -mno-crypto
16002 - The remaining ones are only available on Power8 and up so
16003   require -mpower8-vector
16004 The justification for this is that export requirements require that
16005 Category:Vector.Crypto is optional (i.e. compliant hardware may not provide
16006 support). As a result, we need to be able to turn off support for those.
16007 The remaining ones (currently controlled by -mcrypto for GCC) still
16008 need to be provided on compliant hardware even if Vector.Crypto is not
16009 provided.
16010 */
16011 #ifdef __CRYPTO__
16012 #define vec_sbox_be __builtin_altivec_crypto_vsbox
16013 #define vec_cipher_be __builtin_altivec_crypto_vcipher
16014 #define vec_cipherlast_be __builtin_altivec_crypto_vcipherlast
16015 #define vec_ncipher_be __builtin_altivec_crypto_vncipher
16016 #define vec_ncipherlast_be __builtin_altivec_crypto_vncipherlast
16017 
16018 static __inline__ vector unsigned long long __attribute__((__always_inline__))
16019 __builtin_crypto_vsbox(vector unsigned long long __a) {
16020   return __builtin_altivec_crypto_vsbox(__a);
16021 }
16022 
16023 static __inline__ vector unsigned long long __attribute__((__always_inline__))
16024 __builtin_crypto_vcipher(vector unsigned long long __a,
16025                          vector unsigned long long __b) {
16026   return __builtin_altivec_crypto_vcipher(__a, __b);
16027 }
16028 
16029 static __inline__ vector unsigned long long __attribute__((__always_inline__))
16030 __builtin_crypto_vcipherlast(vector unsigned long long __a,
16031                              vector unsigned long long __b) {
16032   return __builtin_altivec_crypto_vcipherlast(__a, __b);
16033 }
16034 
16035 static __inline__ vector unsigned long long __attribute__((__always_inline__))
16036 __builtin_crypto_vncipher(vector unsigned long long __a,
16037                           vector unsigned long long __b) {
16038   return __builtin_altivec_crypto_vncipher(__a, __b);
16039 }
16040 
16041 static __inline__ vector unsigned long long __attribute__((__always_inline__))
16042 __builtin_crypto_vncipherlast(vector unsigned long long __a,
16043                               vector unsigned long long __b) {
16044   return __builtin_altivec_crypto_vncipherlast(__a, __b);
16045 }
16046 
16047 #define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad
16048 #define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw
16049 
16050 #define vec_shasigma_be(X, Y, Z)                                               \
16051   _Generic((X), vector unsigned int                                            \
16052            : __builtin_crypto_vshasigmaw, vector unsigned long long            \
16053            : __builtin_crypto_vshasigmad)((X), (Y), (Z))
16054 #endif
16055 
16056 #ifdef __POWER8_VECTOR__
16057 static __inline__ vector bool char __ATTRS_o_ai
16058 vec_permxor(vector bool char __a, vector bool char __b,
16059             vector bool char __c) {
16060   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16061 }
16062 
16063 static __inline__ vector signed char __ATTRS_o_ai
16064 vec_permxor(vector signed char __a, vector signed char __b,
16065             vector signed char __c) {
16066   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16067 }
16068 
16069 static __inline__ vector unsigned char __ATTRS_o_ai
16070 vec_permxor(vector unsigned char __a, vector unsigned char __b,
16071             vector unsigned char __c) {
16072   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16073 }
16074 
16075 static __inline__ vector unsigned char __ATTRS_o_ai
16076 __builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b,
16077                           vector unsigned char __c) {
16078   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16079 }
16080 
16081 static __inline__ vector unsigned short __ATTRS_o_ai
16082 __builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b,
16083                           vector unsigned short __c) {
16084   return (vector unsigned short)__builtin_altivec_crypto_vpermxor(
16085       (vector unsigned char)__a, (vector unsigned char)__b,
16086       (vector unsigned char)__c);
16087 }
16088 
16089 static __inline__ vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor(
16090     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
16091   return (vector unsigned int)__builtin_altivec_crypto_vpermxor(
16092       (vector unsigned char)__a, (vector unsigned char)__b,
16093       (vector unsigned char)__c);
16094 }
16095 
16096 static __inline__ vector unsigned long long __ATTRS_o_ai
16097 __builtin_crypto_vpermxor(vector unsigned long long __a,
16098                           vector unsigned long long __b,
16099                           vector unsigned long long __c) {
16100   return (vector unsigned long long)__builtin_altivec_crypto_vpermxor(
16101       (vector unsigned char)__a, (vector unsigned char)__b,
16102       (vector unsigned char)__c);
16103 }
16104 
16105 static __inline__ vector unsigned char __ATTRS_o_ai
16106 __builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) {
16107   return __builtin_altivec_crypto_vpmsumb(__a, __b);
16108 }
16109 
16110 static __inline__ vector unsigned short __ATTRS_o_ai
16111 __builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) {
16112   return __builtin_altivec_crypto_vpmsumh(__a, __b);
16113 }
16114 
16115 static __inline__ vector unsigned int __ATTRS_o_ai
16116 __builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) {
16117   return __builtin_altivec_crypto_vpmsumw(__a, __b);
16118 }
16119 
16120 static __inline__ vector unsigned long long __ATTRS_o_ai
16121 __builtin_crypto_vpmsumb(vector unsigned long long __a,
16122                          vector unsigned long long __b) {
16123   return __builtin_altivec_crypto_vpmsumd(__a, __b);
16124 }
16125 
16126 static __inline__ vector signed char __ATTRS_o_ai
16127 vec_vgbbd(vector signed char __a) {
16128   return __builtin_altivec_vgbbd((vector unsigned char)__a);
16129 }
16130 
16131 #define vec_pmsum_be __builtin_crypto_vpmsumb
16132 #define vec_gb __builtin_altivec_vgbbd
16133 
16134 static __inline__ vector unsigned char __ATTRS_o_ai
16135 vec_vgbbd(vector unsigned char __a) {
16136   return __builtin_altivec_vgbbd(__a);
16137 }
16138 
16139 static __inline__ vector long long __ATTRS_o_ai
16140 vec_vbpermq(vector signed char __a, vector signed char __b) {
16141   return __builtin_altivec_vbpermq((vector unsigned char)__a,
16142                                    (vector unsigned char)__b);
16143 }
16144 
16145 static __inline__ vector long long __ATTRS_o_ai
16146 vec_vbpermq(vector unsigned char __a, vector unsigned char __b) {
16147   return __builtin_altivec_vbpermq(__a, __b);
16148 }
16149 
16150 #ifdef __powerpc64__
16151 static __inline__ vector unsigned long long __attribute__((__always_inline__))
16152 vec_bperm(vector unsigned __int128 __a, vector unsigned char __b) {
16153   return __builtin_altivec_vbpermq((vector unsigned char)__a,
16154                                    (vector unsigned char)__b);
16155 }
16156 #endif
16157 #endif
16158 
16159 
16160 /* vec_reve */
16161 
16162 static inline __ATTRS_o_ai vector bool char vec_reve(vector bool char __a) {
16163   return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
16164                                  5, 4, 3, 2, 1, 0);
16165 }
16166 
16167 static inline __ATTRS_o_ai vector signed char vec_reve(vector signed char __a) {
16168   return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
16169                                  5, 4, 3, 2, 1, 0);
16170 }
16171 
16172 static inline __ATTRS_o_ai vector unsigned char
16173 vec_reve(vector unsigned char __a) {
16174   return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
16175                                  5, 4, 3, 2, 1, 0);
16176 }
16177 
16178 static inline __ATTRS_o_ai vector bool int vec_reve(vector bool int __a) {
16179   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16180 }
16181 
16182 static inline __ATTRS_o_ai vector signed int vec_reve(vector signed int __a) {
16183   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16184 }
16185 
16186 static inline __ATTRS_o_ai vector unsigned int
16187 vec_reve(vector unsigned int __a) {
16188   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16189 }
16190 
16191 static inline __ATTRS_o_ai vector bool short vec_reve(vector bool short __a) {
16192   return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
16193 }
16194 
16195 static inline __ATTRS_o_ai vector signed short
16196 vec_reve(vector signed short __a) {
16197   return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
16198 }
16199 
16200 static inline __ATTRS_o_ai vector unsigned short
16201 vec_reve(vector unsigned short __a) {
16202   return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
16203 }
16204 
16205 static inline __ATTRS_o_ai vector float vec_reve(vector float __a) {
16206   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16207 }
16208 
16209 #ifdef __VSX__
16210 static inline __ATTRS_o_ai vector bool long long
16211 vec_reve(vector bool long long __a) {
16212   return __builtin_shufflevector(__a, __a, 1, 0);
16213 }
16214 
16215 static inline __ATTRS_o_ai vector signed long long
16216 vec_reve(vector signed long long __a) {
16217   return __builtin_shufflevector(__a, __a, 1, 0);
16218 }
16219 
16220 static inline __ATTRS_o_ai vector unsigned long long
16221 vec_reve(vector unsigned long long __a) {
16222   return __builtin_shufflevector(__a, __a, 1, 0);
16223 }
16224 
16225 static inline __ATTRS_o_ai vector double vec_reve(vector double __a) {
16226   return __builtin_shufflevector(__a, __a, 1, 0);
16227 }
16228 #endif
16229 
16230 /* vec_revb */
16231 static __inline__ vector bool char __ATTRS_o_ai
16232 vec_revb(vector bool char __a) {
16233   return __a;
16234 }
16235 
16236 static __inline__ vector signed char __ATTRS_o_ai
16237 vec_revb(vector signed char __a) {
16238   return __a;
16239 }
16240 
16241 static __inline__ vector unsigned char __ATTRS_o_ai
16242 vec_revb(vector unsigned char __a) {
16243   return __a;
16244 }
16245 
16246 static __inline__ vector bool short __ATTRS_o_ai
16247 vec_revb(vector bool short __a) {
16248   vector unsigned char __indices =
16249       { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
16250   return vec_perm(__a, __a, __indices);
16251 }
16252 
16253 static __inline__ vector signed short __ATTRS_o_ai
16254 vec_revb(vector signed short __a) {
16255   vector unsigned char __indices =
16256       { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
16257   return vec_perm(__a, __a, __indices);
16258 }
16259 
16260 static __inline__ vector unsigned short __ATTRS_o_ai
16261 vec_revb(vector unsigned short __a) {
16262   vector unsigned char __indices =
16263      { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
16264   return vec_perm(__a, __a, __indices);
16265 }
16266 
16267 static __inline__ vector bool int __ATTRS_o_ai
16268 vec_revb(vector bool int __a) {
16269   vector unsigned char __indices =
16270       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16271   return vec_perm(__a, __a, __indices);
16272 }
16273 
16274 static __inline__ vector signed int __ATTRS_o_ai
16275 vec_revb(vector signed int __a) {
16276   vector unsigned char __indices =
16277       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16278   return vec_perm(__a, __a, __indices);
16279 }
16280 
16281 static __inline__ vector unsigned int __ATTRS_o_ai
16282 vec_revb(vector unsigned int __a) {
16283   vector unsigned char __indices =
16284       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16285   return vec_perm(__a, __a, __indices);
16286 }
16287 
16288 static __inline__ vector float __ATTRS_o_ai
16289 vec_revb(vector float __a) {
16290  vector unsigned char __indices =
16291       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16292  return vec_perm(__a, __a, __indices);
16293 }
16294 
16295 #ifdef __VSX__
16296 static __inline__ vector bool long long __ATTRS_o_ai
16297 vec_revb(vector bool long long __a) {
16298   vector unsigned char __indices =
16299       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16300   return vec_perm(__a, __a, __indices);
16301 }
16302 
16303 static __inline__ vector signed long long __ATTRS_o_ai
16304 vec_revb(vector signed long long __a) {
16305   vector unsigned char __indices =
16306       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16307   return vec_perm(__a, __a, __indices);
16308 }
16309 
16310 static __inline__ vector unsigned long long __ATTRS_o_ai
16311 vec_revb(vector unsigned long long __a) {
16312   vector unsigned char __indices =
16313       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16314   return vec_perm(__a, __a, __indices);
16315 }
16316 
16317 static __inline__ vector double __ATTRS_o_ai
16318 vec_revb(vector double __a) {
16319   vector unsigned char __indices =
16320       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16321   return vec_perm(__a, __a, __indices);
16322 }
16323 #endif /* End __VSX__ */
16324 
16325 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16326 static __inline__ vector signed __int128 __ATTRS_o_ai
16327 vec_revb(vector signed __int128 __a) {
16328   vector unsigned char __indices =
16329       { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
16330   return (vector signed __int128)vec_perm((vector signed int)__a,
16331                                           (vector signed int)__a,
16332                                            __indices);
16333 }
16334 
16335 static __inline__ vector unsigned __int128 __ATTRS_o_ai
16336 vec_revb(vector unsigned __int128 __a) {
16337   vector unsigned char __indices =
16338       { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
16339   return (vector unsigned __int128)vec_perm((vector signed int)__a,
16340                                             (vector signed int)__a,
16341                                              __indices);
16342 }
16343 #endif /* END __POWER8_VECTOR__ && __powerpc64__ */
16344 
16345 /* vec_xl */
16346 
16347 typedef vector signed char unaligned_vec_schar __attribute__((aligned(1)));
16348 typedef vector unsigned char unaligned_vec_uchar __attribute__((aligned(1)));
16349 typedef vector signed short unaligned_vec_sshort __attribute__((aligned(1)));
16350 typedef vector unsigned short unaligned_vec_ushort __attribute__((aligned(1)));
16351 typedef vector signed int unaligned_vec_sint __attribute__((aligned(1)));
16352 typedef vector unsigned int unaligned_vec_uint __attribute__((aligned(1)));
16353 typedef vector float unaligned_vec_float __attribute__((aligned(1)));
16354 
16355 static inline __ATTRS_o_ai vector signed char vec_xl(signed long long __offset,
16356                                                      signed char *__ptr) {
16357   return *(unaligned_vec_schar *)(__ptr + __offset);
16358 }
16359 
16360 static inline __ATTRS_o_ai vector unsigned char
16361 vec_xl(signed long long __offset, unsigned char *__ptr) {
16362   return *(unaligned_vec_uchar*)(__ptr + __offset);
16363 }
16364 
16365 static inline __ATTRS_o_ai vector signed short vec_xl(signed long long __offset,
16366                                                       signed short *__ptr) {
16367   signed char *__addr = (signed char *)__ptr + __offset;
16368   return *(unaligned_vec_sshort *)__addr;
16369 }
16370 
16371 static inline __ATTRS_o_ai vector unsigned short
16372 vec_xl(signed long long __offset, unsigned short *__ptr) {
16373   signed char *__addr = (signed char *)__ptr + __offset;
16374   return *(unaligned_vec_ushort *)__addr;
16375 }
16376 
16377 static inline __ATTRS_o_ai vector signed int vec_xl(signed long long __offset,
16378                                                     signed int *__ptr) {
16379   signed char *__addr = (signed char *)__ptr + __offset;
16380   return *(unaligned_vec_sint *)__addr;
16381 }
16382 
16383 static inline __ATTRS_o_ai vector unsigned int vec_xl(signed long long __offset,
16384                                                       unsigned int *__ptr) {
16385   signed char *__addr = (signed char *)__ptr + __offset;
16386   return *(unaligned_vec_uint *)__addr;
16387 }
16388 
16389 static inline __ATTRS_o_ai vector float vec_xl(signed long long __offset,
16390                                                float *__ptr) {
16391   signed char *__addr = (signed char *)__ptr + __offset;
16392   return *(unaligned_vec_float *)__addr;
16393 }
16394 
16395 #ifdef __VSX__
16396 typedef vector signed long long unaligned_vec_sll __attribute__((aligned(1)));
16397 typedef vector unsigned long long unaligned_vec_ull __attribute__((aligned(1)));
16398 typedef vector double unaligned_vec_double __attribute__((aligned(1)));
16399 
16400 static inline __ATTRS_o_ai vector signed long long
16401 vec_xl(signed long long __offset, signed long long *__ptr) {
16402   signed char *__addr = (signed char *)__ptr + __offset;
16403   return *(unaligned_vec_sll *)__addr;
16404 }
16405 
16406 static inline __ATTRS_o_ai vector unsigned long long
16407 vec_xl(signed long long __offset, unsigned long long *__ptr) {
16408   signed char *__addr = (signed char *)__ptr + __offset;
16409   return *(unaligned_vec_ull *)__addr;
16410 }
16411 
16412 static inline __ATTRS_o_ai vector double vec_xl(signed long long __offset,
16413                                                 double *__ptr) {
16414   signed char *__addr = (signed char *)__ptr + __offset;
16415   return *(unaligned_vec_double *)__addr;
16416 }
16417 #endif
16418 
16419 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16420 typedef vector signed __int128 unaligned_vec_si128 __attribute__((aligned(1)));
16421 typedef vector unsigned __int128 unaligned_vec_ui128
16422     __attribute__((aligned(1)));
16423 static inline __ATTRS_o_ai vector signed __int128
16424 vec_xl(signed long long __offset, signed __int128 *__ptr) {
16425   signed char *__addr = (signed char *)__ptr + __offset;
16426   return *(unaligned_vec_si128 *)__addr;
16427 }
16428 
16429 static inline __ATTRS_o_ai vector unsigned __int128
16430 vec_xl(signed long long __offset, unsigned __int128 *__ptr) {
16431   signed char *__addr = (signed char *)__ptr + __offset;
16432   return *(unaligned_vec_ui128 *)__addr;
16433 }
16434 #endif
16435 
16436 /* vec_xl_be */
16437 
16438 #ifdef __LITTLE_ENDIAN__
16439 static __inline__ vector signed char __ATTRS_o_ai
16440 vec_xl_be(signed long long __offset, signed char *__ptr) {
16441   vector signed char __vec = (vector signed char)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16442   return __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
16443                                  13, 12, 11, 10, 9, 8);
16444 }
16445 
16446 static __inline__ vector unsigned char __ATTRS_o_ai
16447 vec_xl_be(signed long long __offset, unsigned char *__ptr) {
16448   vector unsigned char __vec = (vector unsigned char)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16449   return __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
16450                                  13, 12, 11, 10, 9, 8);
16451 }
16452 
16453 static __inline__ vector signed short  __ATTRS_o_ai
16454 vec_xl_be(signed long long __offset, signed short *__ptr) {
16455   vector signed short __vec = (vector signed short)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16456   return __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
16457 }
16458 
16459 static __inline__ vector unsigned short __ATTRS_o_ai
16460 vec_xl_be(signed long long __offset, unsigned short *__ptr) {
16461   vector unsigned short __vec = (vector unsigned short)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16462   return __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
16463 }
16464 
16465 static __inline__ vector signed int __ATTRS_o_ai
16466 vec_xl_be(signed long long  __offset, signed int *__ptr) {
16467   return (vector signed int)__builtin_vsx_lxvw4x_be(__offset, __ptr);
16468 }
16469 
16470 static __inline__ vector unsigned int __ATTRS_o_ai
16471 vec_xl_be(signed long long  __offset, unsigned int *__ptr) {
16472   return (vector unsigned int)__builtin_vsx_lxvw4x_be(__offset, __ptr);
16473 }
16474 
16475 static __inline__ vector float __ATTRS_o_ai
16476 vec_xl_be(signed long long  __offset, float *__ptr) {
16477   return (vector float)__builtin_vsx_lxvw4x_be(__offset, __ptr);
16478 }
16479 
16480 #ifdef __VSX__
16481 static __inline__ vector signed long long __ATTRS_o_ai
16482 vec_xl_be(signed long long  __offset, signed long long *__ptr) {
16483   return (vector signed long long)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16484 }
16485 
16486 static __inline__ vector unsigned long long __ATTRS_o_ai
16487 vec_xl_be(signed long long  __offset, unsigned long long *__ptr) {
16488   return (vector unsigned long long)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16489 }
16490 
16491 static __inline__ vector double __ATTRS_o_ai
16492 vec_xl_be(signed long long  __offset, double *__ptr) {
16493   return (vector double)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16494 }
16495 #endif
16496 
16497 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16498 static __inline__ vector signed __int128 __ATTRS_o_ai
16499 vec_xl_be(signed long long  __offset, signed __int128 *__ptr) {
16500   return vec_xl(__offset, __ptr);
16501 }
16502 
16503 static __inline__ vector unsigned __int128 __ATTRS_o_ai
16504 vec_xl_be(signed long long  __offset, unsigned __int128 *__ptr) {
16505   return vec_xl(__offset, __ptr);
16506 }
16507 #endif
16508 #else
16509   #define vec_xl_be vec_xl
16510 #endif
16511 
16512 /* vec_xst */
16513 
16514 static inline __ATTRS_o_ai void vec_xst(vector signed char __vec,
16515                                         signed long long __offset,
16516                                         signed char *__ptr) {
16517   *(unaligned_vec_schar *)(__ptr + __offset) = __vec;
16518 }
16519 
16520 static inline __ATTRS_o_ai void vec_xst(vector unsigned char __vec,
16521                                         signed long long __offset,
16522                                         unsigned char *__ptr) {
16523   *(unaligned_vec_uchar *)(__ptr + __offset) = __vec;
16524 }
16525 
16526 static inline __ATTRS_o_ai void vec_xst(vector signed short __vec,
16527                                         signed long long __offset,
16528                                         signed short *__ptr) {
16529   signed char *__addr = (signed char *)__ptr + __offset;
16530   *(unaligned_vec_sshort *)__addr = __vec;
16531 }
16532 
16533 static inline __ATTRS_o_ai void vec_xst(vector unsigned short __vec,
16534                                         signed long long __offset,
16535                                         unsigned short *__ptr) {
16536   signed char *__addr = (signed char *)__ptr + __offset;
16537   *(unaligned_vec_ushort *)__addr = __vec;
16538 }
16539 
16540 static inline __ATTRS_o_ai void vec_xst(vector signed int __vec,
16541                                         signed long long __offset,
16542                                         signed int *__ptr) {
16543   signed char *__addr = (signed char *)__ptr + __offset;
16544   *(unaligned_vec_sint *)__addr = __vec;
16545 }
16546 
16547 static inline __ATTRS_o_ai void vec_xst(vector unsigned int __vec,
16548                                         signed long long __offset,
16549                                         unsigned int *__ptr) {
16550   signed char *__addr = (signed char *)__ptr + __offset;
16551   *(unaligned_vec_uint *)__addr = __vec;
16552 }
16553 
16554 static inline __ATTRS_o_ai void vec_xst(vector float __vec,
16555                                         signed long long __offset,
16556                                         float *__ptr) {
16557   signed char *__addr = (signed char *)__ptr + __offset;
16558   *(unaligned_vec_float *)__addr = __vec;
16559 }
16560 
16561 #ifdef __VSX__
16562 static inline __ATTRS_o_ai void vec_xst(vector signed long long __vec,
16563                                         signed long long __offset,
16564                                         signed long long *__ptr) {
16565   signed char *__addr = (signed char *)__ptr + __offset;
16566   *(unaligned_vec_sll *)__addr = __vec;
16567 }
16568 
16569 static inline __ATTRS_o_ai void vec_xst(vector unsigned long long __vec,
16570                                         signed long long __offset,
16571                                         unsigned long long *__ptr) {
16572   signed char *__addr = (signed char *)__ptr + __offset;
16573   *(unaligned_vec_ull *)__addr = __vec;
16574 }
16575 
16576 static inline __ATTRS_o_ai void vec_xst(vector double __vec,
16577                                         signed long long __offset,
16578                                         double *__ptr) {
16579   signed char *__addr = (signed char *)__ptr + __offset;
16580   *(unaligned_vec_double *)__addr = __vec;
16581 }
16582 #endif
16583 
16584 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16585 static inline __ATTRS_o_ai void vec_xst(vector signed __int128 __vec,
16586                                         signed long long __offset,
16587                                         signed __int128 *__ptr) {
16588   signed char *__addr = (signed char *)__ptr + __offset;
16589   *(unaligned_vec_si128 *)__addr = __vec;
16590 }
16591 
16592 static inline __ATTRS_o_ai void vec_xst(vector unsigned __int128 __vec,
16593                                         signed long long __offset,
16594                                         unsigned __int128 *__ptr) {
16595   signed char *__addr = (signed char *)__ptr + __offset;
16596   *(unaligned_vec_ui128 *)__addr = __vec;
16597 }
16598 #endif
16599 
16600 /* vec_xst_be */
16601 
16602 #ifdef __LITTLE_ENDIAN__
16603 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed char __vec,
16604                                                signed long long  __offset,
16605                                                signed char *__ptr) {
16606   vector signed char __tmp =
16607      __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
16608                              13, 12, 11, 10, 9, 8);
16609   typedef __attribute__((vector_size(sizeof(__tmp)))) double __vector_double;
16610   __builtin_vsx_stxvd2x_be((__vector_double)__tmp, __offset, __ptr);
16611 }
16612 
16613 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned char __vec,
16614                                                signed long long  __offset,
16615                                                unsigned char *__ptr) {
16616   vector unsigned char __tmp =
16617      __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
16618                              13, 12, 11, 10, 9, 8);
16619   typedef __attribute__((vector_size(sizeof(__tmp)))) double __vector_double;
16620   __builtin_vsx_stxvd2x_be((__vector_double)__tmp, __offset, __ptr);
16621 }
16622 
16623 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed short __vec,
16624                                                signed long long  __offset,
16625                                                signed short *__ptr) {
16626   vector signed short __tmp =
16627      __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
16628   typedef __attribute__((vector_size(sizeof(__tmp)))) double __vector_double;
16629   __builtin_vsx_stxvd2x_be((__vector_double)__tmp, __offset, __ptr);
16630 }
16631 
16632 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned short __vec,
16633                                                signed long long  __offset,
16634                                                unsigned short *__ptr) {
16635   vector unsigned short __tmp =
16636      __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
16637   typedef __attribute__((vector_size(sizeof(__tmp)))) double __vector_double;
16638   __builtin_vsx_stxvd2x_be((__vector_double)__tmp, __offset, __ptr);
16639 }
16640 
16641 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed int __vec,
16642                                                signed long long  __offset,
16643                                                signed int *__ptr) {
16644   __builtin_vsx_stxvw4x_be(__vec, __offset, __ptr);
16645 }
16646 
16647 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned int __vec,
16648                                                signed long long  __offset,
16649                                                unsigned int *__ptr) {
16650   __builtin_vsx_stxvw4x_be((vector int)__vec, __offset, __ptr);
16651 }
16652 
16653 static __inline__ void __ATTRS_o_ai vec_xst_be(vector float __vec,
16654                                                signed long long  __offset,
16655                                                float *__ptr) {
16656   __builtin_vsx_stxvw4x_be((vector int)__vec, __offset, __ptr);
16657 }
16658 
16659 #ifdef __VSX__
16660 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed long long __vec,
16661                                                signed long long  __offset,
16662                                                signed long long *__ptr) {
16663   __builtin_vsx_stxvd2x_be((vector double)__vec, __offset, __ptr);
16664 }
16665 
16666 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned long long __vec,
16667                                                signed long long  __offset,
16668                                                unsigned long long *__ptr) {
16669   __builtin_vsx_stxvd2x_be((vector double)__vec, __offset, __ptr);
16670 }
16671 
16672 static __inline__ void __ATTRS_o_ai vec_xst_be(vector double __vec,
16673                                                signed long long  __offset,
16674                                                double *__ptr) {
16675   __builtin_vsx_stxvd2x_be((vector double)__vec, __offset, __ptr);
16676 }
16677 #endif
16678 
16679 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16680 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed __int128 __vec,
16681                                                signed long long  __offset,
16682                                                signed __int128 *__ptr) {
16683   vec_xst(__vec, __offset, __ptr);
16684 }
16685 
16686 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned __int128 __vec,
16687                                                signed long long  __offset,
16688                                                unsigned __int128 *__ptr) {
16689   vec_xst(__vec, __offset, __ptr);
16690 }
16691 #endif
16692 #else
16693   #define vec_xst_be vec_xst
16694 #endif
16695 
16696 #ifdef __POWER9_VECTOR__
16697 #define vec_test_data_class(__a, __b)                                          \
16698   _Generic(                                                                    \
16699       (__a), vector float                                                      \
16700       : (vector bool int)__builtin_vsx_xvtstdcsp((vector float)(__a), (__b)),  \
16701         vector double                                                          \
16702       : (vector bool long long)__builtin_vsx_xvtstdcdp((vector double)(__a),   \
16703                                                        (__b)))
16704 
16705 #endif /* #ifdef __POWER9_VECTOR__ */
16706 
16707 static vector float __ATTRS_o_ai vec_neg(vector float __a) {
16708   return -__a;
16709 }
16710 
16711 #ifdef __VSX__
16712 static vector double __ATTRS_o_ai vec_neg(vector double __a) {
16713   return -__a;
16714 }
16715 
16716 #endif
16717 
16718 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16719 static vector long long __ATTRS_o_ai vec_neg(vector long long __a) {
16720   return -__a;
16721 }
16722 #endif
16723 
16724 static vector signed int __ATTRS_o_ai vec_neg(vector signed int __a) {
16725   return -__a;
16726 }
16727 
16728 static vector signed short __ATTRS_o_ai vec_neg(vector signed short __a) {
16729   return -__a;
16730 }
16731 
16732 static vector signed char __ATTRS_o_ai vec_neg(vector signed char __a) {
16733   return -__a;
16734 }
16735 
16736 static vector float __ATTRS_o_ai vec_nabs(vector float __a) {
16737   return - vec_abs(__a);
16738 }
16739 
16740 #ifdef __VSX__
16741 static vector double __ATTRS_o_ai vec_nabs(vector double __a) {
16742   return - vec_abs(__a);
16743 }
16744 
16745 #endif
16746 
16747 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16748 static vector long long __ATTRS_o_ai vec_nabs(vector long long __a) {
16749   return __builtin_altivec_vminsd(__a, -__a);
16750 }
16751 #endif
16752 
16753 static vector signed int __ATTRS_o_ai vec_nabs(vector signed int __a) {
16754   return __builtin_altivec_vminsw(__a, -__a);
16755 }
16756 
16757 static vector signed short __ATTRS_o_ai vec_nabs(vector signed short __a) {
16758   return __builtin_altivec_vminsh(__a, -__a);
16759 }
16760 
16761 static vector signed char __ATTRS_o_ai vec_nabs(vector signed char __a) {
16762   return __builtin_altivec_vminsb(__a, -__a);
16763 }
16764 
16765 #ifdef __POWER10_VECTOR__
16766 /* vec_pdep */
16767 
16768 static __inline__ vector unsigned long long __ATTRS_o_ai
16769 vec_pdep(vector unsigned long long __a, vector unsigned long long __b) {
16770   return __builtin_altivec_vpdepd(__a, __b);
16771 }
16772 
16773 /* vec_pext */
16774 
16775 static __inline__ vector unsigned long long __ATTRS_o_ai
16776 vec_pext(vector unsigned long long __a, vector unsigned long long __b) {
16777   return __builtin_altivec_vpextd(__a, __b);
16778 }
16779 
16780 /* vec_cfuge */
16781 
16782 static __inline__ vector unsigned long long __ATTRS_o_ai
16783 vec_cfuge(vector unsigned long long __a, vector unsigned long long __b) {
16784   return __builtin_altivec_vcfuged(__a, __b);
16785 }
16786 
16787 /* vec_gnb */
16788 
16789 #define vec_gnb(__a, __b) __builtin_altivec_vgnb(__a, __b)
16790 
16791 /* vec_ternarylogic */
16792 #ifdef __VSX__
16793 #define vec_ternarylogic(__a, __b, __c, __imm)                                 \
16794   _Generic((__a), vector unsigned char                                         \
16795            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
16796                                   (vector unsigned long long)(__b),            \
16797                                   (vector unsigned long long)(__c), (__imm)),  \
16798              vector unsigned short                                             \
16799            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
16800                                   (vector unsigned long long)(__b),            \
16801                                   (vector unsigned long long)(__c), (__imm)),  \
16802              vector unsigned int                                               \
16803            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
16804                                   (vector unsigned long long)(__b),            \
16805                                   (vector unsigned long long)(__c), (__imm)),  \
16806              vector unsigned long long                                         \
16807            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
16808                                   (vector unsigned long long)(__b),            \
16809                                   (vector unsigned long long)(__c), (__imm)),  \
16810              vector unsigned __int128                                          \
16811            : __builtin_vsx_xxeval((vector unsigned long long)(__a),            \
16812                                   (vector unsigned long long)(__b),            \
16813                                   (vector unsigned long long)(__c), (__imm)))
16814 #endif /* __VSX__ */
16815 
16816 /* vec_genpcvm */
16817 
16818 #ifdef __VSX__
16819 #define vec_genpcvm(__a, __imm)                                                \
16820   _Generic((__a), vector unsigned char                                         \
16821            : __builtin_vsx_xxgenpcvbm((__a), (int)(__imm)),                    \
16822              vector unsigned short                                             \
16823            : __builtin_vsx_xxgenpcvhm((__a), (int)(__imm)),                    \
16824              vector unsigned int                                               \
16825            : __builtin_vsx_xxgenpcvwm((__a), (int)(__imm)),                    \
16826              vector unsigned long long                                         \
16827            : __builtin_vsx_xxgenpcvdm((__a), (int)(__imm)))
16828 #endif /* __VSX__ */
16829 
16830 /* vec_clrl */
16831 
16832 static __inline__ vector signed char __ATTRS_o_ai
16833 vec_clrl(vector signed char __a, unsigned int __n) {
16834 #ifdef __LITTLE_ENDIAN__
16835   return __builtin_altivec_vclrrb(__a, __n);
16836 #else
16837   return __builtin_altivec_vclrlb( __a, __n);
16838 #endif
16839 }
16840 
16841 static __inline__ vector unsigned char __ATTRS_o_ai
16842 vec_clrl(vector unsigned char __a, unsigned int __n) {
16843 #ifdef __LITTLE_ENDIAN__
16844   return __builtin_altivec_vclrrb((vector signed char)__a, __n);
16845 #else
16846   return __builtin_altivec_vclrlb((vector signed char)__a, __n);
16847 #endif
16848 }
16849 
16850 /* vec_clrr */
16851 
16852 static __inline__ vector signed char __ATTRS_o_ai
16853 vec_clrr(vector signed char __a, unsigned int __n) {
16854 #ifdef __LITTLE_ENDIAN__
16855   return __builtin_altivec_vclrlb(__a, __n);
16856 #else
16857   return __builtin_altivec_vclrrb( __a, __n);
16858 #endif
16859 }
16860 
16861 static __inline__ vector unsigned char __ATTRS_o_ai
16862 vec_clrr(vector unsigned char __a, unsigned int __n) {
16863 #ifdef __LITTLE_ENDIAN__
16864   return __builtin_altivec_vclrlb((vector signed char)__a, __n);
16865 #else
16866   return __builtin_altivec_vclrrb((vector signed char)__a, __n);
16867 #endif
16868 }
16869 
16870 /* vec_cntlzm */
16871 
16872 static __inline__ vector unsigned long long __ATTRS_o_ai
16873 vec_cntlzm(vector unsigned long long __a, vector unsigned long long __b) {
16874   return __builtin_altivec_vclzdm(__a, __b);
16875 }
16876 
16877 /* vec_cnttzm */
16878 
16879 static __inline__ vector unsigned long long __ATTRS_o_ai
16880 vec_cnttzm(vector unsigned long long __a, vector unsigned long long __b) {
16881   return __builtin_altivec_vctzdm(__a, __b);
16882 }
16883 
16884 /* vec_sldbi */
16885 
16886 #define vec_sldb(__a, __b, __c) __builtin_altivec_vsldbi(__a, __b, (__c & 0x7))
16887 
16888 /* vec_srdbi */
16889 
16890 #define vec_srdb(__a, __b, __c) __builtin_altivec_vsrdbi(__a, __b, (__c & 0x7))
16891 
16892 /* vec_insertl */
16893 
16894 static __inline__ vector unsigned char __ATTRS_o_ai
16895 vec_insertl(unsigned char __a, vector unsigned char __b, unsigned int __c) {
16896 #ifdef __LITTLE_ENDIAN__
16897   return __builtin_altivec_vinsbrx(__b, __c, __a);
16898 #else
16899   return __builtin_altivec_vinsblx(__b, __c, __a);
16900 #endif
16901 }
16902 
16903 static __inline__ vector unsigned short __ATTRS_o_ai
16904 vec_insertl(unsigned short __a, vector unsigned short __b, unsigned int __c) {
16905 #ifdef __LITTLE_ENDIAN__
16906   return __builtin_altivec_vinshrx(__b, __c, __a);
16907 #else
16908   return __builtin_altivec_vinshlx(__b, __c, __a);
16909 #endif
16910 }
16911 
16912 static __inline__ vector unsigned int __ATTRS_o_ai
16913 vec_insertl(unsigned int __a, vector unsigned int __b, unsigned int __c) {
16914 #ifdef __LITTLE_ENDIAN__
16915   return __builtin_altivec_vinswrx(__b, __c, __a);
16916 #else
16917   return __builtin_altivec_vinswlx(__b, __c, __a);
16918 #endif
16919 }
16920 
16921 static __inline__ vector unsigned long long __ATTRS_o_ai
16922 vec_insertl(unsigned long long __a, vector unsigned long long __b,
16923             unsigned int __c) {
16924 #ifdef __LITTLE_ENDIAN__
16925   return __builtin_altivec_vinsdrx(__b, __c, __a);
16926 #else
16927   return __builtin_altivec_vinsdlx(__b, __c, __a);
16928 #endif
16929 }
16930 
16931 static __inline__ vector unsigned char __ATTRS_o_ai
16932 vec_insertl(vector unsigned char __a, vector unsigned char __b,
16933             unsigned int __c) {
16934 #ifdef __LITTLE_ENDIAN__
16935   return __builtin_altivec_vinsbvrx(__b, __c, __a);
16936 #else
16937   return __builtin_altivec_vinsbvlx(__b, __c, __a);
16938 #endif
16939 }
16940 
16941 static __inline__ vector unsigned short __ATTRS_o_ai
16942 vec_insertl(vector unsigned short __a, vector unsigned short __b,
16943             unsigned int __c) {
16944 #ifdef __LITTLE_ENDIAN__
16945   return __builtin_altivec_vinshvrx(__b, __c, __a);
16946 #else
16947   return __builtin_altivec_vinshvlx(__b, __c, __a);
16948 #endif
16949 }
16950 
16951 static __inline__ vector unsigned int __ATTRS_o_ai
16952 vec_insertl(vector unsigned int __a, vector unsigned int __b,
16953             unsigned int __c) {
16954 #ifdef __LITTLE_ENDIAN__
16955   return __builtin_altivec_vinswvrx(__b, __c, __a);
16956 #else
16957   return __builtin_altivec_vinswvlx(__b, __c, __a);
16958 #endif
16959 }
16960 
16961 /* vec_inserth */
16962 
16963 static __inline__ vector unsigned char __ATTRS_o_ai
16964 vec_inserth(unsigned char __a, vector unsigned char __b, unsigned int __c) {
16965 #ifdef __LITTLE_ENDIAN__
16966   return __builtin_altivec_vinsblx(__b, __c, __a);
16967 #else
16968   return __builtin_altivec_vinsbrx(__b, __c, __a);
16969 #endif
16970 }
16971 
16972 static __inline__ vector unsigned short __ATTRS_o_ai
16973 vec_inserth(unsigned short __a, vector unsigned short __b, unsigned int __c) {
16974 #ifdef __LITTLE_ENDIAN__
16975   return __builtin_altivec_vinshlx(__b, __c, __a);
16976 #else
16977   return __builtin_altivec_vinshrx(__b, __c, __a);
16978 #endif
16979 }
16980 
16981 static __inline__ vector unsigned int __ATTRS_o_ai
16982 vec_inserth(unsigned int __a, vector unsigned int __b, unsigned int __c) {
16983 #ifdef __LITTLE_ENDIAN__
16984   return __builtin_altivec_vinswlx(__b, __c, __a);
16985 #else
16986   return __builtin_altivec_vinswrx(__b, __c, __a);
16987 #endif
16988 }
16989 
16990 static __inline__ vector unsigned long long __ATTRS_o_ai
16991 vec_inserth(unsigned long long __a, vector unsigned long long __b,
16992             unsigned int __c) {
16993 #ifdef __LITTLE_ENDIAN__
16994   return __builtin_altivec_vinsdlx(__b, __c, __a);
16995 #else
16996   return __builtin_altivec_vinsdrx(__b, __c, __a);
16997 #endif
16998 }
16999 
17000 static __inline__ vector unsigned char __ATTRS_o_ai
17001 vec_inserth(vector unsigned char __a, vector unsigned char __b,
17002             unsigned int __c) {
17003 #ifdef __LITTLE_ENDIAN__
17004   return __builtin_altivec_vinsbvlx(__b, __c, __a);
17005 #else
17006   return __builtin_altivec_vinsbvrx(__b, __c, __a);
17007 #endif
17008 }
17009 
17010 static __inline__ vector unsigned short __ATTRS_o_ai
17011 vec_inserth(vector unsigned short __a, vector unsigned short __b,
17012             unsigned int __c) {
17013 #ifdef __LITTLE_ENDIAN__
17014   return __builtin_altivec_vinshvlx(__b, __c, __a);
17015 #else
17016   return __builtin_altivec_vinshvrx(__b, __c, __a);
17017 #endif
17018 }
17019 
17020 static __inline__ vector unsigned int __ATTRS_o_ai
17021 vec_inserth(vector unsigned int __a, vector unsigned int __b,
17022             unsigned int __c) {
17023 #ifdef __LITTLE_ENDIAN__
17024   return __builtin_altivec_vinswvlx(__b, __c, __a);
17025 #else
17026   return __builtin_altivec_vinswvrx(__b, __c, __a);
17027 #endif
17028 }
17029 
17030 #ifdef __VSX__
17031 
17032 /* vec_permx */
17033 
17034 #define vec_permx(__a, __b, __c, __d)                                          \
17035   __builtin_vsx_xxpermx((__a), (__b), (__c), (__d))
17036 
17037 /* vec_blendv */
17038 
17039 static __inline__ vector signed char __ATTRS_o_ai
17040 vec_blendv(vector signed char __a, vector signed char __b,
17041            vector unsigned char __c) {
17042   return __builtin_vsx_xxblendvb(__a, __b, __c);
17043 }
17044 
17045 static __inline__ vector unsigned char __ATTRS_o_ai
17046 vec_blendv(vector unsigned char __a, vector unsigned char __b,
17047            vector unsigned char __c) {
17048   return __builtin_vsx_xxblendvb(__a, __b, __c);
17049 }
17050 
17051 static __inline__ vector signed short __ATTRS_o_ai
17052 vec_blendv(vector signed short __a, vector signed short __b,
17053            vector unsigned short __c) {
17054   return __builtin_vsx_xxblendvh(__a, __b, __c);
17055 }
17056 
17057 static __inline__ vector unsigned short __ATTRS_o_ai
17058 vec_blendv(vector unsigned short __a, vector unsigned short __b,
17059            vector unsigned short __c) {
17060   return __builtin_vsx_xxblendvh(__a, __b, __c);
17061 }
17062 
17063 static __inline__ vector signed int __ATTRS_o_ai
17064 vec_blendv(vector signed int __a, vector signed int __b,
17065            vector unsigned int __c) {
17066   return __builtin_vsx_xxblendvw(__a, __b, __c);
17067 }
17068 
17069 static __inline__ vector unsigned int __ATTRS_o_ai
17070 vec_blendv(vector unsigned int __a, vector unsigned int __b,
17071            vector unsigned int __c) {
17072   return __builtin_vsx_xxblendvw(__a, __b, __c);
17073 }
17074 
17075 static __inline__ vector signed long long __ATTRS_o_ai
17076 vec_blendv(vector signed long long __a, vector signed long long __b,
17077            vector unsigned long long __c) {
17078   return __builtin_vsx_xxblendvd(__a, __b, __c);
17079 }
17080 
17081 static __inline__ vector unsigned long long __ATTRS_o_ai
17082 vec_blendv(vector unsigned long long __a, vector unsigned long long __b,
17083            vector unsigned long long __c) {
17084   return __builtin_vsx_xxblendvd(__a, __b, __c);
17085 }
17086 
17087 static __inline__ vector float __ATTRS_o_ai
17088 vec_blendv(vector float __a, vector float __b, vector unsigned int __c) {
17089   return __builtin_vsx_xxblendvw(__a, __b, __c);
17090 }
17091 
17092 static __inline__ vector double __ATTRS_o_ai
17093 vec_blendv(vector double __a, vector double __b,
17094            vector unsigned long long __c) {
17095   return __builtin_vsx_xxblendvd(__a, __b, __c);
17096 }
17097 
17098 /* vec_splati */
17099 
17100 #define vec_splati(__a)                                                        \
17101   _Generic((__a), signed int                                                   \
17102            : ((vector signed int)__a), unsigned int                            \
17103            : ((vector unsigned int)__a), float                                 \
17104            : ((vector float)__a))
17105 
17106 /* vec_spatid */
17107 
17108 static __inline__ vector double __ATTRS_o_ai vec_splatid(const float __a) {
17109   return ((vector double)((double)__a));
17110 }
17111 
17112 /* vec_splati_ins */
17113 
17114 static __inline__ vector signed int __ATTRS_o_ai vec_splati_ins(
17115     vector signed int __a, const unsigned int __b, const signed int __c) {
17116 #ifdef __LITTLE_ENDIAN__
17117   __a[1 - __b] = __c;
17118   __a[3 - __b] = __c;
17119 #else
17120   __a[__b] = __c;
17121   __a[2 + __b] = __c;
17122 #endif
17123   return __a;
17124 }
17125 
17126 static __inline__ vector unsigned int __ATTRS_o_ai vec_splati_ins(
17127     vector unsigned int __a, const unsigned int __b, const unsigned int __c) {
17128 #ifdef __LITTLE_ENDIAN__
17129   __a[1 - __b] = __c;
17130   __a[3 - __b] = __c;
17131 #else
17132   __a[__b] = __c;
17133   __a[2 + __b] = __c;
17134 #endif
17135   return __a;
17136 }
17137 
17138 static __inline__ vector float __ATTRS_o_ai
17139 vec_splati_ins(vector float __a, const unsigned int __b, const float __c) {
17140 #ifdef __LITTLE_ENDIAN__
17141   __a[1 - __b] = __c;
17142   __a[3 - __b] = __c;
17143 #else
17144   __a[__b] = __c;
17145   __a[2 + __b] = __c;
17146 #endif
17147   return __a;
17148 }
17149 
17150 /* vec_test_lsbb_all_ones */
17151 
17152 static __inline__ int __ATTRS_o_ai
17153 vec_test_lsbb_all_ones(vector unsigned char __a) {
17154   return __builtin_vsx_xvtlsbb(__a, 1);
17155 }
17156 
17157 /* vec_test_lsbb_all_zeros */
17158 
17159 static __inline__ int __ATTRS_o_ai
17160 vec_test_lsbb_all_zeros(vector unsigned char __a) {
17161   return __builtin_vsx_xvtlsbb(__a, 0);
17162 }
17163 #endif /* __VSX__ */
17164 #endif /* __POWER10_VECTOR__ */
17165 
17166 #undef __ATTRS_o_ai
17167 
17168 #endif /* __ALTIVEC_H */
17169