1/*===---- altivec.h - Standard header for type generic math ---------------===*\
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21\*===----------------------------------------------------------------------===*/
22
23#ifndef __ALTIVEC_H
24#define __ALTIVEC_H
25
26#ifndef __ALTIVEC__
27#error "AltiVec support not enabled"
28#endif
29
30/* Constants for mapping CR6 bits to predicate result. */
31
32#define __CR6_EQ 0
33#define __CR6_EQ_REV 1
34#define __CR6_LT 2
35#define __CR6_LT_REV 3
36
37/* Constants for vec_test_data_class */
38#define __VEC_CLASS_FP_SUBNORMAL_N (1 << 0)
39#define __VEC_CLASS_FP_SUBNORMAL_P (1 << 1)
40#define __VEC_CLASS_FP_SUBNORMAL (__VEC_CLASS_FP_SUBNORMAL_P | \
41                                  __VEC_CLASS_FP_SUBNORMAL_N)
42#define __VEC_CLASS_FP_ZERO_N (1<<2)
43#define __VEC_CLASS_FP_ZERO_P (1<<3)
44#define __VEC_CLASS_FP_ZERO (__VEC_CLASS_FP_ZERO_P           | \
45                             __VEC_CLASS_FP_ZERO_N)
46#define __VEC_CLASS_FP_INFINITY_N (1<<4)
47#define __VEC_CLASS_FP_INFINITY_P (1<<5)
48#define __VEC_CLASS_FP_INFINITY (__VEC_CLASS_FP_INFINITY_P   | \
49                                 __VEC_CLASS_FP_INFINITY_N)
50#define __VEC_CLASS_FP_NAN (1<<6)
51#define __VEC_CLASS_FP_NOT_NORMAL (__VEC_CLASS_FP_NAN        | \
52                                   __VEC_CLASS_FP_SUBNORMAL  | \
53                                   __VEC_CLASS_FP_ZERO       | \
54                                   __VEC_CLASS_FP_INFINITY)
55
56#define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
57
58#ifdef __POWER9_VECTOR__
59#include <stddef.h>
60#endif
61
62static __inline__ vector signed char __ATTRS_o_ai vec_perm(
63    vector signed char __a, vector signed char __b, vector unsigned char __c);
64
65static __inline__ vector unsigned char __ATTRS_o_ai
66vec_perm(vector unsigned char __a, vector unsigned char __b,
67         vector unsigned char __c);
68
69static __inline__ vector bool char __ATTRS_o_ai
70vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c);
71
72static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
73                                                     vector signed short __b,
74                                                     vector unsigned char __c);
75
76static __inline__ vector unsigned short __ATTRS_o_ai
77vec_perm(vector unsigned short __a, vector unsigned short __b,
78         vector unsigned char __c);
79
80static __inline__ vector bool short __ATTRS_o_ai vec_perm(
81    vector bool short __a, vector bool short __b, vector unsigned char __c);
82
83static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
84                                                     vector pixel __b,
85                                                     vector unsigned char __c);
86
87static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
88                                                   vector signed int __b,
89                                                   vector unsigned char __c);
90
91static __inline__ vector unsigned int __ATTRS_o_ai vec_perm(
92    vector unsigned int __a, vector unsigned int __b, vector unsigned char __c);
93
94static __inline__ vector bool int __ATTRS_o_ai
95vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c);
96
97static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
98                                                     vector float __b,
99                                                     vector unsigned char __c);
100
101#ifdef __VSX__
102static __inline__ vector long long __ATTRS_o_ai
103vec_perm(vector signed long long __a, vector signed long long __b,
104         vector unsigned char __c);
105
106static __inline__ vector unsigned long long __ATTRS_o_ai
107vec_perm(vector unsigned long long __a, vector unsigned long long __b,
108         vector unsigned char __c);
109
110static __inline__ vector bool long long __ATTRS_o_ai
111vec_perm(vector bool long long __a, vector bool long long __b,
112         vector unsigned char __c);
113
114static __inline__ vector double __ATTRS_o_ai vec_perm(vector double __a,
115                                                      vector double __b,
116                                                      vector unsigned char __c);
117#endif
118
119static __inline__ vector unsigned char __ATTRS_o_ai
120vec_xor(vector unsigned char __a, vector unsigned char __b);
121
122/* vec_abs */
123
124#define __builtin_altivec_abs_v16qi vec_abs
125#define __builtin_altivec_abs_v8hi vec_abs
126#define __builtin_altivec_abs_v4si vec_abs
127
128static __inline__ vector signed char __ATTRS_o_ai
129vec_abs(vector signed char __a) {
130  return __builtin_altivec_vmaxsb(__a, -__a);
131}
132
133static __inline__ vector signed short __ATTRS_o_ai
134vec_abs(vector signed short __a) {
135  return __builtin_altivec_vmaxsh(__a, -__a);
136}
137
138static __inline__ vector signed int __ATTRS_o_ai
139vec_abs(vector signed int __a) {
140  return __builtin_altivec_vmaxsw(__a, -__a);
141}
142
143#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
144static __inline__ vector signed long long __ATTRS_o_ai
145vec_abs(vector signed long long __a) {
146  return __builtin_altivec_vmaxsd(__a, -__a);
147}
148#endif
149
150static __inline__ vector float __ATTRS_o_ai vec_abs(vector float __a) {
151#ifdef __VSX__
152  return __builtin_vsx_xvabssp(__a);
153#else
154  vector unsigned int __res =
155      (vector unsigned int)__a & (vector unsigned int)(0x7FFFFFFF);
156  return (vector float)__res;
157#endif
158}
159
160#ifdef __VSX__
161static __inline__ vector double __ATTRS_o_ai vec_abs(vector double __a) {
162  return __builtin_vsx_xvabsdp(__a);
163}
164#endif
165
166/* vec_abss */
167#define __builtin_altivec_abss_v16qi vec_abss
168#define __builtin_altivec_abss_v8hi vec_abss
169#define __builtin_altivec_abss_v4si vec_abss
170
171static __inline__ vector signed char __ATTRS_o_ai
172vec_abss(vector signed char __a) {
173  return __builtin_altivec_vmaxsb(
174      __a, __builtin_altivec_vsubsbs((vector signed char)(0), __a));
175}
176
177static __inline__ vector signed short __ATTRS_o_ai
178vec_abss(vector signed short __a) {
179  return __builtin_altivec_vmaxsh(
180      __a, __builtin_altivec_vsubshs((vector signed short)(0), __a));
181}
182
183static __inline__ vector signed int __ATTRS_o_ai
184vec_abss(vector signed int __a) {
185  return __builtin_altivec_vmaxsw(
186      __a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
187}
188
189/* vec_absd */
190#if defined(__POWER9_VECTOR__)
191
192static __inline__ vector unsigned char __ATTRS_o_ai
193vec_absd(vector unsigned char __a, vector unsigned char __b) {
194  return __builtin_altivec_vabsdub(__a, __b);
195}
196
197static __inline__ vector unsigned short __ATTRS_o_ai
198vec_absd(vector unsigned short __a, vector unsigned short __b) {
199  return __builtin_altivec_vabsduh(__a, __b);
200}
201
202static __inline__ vector unsigned int __ATTRS_o_ai
203vec_absd(vector unsigned int __a,  vector unsigned int __b) {
204  return __builtin_altivec_vabsduw(__a, __b);
205}
206
207#endif /* End __POWER9_VECTOR__ */
208
209/* vec_add */
210
211static __inline__ vector signed char __ATTRS_o_ai
212vec_add(vector signed char __a, vector signed char __b) {
213  return __a + __b;
214}
215
216static __inline__ vector signed char __ATTRS_o_ai
217vec_add(vector bool char __a, vector signed char __b) {
218  return (vector signed char)__a + __b;
219}
220
221static __inline__ vector signed char __ATTRS_o_ai
222vec_add(vector signed char __a, vector bool char __b) {
223  return __a + (vector signed char)__b;
224}
225
226static __inline__ vector unsigned char __ATTRS_o_ai
227vec_add(vector unsigned char __a, vector unsigned char __b) {
228  return __a + __b;
229}
230
231static __inline__ vector unsigned char __ATTRS_o_ai
232vec_add(vector bool char __a, vector unsigned char __b) {
233  return (vector unsigned char)__a + __b;
234}
235
236static __inline__ vector unsigned char __ATTRS_o_ai
237vec_add(vector unsigned char __a, vector bool char __b) {
238  return __a + (vector unsigned char)__b;
239}
240
241static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
242                                                    vector short __b) {
243  return __a + __b;
244}
245
246static __inline__ vector short __ATTRS_o_ai vec_add(vector bool short __a,
247                                                    vector short __b) {
248  return (vector short)__a + __b;
249}
250
251static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
252                                                    vector bool short __b) {
253  return __a + (vector short)__b;
254}
255
256static __inline__ vector unsigned short __ATTRS_o_ai
257vec_add(vector unsigned short __a, vector unsigned short __b) {
258  return __a + __b;
259}
260
261static __inline__ vector unsigned short __ATTRS_o_ai
262vec_add(vector bool short __a, vector unsigned short __b) {
263  return (vector unsigned short)__a + __b;
264}
265
266static __inline__ vector unsigned short __ATTRS_o_ai
267vec_add(vector unsigned short __a, vector bool short __b) {
268  return __a + (vector unsigned short)__b;
269}
270
271static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
272                                                  vector int __b) {
273  return __a + __b;
274}
275
276static __inline__ vector int __ATTRS_o_ai vec_add(vector bool int __a,
277                                                  vector int __b) {
278  return (vector int)__a + __b;
279}
280
281static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
282                                                  vector bool int __b) {
283  return __a + (vector int)__b;
284}
285
286static __inline__ vector unsigned int __ATTRS_o_ai
287vec_add(vector unsigned int __a, vector unsigned int __b) {
288  return __a + __b;
289}
290
291static __inline__ vector unsigned int __ATTRS_o_ai
292vec_add(vector bool int __a, vector unsigned int __b) {
293  return (vector unsigned int)__a + __b;
294}
295
296static __inline__ vector unsigned int __ATTRS_o_ai
297vec_add(vector unsigned int __a, vector bool int __b) {
298  return __a + (vector unsigned int)__b;
299}
300
301#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
302static __inline__ vector signed long long __ATTRS_o_ai
303vec_add(vector signed long long __a, vector signed long long __b) {
304  return __a + __b;
305}
306
307static __inline__ vector unsigned long long __ATTRS_o_ai
308vec_add(vector unsigned long long __a, vector unsigned long long __b) {
309  return __a + __b;
310}
311
312static __inline__ vector signed __int128 __ATTRS_o_ai
313vec_add(vector signed __int128 __a, vector signed __int128 __b) {
314  return __a + __b;
315}
316
317static __inline__ vector unsigned __int128 __ATTRS_o_ai
318vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) {
319  return __a + __b;
320}
321#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
322
323static __inline__ vector float __ATTRS_o_ai vec_add(vector float __a,
324                                                    vector float __b) {
325  return __a + __b;
326}
327
328#ifdef __VSX__
329static __inline__ vector double __ATTRS_o_ai vec_add(vector double __a,
330                                                     vector double __b) {
331  return __a + __b;
332}
333#endif // __VSX__
334
335/* vec_adde */
336
337#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
338static __inline__ vector signed __int128 __ATTRS_o_ai
339vec_adde(vector signed __int128 __a, vector signed __int128 __b,
340         vector signed __int128 __c) {
341  return __builtin_altivec_vaddeuqm(__a, __b, __c);
342}
343
344static __inline__ vector unsigned __int128 __ATTRS_o_ai
345vec_adde(vector unsigned __int128 __a, vector unsigned __int128 __b,
346         vector unsigned __int128 __c) {
347  return __builtin_altivec_vaddeuqm(__a, __b, __c);
348}
349#endif
350
351static __inline__ vector signed int __ATTRS_o_ai
352vec_adde(vector signed int __a, vector signed int __b,
353         vector signed int __c) {
354  vector signed int __mask = {1, 1, 1, 1};
355  vector signed int __carry = __c & __mask;
356  return vec_add(vec_add(__a, __b), __carry);
357}
358
359static __inline__ vector unsigned int __ATTRS_o_ai
360vec_adde(vector unsigned int __a, vector unsigned int __b,
361         vector unsigned int __c) {
362  vector unsigned int __mask = {1, 1, 1, 1};
363  vector unsigned int __carry = __c & __mask;
364  return vec_add(vec_add(__a, __b), __carry);
365}
366
367/* vec_addec */
368
369#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
370static __inline__ vector signed __int128 __ATTRS_o_ai
371vec_addec(vector signed __int128 __a, vector signed __int128 __b,
372          vector signed __int128 __c) {
373  return __builtin_altivec_vaddecuq(__a, __b, __c);
374}
375
376static __inline__ vector unsigned __int128 __ATTRS_o_ai
377vec_addec(vector unsigned __int128 __a, vector unsigned __int128 __b,
378          vector unsigned __int128 __c) {
379  return __builtin_altivec_vaddecuq(__a, __b, __c);
380}
381
382static __inline__ vector signed int __ATTRS_o_ai
383vec_addec(vector signed int __a, vector signed int __b,
384          vector signed int __c) {
385
386  signed int __result[4];
387  for (int i = 0; i < 4; i++) {
388    unsigned int __tempa = (unsigned int) __a[i];
389    unsigned int __tempb = (unsigned int) __b[i];
390    unsigned int __tempc = (unsigned int) __c[i];
391    __tempc = __tempc & 0x00000001;
392    unsigned long long __longa = (unsigned long long) __tempa;
393    unsigned long long __longb = (unsigned long long) __tempb;
394    unsigned long long __longc = (unsigned long long) __tempc;
395    unsigned long long __sum = __longa + __longb + __longc;
396    unsigned long long __res = (__sum >> 32) & 0x01;
397    unsigned long long __tempres = (unsigned int) __res;
398    __result[i] = (signed int) __tempres;
399  }
400
401  vector signed int ret = { __result[0], __result[1], __result[2], __result[3] };
402  return ret;
403}
404
405static __inline__ vector unsigned int __ATTRS_o_ai
406vec_addec(vector unsigned int __a, vector unsigned int __b,
407          vector unsigned int __c) {
408
409  unsigned int __result[4];
410  for (int i = 0; i < 4; i++) {
411    unsigned int __tempc = __c[i] & 1;
412    unsigned long long __longa = (unsigned long long) __a[i];
413    unsigned long long __longb = (unsigned long long) __b[i];
414    unsigned long long __longc = (unsigned long long) __tempc;
415    unsigned long long __sum = __longa + __longb + __longc;
416    unsigned long long __res = (__sum >> 32) & 0x01;
417    unsigned long long __tempres = (unsigned int) __res;
418    __result[i] = (signed int) __tempres;
419  }
420
421  vector unsigned int ret = { __result[0], __result[1], __result[2], __result[3] };
422  return ret;
423}
424
425#endif
426
427/* vec_vaddubm */
428
429#define __builtin_altivec_vaddubm vec_vaddubm
430
431static __inline__ vector signed char __ATTRS_o_ai
432vec_vaddubm(vector signed char __a, vector signed char __b) {
433  return __a + __b;
434}
435
436static __inline__ vector signed char __ATTRS_o_ai
437vec_vaddubm(vector bool char __a, vector signed char __b) {
438  return (vector signed char)__a + __b;
439}
440
441static __inline__ vector signed char __ATTRS_o_ai
442vec_vaddubm(vector signed char __a, vector bool char __b) {
443  return __a + (vector signed char)__b;
444}
445
446static __inline__ vector unsigned char __ATTRS_o_ai
447vec_vaddubm(vector unsigned char __a, vector unsigned char __b) {
448  return __a + __b;
449}
450
451static __inline__ vector unsigned char __ATTRS_o_ai
452vec_vaddubm(vector bool char __a, vector unsigned char __b) {
453  return (vector unsigned char)__a + __b;
454}
455
456static __inline__ vector unsigned char __ATTRS_o_ai
457vec_vaddubm(vector unsigned char __a, vector bool char __b) {
458  return __a + (vector unsigned char)__b;
459}
460
461/* vec_vadduhm */
462
463#define __builtin_altivec_vadduhm vec_vadduhm
464
465static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
466                                                        vector short __b) {
467  return __a + __b;
468}
469
470static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector bool short __a,
471                                                        vector short __b) {
472  return (vector short)__a + __b;
473}
474
475static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
476                                                        vector bool short __b) {
477  return __a + (vector short)__b;
478}
479
480static __inline__ vector unsigned short __ATTRS_o_ai
481vec_vadduhm(vector unsigned short __a, vector unsigned short __b) {
482  return __a + __b;
483}
484
485static __inline__ vector unsigned short __ATTRS_o_ai
486vec_vadduhm(vector bool short __a, vector unsigned short __b) {
487  return (vector unsigned short)__a + __b;
488}
489
490static __inline__ vector unsigned short __ATTRS_o_ai
491vec_vadduhm(vector unsigned short __a, vector bool short __b) {
492  return __a + (vector unsigned short)__b;
493}
494
495/* vec_vadduwm */
496
497#define __builtin_altivec_vadduwm vec_vadduwm
498
499static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
500                                                      vector int __b) {
501  return __a + __b;
502}
503
504static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector bool int __a,
505                                                      vector int __b) {
506  return (vector int)__a + __b;
507}
508
509static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
510                                                      vector bool int __b) {
511  return __a + (vector int)__b;
512}
513
514static __inline__ vector unsigned int __ATTRS_o_ai
515vec_vadduwm(vector unsigned int __a, vector unsigned int __b) {
516  return __a + __b;
517}
518
519static __inline__ vector unsigned int __ATTRS_o_ai
520vec_vadduwm(vector bool int __a, vector unsigned int __b) {
521  return (vector unsigned int)__a + __b;
522}
523
524static __inline__ vector unsigned int __ATTRS_o_ai
525vec_vadduwm(vector unsigned int __a, vector bool int __b) {
526  return __a + (vector unsigned int)__b;
527}
528
529/* vec_vaddfp */
530
531#define __builtin_altivec_vaddfp vec_vaddfp
532
533static __inline__ vector float __attribute__((__always_inline__))
534vec_vaddfp(vector float __a, vector float __b) {
535  return __a + __b;
536}
537
538/* vec_addc */
539
540static __inline__ vector signed int __ATTRS_o_ai
541vec_addc(vector signed int __a, vector signed int __b) {
542  return (vector signed int)__builtin_altivec_vaddcuw((vector unsigned int)__a,
543                                                      (vector unsigned int)__b);
544}
545
546static __inline__ vector unsigned int __ATTRS_o_ai
547vec_addc(vector unsigned int __a, vector unsigned int __b) {
548  return __builtin_altivec_vaddcuw(__a, __b);
549}
550
551#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
552static __inline__ vector signed __int128 __ATTRS_o_ai
553vec_addc(vector signed __int128 __a, vector signed __int128 __b) {
554  return (vector signed __int128)__builtin_altivec_vaddcuq(
555      (vector unsigned __int128)__a, (vector unsigned __int128)__b);
556}
557
558static __inline__ vector unsigned __int128 __ATTRS_o_ai
559vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
560  return __builtin_altivec_vaddcuq(__a, __b);
561}
562#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
563
564/* vec_vaddcuw */
565
566static __inline__ vector unsigned int __attribute__((__always_inline__))
567vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) {
568  return __builtin_altivec_vaddcuw(__a, __b);
569}
570
571/* vec_adds */
572
573static __inline__ vector signed char __ATTRS_o_ai
574vec_adds(vector signed char __a, vector signed char __b) {
575  return __builtin_altivec_vaddsbs(__a, __b);
576}
577
578static __inline__ vector signed char __ATTRS_o_ai
579vec_adds(vector bool char __a, vector signed char __b) {
580  return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
581}
582
583static __inline__ vector signed char __ATTRS_o_ai
584vec_adds(vector signed char __a, vector bool char __b) {
585  return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
586}
587
588static __inline__ vector unsigned char __ATTRS_o_ai
589vec_adds(vector unsigned char __a, vector unsigned char __b) {
590  return __builtin_altivec_vaddubs(__a, __b);
591}
592
593static __inline__ vector unsigned char __ATTRS_o_ai
594vec_adds(vector bool char __a, vector unsigned char __b) {
595  return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
596}
597
598static __inline__ vector unsigned char __ATTRS_o_ai
599vec_adds(vector unsigned char __a, vector bool char __b) {
600  return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
601}
602
603static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
604                                                     vector short __b) {
605  return __builtin_altivec_vaddshs(__a, __b);
606}
607
608static __inline__ vector short __ATTRS_o_ai vec_adds(vector bool short __a,
609                                                     vector short __b) {
610  return __builtin_altivec_vaddshs((vector short)__a, __b);
611}
612
613static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
614                                                     vector bool short __b) {
615  return __builtin_altivec_vaddshs(__a, (vector short)__b);
616}
617
618static __inline__ vector unsigned short __ATTRS_o_ai
619vec_adds(vector unsigned short __a, vector unsigned short __b) {
620  return __builtin_altivec_vadduhs(__a, __b);
621}
622
623static __inline__ vector unsigned short __ATTRS_o_ai
624vec_adds(vector bool short __a, vector unsigned short __b) {
625  return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
626}
627
628static __inline__ vector unsigned short __ATTRS_o_ai
629vec_adds(vector unsigned short __a, vector bool short __b) {
630  return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
631}
632
633static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
634                                                   vector int __b) {
635  return __builtin_altivec_vaddsws(__a, __b);
636}
637
638static __inline__ vector int __ATTRS_o_ai vec_adds(vector bool int __a,
639                                                   vector int __b) {
640  return __builtin_altivec_vaddsws((vector int)__a, __b);
641}
642
643static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
644                                                   vector bool int __b) {
645  return __builtin_altivec_vaddsws(__a, (vector int)__b);
646}
647
648static __inline__ vector unsigned int __ATTRS_o_ai
649vec_adds(vector unsigned int __a, vector unsigned int __b) {
650  return __builtin_altivec_vadduws(__a, __b);
651}
652
653static __inline__ vector unsigned int __ATTRS_o_ai
654vec_adds(vector bool int __a, vector unsigned int __b) {
655  return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
656}
657
658static __inline__ vector unsigned int __ATTRS_o_ai
659vec_adds(vector unsigned int __a, vector bool int __b) {
660  return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
661}
662
663/* vec_vaddsbs */
664
665static __inline__ vector signed char __ATTRS_o_ai
666vec_vaddsbs(vector signed char __a, vector signed char __b) {
667  return __builtin_altivec_vaddsbs(__a, __b);
668}
669
670static __inline__ vector signed char __ATTRS_o_ai
671vec_vaddsbs(vector bool char __a, vector signed char __b) {
672  return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
673}
674
675static __inline__ vector signed char __ATTRS_o_ai
676vec_vaddsbs(vector signed char __a, vector bool char __b) {
677  return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
678}
679
680/* vec_vaddubs */
681
682static __inline__ vector unsigned char __ATTRS_o_ai
683vec_vaddubs(vector unsigned char __a, vector unsigned char __b) {
684  return __builtin_altivec_vaddubs(__a, __b);
685}
686
687static __inline__ vector unsigned char __ATTRS_o_ai
688vec_vaddubs(vector bool char __a, vector unsigned char __b) {
689  return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
690}
691
692static __inline__ vector unsigned char __ATTRS_o_ai
693vec_vaddubs(vector unsigned char __a, vector bool char __b) {
694  return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
695}
696
697/* vec_vaddshs */
698
699static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
700                                                        vector short __b) {
701  return __builtin_altivec_vaddshs(__a, __b);
702}
703
704static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector bool short __a,
705                                                        vector short __b) {
706  return __builtin_altivec_vaddshs((vector short)__a, __b);
707}
708
709static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
710                                                        vector bool short __b) {
711  return __builtin_altivec_vaddshs(__a, (vector short)__b);
712}
713
714/* vec_vadduhs */
715
716static __inline__ vector unsigned short __ATTRS_o_ai
717vec_vadduhs(vector unsigned short __a, vector unsigned short __b) {
718  return __builtin_altivec_vadduhs(__a, __b);
719}
720
721static __inline__ vector unsigned short __ATTRS_o_ai
722vec_vadduhs(vector bool short __a, vector unsigned short __b) {
723  return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
724}
725
726static __inline__ vector unsigned short __ATTRS_o_ai
727vec_vadduhs(vector unsigned short __a, vector bool short __b) {
728  return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
729}
730
731/* vec_vaddsws */
732
733static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
734                                                      vector int __b) {
735  return __builtin_altivec_vaddsws(__a, __b);
736}
737
738static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector bool int __a,
739                                                      vector int __b) {
740  return __builtin_altivec_vaddsws((vector int)__a, __b);
741}
742
743static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
744                                                      vector bool int __b) {
745  return __builtin_altivec_vaddsws(__a, (vector int)__b);
746}
747
748/* vec_vadduws */
749
750static __inline__ vector unsigned int __ATTRS_o_ai
751vec_vadduws(vector unsigned int __a, vector unsigned int __b) {
752  return __builtin_altivec_vadduws(__a, __b);
753}
754
755static __inline__ vector unsigned int __ATTRS_o_ai
756vec_vadduws(vector bool int __a, vector unsigned int __b) {
757  return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
758}
759
760static __inline__ vector unsigned int __ATTRS_o_ai
761vec_vadduws(vector unsigned int __a, vector bool int __b) {
762  return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
763}
764
765#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
766/* vec_vadduqm */
767
768static __inline__ vector signed __int128 __ATTRS_o_ai
769vec_vadduqm(vector signed __int128 __a, vector signed __int128 __b) {
770  return __a + __b;
771}
772
773static __inline__ vector unsigned __int128 __ATTRS_o_ai
774vec_vadduqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
775  return __a + __b;
776}
777
778/* vec_vaddeuqm */
779
780static __inline__ vector signed __int128 __ATTRS_o_ai
781vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b,
782             vector signed __int128 __c) {
783  return __builtin_altivec_vaddeuqm(__a, __b, __c);
784}
785
786static __inline__ vector unsigned __int128 __ATTRS_o_ai
787vec_vaddeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
788             vector unsigned __int128 __c) {
789  return __builtin_altivec_vaddeuqm(__a, __b, __c);
790}
791
792/* vec_vaddcuq */
793
794static __inline__ vector signed __int128 __ATTRS_o_ai
795vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) {
796  return __builtin_altivec_vaddcuq(__a, __b);
797}
798
799static __inline__ vector unsigned __int128 __ATTRS_o_ai
800vec_vaddcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
801  return __builtin_altivec_vaddcuq(__a, __b);
802}
803
804/* vec_vaddecuq */
805
806static __inline__ vector signed __int128 __ATTRS_o_ai
807vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b,
808             vector signed __int128 __c) {
809  return __builtin_altivec_vaddecuq(__a, __b, __c);
810}
811
812static __inline__ vector unsigned __int128 __ATTRS_o_ai
813vec_vaddecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
814             vector unsigned __int128 __c) {
815  return __builtin_altivec_vaddecuq(__a, __b, __c);
816}
817#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
818
819/* vec_and */
820
821#define __builtin_altivec_vand vec_and
822
823static __inline__ vector signed char __ATTRS_o_ai
824vec_and(vector signed char __a, vector signed char __b) {
825  return __a & __b;
826}
827
828static __inline__ vector signed char __ATTRS_o_ai
829vec_and(vector bool char __a, vector signed char __b) {
830  return (vector signed char)__a & __b;
831}
832
833static __inline__ vector signed char __ATTRS_o_ai
834vec_and(vector signed char __a, vector bool char __b) {
835  return __a & (vector signed char)__b;
836}
837
838static __inline__ vector unsigned char __ATTRS_o_ai
839vec_and(vector unsigned char __a, vector unsigned char __b) {
840  return __a & __b;
841}
842
843static __inline__ vector unsigned char __ATTRS_o_ai
844vec_and(vector bool char __a, vector unsigned char __b) {
845  return (vector unsigned char)__a & __b;
846}
847
848static __inline__ vector unsigned char __ATTRS_o_ai
849vec_and(vector unsigned char __a, vector bool char __b) {
850  return __a & (vector unsigned char)__b;
851}
852
853static __inline__ vector bool char __ATTRS_o_ai vec_and(vector bool char __a,
854                                                        vector bool char __b) {
855  return __a & __b;
856}
857
858static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
859                                                    vector short __b) {
860  return __a & __b;
861}
862
863static __inline__ vector short __ATTRS_o_ai vec_and(vector bool short __a,
864                                                    vector short __b) {
865  return (vector short)__a & __b;
866}
867
868static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
869                                                    vector bool short __b) {
870  return __a & (vector short)__b;
871}
872
873static __inline__ vector unsigned short __ATTRS_o_ai
874vec_and(vector unsigned short __a, vector unsigned short __b) {
875  return __a & __b;
876}
877
878static __inline__ vector unsigned short __ATTRS_o_ai
879vec_and(vector bool short __a, vector unsigned short __b) {
880  return (vector unsigned short)__a & __b;
881}
882
883static __inline__ vector unsigned short __ATTRS_o_ai
884vec_and(vector unsigned short __a, vector bool short __b) {
885  return __a & (vector unsigned short)__b;
886}
887
888static __inline__ vector bool short __ATTRS_o_ai
889vec_and(vector bool short __a, vector bool short __b) {
890  return __a & __b;
891}
892
893static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
894                                                  vector int __b) {
895  return __a & __b;
896}
897
898static __inline__ vector int __ATTRS_o_ai vec_and(vector bool int __a,
899                                                  vector int __b) {
900  return (vector int)__a & __b;
901}
902
903static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
904                                                  vector bool int __b) {
905  return __a & (vector int)__b;
906}
907
908static __inline__ vector unsigned int __ATTRS_o_ai
909vec_and(vector unsigned int __a, vector unsigned int __b) {
910  return __a & __b;
911}
912
913static __inline__ vector unsigned int __ATTRS_o_ai
914vec_and(vector bool int __a, vector unsigned int __b) {
915  return (vector unsigned int)__a & __b;
916}
917
918static __inline__ vector unsigned int __ATTRS_o_ai
919vec_and(vector unsigned int __a, vector bool int __b) {
920  return __a & (vector unsigned int)__b;
921}
922
923static __inline__ vector bool int __ATTRS_o_ai vec_and(vector bool int __a,
924                                                       vector bool int __b) {
925  return __a & __b;
926}
927
928static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
929                                                    vector float __b) {
930  vector unsigned int __res =
931      (vector unsigned int)__a & (vector unsigned int)__b;
932  return (vector float)__res;
933}
934
935static __inline__ vector float __ATTRS_o_ai vec_and(vector bool int __a,
936                                                    vector float __b) {
937  vector unsigned int __res =
938      (vector unsigned int)__a & (vector unsigned int)__b;
939  return (vector float)__res;
940}
941
942static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
943                                                    vector bool int __b) {
944  vector unsigned int __res =
945      (vector unsigned int)__a & (vector unsigned int)__b;
946  return (vector float)__res;
947}
948
949#ifdef __VSX__
950static __inline__ vector double __ATTRS_o_ai vec_and(vector bool long long __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
957static __inline__ vector double __ATTRS_o_ai
958vec_and(vector double __a, vector bool long long __b) {
959  vector unsigned long long __res =
960      (vector unsigned long long)__a & (vector unsigned long long)__b;
961  return (vector double)__res;
962}
963
964static __inline__ vector double __ATTRS_o_ai vec_and(vector double __a,
965                                                     vector double __b) {
966  vector unsigned long long __res =
967      (vector unsigned long long)__a & (vector unsigned long long)__b;
968  return (vector double)__res;
969}
970
971static __inline__ vector signed long long __ATTRS_o_ai
972vec_and(vector signed long long __a, vector signed long long __b) {
973  return __a & __b;
974}
975
976static __inline__ vector signed long long __ATTRS_o_ai
977vec_and(vector bool long long __a, vector signed long long __b) {
978  return (vector signed long long)__a & __b;
979}
980
981static __inline__ vector signed long long __ATTRS_o_ai
982vec_and(vector signed long long __a, vector bool long long __b) {
983  return __a & (vector signed long long)__b;
984}
985
986static __inline__ vector unsigned long long __ATTRS_o_ai
987vec_and(vector unsigned long long __a, vector unsigned long long __b) {
988  return __a & __b;
989}
990
991static __inline__ vector unsigned long long __ATTRS_o_ai
992vec_and(vector bool long long __a, vector unsigned long long __b) {
993  return (vector unsigned long long)__a & __b;
994}
995
996static __inline__ vector unsigned long long __ATTRS_o_ai
997vec_and(vector unsigned long long __a, vector bool long long __b) {
998  return __a & (vector unsigned long long)__b;
999}
1000
1001static __inline__ vector bool long long __ATTRS_o_ai
1002vec_and(vector bool long long __a, vector bool long long __b) {
1003  return __a & __b;
1004}
1005#endif
1006
1007/* vec_vand */
1008
1009static __inline__ vector signed char __ATTRS_o_ai
1010vec_vand(vector signed char __a, vector signed char __b) {
1011  return __a & __b;
1012}
1013
1014static __inline__ vector signed char __ATTRS_o_ai
1015vec_vand(vector bool char __a, vector signed char __b) {
1016  return (vector signed char)__a & __b;
1017}
1018
1019static __inline__ vector signed char __ATTRS_o_ai
1020vec_vand(vector signed char __a, vector bool char __b) {
1021  return __a & (vector signed char)__b;
1022}
1023
1024static __inline__ vector unsigned char __ATTRS_o_ai
1025vec_vand(vector unsigned char __a, vector unsigned char __b) {
1026  return __a & __b;
1027}
1028
1029static __inline__ vector unsigned char __ATTRS_o_ai
1030vec_vand(vector bool char __a, vector unsigned char __b) {
1031  return (vector unsigned char)__a & __b;
1032}
1033
1034static __inline__ vector unsigned char __ATTRS_o_ai
1035vec_vand(vector unsigned char __a, vector bool char __b) {
1036  return __a & (vector unsigned char)__b;
1037}
1038
1039static __inline__ vector bool char __ATTRS_o_ai vec_vand(vector bool char __a,
1040                                                         vector bool char __b) {
1041  return __a & __b;
1042}
1043
1044static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
1045                                                     vector short __b) {
1046  return __a & __b;
1047}
1048
1049static __inline__ vector short __ATTRS_o_ai vec_vand(vector bool short __a,
1050                                                     vector short __b) {
1051  return (vector short)__a & __b;
1052}
1053
1054static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
1055                                                     vector bool short __b) {
1056  return __a & (vector short)__b;
1057}
1058
1059static __inline__ vector unsigned short __ATTRS_o_ai
1060vec_vand(vector unsigned short __a, vector unsigned short __b) {
1061  return __a & __b;
1062}
1063
1064static __inline__ vector unsigned short __ATTRS_o_ai
1065vec_vand(vector bool short __a, vector unsigned short __b) {
1066  return (vector unsigned short)__a & __b;
1067}
1068
1069static __inline__ vector unsigned short __ATTRS_o_ai
1070vec_vand(vector unsigned short __a, vector bool short __b) {
1071  return __a & (vector unsigned short)__b;
1072}
1073
1074static __inline__ vector bool short __ATTRS_o_ai
1075vec_vand(vector bool short __a, vector bool short __b) {
1076  return __a & __b;
1077}
1078
1079static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
1080                                                   vector int __b) {
1081  return __a & __b;
1082}
1083
1084static __inline__ vector int __ATTRS_o_ai vec_vand(vector bool int __a,
1085                                                   vector int __b) {
1086  return (vector int)__a & __b;
1087}
1088
1089static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
1090                                                   vector bool int __b) {
1091  return __a & (vector int)__b;
1092}
1093
1094static __inline__ vector unsigned int __ATTRS_o_ai
1095vec_vand(vector unsigned int __a, vector unsigned int __b) {
1096  return __a & __b;
1097}
1098
1099static __inline__ vector unsigned int __ATTRS_o_ai
1100vec_vand(vector bool int __a, vector unsigned int __b) {
1101  return (vector unsigned int)__a & __b;
1102}
1103
1104static __inline__ vector unsigned int __ATTRS_o_ai
1105vec_vand(vector unsigned int __a, vector bool int __b) {
1106  return __a & (vector unsigned int)__b;
1107}
1108
1109static __inline__ vector bool int __ATTRS_o_ai vec_vand(vector bool int __a,
1110                                                        vector bool int __b) {
1111  return __a & __b;
1112}
1113
1114static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1115                                                     vector float __b) {
1116  vector unsigned int __res =
1117      (vector unsigned int)__a & (vector unsigned int)__b;
1118  return (vector float)__res;
1119}
1120
1121static __inline__ vector float __ATTRS_o_ai vec_vand(vector bool int __a,
1122                                                     vector float __b) {
1123  vector unsigned int __res =
1124      (vector unsigned int)__a & (vector unsigned int)__b;
1125  return (vector float)__res;
1126}
1127
1128static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1129                                                     vector bool int __b) {
1130  vector unsigned int __res =
1131      (vector unsigned int)__a & (vector unsigned int)__b;
1132  return (vector float)__res;
1133}
1134
1135#ifdef __VSX__
1136static __inline__ vector signed long long __ATTRS_o_ai
1137vec_vand(vector signed long long __a, vector signed long long __b) {
1138  return __a & __b;
1139}
1140
1141static __inline__ vector signed long long __ATTRS_o_ai
1142vec_vand(vector bool long long __a, vector signed long long __b) {
1143  return (vector signed long long)__a & __b;
1144}
1145
1146static __inline__ vector signed long long __ATTRS_o_ai
1147vec_vand(vector signed long long __a, vector bool long long __b) {
1148  return __a & (vector signed long long)__b;
1149}
1150
1151static __inline__ vector unsigned long long __ATTRS_o_ai
1152vec_vand(vector unsigned long long __a, vector unsigned long long __b) {
1153  return __a & __b;
1154}
1155
1156static __inline__ vector unsigned long long __ATTRS_o_ai
1157vec_vand(vector bool long long __a, vector unsigned long long __b) {
1158  return (vector unsigned long long)__a & __b;
1159}
1160
1161static __inline__ vector unsigned long long __ATTRS_o_ai
1162vec_vand(vector unsigned long long __a, vector bool long long __b) {
1163  return __a & (vector unsigned long long)__b;
1164}
1165
1166static __inline__ vector bool long long __ATTRS_o_ai
1167vec_vand(vector bool long long __a, vector bool long long __b) {
1168  return __a & __b;
1169}
1170#endif
1171
1172/* vec_andc */
1173
1174#define __builtin_altivec_vandc vec_andc
1175
1176static __inline__ vector signed char __ATTRS_o_ai
1177vec_andc(vector signed char __a, vector signed char __b) {
1178  return __a & ~__b;
1179}
1180
1181static __inline__ vector signed char __ATTRS_o_ai
1182vec_andc(vector bool char __a, vector signed char __b) {
1183  return (vector signed char)__a & ~__b;
1184}
1185
1186static __inline__ vector signed char __ATTRS_o_ai
1187vec_andc(vector signed char __a, vector bool char __b) {
1188  return __a & ~(vector signed char)__b;
1189}
1190
1191static __inline__ vector unsigned char __ATTRS_o_ai
1192vec_andc(vector unsigned char __a, vector unsigned char __b) {
1193  return __a & ~__b;
1194}
1195
1196static __inline__ vector unsigned char __ATTRS_o_ai
1197vec_andc(vector bool char __a, vector unsigned char __b) {
1198  return (vector unsigned char)__a & ~__b;
1199}
1200
1201static __inline__ vector unsigned char __ATTRS_o_ai
1202vec_andc(vector unsigned char __a, vector bool char __b) {
1203  return __a & ~(vector unsigned char)__b;
1204}
1205
1206static __inline__ vector bool char __ATTRS_o_ai vec_andc(vector bool char __a,
1207                                                         vector bool char __b) {
1208  return __a & ~__b;
1209}
1210
1211static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1212                                                     vector short __b) {
1213  return __a & ~__b;
1214}
1215
1216static __inline__ vector short __ATTRS_o_ai vec_andc(vector bool short __a,
1217                                                     vector short __b) {
1218  return (vector short)__a & ~__b;
1219}
1220
1221static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1222                                                     vector bool short __b) {
1223  return __a & ~(vector short)__b;
1224}
1225
1226static __inline__ vector unsigned short __ATTRS_o_ai
1227vec_andc(vector unsigned short __a, vector unsigned short __b) {
1228  return __a & ~__b;
1229}
1230
1231static __inline__ vector unsigned short __ATTRS_o_ai
1232vec_andc(vector bool short __a, vector unsigned short __b) {
1233  return (vector unsigned short)__a & ~__b;
1234}
1235
1236static __inline__ vector unsigned short __ATTRS_o_ai
1237vec_andc(vector unsigned short __a, vector bool short __b) {
1238  return __a & ~(vector unsigned short)__b;
1239}
1240
1241static __inline__ vector bool short __ATTRS_o_ai
1242vec_andc(vector bool short __a, vector bool short __b) {
1243  return __a & ~__b;
1244}
1245
1246static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1247                                                   vector int __b) {
1248  return __a & ~__b;
1249}
1250
1251static __inline__ vector int __ATTRS_o_ai vec_andc(vector bool int __a,
1252                                                   vector int __b) {
1253  return (vector int)__a & ~__b;
1254}
1255
1256static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1257                                                   vector bool int __b) {
1258  return __a & ~(vector int)__b;
1259}
1260
1261static __inline__ vector unsigned int __ATTRS_o_ai
1262vec_andc(vector unsigned int __a, vector unsigned int __b) {
1263  return __a & ~__b;
1264}
1265
1266static __inline__ vector unsigned int __ATTRS_o_ai
1267vec_andc(vector bool int __a, vector unsigned int __b) {
1268  return (vector unsigned int)__a & ~__b;
1269}
1270
1271static __inline__ vector unsigned int __ATTRS_o_ai
1272vec_andc(vector unsigned int __a, vector bool int __b) {
1273  return __a & ~(vector unsigned int)__b;
1274}
1275
1276static __inline__ vector bool int __ATTRS_o_ai vec_andc(vector bool int __a,
1277                                                        vector bool int __b) {
1278  return __a & ~__b;
1279}
1280
1281static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1282                                                     vector float __b) {
1283  vector unsigned int __res =
1284      (vector unsigned int)__a & ~(vector unsigned int)__b;
1285  return (vector float)__res;
1286}
1287
1288static __inline__ vector float __ATTRS_o_ai vec_andc(vector bool int __a,
1289                                                     vector float __b) {
1290  vector unsigned int __res =
1291      (vector unsigned int)__a & ~(vector unsigned int)__b;
1292  return (vector float)__res;
1293}
1294
1295static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1296                                                     vector bool int __b) {
1297  vector unsigned int __res =
1298      (vector unsigned int)__a & ~(vector unsigned int)__b;
1299  return (vector float)__res;
1300}
1301
1302#ifdef __VSX__
1303static __inline__ vector double __ATTRS_o_ai vec_andc(vector bool long long __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
1310static __inline__ vector double __ATTRS_o_ai
1311vec_andc(vector double __a, vector bool long long __b) {
1312  vector unsigned long long __res =
1313      (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1314  return (vector double)__res;
1315}
1316
1317static __inline__ vector double __ATTRS_o_ai vec_andc(vector double __a,
1318                                                      vector double __b) {
1319  vector unsigned long long __res =
1320      (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1321  return (vector double)__res;
1322}
1323
1324static __inline__ vector signed long long __ATTRS_o_ai
1325vec_andc(vector signed long long __a, vector signed long long __b) {
1326  return __a & ~__b;
1327}
1328
1329static __inline__ vector signed long long __ATTRS_o_ai
1330vec_andc(vector bool long long __a, vector signed long long __b) {
1331  return (vector signed long long)__a & ~__b;
1332}
1333
1334static __inline__ vector signed long long __ATTRS_o_ai
1335vec_andc(vector signed long long __a, vector bool long long __b) {
1336  return __a & ~(vector signed long long)__b;
1337}
1338
1339static __inline__ vector unsigned long long __ATTRS_o_ai
1340vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
1341  return __a & ~__b;
1342}
1343
1344static __inline__ vector unsigned long long __ATTRS_o_ai
1345vec_andc(vector bool long long __a, vector unsigned long long __b) {
1346  return (vector unsigned long long)__a & ~__b;
1347}
1348
1349static __inline__ vector unsigned long long __ATTRS_o_ai
1350vec_andc(vector unsigned long long __a, vector bool long long __b) {
1351  return __a & ~(vector unsigned long long)__b;
1352}
1353
1354static __inline__ vector bool long long __ATTRS_o_ai
1355vec_andc(vector bool long long __a, vector bool long long __b) {
1356  return __a & ~__b;
1357}
1358#endif
1359
1360/* vec_vandc */
1361
1362static __inline__ vector signed char __ATTRS_o_ai
1363vec_vandc(vector signed char __a, vector signed char __b) {
1364  return __a & ~__b;
1365}
1366
1367static __inline__ vector signed char __ATTRS_o_ai
1368vec_vandc(vector bool char __a, vector signed char __b) {
1369  return (vector signed char)__a & ~__b;
1370}
1371
1372static __inline__ vector signed char __ATTRS_o_ai
1373vec_vandc(vector signed char __a, vector bool char __b) {
1374  return __a & ~(vector signed char)__b;
1375}
1376
1377static __inline__ vector unsigned char __ATTRS_o_ai
1378vec_vandc(vector unsigned char __a, vector unsigned char __b) {
1379  return __a & ~__b;
1380}
1381
1382static __inline__ vector unsigned char __ATTRS_o_ai
1383vec_vandc(vector bool char __a, vector unsigned char __b) {
1384  return (vector unsigned char)__a & ~__b;
1385}
1386
1387static __inline__ vector unsigned char __ATTRS_o_ai
1388vec_vandc(vector unsigned char __a, vector bool char __b) {
1389  return __a & ~(vector unsigned char)__b;
1390}
1391
1392static __inline__ vector bool char __ATTRS_o_ai
1393vec_vandc(vector bool char __a, vector bool char __b) {
1394  return __a & ~__b;
1395}
1396
1397static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1398                                                      vector short __b) {
1399  return __a & ~__b;
1400}
1401
1402static __inline__ vector short __ATTRS_o_ai vec_vandc(vector bool short __a,
1403                                                      vector short __b) {
1404  return (vector short)__a & ~__b;
1405}
1406
1407static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1408                                                      vector bool short __b) {
1409  return __a & ~(vector short)__b;
1410}
1411
1412static __inline__ vector unsigned short __ATTRS_o_ai
1413vec_vandc(vector unsigned short __a, vector unsigned short __b) {
1414  return __a & ~__b;
1415}
1416
1417static __inline__ vector unsigned short __ATTRS_o_ai
1418vec_vandc(vector bool short __a, vector unsigned short __b) {
1419  return (vector unsigned short)__a & ~__b;
1420}
1421
1422static __inline__ vector unsigned short __ATTRS_o_ai
1423vec_vandc(vector unsigned short __a, vector bool short __b) {
1424  return __a & ~(vector unsigned short)__b;
1425}
1426
1427static __inline__ vector bool short __ATTRS_o_ai
1428vec_vandc(vector bool short __a, vector bool short __b) {
1429  return __a & ~__b;
1430}
1431
1432static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1433                                                    vector int __b) {
1434  return __a & ~__b;
1435}
1436
1437static __inline__ vector int __ATTRS_o_ai vec_vandc(vector bool int __a,
1438                                                    vector int __b) {
1439  return (vector int)__a & ~__b;
1440}
1441
1442static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1443                                                    vector bool int __b) {
1444  return __a & ~(vector int)__b;
1445}
1446
1447static __inline__ vector unsigned int __ATTRS_o_ai
1448vec_vandc(vector unsigned int __a, vector unsigned int __b) {
1449  return __a & ~__b;
1450}
1451
1452static __inline__ vector unsigned int __ATTRS_o_ai
1453vec_vandc(vector bool int __a, vector unsigned int __b) {
1454  return (vector unsigned int)__a & ~__b;
1455}
1456
1457static __inline__ vector unsigned int __ATTRS_o_ai
1458vec_vandc(vector unsigned int __a, vector bool int __b) {
1459  return __a & ~(vector unsigned int)__b;
1460}
1461
1462static __inline__ vector bool int __ATTRS_o_ai vec_vandc(vector bool int __a,
1463                                                         vector bool int __b) {
1464  return __a & ~__b;
1465}
1466
1467static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1468                                                      vector float __b) {
1469  vector unsigned int __res =
1470      (vector unsigned int)__a & ~(vector unsigned int)__b;
1471  return (vector float)__res;
1472}
1473
1474static __inline__ vector float __ATTRS_o_ai vec_vandc(vector bool int __a,
1475                                                      vector float __b) {
1476  vector unsigned int __res =
1477      (vector unsigned int)__a & ~(vector unsigned int)__b;
1478  return (vector float)__res;
1479}
1480
1481static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1482                                                      vector bool int __b) {
1483  vector unsigned int __res =
1484      (vector unsigned int)__a & ~(vector unsigned int)__b;
1485  return (vector float)__res;
1486}
1487
1488#ifdef __VSX__
1489static __inline__ vector signed long long __ATTRS_o_ai
1490vec_vandc(vector signed long long __a, vector signed long long __b) {
1491  return __a & ~__b;
1492}
1493
1494static __inline__ vector signed long long __ATTRS_o_ai
1495vec_vandc(vector bool long long __a, vector signed long long __b) {
1496  return (vector signed long long)__a & ~__b;
1497}
1498
1499static __inline__ vector signed long long __ATTRS_o_ai
1500vec_vandc(vector signed long long __a, vector bool long long __b) {
1501  return __a & ~(vector signed long long)__b;
1502}
1503
1504static __inline__ vector unsigned long long __ATTRS_o_ai
1505vec_vandc(vector unsigned long long __a, vector unsigned long long __b) {
1506  return __a & ~__b;
1507}
1508
1509static __inline__ vector unsigned long long __ATTRS_o_ai
1510vec_vandc(vector bool long long __a, vector unsigned long long __b) {
1511  return (vector unsigned long long)__a & ~__b;
1512}
1513
1514static __inline__ vector unsigned long long __ATTRS_o_ai
1515vec_vandc(vector unsigned long long __a, vector bool long long __b) {
1516  return __a & ~(vector unsigned long long)__b;
1517}
1518
1519static __inline__ vector bool long long __ATTRS_o_ai
1520vec_vandc(vector bool long long __a, vector bool long long __b) {
1521  return __a & ~__b;
1522}
1523#endif
1524
1525/* vec_avg */
1526
1527static __inline__ vector signed char __ATTRS_o_ai
1528vec_avg(vector signed char __a, vector signed char __b) {
1529  return __builtin_altivec_vavgsb(__a, __b);
1530}
1531
1532static __inline__ vector unsigned char __ATTRS_o_ai
1533vec_avg(vector unsigned char __a, vector unsigned char __b) {
1534  return __builtin_altivec_vavgub(__a, __b);
1535}
1536
1537static __inline__ vector short __ATTRS_o_ai vec_avg(vector short __a,
1538                                                    vector short __b) {
1539  return __builtin_altivec_vavgsh(__a, __b);
1540}
1541
1542static __inline__ vector unsigned short __ATTRS_o_ai
1543vec_avg(vector unsigned short __a, vector unsigned short __b) {
1544  return __builtin_altivec_vavguh(__a, __b);
1545}
1546
1547static __inline__ vector int __ATTRS_o_ai vec_avg(vector int __a,
1548                                                  vector int __b) {
1549  return __builtin_altivec_vavgsw(__a, __b);
1550}
1551
1552static __inline__ vector unsigned int __ATTRS_o_ai
1553vec_avg(vector unsigned int __a, vector unsigned int __b) {
1554  return __builtin_altivec_vavguw(__a, __b);
1555}
1556
1557/* vec_vavgsb */
1558
1559static __inline__ vector signed char __attribute__((__always_inline__))
1560vec_vavgsb(vector signed char __a, vector signed char __b) {
1561  return __builtin_altivec_vavgsb(__a, __b);
1562}
1563
1564/* vec_vavgub */
1565
1566static __inline__ vector unsigned char __attribute__((__always_inline__))
1567vec_vavgub(vector unsigned char __a, vector unsigned char __b) {
1568  return __builtin_altivec_vavgub(__a, __b);
1569}
1570
1571/* vec_vavgsh */
1572
1573static __inline__ vector short __attribute__((__always_inline__))
1574vec_vavgsh(vector short __a, vector short __b) {
1575  return __builtin_altivec_vavgsh(__a, __b);
1576}
1577
1578/* vec_vavguh */
1579
1580static __inline__ vector unsigned short __attribute__((__always_inline__))
1581vec_vavguh(vector unsigned short __a, vector unsigned short __b) {
1582  return __builtin_altivec_vavguh(__a, __b);
1583}
1584
1585/* vec_vavgsw */
1586
1587static __inline__ vector int __attribute__((__always_inline__))
1588vec_vavgsw(vector int __a, vector int __b) {
1589  return __builtin_altivec_vavgsw(__a, __b);
1590}
1591
1592/* vec_vavguw */
1593
1594static __inline__ vector unsigned int __attribute__((__always_inline__))
1595vec_vavguw(vector unsigned int __a, vector unsigned int __b) {
1596  return __builtin_altivec_vavguw(__a, __b);
1597}
1598
1599/* vec_ceil */
1600
1601static __inline__ vector float __ATTRS_o_ai vec_ceil(vector float __a) {
1602#ifdef __VSX__
1603  return __builtin_vsx_xvrspip(__a);
1604#else
1605  return __builtin_altivec_vrfip(__a);
1606#endif
1607}
1608
1609#ifdef __VSX__
1610static __inline__ vector double __ATTRS_o_ai vec_ceil(vector double __a) {
1611  return __builtin_vsx_xvrdpip(__a);
1612}
1613#endif
1614
1615/* vec_vrfip */
1616
1617static __inline__ vector float __attribute__((__always_inline__))
1618vec_vrfip(vector float __a) {
1619  return __builtin_altivec_vrfip(__a);
1620}
1621
1622/* vec_cmpb */
1623
1624static __inline__ vector int __attribute__((__always_inline__))
1625vec_cmpb(vector float __a, vector float __b) {
1626  return __builtin_altivec_vcmpbfp(__a, __b);
1627}
1628
1629/* vec_vcmpbfp */
1630
1631static __inline__ vector int __attribute__((__always_inline__))
1632vec_vcmpbfp(vector float __a, vector float __b) {
1633  return __builtin_altivec_vcmpbfp(__a, __b);
1634}
1635
1636/* vec_cmpeq */
1637
1638static __inline__ vector bool char __ATTRS_o_ai
1639vec_cmpeq(vector signed char __a, vector signed char __b) {
1640  return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1641                                                      (vector char)__b);
1642}
1643
1644static __inline__ vector bool char __ATTRS_o_ai
1645vec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
1646  return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1647                                                      (vector char)__b);
1648}
1649
1650static __inline__ vector bool char __ATTRS_o_ai
1651vec_cmpeq(vector bool char __a, vector bool char __b) {
1652  return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1653                                                      (vector char)__b);
1654}
1655
1656static __inline__ vector bool short __ATTRS_o_ai vec_cmpeq(vector short __a,
1657                                                           vector short __b) {
1658  return (vector bool short)__builtin_altivec_vcmpequh(__a, __b);
1659}
1660
1661static __inline__ vector bool short __ATTRS_o_ai
1662vec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
1663  return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
1664                                                       (vector short)__b);
1665}
1666
1667static __inline__ vector bool short __ATTRS_o_ai
1668vec_cmpeq(vector bool short __a, vector bool short __b) {
1669  return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
1670                                                       (vector short)__b);
1671}
1672
1673static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector int __a,
1674                                                         vector int __b) {
1675  return (vector bool int)__builtin_altivec_vcmpequw(__a, __b);
1676}
1677
1678static __inline__ vector bool int __ATTRS_o_ai
1679vec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
1680  return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
1681                                                     (vector int)__b);
1682}
1683
1684static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector bool int __a,
1685                                                         vector bool int __b) {
1686  return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
1687                                                     (vector int)__b);
1688}
1689
1690#ifdef __POWER8_VECTOR__
1691static __inline__ vector bool long long __ATTRS_o_ai
1692vec_cmpeq(vector signed long long __a, vector signed long long __b) {
1693  return (vector bool long long)__builtin_altivec_vcmpequd(__a, __b);
1694}
1695
1696static __inline__ vector bool long long __ATTRS_o_ai
1697vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
1698  return (vector bool long long)__builtin_altivec_vcmpequd(
1699      (vector long long)__a, (vector long long)__b);
1700}
1701
1702static __inline__ vector bool long long __ATTRS_o_ai
1703vec_cmpeq(vector bool long long __a, vector bool long long __b) {
1704  return (vector bool long long)__builtin_altivec_vcmpequd(
1705      (vector long long)__a, (vector long long)__b);
1706}
1707
1708#endif
1709
1710static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector float __a,
1711                                                         vector float __b) {
1712#ifdef __VSX__
1713  return (vector bool int)__builtin_vsx_xvcmpeqsp(__a, __b);
1714#else
1715  return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b);
1716#endif
1717}
1718
1719#ifdef __VSX__
1720static __inline__ vector bool long long __ATTRS_o_ai
1721vec_cmpeq(vector double __a, vector double __b) {
1722  return (vector bool long long)__builtin_vsx_xvcmpeqdp(__a, __b);
1723}
1724#endif
1725
1726#ifdef __POWER9_VECTOR__
1727/* vec_cmpne */
1728
1729static __inline__ vector bool char __ATTRS_o_ai
1730vec_cmpne(vector bool char __a, vector bool char __b) {
1731  return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
1732                                                     (vector char)__b);
1733}
1734
1735static __inline__ vector bool char __ATTRS_o_ai
1736vec_cmpne(vector signed char __a, vector signed char __b) {
1737  return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
1738                                                     (vector char)__b);
1739}
1740
1741static __inline__ vector bool char __ATTRS_o_ai
1742vec_cmpne(vector unsigned char __a, vector unsigned char __b) {
1743  return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
1744                                                     (vector char)__b);
1745}
1746
1747static __inline__ vector bool short __ATTRS_o_ai
1748vec_cmpne(vector bool short __a, vector bool short __b) {
1749  return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
1750                                                      (vector short)__b);
1751}
1752
1753static __inline__ vector bool short __ATTRS_o_ai
1754vec_cmpne(vector signed short __a, vector signed short __b) {
1755  return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
1756                                                      (vector short)__b);
1757}
1758
1759static __inline__ vector bool short __ATTRS_o_ai
1760vec_cmpne(vector unsigned short __a, vector unsigned short __b) {
1761  return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
1762                                                      (vector short)__b);
1763}
1764
1765static __inline__ vector bool int __ATTRS_o_ai
1766vec_cmpne(vector bool int __a, vector bool int __b) {
1767  return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1768                                                    (vector int)__b);
1769}
1770
1771static __inline__ vector bool int __ATTRS_o_ai
1772vec_cmpne(vector signed int __a, vector signed int __b) {
1773  return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1774                                                    (vector int)__b);
1775}
1776
1777static __inline__ vector bool int __ATTRS_o_ai
1778vec_cmpne(vector unsigned int __a, vector unsigned int __b) {
1779  return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1780                                                    (vector int)__b);
1781}
1782
1783static __inline__ vector bool long long __ATTRS_o_ai
1784vec_cmpne(vector bool long long __a, vector bool long long __b) {
1785  return (vector bool long long)
1786    ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1787}
1788
1789static __inline__ vector bool long long __ATTRS_o_ai
1790vec_cmpne(vector signed long long __a, vector signed long long __b) {
1791  return (vector bool long long)
1792    ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1793}
1794
1795static __inline__ vector bool long long __ATTRS_o_ai
1796vec_cmpne(vector unsigned long long __a, vector unsigned long long __b) {
1797  return (vector bool long long)
1798    ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1799}
1800
1801static __inline__ vector bool int __ATTRS_o_ai
1802vec_cmpne(vector float __a, vector float __b) {
1803  return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
1804                                                    (vector int)__b);
1805}
1806
1807static __inline__ vector bool long long __ATTRS_o_ai
1808vec_cmpne(vector double __a, vector double __b) {
1809  return (vector bool long long)
1810    ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
1811}
1812
1813/* vec_cmpnez */
1814
1815static __inline__ vector bool char __ATTRS_o_ai
1816vec_cmpnez(vector signed char __a, vector signed char __b) {
1817  return (vector bool char)__builtin_altivec_vcmpnezb((vector char)__a,
1818                                                      (vector char)__b);
1819}
1820
1821static __inline__ vector bool char __ATTRS_o_ai
1822vec_cmpnez(vector unsigned char __a, vector unsigned char __b) {
1823  return (vector bool char)__builtin_altivec_vcmpnezb((vector char)__a,
1824                                                      (vector char)__b);
1825}
1826
1827static __inline__ vector bool short __ATTRS_o_ai
1828vec_cmpnez(vector signed short __a, vector signed short __b) {
1829  return (vector bool short)__builtin_altivec_vcmpnezh((vector short)__a,
1830                                                       (vector short)__b);
1831}
1832
1833static __inline__ vector bool short __ATTRS_o_ai
1834vec_cmpnez(vector unsigned short __a, vector unsigned short __b) {
1835  return (vector bool short)__builtin_altivec_vcmpnezh((vector short)__a,
1836                                                       (vector short)__b);
1837}
1838
1839static __inline__ vector bool int __ATTRS_o_ai
1840vec_cmpnez(vector signed int __a, vector signed int __b) {
1841  return (vector bool int)__builtin_altivec_vcmpnezw((vector int)__a,
1842                                                     (vector int)__b);
1843}
1844
1845static __inline__ vector bool int __ATTRS_o_ai
1846vec_cmpnez(vector unsigned int __a, vector unsigned int __b) {
1847  return (vector bool int)__builtin_altivec_vcmpnezw((vector int)__a,
1848                                                     (vector int)__b);
1849}
1850
1851static __inline__ signed int __ATTRS_o_ai
1852vec_cntlz_lsbb(vector signed char __a) {
1853#ifdef __LITTLE_ENDIAN__
1854  return __builtin_altivec_vctzlsbb(__a);
1855#else
1856  return __builtin_altivec_vclzlsbb(__a);
1857#endif
1858}
1859
1860static __inline__ signed int __ATTRS_o_ai
1861vec_cntlz_lsbb(vector unsigned char __a) {
1862#ifdef __LITTLE_ENDIAN__
1863  return __builtin_altivec_vctzlsbb(__a);
1864#else
1865  return __builtin_altivec_vclzlsbb(__a);
1866#endif
1867}
1868
1869static __inline__ signed int __ATTRS_o_ai
1870vec_cnttz_lsbb(vector signed char __a) {
1871#ifdef __LITTLE_ENDIAN__
1872  return __builtin_altivec_vclzlsbb(__a);
1873#else
1874  return __builtin_altivec_vctzlsbb(__a);
1875#endif
1876}
1877
1878static __inline__ signed int __ATTRS_o_ai
1879vec_cnttz_lsbb(vector unsigned char __a) {
1880#ifdef __LITTLE_ENDIAN__
1881  return __builtin_altivec_vclzlsbb(__a);
1882#else
1883  return __builtin_altivec_vctzlsbb(__a);
1884#endif
1885}
1886
1887static __inline__ vector unsigned int __ATTRS_o_ai
1888vec_parity_lsbb(vector unsigned int __a) {
1889  return __builtin_altivec_vprtybw(__a);
1890}
1891
1892static __inline__ vector unsigned int __ATTRS_o_ai
1893vec_parity_lsbb(vector signed int __a) {
1894  return __builtin_altivec_vprtybw(__a);
1895}
1896
1897static __inline__ vector unsigned __int128 __ATTRS_o_ai
1898vec_parity_lsbb(vector unsigned __int128 __a) {
1899  return __builtin_altivec_vprtybq(__a);
1900}
1901
1902static __inline__ vector unsigned __int128 __ATTRS_o_ai
1903vec_parity_lsbb(vector signed __int128 __a) {
1904  return __builtin_altivec_vprtybq(__a);
1905}
1906
1907static __inline__ vector unsigned long long __ATTRS_o_ai
1908vec_parity_lsbb(vector unsigned long long __a) {
1909  return __builtin_altivec_vprtybd(__a);
1910}
1911
1912static __inline__ vector unsigned long long __ATTRS_o_ai
1913vec_parity_lsbb(vector signed long long __a) {
1914  return __builtin_altivec_vprtybd(__a);
1915}
1916
1917#endif
1918
1919/* vec_cmpgt */
1920
1921static __inline__ vector bool char __ATTRS_o_ai
1922vec_cmpgt(vector signed char __a, vector signed char __b) {
1923  return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1924}
1925
1926static __inline__ vector bool char __ATTRS_o_ai
1927vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
1928  return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1929}
1930
1931static __inline__ vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a,
1932                                                           vector short __b) {
1933  return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1934}
1935
1936static __inline__ vector bool short __ATTRS_o_ai
1937vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
1938  return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1939}
1940
1941static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a,
1942                                                         vector int __b) {
1943  return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1944}
1945
1946static __inline__ vector bool int __ATTRS_o_ai
1947vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
1948  return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1949}
1950
1951#ifdef __POWER8_VECTOR__
1952static __inline__ vector bool long long __ATTRS_o_ai
1953vec_cmpgt(vector signed long long __a, vector signed long long __b) {
1954  return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b);
1955}
1956
1957static __inline__ vector bool long long __ATTRS_o_ai
1958vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
1959  return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b);
1960}
1961#endif
1962
1963static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a,
1964                                                         vector float __b) {
1965#ifdef __VSX__
1966  return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b);
1967#else
1968  return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1969#endif
1970}
1971
1972#ifdef __VSX__
1973static __inline__ vector bool long long __ATTRS_o_ai
1974vec_cmpgt(vector double __a, vector double __b) {
1975  return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b);
1976}
1977#endif
1978
1979/* vec_cmpge */
1980
1981static __inline__ vector bool char __ATTRS_o_ai
1982vec_cmpge(vector signed char __a, vector signed char __b) {
1983  return ~(vec_cmpgt(__b, __a));
1984}
1985
1986static __inline__ vector bool char __ATTRS_o_ai
1987vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
1988  return ~(vec_cmpgt(__b, __a));
1989}
1990
1991static __inline__ vector bool short __ATTRS_o_ai
1992vec_cmpge(vector signed short __a, vector signed short __b) {
1993  return ~(vec_cmpgt(__b, __a));
1994}
1995
1996static __inline__ vector bool short __ATTRS_o_ai
1997vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
1998  return ~(vec_cmpgt(__b, __a));
1999}
2000
2001static __inline__ vector bool int __ATTRS_o_ai
2002vec_cmpge(vector signed int __a, vector signed int __b) {
2003  return ~(vec_cmpgt(__b, __a));
2004}
2005
2006static __inline__ vector bool int __ATTRS_o_ai
2007vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
2008  return ~(vec_cmpgt(__b, __a));
2009}
2010
2011static __inline__ vector bool int __ATTRS_o_ai vec_cmpge(vector float __a,
2012                                                         vector float __b) {
2013#ifdef __VSX__
2014  return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b);
2015#else
2016  return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
2017#endif
2018}
2019
2020#ifdef __VSX__
2021static __inline__ vector bool long long __ATTRS_o_ai
2022vec_cmpge(vector double __a, vector double __b) {
2023  return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b);
2024}
2025#endif
2026
2027#ifdef __POWER8_VECTOR__
2028static __inline__ vector bool long long __ATTRS_o_ai
2029vec_cmpge(vector signed long long __a, vector signed long long __b) {
2030  return ~(vec_cmpgt(__b, __a));
2031}
2032
2033static __inline__ vector bool long long __ATTRS_o_ai
2034vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
2035  return ~(vec_cmpgt(__b, __a));
2036}
2037#endif
2038
2039/* vec_vcmpgefp */
2040
2041static __inline__ vector bool int __attribute__((__always_inline__))
2042vec_vcmpgefp(vector float __a, vector float __b) {
2043  return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
2044}
2045
2046/* vec_vcmpgtsb */
2047
2048static __inline__ vector bool char __attribute__((__always_inline__))
2049vec_vcmpgtsb(vector signed char __a, vector signed char __b) {
2050  return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
2051}
2052
2053/* vec_vcmpgtub */
2054
2055static __inline__ vector bool char __attribute__((__always_inline__))
2056vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) {
2057  return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
2058}
2059
2060/* vec_vcmpgtsh */
2061
2062static __inline__ vector bool short __attribute__((__always_inline__))
2063vec_vcmpgtsh(vector short __a, vector short __b) {
2064  return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
2065}
2066
2067/* vec_vcmpgtuh */
2068
2069static __inline__ vector bool short __attribute__((__always_inline__))
2070vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) {
2071  return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
2072}
2073
2074/* vec_vcmpgtsw */
2075
2076static __inline__ vector bool int __attribute__((__always_inline__))
2077vec_vcmpgtsw(vector int __a, vector int __b) {
2078  return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
2079}
2080
2081/* vec_vcmpgtuw */
2082
2083static __inline__ vector bool int __attribute__((__always_inline__))
2084vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) {
2085  return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
2086}
2087
2088/* vec_vcmpgtfp */
2089
2090static __inline__ vector bool int __attribute__((__always_inline__))
2091vec_vcmpgtfp(vector float __a, vector float __b) {
2092  return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
2093}
2094
2095/* vec_cmple */
2096
2097static __inline__ vector bool char __ATTRS_o_ai
2098vec_cmple(vector signed char __a, vector signed char __b) {
2099  return vec_cmpge(__b, __a);
2100}
2101
2102static __inline__ vector bool char __ATTRS_o_ai
2103vec_cmple(vector unsigned char __a, vector unsigned char __b) {
2104  return vec_cmpge(__b, __a);
2105}
2106
2107static __inline__ vector bool short __ATTRS_o_ai
2108vec_cmple(vector signed short __a, vector signed short __b) {
2109  return vec_cmpge(__b, __a);
2110}
2111
2112static __inline__ vector bool short __ATTRS_o_ai
2113vec_cmple(vector unsigned short __a, vector unsigned short __b) {
2114  return vec_cmpge(__b, __a);
2115}
2116
2117static __inline__ vector bool int __ATTRS_o_ai
2118vec_cmple(vector signed int __a, vector signed int __b) {
2119  return vec_cmpge(__b, __a);
2120}
2121
2122static __inline__ vector bool int __ATTRS_o_ai
2123vec_cmple(vector unsigned int __a, vector unsigned int __b) {
2124  return vec_cmpge(__b, __a);
2125}
2126
2127static __inline__ vector bool int __ATTRS_o_ai vec_cmple(vector float __a,
2128                                                         vector float __b) {
2129  return vec_cmpge(__b, __a);
2130}
2131
2132#ifdef __VSX__
2133static __inline__ vector bool long long __ATTRS_o_ai
2134vec_cmple(vector double __a, vector double __b) {
2135  return vec_cmpge(__b, __a);
2136}
2137#endif
2138
2139#ifdef __POWER8_VECTOR__
2140static __inline__ vector bool long long __ATTRS_o_ai
2141vec_cmple(vector signed long long __a, vector signed long long __b) {
2142  return vec_cmpge(__b, __a);
2143}
2144
2145static __inline__ vector bool long long __ATTRS_o_ai
2146vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
2147  return vec_cmpge(__b, __a);
2148}
2149#endif
2150
2151/* vec_cmplt */
2152
2153static __inline__ vector bool char __ATTRS_o_ai
2154vec_cmplt(vector signed char __a, vector signed char __b) {
2155  return vec_cmpgt(__b, __a);
2156}
2157
2158static __inline__ vector bool char __ATTRS_o_ai
2159vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
2160  return vec_cmpgt(__b, __a);
2161}
2162
2163static __inline__ vector bool short __ATTRS_o_ai vec_cmplt(vector short __a,
2164                                                           vector short __b) {
2165  return vec_cmpgt(__b, __a);
2166}
2167
2168static __inline__ vector bool short __ATTRS_o_ai
2169vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
2170  return vec_cmpgt(__b, __a);
2171}
2172
2173static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector int __a,
2174                                                         vector int __b) {
2175  return vec_cmpgt(__b, __a);
2176}
2177
2178static __inline__ vector bool int __ATTRS_o_ai
2179vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
2180  return vec_cmpgt(__b, __a);
2181}
2182
2183static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector float __a,
2184                                                         vector float __b) {
2185  return vec_cmpgt(__b, __a);
2186}
2187
2188#ifdef __VSX__
2189static __inline__ vector bool long long __ATTRS_o_ai
2190vec_cmplt(vector double __a, vector double __b) {
2191  return vec_cmpgt(__b, __a);
2192}
2193#endif
2194
2195#ifdef __POWER8_VECTOR__
2196static __inline__ vector bool long long __ATTRS_o_ai
2197vec_cmplt(vector signed long long __a, vector signed long long __b) {
2198  return vec_cmpgt(__b, __a);
2199}
2200
2201static __inline__ vector bool long long __ATTRS_o_ai
2202vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
2203  return vec_cmpgt(__b, __a);
2204}
2205
2206/* vec_popcnt */
2207
2208static __inline__ vector signed char __ATTRS_o_ai
2209vec_popcnt(vector signed char __a) {
2210  return __builtin_altivec_vpopcntb(__a);
2211}
2212static __inline__ vector unsigned char __ATTRS_o_ai
2213vec_popcnt(vector unsigned char __a) {
2214  return __builtin_altivec_vpopcntb(__a);
2215}
2216static __inline__ vector signed short __ATTRS_o_ai
2217vec_popcnt(vector signed short __a) {
2218  return __builtin_altivec_vpopcnth(__a);
2219}
2220static __inline__ vector unsigned short __ATTRS_o_ai
2221vec_popcnt(vector unsigned short __a) {
2222  return __builtin_altivec_vpopcnth(__a);
2223}
2224static __inline__ vector signed int __ATTRS_o_ai
2225vec_popcnt(vector signed int __a) {
2226  return __builtin_altivec_vpopcntw(__a);
2227}
2228static __inline__ vector unsigned int __ATTRS_o_ai
2229vec_popcnt(vector unsigned int __a) {
2230  return __builtin_altivec_vpopcntw(__a);
2231}
2232static __inline__ vector signed long long __ATTRS_o_ai
2233vec_popcnt(vector signed long long __a) {
2234  return __builtin_altivec_vpopcntd(__a);
2235}
2236static __inline__ vector unsigned long long __ATTRS_o_ai
2237vec_popcnt(vector unsigned long long __a) {
2238  return __builtin_altivec_vpopcntd(__a);
2239}
2240
2241/* vec_cntlz */
2242
2243static __inline__ vector signed char __ATTRS_o_ai
2244vec_cntlz(vector signed char __a) {
2245  return __builtin_altivec_vclzb(__a);
2246}
2247static __inline__ vector unsigned char __ATTRS_o_ai
2248vec_cntlz(vector unsigned char __a) {
2249  return __builtin_altivec_vclzb(__a);
2250}
2251static __inline__ vector signed short __ATTRS_o_ai
2252vec_cntlz(vector signed short __a) {
2253  return __builtin_altivec_vclzh(__a);
2254}
2255static __inline__ vector unsigned short __ATTRS_o_ai
2256vec_cntlz(vector unsigned short __a) {
2257  return __builtin_altivec_vclzh(__a);
2258}
2259static __inline__ vector signed int __ATTRS_o_ai
2260vec_cntlz(vector signed int __a) {
2261  return __builtin_altivec_vclzw(__a);
2262}
2263static __inline__ vector unsigned int __ATTRS_o_ai
2264vec_cntlz(vector unsigned int __a) {
2265  return __builtin_altivec_vclzw(__a);
2266}
2267static __inline__ vector signed long long __ATTRS_o_ai
2268vec_cntlz(vector signed long long __a) {
2269  return __builtin_altivec_vclzd(__a);
2270}
2271static __inline__ vector unsigned long long __ATTRS_o_ai
2272vec_cntlz(vector unsigned long long __a) {
2273  return __builtin_altivec_vclzd(__a);
2274}
2275#endif
2276
2277#ifdef __POWER9_VECTOR__
2278
2279/* vec_cnttz */
2280
2281static __inline__ vector signed char __ATTRS_o_ai
2282vec_cnttz(vector signed char __a) {
2283  return __builtin_altivec_vctzb(__a);
2284}
2285static __inline__ vector unsigned char __ATTRS_o_ai
2286vec_cnttz(vector unsigned char __a) {
2287  return __builtin_altivec_vctzb(__a);
2288}
2289static __inline__ vector signed short __ATTRS_o_ai
2290vec_cnttz(vector signed short __a) {
2291  return __builtin_altivec_vctzh(__a);
2292}
2293static __inline__ vector unsigned short __ATTRS_o_ai
2294vec_cnttz(vector unsigned short __a) {
2295  return __builtin_altivec_vctzh(__a);
2296}
2297static __inline__ vector signed int __ATTRS_o_ai
2298vec_cnttz(vector signed int __a) {
2299  return __builtin_altivec_vctzw(__a);
2300}
2301static __inline__ vector unsigned int __ATTRS_o_ai
2302vec_cnttz(vector unsigned int __a) {
2303  return __builtin_altivec_vctzw(__a);
2304}
2305static __inline__ vector signed long long __ATTRS_o_ai
2306vec_cnttz(vector signed long long __a) {
2307  return __builtin_altivec_vctzd(__a);
2308}
2309static __inline__ vector unsigned long long __ATTRS_o_ai
2310vec_cnttz(vector unsigned long long __a) {
2311  return __builtin_altivec_vctzd(__a);
2312}
2313
2314/* vec_first_match_index */
2315
2316static __inline__ unsigned __ATTRS_o_ai
2317vec_first_match_index(vector signed char __a, vector signed 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
2330static __inline__ unsigned __ATTRS_o_ai
2331vec_first_match_index(vector unsigned char __a, vector unsigned char __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) >> 3;
2340  }
2341  return __res[0] >> 3;
2342}
2343
2344static __inline__ unsigned __ATTRS_o_ai
2345vec_first_match_index(vector signed short __a, vector signed 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
2358static __inline__ unsigned __ATTRS_o_ai
2359vec_first_match_index(vector unsigned short __a, vector unsigned short __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) >> 4;
2368  }
2369  return __res[0] >> 4;
2370}
2371
2372static __inline__ unsigned __ATTRS_o_ai
2373vec_first_match_index(vector signed int __a, vector signed 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
2386static __inline__ unsigned __ATTRS_o_ai
2387vec_first_match_index(vector unsigned int __a, vector unsigned int __b) {
2388  vector unsigned long long __res =
2389#ifdef __LITTLE_ENDIAN__
2390    vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
2391#else
2392    vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
2393#endif
2394  if (__res[0] == 64) {
2395    return (__res[1] + 64) >> 5;
2396  }
2397  return __res[0] >> 5;
2398}
2399
2400/* vec_first_match_or_eos_index */
2401
2402static __inline__ unsigned __ATTRS_o_ai
2403vec_first_match_or_eos_index(vector signed char __a, vector signed char __b) {
2404  /* Compare the result of the comparison of two vectors with either and OR the
2405     result. Either the elements are equal or one will equal the comparison
2406     result if either is zero.
2407  */
2408  vector bool char __tmp1 = vec_cmpeq(__a, __b);
2409  vector bool char __tmp2 = __tmp1 |
2410                            vec_cmpeq((vector signed char)__tmp1, __a) |
2411                            vec_cmpeq((vector signed char)__tmp1, __b);
2412
2413  vector unsigned long long __res =
2414#ifdef __LITTLE_ENDIAN__
2415      vec_cnttz((vector unsigned long long)__tmp2);
2416#else
2417      vec_cntlz((vector unsigned long long)__tmp2);
2418#endif
2419  if (__res[0] == 64) {
2420    return (__res[1] + 64) >> 3;
2421  }
2422  return __res[0] >> 3;
2423}
2424
2425static __inline__ unsigned __ATTRS_o_ai
2426vec_first_match_or_eos_index(vector unsigned char __a,
2427                             vector unsigned char __b) {
2428  vector bool char __tmp1 = vec_cmpeq(__a, __b);
2429  vector bool char __tmp2 = __tmp1 |
2430                            vec_cmpeq((vector unsigned char)__tmp1, __a) |
2431                            vec_cmpeq((vector unsigned char)__tmp1, __b);
2432
2433  vector unsigned long long __res =
2434#ifdef __LITTLE_ENDIAN__
2435      vec_cnttz((vector unsigned long long)__tmp2);
2436#else
2437      vec_cntlz((vector unsigned long long)__tmp2);
2438#endif
2439  if (__res[0] == 64) {
2440    return (__res[1] + 64) >> 3;
2441  }
2442  return __res[0] >> 3;
2443}
2444
2445static __inline__ unsigned __ATTRS_o_ai
2446vec_first_match_or_eos_index(vector signed short __a, vector signed short __b) {
2447  vector bool short __tmp1 = vec_cmpeq(__a, __b);
2448  vector bool short __tmp2 = __tmp1 |
2449                             vec_cmpeq((vector signed short)__tmp1, __a) |
2450                             vec_cmpeq((vector signed short)__tmp1, __b);
2451
2452  vector unsigned long long __res =
2453#ifdef __LITTLE_ENDIAN__
2454      vec_cnttz((vector unsigned long long)__tmp2);
2455#else
2456      vec_cntlz((vector unsigned long long)__tmp2);
2457#endif
2458  if (__res[0] == 64) {
2459    return (__res[1] + 64) >> 4;
2460  }
2461  return __res[0] >> 4;
2462}
2463
2464static __inline__ unsigned __ATTRS_o_ai
2465vec_first_match_or_eos_index(vector unsigned short __a,
2466                             vector unsigned short __b) {
2467  vector bool short __tmp1 = vec_cmpeq(__a, __b);
2468  vector bool short __tmp2 = __tmp1 |
2469                             vec_cmpeq((vector unsigned short)__tmp1, __a) |
2470                             vec_cmpeq((vector unsigned short)__tmp1, __b);
2471
2472  vector unsigned long long __res =
2473#ifdef __LITTLE_ENDIAN__
2474      vec_cnttz((vector unsigned long long)__tmp2);
2475#else
2476      vec_cntlz((vector unsigned long long)__tmp2);
2477#endif
2478  if (__res[0] == 64) {
2479    return (__res[1] + 64) >> 4;
2480  }
2481  return __res[0] >> 4;
2482}
2483
2484static __inline__ unsigned __ATTRS_o_ai
2485vec_first_match_or_eos_index(vector signed int __a, vector signed int __b) {
2486  vector bool int __tmp1 = vec_cmpeq(__a, __b);
2487  vector bool int __tmp2 = __tmp1 | vec_cmpeq((vector signed int)__tmp1, __a) |
2488                           vec_cmpeq((vector signed int)__tmp1, __b);
2489
2490  vector unsigned long long __res =
2491#ifdef __LITTLE_ENDIAN__
2492      vec_cnttz((vector unsigned long long)__tmp2);
2493#else
2494      vec_cntlz((vector unsigned long long)__tmp2);
2495#endif
2496  if (__res[0] == 64) {
2497    return (__res[1] + 64) >> 5;
2498  }
2499  return __res[0] >> 5;
2500}
2501
2502static __inline__ unsigned __ATTRS_o_ai
2503vec_first_match_or_eos_index(vector unsigned int __a, vector unsigned int __b) {
2504  vector bool int __tmp1 = vec_cmpeq(__a, __b);
2505  vector bool int __tmp2 = __tmp1 |
2506                           vec_cmpeq((vector unsigned int)__tmp1, __a) |
2507                           vec_cmpeq((vector unsigned int)__tmp1, __b);
2508
2509  vector unsigned long long __res =
2510#ifdef __LITTLE_ENDIAN__
2511    vec_cnttz((vector unsigned long long)__tmp2);
2512#else
2513    vec_cntlz((vector unsigned long long)__tmp2);
2514#endif
2515  if (__res[0] == 64) {
2516    return (__res[1] + 64) >> 5;
2517  }
2518  return __res[0] >> 5;
2519}
2520
2521/* vec_first_mismatch_index */
2522
2523static __inline__ unsigned __ATTRS_o_ai
2524vec_first_mismatch_index(vector signed char __a, vector signed 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
2537static __inline__ unsigned __ATTRS_o_ai
2538vec_first_mismatch_index(vector unsigned char __a, vector unsigned char __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) >> 3;
2547  }
2548  return __res[0] >> 3;
2549}
2550
2551static __inline__ unsigned __ATTRS_o_ai
2552vec_first_mismatch_index(vector signed short __a, vector signed 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
2565static __inline__ unsigned __ATTRS_o_ai
2566vec_first_mismatch_index(vector unsigned short __a, vector unsigned short __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) >> 4;
2575  }
2576  return __res[0] >> 4;
2577}
2578
2579static __inline__ unsigned __ATTRS_o_ai
2580vec_first_mismatch_index(vector signed int __a, vector signed 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
2593static __inline__ unsigned __ATTRS_o_ai
2594vec_first_mismatch_index(vector unsigned int __a, vector unsigned int __b) {
2595  vector unsigned long long __res =
2596#ifdef __LITTLE_ENDIAN__
2597    vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
2598#else
2599    vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
2600#endif
2601  if (__res[0] == 64) {
2602    return (__res[1] + 64) >> 5;
2603  }
2604  return __res[0] >> 5;
2605}
2606
2607/* vec_first_mismatch_or_eos_index */
2608
2609static __inline__ unsigned __ATTRS_o_ai
2610vec_first_mismatch_or_eos_index(vector signed char __a,
2611                                vector signed char __b) {
2612  vector unsigned long long __res =
2613#ifdef __LITTLE_ENDIAN__
2614    vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2615#else
2616    vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2617#endif
2618  if (__res[0] == 64) {
2619    return (__res[1] + 64) >> 3;
2620  }
2621  return __res[0] >> 3;
2622}
2623
2624static __inline__ unsigned __ATTRS_o_ai
2625vec_first_mismatch_or_eos_index(vector unsigned char __a,
2626                                vector unsigned char __b) {
2627  vector unsigned long long __res =
2628#ifdef __LITTLE_ENDIAN__
2629    vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2630#else
2631    vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2632#endif
2633  if (__res[0] == 64) {
2634    return (__res[1] + 64) >> 3;
2635  }
2636  return __res[0] >> 3;
2637}
2638
2639static __inline__ unsigned __ATTRS_o_ai
2640vec_first_mismatch_or_eos_index(vector signed short __a,
2641                                vector signed short __b) {
2642  vector unsigned long long __res =
2643#ifdef __LITTLE_ENDIAN__
2644    vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2645#else
2646    vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2647#endif
2648  if (__res[0] == 64) {
2649    return (__res[1] + 64) >> 4;
2650  }
2651  return __res[0] >> 4;
2652}
2653
2654static __inline__ unsigned __ATTRS_o_ai
2655vec_first_mismatch_or_eos_index(vector unsigned short __a,
2656                                vector unsigned short __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) >> 4;
2665  }
2666  return __res[0] >> 4;
2667}
2668
2669static __inline__ unsigned __ATTRS_o_ai
2670vec_first_mismatch_or_eos_index(vector signed int __a, vector signed int __b) {
2671  vector unsigned long long __res =
2672#ifdef __LITTLE_ENDIAN__
2673    vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2674#else
2675    vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2676#endif
2677  if (__res[0] == 64) {
2678    return (__res[1] + 64) >> 5;
2679  }
2680  return __res[0] >> 5;
2681}
2682
2683static __inline__ unsigned __ATTRS_o_ai
2684vec_first_mismatch_or_eos_index(vector unsigned int __a,
2685                                vector unsigned int __b) {
2686  vector unsigned long long __res =
2687#ifdef __LITTLE_ENDIAN__
2688    vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
2689#else
2690    vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
2691#endif
2692  if (__res[0] == 64) {
2693    return (__res[1] + 64) >> 5;
2694  }
2695  return __res[0] >> 5;
2696}
2697
2698static __inline__ vector double  __ATTRS_o_ai
2699vec_insert_exp(vector double __a, vector unsigned long long __b) {
2700  return __builtin_vsx_xviexpdp((vector unsigned long long)__a,__b);
2701}
2702
2703static __inline__ vector double  __ATTRS_o_ai
2704vec_insert_exp(vector unsigned long long __a, vector unsigned long long __b) {
2705  return __builtin_vsx_xviexpdp(__a,__b);
2706}
2707
2708static __inline__ vector float  __ATTRS_o_ai
2709vec_insert_exp(vector float __a, vector unsigned int __b) {
2710  return __builtin_vsx_xviexpsp((vector unsigned int)__a,__b);
2711}
2712
2713static __inline__ vector float  __ATTRS_o_ai
2714vec_insert_exp(vector unsigned int __a, vector unsigned int __b) {
2715  return __builtin_vsx_xviexpsp(__a,__b);
2716}
2717
2718#if defined(__powerpc64__)
2719static __inline__ vector signed char __ATTRS_o_ai vec_xl_len(signed char *__a,
2720                                                             size_t __b) {
2721  return (vector signed char)__builtin_vsx_lxvl(__a, (__b << 56));
2722}
2723
2724static __inline__ vector unsigned char __ATTRS_o_ai
2725vec_xl_len(unsigned char *__a, size_t __b) {
2726  return (vector unsigned char)__builtin_vsx_lxvl(__a, (__b << 56));
2727}
2728
2729static __inline__ vector signed short __ATTRS_o_ai vec_xl_len(signed short *__a,
2730                                                              size_t __b) {
2731  return (vector signed short)__builtin_vsx_lxvl(__a, (__b << 56));
2732}
2733
2734static __inline__ vector unsigned short __ATTRS_o_ai
2735vec_xl_len(unsigned short *__a, size_t __b) {
2736  return (vector unsigned short)__builtin_vsx_lxvl(__a, (__b << 56));
2737}
2738
2739static __inline__ vector signed int __ATTRS_o_ai vec_xl_len(signed int *__a,
2740                                                            size_t __b) {
2741  return (vector signed int)__builtin_vsx_lxvl(__a, (__b << 56));
2742}
2743
2744static __inline__ vector unsigned int __ATTRS_o_ai vec_xl_len(unsigned int *__a,
2745                                                              size_t __b) {
2746  return (vector unsigned int)__builtin_vsx_lxvl(__a, (__b << 56));
2747}
2748
2749static __inline__ vector float __ATTRS_o_ai vec_xl_len(float *__a, size_t __b) {
2750  return (vector float)__builtin_vsx_lxvl(__a, (__b << 56));
2751}
2752
2753static __inline__ vector signed __int128 __ATTRS_o_ai
2754vec_xl_len(signed __int128 *__a, size_t __b) {
2755  return (vector signed __int128)__builtin_vsx_lxvl(__a, (__b << 56));
2756}
2757
2758static __inline__ vector unsigned __int128 __ATTRS_o_ai
2759vec_xl_len(unsigned __int128 *__a, size_t __b) {
2760  return (vector unsigned __int128)__builtin_vsx_lxvl(__a, (__b << 56));
2761}
2762
2763static __inline__ vector signed long long __ATTRS_o_ai
2764vec_xl_len(signed long long *__a, size_t __b) {
2765  return (vector signed long long)__builtin_vsx_lxvl(__a, (__b << 56));
2766}
2767
2768static __inline__ vector unsigned long long __ATTRS_o_ai
2769vec_xl_len(unsigned long long *__a, size_t __b) {
2770  return (vector unsigned long long)__builtin_vsx_lxvl(__a, (__b << 56));
2771}
2772
2773static __inline__ vector double __ATTRS_o_ai vec_xl_len(double *__a,
2774                                                        size_t __b) {
2775  return (vector double)__builtin_vsx_lxvl(__a, (__b << 56));
2776}
2777
2778static __inline__ vector double __ATTRS_o_ai vec_xl_len_r(unsigned char *__a,
2779                                                          size_t __b) {
2780  vector unsigned char __res =
2781      (vector unsigned char)__builtin_vsx_lxvll(__a, (__b << 56));
2782#ifdef __LITTLE_ENDIAN__
2783  vector unsigned char __mask =
2784      (vector unsigned char)__builtin_altivec_lvsr(16 - __b, (int *)NULL);
2785  __res = (vector unsigned char)__builtin_altivec_vperm_4si(
2786      (vector int)__res, (vector int)__res, __mask);
2787#endif
2788  return __res;
2789}
2790
2791// vec_xst_len
2792static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned char __a,
2793                                                unsigned char *__b,
2794                                                size_t __c) {
2795  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2796}
2797
2798static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed char __a,
2799                                                signed char *__b, size_t __c) {
2800  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2801}
2802
2803static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed short __a,
2804                                                signed short *__b, size_t __c) {
2805  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2806}
2807
2808static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned short __a,
2809                                                unsigned short *__b,
2810                                                size_t __c) {
2811  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2812}
2813
2814static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed int __a,
2815                                                signed int *__b, size_t __c) {
2816  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2817}
2818
2819static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned int __a,
2820                                                unsigned int *__b, size_t __c) {
2821  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2822}
2823
2824static __inline__ void __ATTRS_o_ai vec_xst_len(vector float __a, float *__b,
2825                                                size_t __c) {
2826  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2827}
2828
2829static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed __int128 __a,
2830                                                signed __int128 *__b,
2831                                                size_t __c) {
2832  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2833}
2834
2835static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned __int128 __a,
2836                                                unsigned __int128 *__b,
2837                                                size_t __c) {
2838  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2839}
2840
2841static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed long long __a,
2842                                                signed long long *__b,
2843                                                size_t __c) {
2844  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2845}
2846
2847static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned long long __a,
2848                                                unsigned long long *__b,
2849                                                size_t __c) {
2850  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2851}
2852
2853static __inline__ void __ATTRS_o_ai vec_xst_len(vector double __a, double *__b,
2854                                                size_t __c) {
2855  return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
2856}
2857
2858static __inline__ void __ATTRS_o_ai vec_xst_len_r(vector unsigned char __a,
2859                                                  unsigned char *__b,
2860                                                  size_t __c) {
2861#ifdef __LITTLE_ENDIAN__
2862  vector unsigned char __mask =
2863      (vector unsigned char)__builtin_altivec_lvsl(16 - __c, (int *)NULL);
2864  vector unsigned char __res =
2865      __builtin_altivec_vperm_4si((vector int)__a, (vector int)__a, __mask);
2866  return __builtin_vsx_stxvll((vector int)__res, __b, (__c << 56));
2867#else
2868  return __builtin_vsx_stxvll((vector int)__a, __b, (__c << 56));
2869#endif
2870}
2871#endif
2872#endif
2873
2874/* vec_cpsgn */
2875
2876#ifdef __VSX__
2877static __inline__ vector float __ATTRS_o_ai vec_cpsgn(vector float __a,
2878                                                      vector float __b) {
2879  return __builtin_vsx_xvcpsgnsp(__a, __b);
2880}
2881
2882static __inline__ vector double __ATTRS_o_ai vec_cpsgn(vector double __a,
2883                                                       vector double __b) {
2884  return __builtin_vsx_xvcpsgndp(__a, __b);
2885}
2886#endif
2887
2888/* vec_ctf */
2889
2890#ifdef __VSX__
2891#define vec_ctf(__a, __b)                                                      \
2892  _Generic((__a), vector int                                                   \
2893           : (vector float)__builtin_altivec_vcfsx((__a), (__b)),              \
2894             vector unsigned int                                               \
2895           : (vector float)__builtin_altivec_vcfux((vector int)(__a), (__b)),  \
2896             vector unsigned long long                                         \
2897           : (__builtin_convertvector((vector unsigned long long)(__a),        \
2898                                      vector double) *                         \
2899              (vector double)(vector unsigned long long)((0x3ffULL - (__b))    \
2900                                                         << 52)),              \
2901             vector signed long long                                           \
2902           : (__builtin_convertvector((vector signed long long)(__a),          \
2903                                      vector double) *                         \
2904              (vector double)(vector unsigned long long)((0x3ffULL - (__b))    \
2905                                                         << 52)))
2906#else
2907#define vec_ctf(__a, __b)                                                      \
2908  _Generic((__a), vector int                                                   \
2909           : (vector float)__builtin_altivec_vcfsx((__a), (__b)),              \
2910             vector unsigned int                                               \
2911           : (vector float)__builtin_altivec_vcfux((vector int)(__a), (__b)))
2912#endif
2913
2914/* vec_vcfsx */
2915
2916#define vec_vcfux __builtin_altivec_vcfux
2917
2918/* vec_vcfux */
2919
2920#define vec_vcfsx(__a, __b) __builtin_altivec_vcfsx((vector int)(__a), (__b))
2921
2922/* vec_cts */
2923
2924#ifdef __VSX__
2925#define vec_cts(__a, __b)                                                      \
2926  _Generic((__a), vector float                                                 \
2927           : __builtin_altivec_vctsxs((__a), (__b)), vector double             \
2928           : __extension__({                                                   \
2929             vector double __ret =                                             \
2930                 (__a) *                                                       \
2931                 (vector double)(vector unsigned long long)((0x3ffULL + (__b)) \
2932                                                            << 52);            \
2933             __builtin_convertvector(__ret, vector signed long long);          \
2934           }))
2935#else
2936#define vec_cts __builtin_altivec_vctsxs
2937#endif
2938
2939/* vec_vctsxs */
2940
2941#define vec_vctsxs __builtin_altivec_vctsxs
2942
2943/* vec_ctu */
2944
2945#ifdef __VSX__
2946#define vec_ctu(__a, __b)                                                      \
2947  _Generic((__a), vector float                                                 \
2948           : __builtin_altivec_vctuxs((__a), (__b)), vector double             \
2949           : __extension__({                                                   \
2950             vector double __ret =                                             \
2951                 (__a) *                                                       \
2952                 (vector double)(vector unsigned long long)((0x3ffULL + __b)   \
2953                                                            << 52);            \
2954             __builtin_convertvector(__ret, vector unsigned long long);        \
2955           }))
2956#else
2957#define vec_ctu __builtin_altivec_vctuxs
2958#endif
2959
2960/* vec_vctuxs */
2961
2962#define vec_vctuxs __builtin_altivec_vctuxs
2963
2964/* vec_signed */
2965
2966static __inline__ vector signed int __ATTRS_o_ai
2967vec_sld(vector signed int, vector signed int, unsigned const int __c);
2968
2969static __inline__ vector signed int __ATTRS_o_ai
2970vec_signed(vector float __a) {
2971  return __builtin_convertvector(__a, vector signed int);
2972}
2973
2974#ifdef __VSX__
2975static __inline__ vector signed long long __ATTRS_o_ai
2976vec_signed(vector double __a) {
2977  return __builtin_convertvector(__a, vector signed long long);
2978}
2979
2980static __inline__ vector signed int __attribute__((__always_inline__))
2981vec_signed2(vector double __a, vector double __b) {
2982  return (vector signed int) { __a[0], __a[1], __b[0], __b[1] };
2983}
2984
2985static __inline__ vector signed int __ATTRS_o_ai
2986vec_signede(vector double __a) {
2987#ifdef __LITTLE_ENDIAN__
2988  vector signed int __ret = __builtin_vsx_xvcvdpsxws(__a);
2989  return vec_sld(__ret, __ret, 12);
2990#else
2991  return __builtin_vsx_xvcvdpsxws(__a);
2992#endif
2993}
2994
2995static __inline__ vector signed int __ATTRS_o_ai
2996vec_signedo(vector double __a) {
2997#ifdef __LITTLE_ENDIAN__
2998  return __builtin_vsx_xvcvdpsxws(__a);
2999#else
3000  vector signed int __ret = __builtin_vsx_xvcvdpsxws(__a);
3001  return vec_sld(__ret, __ret, 12);
3002#endif
3003}
3004#endif
3005
3006/* vec_unsigned */
3007
3008static __inline__ vector unsigned int __ATTRS_o_ai
3009vec_sld(vector unsigned int, vector unsigned int, unsigned const int __c);
3010
3011static __inline__ vector unsigned int __ATTRS_o_ai
3012vec_unsigned(vector float __a) {
3013  return __builtin_convertvector(__a, vector unsigned int);
3014}
3015
3016#ifdef __VSX__
3017static __inline__ vector unsigned long long __ATTRS_o_ai
3018vec_unsigned(vector double __a) {
3019  return __builtin_convertvector(__a, vector unsigned long long);
3020}
3021
3022static __inline__ vector unsigned int __attribute__((__always_inline__))
3023vec_unsigned2(vector double __a, vector double __b) {
3024  return (vector unsigned int) { __a[0], __a[1], __b[0], __b[1] };
3025}
3026
3027static __inline__ vector unsigned int __ATTRS_o_ai
3028vec_unsignede(vector double __a) {
3029#ifdef __LITTLE_ENDIAN__
3030  vector unsigned int __ret = __builtin_vsx_xvcvdpuxws(__a);
3031  return vec_sld(__ret, __ret, 12);
3032#else
3033  return __builtin_vsx_xvcvdpuxws(__a);
3034#endif
3035}
3036
3037static __inline__ vector unsigned int __ATTRS_o_ai
3038vec_unsignedo(vector double __a) {
3039#ifdef __LITTLE_ENDIAN__
3040  return __builtin_vsx_xvcvdpuxws(__a);
3041#else
3042  vector unsigned int __ret = __builtin_vsx_xvcvdpuxws(__a);
3043  return vec_sld(__ret, __ret, 12);
3044#endif
3045}
3046#endif
3047
3048/* vec_float */
3049
3050static __inline__ vector float __ATTRS_o_ai
3051vec_sld(vector float, vector float, unsigned const int __c);
3052
3053static __inline__ vector float __ATTRS_o_ai
3054vec_float(vector signed int __a) {
3055  return __builtin_convertvector(__a, vector float);
3056}
3057
3058static __inline__ vector float __ATTRS_o_ai
3059vec_float(vector unsigned int __a) {
3060  return __builtin_convertvector(__a, vector float);
3061}
3062
3063#ifdef __VSX__
3064static __inline__ vector float __ATTRS_o_ai
3065vec_float2(vector signed long long __a, vector signed long long __b) {
3066  return (vector float) { __a[0], __a[1], __b[0], __b[1] };
3067}
3068
3069static __inline__ vector float __ATTRS_o_ai
3070vec_float2(vector unsigned long long __a, vector unsigned long long __b) {
3071  return (vector float) { __a[0], __a[1], __b[0], __b[1] };
3072}
3073
3074static __inline__ vector float __ATTRS_o_ai
3075vec_float2(vector double __a, vector double __b) {
3076  return (vector float) { __a[0], __a[1], __b[0], __b[1] };
3077}
3078
3079static __inline__ vector float __ATTRS_o_ai
3080vec_floate(vector signed long long __a) {
3081#ifdef __LITTLE_ENDIAN__
3082  vector float __ret = __builtin_vsx_xvcvsxdsp(__a);
3083  return vec_sld(__ret, __ret, 12);
3084#else
3085  return __builtin_vsx_xvcvsxdsp(__a);
3086#endif
3087}
3088
3089static __inline__ vector float __ATTRS_o_ai
3090vec_floate(vector unsigned long long __a) {
3091#ifdef __LITTLE_ENDIAN__
3092  vector float __ret = __builtin_vsx_xvcvuxdsp(__a);
3093  return vec_sld(__ret, __ret, 12);
3094#else
3095  return __builtin_vsx_xvcvuxdsp(__a);
3096#endif
3097}
3098
3099static __inline__ vector float __ATTRS_o_ai
3100vec_floate(vector double __a) {
3101#ifdef __LITTLE_ENDIAN__
3102  vector float __ret = __builtin_vsx_xvcvdpsp(__a);
3103  return vec_sld(__ret, __ret, 12);
3104#else
3105  return __builtin_vsx_xvcvdpsp(__a);
3106#endif
3107}
3108
3109static __inline__ vector float __ATTRS_o_ai
3110vec_floato(vector signed long long __a) {
3111#ifdef __LITTLE_ENDIAN__
3112  return __builtin_vsx_xvcvsxdsp(__a);
3113#else
3114  vector float __ret = __builtin_vsx_xvcvsxdsp(__a);
3115  return vec_sld(__ret, __ret, 12);
3116#endif
3117}
3118
3119static __inline__ vector float __ATTRS_o_ai
3120vec_floato(vector unsigned long long __a) {
3121#ifdef __LITTLE_ENDIAN__
3122  return __builtin_vsx_xvcvuxdsp(__a);
3123#else
3124  vector float __ret = __builtin_vsx_xvcvuxdsp(__a);
3125  return vec_sld(__ret, __ret, 12);
3126#endif
3127}
3128
3129static __inline__ vector float __ATTRS_o_ai
3130vec_floato(vector double __a) {
3131#ifdef __LITTLE_ENDIAN__
3132  return __builtin_vsx_xvcvdpsp(__a);
3133#else
3134  vector float __ret = __builtin_vsx_xvcvdpsp(__a);
3135  return vec_sld(__ret, __ret, 12);
3136#endif
3137}
3138#endif
3139
3140/* vec_double */
3141
3142#ifdef __VSX__
3143static __inline__ vector double __ATTRS_o_ai
3144vec_double(vector signed long long __a) {
3145  return __builtin_convertvector(__a, vector double);
3146}
3147
3148static __inline__ vector double __ATTRS_o_ai
3149vec_double(vector unsigned long long __a) {
3150  return __builtin_convertvector(__a, vector double);
3151}
3152
3153static __inline__ vector double __ATTRS_o_ai
3154vec_doublee(vector signed int __a) {
3155#ifdef __LITTLE_ENDIAN__
3156  return __builtin_vsx_xvcvsxwdp(vec_sld(__a, __a, 4));
3157#else
3158  return __builtin_vsx_xvcvsxwdp(__a);
3159#endif
3160}
3161
3162static __inline__ vector double __ATTRS_o_ai
3163vec_doublee(vector unsigned int __a) {
3164#ifdef __LITTLE_ENDIAN__
3165  return __builtin_vsx_xvcvuxwdp(vec_sld(__a, __a, 4));
3166#else
3167  return __builtin_vsx_xvcvuxwdp(__a);
3168#endif
3169}
3170
3171static __inline__ vector double __ATTRS_o_ai
3172vec_doublee(vector float __a) {
3173#ifdef __LITTLE_ENDIAN__
3174  return __builtin_vsx_xvcvspdp(vec_sld(__a, __a, 4));
3175#else
3176  return __builtin_vsx_xvcvspdp(__a);
3177#endif
3178}
3179
3180static __inline__ vector double __ATTRS_o_ai
3181vec_doubleh(vector signed int __a) {
3182  vector double __ret = {__a[0], __a[1]};
3183  return __ret;
3184}
3185
3186static __inline__ vector double __ATTRS_o_ai
3187vec_doubleh(vector unsigned int __a) {
3188  vector double __ret = {__a[0], __a[1]};
3189  return __ret;
3190}
3191
3192static __inline__ vector double __ATTRS_o_ai
3193vec_doubleh(vector float __a) {
3194  vector double __ret = {__a[0], __a[1]};
3195  return __ret;
3196}
3197
3198static __inline__ vector double __ATTRS_o_ai
3199vec_doublel(vector signed int __a) {
3200  vector double __ret = {__a[2], __a[3]};
3201  return __ret;
3202}
3203
3204static __inline__ vector double __ATTRS_o_ai
3205vec_doublel(vector unsigned int __a) {
3206  vector double __ret = {__a[2], __a[3]};
3207  return __ret;
3208}
3209
3210static __inline__ vector double __ATTRS_o_ai
3211vec_doublel(vector float __a) {
3212  vector double __ret = {__a[2], __a[3]};
3213  return __ret;
3214}
3215
3216static __inline__ vector double __ATTRS_o_ai
3217vec_doubleo(vector signed int __a) {
3218#ifdef __LITTLE_ENDIAN__
3219  return __builtin_vsx_xvcvsxwdp(__a);
3220#else
3221  return __builtin_vsx_xvcvsxwdp(vec_sld(__a, __a, 4));
3222#endif
3223}
3224
3225static __inline__ vector double __ATTRS_o_ai
3226vec_doubleo(vector unsigned int __a) {
3227#ifdef __LITTLE_ENDIAN__
3228  return __builtin_vsx_xvcvuxwdp(__a);
3229#else
3230  return __builtin_vsx_xvcvuxwdp(vec_sld(__a, __a, 4));
3231#endif
3232}
3233
3234static __inline__ vector double __ATTRS_o_ai
3235vec_doubleo(vector float __a) {
3236#ifdef __LITTLE_ENDIAN__
3237  return __builtin_vsx_xvcvspdp(__a);
3238#else
3239  return __builtin_vsx_xvcvspdp(vec_sld(__a, __a, 4));
3240#endif
3241}
3242#endif
3243
3244/* vec_div */
3245
3246/* Integer vector divides (vectors are scalarized, elements divided
3247   and the vectors reassembled).
3248*/
3249static __inline__ vector signed char __ATTRS_o_ai
3250vec_div(vector signed char __a, vector signed char __b) {
3251  return __a / __b;
3252}
3253
3254static __inline__ vector unsigned char __ATTRS_o_ai
3255vec_div(vector unsigned char __a, vector unsigned char __b) {
3256  return __a / __b;
3257}
3258
3259static __inline__ vector signed short __ATTRS_o_ai
3260vec_div(vector signed short __a, vector signed short __b) {
3261  return __a / __b;
3262}
3263
3264static __inline__ vector unsigned short __ATTRS_o_ai
3265vec_div(vector unsigned short __a, vector unsigned short __b) {
3266  return __a / __b;
3267}
3268
3269static __inline__ vector signed int __ATTRS_o_ai
3270vec_div(vector signed int __a, vector signed int __b) {
3271  return __a / __b;
3272}
3273
3274static __inline__ vector unsigned int __ATTRS_o_ai
3275vec_div(vector unsigned int __a, vector unsigned int __b) {
3276  return __a / __b;
3277}
3278
3279#ifdef __VSX__
3280static __inline__ vector signed long long __ATTRS_o_ai
3281vec_div(vector signed long long __a, vector signed long long __b) {
3282  return __a / __b;
3283}
3284
3285static __inline__ vector unsigned long long __ATTRS_o_ai
3286vec_div(vector unsigned long long __a, vector unsigned long long __b) {
3287  return __a / __b;
3288}
3289
3290static __inline__ vector float __ATTRS_o_ai vec_div(vector float __a,
3291                                                    vector float __b) {
3292  return __a / __b;
3293}
3294
3295static __inline__ vector double __ATTRS_o_ai vec_div(vector double __a,
3296                                                     vector double __b) {
3297  return __a / __b;
3298}
3299#endif
3300
3301/* vec_dss */
3302
3303static __inline__ void __attribute__((__always_inline__)) vec_dss(int __a) {
3304  __builtin_altivec_dss(__a);
3305}
3306
3307/* vec_dssall */
3308
3309static __inline__ void __attribute__((__always_inline__)) vec_dssall(void) {
3310  __builtin_altivec_dssall();
3311}
3312
3313/* vec_dst */
3314#define vec_dst(__PTR, __CW, __STR) \
3315  __extension__(                    \
3316      { __builtin_altivec_dst((const void *)(__PTR), (__CW), (__STR)); })
3317
3318/* vec_dstst */
3319#define vec_dstst(__PTR, __CW, __STR) \
3320  __extension__(                      \
3321      { __builtin_altivec_dstst((const void *)(__PTR), (__CW), (__STR)); })
3322
3323/* vec_dststt */
3324#define vec_dststt(__PTR, __CW, __STR) \
3325  __extension__(                       \
3326      { __builtin_altivec_dststt((const void *)(__PTR), (__CW), (__STR)); })
3327
3328/* vec_dstt */
3329#define vec_dstt(__PTR, __CW, __STR) \
3330  __extension__(                     \
3331      { __builtin_altivec_dstt((const void *)(__PTR), (__CW), (__STR)); })
3332
3333/* vec_eqv */
3334
3335#ifdef __POWER8_VECTOR__
3336static __inline__ vector signed char __ATTRS_o_ai
3337vec_eqv(vector signed char __a, vector signed char __b) {
3338  return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
3339                                                  (vector unsigned int)__b);
3340}
3341
3342static __inline__ vector unsigned char __ATTRS_o_ai
3343vec_eqv(vector unsigned char __a, vector unsigned char __b) {
3344  return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
3345                                                    (vector unsigned int)__b);
3346}
3347
3348static __inline__ vector bool char __ATTRS_o_ai vec_eqv(vector bool char __a,
3349                                                        vector bool char __b) {
3350  return (vector bool char)__builtin_vsx_xxleqv((vector unsigned int)__a,
3351                                                (vector unsigned int)__b);
3352}
3353
3354static __inline__ vector signed short __ATTRS_o_ai
3355vec_eqv(vector signed short __a, vector signed short __b) {
3356  return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
3357                                                   (vector unsigned int)__b);
3358}
3359
3360static __inline__ vector unsigned short __ATTRS_o_ai
3361vec_eqv(vector unsigned short __a, vector unsigned short __b) {
3362  return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
3363                                                     (vector unsigned int)__b);
3364}
3365
3366static __inline__ vector bool short __ATTRS_o_ai
3367vec_eqv(vector bool short __a, vector bool short __b) {
3368  return (vector bool short)__builtin_vsx_xxleqv((vector unsigned int)__a,
3369                                                 (vector unsigned int)__b);
3370}
3371
3372static __inline__ vector signed int __ATTRS_o_ai
3373vec_eqv(vector signed int __a, vector signed int __b) {
3374  return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
3375                                                 (vector unsigned int)__b);
3376}
3377
3378static __inline__ vector unsigned int __ATTRS_o_ai
3379vec_eqv(vector unsigned int __a, vector unsigned int __b) {
3380  return __builtin_vsx_xxleqv(__a, __b);
3381}
3382
3383static __inline__ vector bool int __ATTRS_o_ai vec_eqv(vector bool int __a,
3384                                                       vector bool int __b) {
3385  return (vector bool int)__builtin_vsx_xxleqv((vector unsigned int)__a,
3386                                               (vector unsigned int)__b);
3387}
3388
3389static __inline__ vector signed long long __ATTRS_o_ai
3390vec_eqv(vector signed long long __a, vector signed long long __b) {
3391  return (vector signed long long)__builtin_vsx_xxleqv(
3392      (vector unsigned int)__a, (vector unsigned int)__b);
3393}
3394
3395static __inline__ vector unsigned long long __ATTRS_o_ai
3396vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
3397  return (vector unsigned long long)__builtin_vsx_xxleqv(
3398      (vector unsigned int)__a, (vector unsigned int)__b);
3399}
3400
3401static __inline__ vector bool long long __ATTRS_o_ai
3402vec_eqv(vector bool long long __a, vector bool long long __b) {
3403  return (vector bool long long)__builtin_vsx_xxleqv((vector unsigned int)__a,
3404                                                     (vector unsigned int)__b);
3405}
3406
3407static __inline__ vector float __ATTRS_o_ai vec_eqv(vector float __a,
3408                                                    vector float __b) {
3409  return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
3410                                            (vector unsigned int)__b);
3411}
3412
3413static __inline__ vector double __ATTRS_o_ai vec_eqv(vector double __a,
3414                                                     vector double __b) {
3415  return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
3416                                             (vector unsigned int)__b);
3417}
3418#endif
3419
3420/* vec_expte */
3421
3422static __inline__ vector float __attribute__((__always_inline__))
3423vec_expte(vector float __a) {
3424  return __builtin_altivec_vexptefp(__a);
3425}
3426
3427/* vec_vexptefp */
3428
3429static __inline__ vector float __attribute__((__always_inline__))
3430vec_vexptefp(vector float __a) {
3431  return __builtin_altivec_vexptefp(__a);
3432}
3433
3434/* vec_floor */
3435
3436static __inline__ vector float __ATTRS_o_ai vec_floor(vector float __a) {
3437#ifdef __VSX__
3438  return __builtin_vsx_xvrspim(__a);
3439#else
3440  return __builtin_altivec_vrfim(__a);
3441#endif
3442}
3443
3444#ifdef __VSX__
3445static __inline__ vector double __ATTRS_o_ai vec_floor(vector double __a) {
3446  return __builtin_vsx_xvrdpim(__a);
3447}
3448#endif
3449
3450/* vec_vrfim */
3451
3452static __inline__ vector float __attribute__((__always_inline__))
3453vec_vrfim(vector float __a) {
3454  return __builtin_altivec_vrfim(__a);
3455}
3456
3457/* vec_ld */
3458
3459static __inline__ vector signed char __ATTRS_o_ai
3460vec_ld(int __a, const vector signed char *__b) {
3461  return (vector signed char)__builtin_altivec_lvx(__a, __b);
3462}
3463
3464static __inline__ vector signed char __ATTRS_o_ai
3465vec_ld(int __a, const signed char *__b) {
3466  return (vector signed char)__builtin_altivec_lvx(__a, __b);
3467}
3468
3469static __inline__ vector unsigned char __ATTRS_o_ai
3470vec_ld(int __a, const vector unsigned char *__b) {
3471  return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3472}
3473
3474static __inline__ vector unsigned char __ATTRS_o_ai
3475vec_ld(int __a, const unsigned char *__b) {
3476  return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3477}
3478
3479static __inline__ vector bool char __ATTRS_o_ai
3480vec_ld(int __a, const vector bool char *__b) {
3481  return (vector bool char)__builtin_altivec_lvx(__a, __b);
3482}
3483
3484static __inline__ vector short __ATTRS_o_ai vec_ld(int __a,
3485                                                   const vector short *__b) {
3486  return (vector short)__builtin_altivec_lvx(__a, __b);
3487}
3488
3489static __inline__ vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) {
3490  return (vector short)__builtin_altivec_lvx(__a, __b);
3491}
3492
3493static __inline__ vector unsigned short __ATTRS_o_ai
3494vec_ld(int __a, const vector unsigned short *__b) {
3495  return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3496}
3497
3498static __inline__ vector unsigned short __ATTRS_o_ai
3499vec_ld(int __a, const unsigned short *__b) {
3500  return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3501}
3502
3503static __inline__ vector bool short __ATTRS_o_ai
3504vec_ld(int __a, const vector bool short *__b) {
3505  return (vector bool short)__builtin_altivec_lvx(__a, __b);
3506}
3507
3508static __inline__ vector pixel __ATTRS_o_ai vec_ld(int __a,
3509                                                   const vector pixel *__b) {
3510  return (vector pixel)__builtin_altivec_lvx(__a, __b);
3511}
3512
3513static __inline__ vector int __ATTRS_o_ai vec_ld(int __a,
3514                                                 const vector int *__b) {
3515  return (vector int)__builtin_altivec_lvx(__a, __b);
3516}
3517
3518static __inline__ vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) {
3519  return (vector int)__builtin_altivec_lvx(__a, __b);
3520}
3521
3522static __inline__ vector unsigned int __ATTRS_o_ai
3523vec_ld(int __a, const vector unsigned int *__b) {
3524  return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3525}
3526
3527static __inline__ vector unsigned int __ATTRS_o_ai
3528vec_ld(int __a, const unsigned int *__b) {
3529  return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3530}
3531
3532static __inline__ vector bool int __ATTRS_o_ai
3533vec_ld(int __a, const vector bool int *__b) {
3534  return (vector bool int)__builtin_altivec_lvx(__a, __b);
3535}
3536
3537static __inline__ vector float __ATTRS_o_ai vec_ld(int __a,
3538                                                   const vector float *__b) {
3539  return (vector float)__builtin_altivec_lvx(__a, __b);
3540}
3541
3542static __inline__ vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) {
3543  return (vector float)__builtin_altivec_lvx(__a, __b);
3544}
3545
3546/* vec_lvx */
3547
3548static __inline__ vector signed char __ATTRS_o_ai
3549vec_lvx(int __a, const vector signed char *__b) {
3550  return (vector signed char)__builtin_altivec_lvx(__a, __b);
3551}
3552
3553static __inline__ vector signed char __ATTRS_o_ai
3554vec_lvx(int __a, const signed char *__b) {
3555  return (vector signed char)__builtin_altivec_lvx(__a, __b);
3556}
3557
3558static __inline__ vector unsigned char __ATTRS_o_ai
3559vec_lvx(int __a, const vector unsigned char *__b) {
3560  return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3561}
3562
3563static __inline__ vector unsigned char __ATTRS_o_ai
3564vec_lvx(int __a, const unsigned char *__b) {
3565  return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
3566}
3567
3568static __inline__ vector bool char __ATTRS_o_ai
3569vec_lvx(int __a, const vector bool char *__b) {
3570  return (vector bool char)__builtin_altivec_lvx(__a, __b);
3571}
3572
3573static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a,
3574                                                    const vector short *__b) {
3575  return (vector short)__builtin_altivec_lvx(__a, __b);
3576}
3577
3578static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) {
3579  return (vector short)__builtin_altivec_lvx(__a, __b);
3580}
3581
3582static __inline__ vector unsigned short __ATTRS_o_ai
3583vec_lvx(int __a, const vector unsigned short *__b) {
3584  return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3585}
3586
3587static __inline__ vector unsigned short __ATTRS_o_ai
3588vec_lvx(int __a, const unsigned short *__b) {
3589  return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
3590}
3591
3592static __inline__ vector bool short __ATTRS_o_ai
3593vec_lvx(int __a, const vector bool short *__b) {
3594  return (vector bool short)__builtin_altivec_lvx(__a, __b);
3595}
3596
3597static __inline__ vector pixel __ATTRS_o_ai vec_lvx(int __a,
3598                                                    const vector pixel *__b) {
3599  return (vector pixel)__builtin_altivec_lvx(__a, __b);
3600}
3601
3602static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a,
3603                                                  const vector int *__b) {
3604  return (vector int)__builtin_altivec_lvx(__a, __b);
3605}
3606
3607static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) {
3608  return (vector int)__builtin_altivec_lvx(__a, __b);
3609}
3610
3611static __inline__ vector unsigned int __ATTRS_o_ai
3612vec_lvx(int __a, const vector unsigned int *__b) {
3613  return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3614}
3615
3616static __inline__ vector unsigned int __ATTRS_o_ai
3617vec_lvx(int __a, const unsigned int *__b) {
3618  return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
3619}
3620
3621static __inline__ vector bool int __ATTRS_o_ai
3622vec_lvx(int __a, const vector bool int *__b) {
3623  return (vector bool int)__builtin_altivec_lvx(__a, __b);
3624}
3625
3626static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a,
3627                                                    const vector float *__b) {
3628  return (vector float)__builtin_altivec_lvx(__a, __b);
3629}
3630
3631static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) {
3632  return (vector float)__builtin_altivec_lvx(__a, __b);
3633}
3634
3635/* vec_lde */
3636
3637static __inline__ vector signed char __ATTRS_o_ai
3638vec_lde(int __a, const signed char *__b) {
3639  return (vector signed char)__builtin_altivec_lvebx(__a, __b);
3640}
3641
3642static __inline__ vector unsigned char __ATTRS_o_ai
3643vec_lde(int __a, const unsigned char *__b) {
3644  return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
3645}
3646
3647static __inline__ vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) {
3648  return (vector short)__builtin_altivec_lvehx(__a, __b);
3649}
3650
3651static __inline__ vector unsigned short __ATTRS_o_ai
3652vec_lde(int __a, const unsigned short *__b) {
3653  return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
3654}
3655
3656static __inline__ vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) {
3657  return (vector int)__builtin_altivec_lvewx(__a, __b);
3658}
3659
3660static __inline__ vector unsigned int __ATTRS_o_ai
3661vec_lde(int __a, const unsigned int *__b) {
3662  return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
3663}
3664
3665static __inline__ vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) {
3666  return (vector float)__builtin_altivec_lvewx(__a, __b);
3667}
3668
3669/* vec_lvebx */
3670
3671static __inline__ vector signed char __ATTRS_o_ai
3672vec_lvebx(int __a, const signed char *__b) {
3673  return (vector signed char)__builtin_altivec_lvebx(__a, __b);
3674}
3675
3676static __inline__ vector unsigned char __ATTRS_o_ai
3677vec_lvebx(int __a, const unsigned char *__b) {
3678  return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
3679}
3680
3681/* vec_lvehx */
3682
3683static __inline__ vector short __ATTRS_o_ai vec_lvehx(int __a,
3684                                                      const short *__b) {
3685  return (vector short)__builtin_altivec_lvehx(__a, __b);
3686}
3687
3688static __inline__ vector unsigned short __ATTRS_o_ai
3689vec_lvehx(int __a, const unsigned short *__b) {
3690  return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
3691}
3692
3693/* vec_lvewx */
3694
3695static __inline__ vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) {
3696  return (vector int)__builtin_altivec_lvewx(__a, __b);
3697}
3698
3699static __inline__ vector unsigned int __ATTRS_o_ai
3700vec_lvewx(int __a, const unsigned int *__b) {
3701  return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
3702}
3703
3704static __inline__ vector float __ATTRS_o_ai vec_lvewx(int __a,
3705                                                      const float *__b) {
3706  return (vector float)__builtin_altivec_lvewx(__a, __b);
3707}
3708
3709/* vec_ldl */
3710
3711static __inline__ vector signed char __ATTRS_o_ai
3712vec_ldl(int __a, const vector signed char *__b) {
3713  return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3714}
3715
3716static __inline__ vector signed char __ATTRS_o_ai
3717vec_ldl(int __a, const signed char *__b) {
3718  return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3719}
3720
3721static __inline__ vector unsigned char __ATTRS_o_ai
3722vec_ldl(int __a, const vector unsigned char *__b) {
3723  return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3724}
3725
3726static __inline__ vector unsigned char __ATTRS_o_ai
3727vec_ldl(int __a, const unsigned char *__b) {
3728  return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3729}
3730
3731static __inline__ vector bool char __ATTRS_o_ai
3732vec_ldl(int __a, const vector bool char *__b) {
3733  return (vector bool char)__builtin_altivec_lvxl(__a, __b);
3734}
3735
3736static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a,
3737                                                    const vector short *__b) {
3738  return (vector short)__builtin_altivec_lvxl(__a, __b);
3739}
3740
3741static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) {
3742  return (vector short)__builtin_altivec_lvxl(__a, __b);
3743}
3744
3745static __inline__ vector unsigned short __ATTRS_o_ai
3746vec_ldl(int __a, const vector unsigned short *__b) {
3747  return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3748}
3749
3750static __inline__ vector unsigned short __ATTRS_o_ai
3751vec_ldl(int __a, const unsigned short *__b) {
3752  return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3753}
3754
3755static __inline__ vector bool short __ATTRS_o_ai
3756vec_ldl(int __a, const vector bool short *__b) {
3757  return (vector bool short)__builtin_altivec_lvxl(__a, __b);
3758}
3759
3760static __inline__ vector pixel __ATTRS_o_ai vec_ldl(int __a,
3761                                                    const vector pixel *__b) {
3762  return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
3763}
3764
3765static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a,
3766                                                  const vector int *__b) {
3767  return (vector int)__builtin_altivec_lvxl(__a, __b);
3768}
3769
3770static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) {
3771  return (vector int)__builtin_altivec_lvxl(__a, __b);
3772}
3773
3774static __inline__ vector unsigned int __ATTRS_o_ai
3775vec_ldl(int __a, const vector unsigned int *__b) {
3776  return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3777}
3778
3779static __inline__ vector unsigned int __ATTRS_o_ai
3780vec_ldl(int __a, const unsigned int *__b) {
3781  return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3782}
3783
3784static __inline__ vector bool int __ATTRS_o_ai
3785vec_ldl(int __a, const vector bool int *__b) {
3786  return (vector bool int)__builtin_altivec_lvxl(__a, __b);
3787}
3788
3789static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a,
3790                                                    const vector float *__b) {
3791  return (vector float)__builtin_altivec_lvxl(__a, __b);
3792}
3793
3794static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) {
3795  return (vector float)__builtin_altivec_lvxl(__a, __b);
3796}
3797
3798/* vec_lvxl */
3799
3800static __inline__ vector signed char __ATTRS_o_ai
3801vec_lvxl(int __a, const vector signed char *__b) {
3802  return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3803}
3804
3805static __inline__ vector signed char __ATTRS_o_ai
3806vec_lvxl(int __a, const signed char *__b) {
3807  return (vector signed char)__builtin_altivec_lvxl(__a, __b);
3808}
3809
3810static __inline__ vector unsigned char __ATTRS_o_ai
3811vec_lvxl(int __a, const vector unsigned char *__b) {
3812  return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3813}
3814
3815static __inline__ vector unsigned char __ATTRS_o_ai
3816vec_lvxl(int __a, const unsigned char *__b) {
3817  return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
3818}
3819
3820static __inline__ vector bool char __ATTRS_o_ai
3821vec_lvxl(int __a, const vector bool char *__b) {
3822  return (vector bool char)__builtin_altivec_lvxl(__a, __b);
3823}
3824
3825static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
3826                                                     const vector short *__b) {
3827  return (vector short)__builtin_altivec_lvxl(__a, __b);
3828}
3829
3830static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
3831                                                     const short *__b) {
3832  return (vector short)__builtin_altivec_lvxl(__a, __b);
3833}
3834
3835static __inline__ vector unsigned short __ATTRS_o_ai
3836vec_lvxl(int __a, const vector unsigned short *__b) {
3837  return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3838}
3839
3840static __inline__ vector unsigned short __ATTRS_o_ai
3841vec_lvxl(int __a, const unsigned short *__b) {
3842  return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
3843}
3844
3845static __inline__ vector bool short __ATTRS_o_ai
3846vec_lvxl(int __a, const vector bool short *__b) {
3847  return (vector bool short)__builtin_altivec_lvxl(__a, __b);
3848}
3849
3850static __inline__ vector pixel __ATTRS_o_ai vec_lvxl(int __a,
3851                                                     const vector pixel *__b) {
3852  return (vector pixel)__builtin_altivec_lvxl(__a, __b);
3853}
3854
3855static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a,
3856                                                   const vector int *__b) {
3857  return (vector int)__builtin_altivec_lvxl(__a, __b);
3858}
3859
3860static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) {
3861  return (vector int)__builtin_altivec_lvxl(__a, __b);
3862}
3863
3864static __inline__ vector unsigned int __ATTRS_o_ai
3865vec_lvxl(int __a, const vector unsigned int *__b) {
3866  return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3867}
3868
3869static __inline__ vector unsigned int __ATTRS_o_ai
3870vec_lvxl(int __a, const unsigned int *__b) {
3871  return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
3872}
3873
3874static __inline__ vector bool int __ATTRS_o_ai
3875vec_lvxl(int __a, const vector bool int *__b) {
3876  return (vector bool int)__builtin_altivec_lvxl(__a, __b);
3877}
3878
3879static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
3880                                                     const vector float *__b) {
3881  return (vector float)__builtin_altivec_lvxl(__a, __b);
3882}
3883
3884static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
3885                                                     const float *__b) {
3886  return (vector float)__builtin_altivec_lvxl(__a, __b);
3887}
3888
3889/* vec_loge */
3890
3891static __inline__ vector float __attribute__((__always_inline__))
3892vec_loge(vector float __a) {
3893  return __builtin_altivec_vlogefp(__a);
3894}
3895
3896/* vec_vlogefp */
3897
3898static __inline__ vector float __attribute__((__always_inline__))
3899vec_vlogefp(vector float __a) {
3900  return __builtin_altivec_vlogefp(__a);
3901}
3902
3903/* vec_lvsl */
3904
3905#ifdef __LITTLE_ENDIAN__
3906static __inline__ vector unsigned char __ATTRS_o_ai
3907    __attribute__((__deprecated__("use assignment for unaligned little endian \
3908loads/stores"))) vec_lvsl(int __a, const signed char *__b) {
3909  vector unsigned char mask =
3910      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3911  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3912                                  7,  6,  5,  4,  3,  2,  1, 0};
3913  return vec_perm(mask, mask, reverse);
3914}
3915#else
3916static __inline__ vector unsigned char __ATTRS_o_ai
3917vec_lvsl(int __a, const signed char *__b) {
3918  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3919}
3920#endif
3921
3922#ifdef __LITTLE_ENDIAN__
3923static __inline__ vector unsigned char __ATTRS_o_ai
3924    __attribute__((__deprecated__("use assignment for unaligned little endian \
3925loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) {
3926  vector unsigned char mask =
3927      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3928  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3929                                  7,  6,  5,  4,  3,  2,  1, 0};
3930  return vec_perm(mask, mask, reverse);
3931}
3932#else
3933static __inline__ vector unsigned char __ATTRS_o_ai
3934vec_lvsl(int __a, const unsigned char *__b) {
3935  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3936}
3937#endif
3938
3939#ifdef __LITTLE_ENDIAN__
3940static __inline__ vector unsigned char __ATTRS_o_ai
3941    __attribute__((__deprecated__("use assignment for unaligned little endian \
3942loads/stores"))) vec_lvsl(int __a, const short *__b) {
3943  vector unsigned char mask =
3944      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3945  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3946                                  7,  6,  5,  4,  3,  2,  1, 0};
3947  return vec_perm(mask, mask, reverse);
3948}
3949#else
3950static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
3951                                                             const short *__b) {
3952  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3953}
3954#endif
3955
3956#ifdef __LITTLE_ENDIAN__
3957static __inline__ vector unsigned char __ATTRS_o_ai
3958    __attribute__((__deprecated__("use assignment for unaligned little endian \
3959loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) {
3960  vector unsigned char mask =
3961      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3962  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3963                                  7,  6,  5,  4,  3,  2,  1, 0};
3964  return vec_perm(mask, mask, reverse);
3965}
3966#else
3967static __inline__ vector unsigned char __ATTRS_o_ai
3968vec_lvsl(int __a, const unsigned short *__b) {
3969  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3970}
3971#endif
3972
3973#ifdef __LITTLE_ENDIAN__
3974static __inline__ vector unsigned char __ATTRS_o_ai
3975    __attribute__((__deprecated__("use assignment for unaligned little endian \
3976loads/stores"))) vec_lvsl(int __a, const int *__b) {
3977  vector unsigned char mask =
3978      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3979  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3980                                  7,  6,  5,  4,  3,  2,  1, 0};
3981  return vec_perm(mask, mask, reverse);
3982}
3983#else
3984static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
3985                                                             const int *__b) {
3986  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3987}
3988#endif
3989
3990#ifdef __LITTLE_ENDIAN__
3991static __inline__ vector unsigned char __ATTRS_o_ai
3992    __attribute__((__deprecated__("use assignment for unaligned little endian \
3993loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) {
3994  vector unsigned char mask =
3995      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
3996  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
3997                                  7,  6,  5,  4,  3,  2,  1, 0};
3998  return vec_perm(mask, mask, reverse);
3999}
4000#else
4001static __inline__ vector unsigned char __ATTRS_o_ai
4002vec_lvsl(int __a, const unsigned int *__b) {
4003  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4004}
4005#endif
4006
4007#ifdef __LITTLE_ENDIAN__
4008static __inline__ vector unsigned char __ATTRS_o_ai
4009    __attribute__((__deprecated__("use assignment for unaligned little endian \
4010loads/stores"))) vec_lvsl(int __a, const float *__b) {
4011  vector unsigned char mask =
4012      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4013  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4014                                  7,  6,  5,  4,  3,  2,  1, 0};
4015  return vec_perm(mask, mask, reverse);
4016}
4017#else
4018static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
4019                                                             const float *__b) {
4020  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
4021}
4022#endif
4023
4024/* vec_lvsr */
4025
4026#ifdef __LITTLE_ENDIAN__
4027static __inline__ vector unsigned char __ATTRS_o_ai
4028    __attribute__((__deprecated__("use assignment for unaligned little endian \
4029loads/stores"))) vec_lvsr(int __a, const signed char *__b) {
4030  vector unsigned char mask =
4031      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4032  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4033                                  7,  6,  5,  4,  3,  2,  1, 0};
4034  return vec_perm(mask, mask, reverse);
4035}
4036#else
4037static __inline__ vector unsigned char __ATTRS_o_ai
4038vec_lvsr(int __a, const signed char *__b) {
4039  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4040}
4041#endif
4042
4043#ifdef __LITTLE_ENDIAN__
4044static __inline__ vector unsigned char __ATTRS_o_ai
4045    __attribute__((__deprecated__("use assignment for unaligned little endian \
4046loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) {
4047  vector unsigned char mask =
4048      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4049  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4050                                  7,  6,  5,  4,  3,  2,  1, 0};
4051  return vec_perm(mask, mask, reverse);
4052}
4053#else
4054static __inline__ vector unsigned char __ATTRS_o_ai
4055vec_lvsr(int __a, const unsigned char *__b) {
4056  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4057}
4058#endif
4059
4060#ifdef __LITTLE_ENDIAN__
4061static __inline__ vector unsigned char __ATTRS_o_ai
4062    __attribute__((__deprecated__("use assignment for unaligned little endian \
4063loads/stores"))) vec_lvsr(int __a, const short *__b) {
4064  vector unsigned char mask =
4065      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4066  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4067                                  7,  6,  5,  4,  3,  2,  1, 0};
4068  return vec_perm(mask, mask, reverse);
4069}
4070#else
4071static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
4072                                                             const short *__b) {
4073  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4074}
4075#endif
4076
4077#ifdef __LITTLE_ENDIAN__
4078static __inline__ vector unsigned char __ATTRS_o_ai
4079    __attribute__((__deprecated__("use assignment for unaligned little endian \
4080loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) {
4081  vector unsigned char mask =
4082      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4083  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4084                                  7,  6,  5,  4,  3,  2,  1, 0};
4085  return vec_perm(mask, mask, reverse);
4086}
4087#else
4088static __inline__ vector unsigned char __ATTRS_o_ai
4089vec_lvsr(int __a, const unsigned short *__b) {
4090  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4091}
4092#endif
4093
4094#ifdef __LITTLE_ENDIAN__
4095static __inline__ vector unsigned char __ATTRS_o_ai
4096    __attribute__((__deprecated__("use assignment for unaligned little endian \
4097loads/stores"))) vec_lvsr(int __a, const int *__b) {
4098  vector unsigned char mask =
4099      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4100  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4101                                  7,  6,  5,  4,  3,  2,  1, 0};
4102  return vec_perm(mask, mask, reverse);
4103}
4104#else
4105static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
4106                                                             const int *__b) {
4107  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4108}
4109#endif
4110
4111#ifdef __LITTLE_ENDIAN__
4112static __inline__ vector unsigned char __ATTRS_o_ai
4113    __attribute__((__deprecated__("use assignment for unaligned little endian \
4114loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) {
4115  vector unsigned char mask =
4116      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4117  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4118                                  7,  6,  5,  4,  3,  2,  1, 0};
4119  return vec_perm(mask, mask, reverse);
4120}
4121#else
4122static __inline__ vector unsigned char __ATTRS_o_ai
4123vec_lvsr(int __a, const unsigned int *__b) {
4124  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4125}
4126#endif
4127
4128#ifdef __LITTLE_ENDIAN__
4129static __inline__ vector unsigned char __ATTRS_o_ai
4130    __attribute__((__deprecated__("use assignment for unaligned little endian \
4131loads/stores"))) vec_lvsr(int __a, const float *__b) {
4132  vector unsigned char mask =
4133      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4134  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
4135                                  7,  6,  5,  4,  3,  2,  1, 0};
4136  return vec_perm(mask, mask, reverse);
4137}
4138#else
4139static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
4140                                                             const float *__b) {
4141  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
4142}
4143#endif
4144
4145/* vec_madd */
4146static __inline__ vector signed short __ATTRS_o_ai
4147vec_mladd(vector signed short, vector signed short, vector signed short);
4148static __inline__ vector signed short __ATTRS_o_ai
4149vec_mladd(vector signed short, vector unsigned short, vector unsigned short);
4150static __inline__ vector signed short __ATTRS_o_ai
4151vec_mladd(vector unsigned short, vector signed short, vector signed short);
4152static __inline__ vector unsigned short __ATTRS_o_ai
4153vec_mladd(vector unsigned short, vector unsigned short, vector unsigned short);
4154
4155static __inline__ vector signed short __ATTRS_o_ai vec_madd(
4156    vector signed short __a, vector signed short __b, vector signed short __c) {
4157  return vec_mladd(__a, __b, __c);
4158}
4159
4160static __inline__ vector signed short __ATTRS_o_ai
4161vec_madd(vector signed short __a, vector unsigned short __b,
4162         vector unsigned short __c) {
4163  return vec_mladd(__a, __b, __c);
4164}
4165
4166static __inline__ vector signed short __ATTRS_o_ai
4167vec_madd(vector unsigned short __a, vector signed short __b,
4168         vector signed short __c) {
4169  return vec_mladd(__a, __b, __c);
4170}
4171
4172static __inline__ vector unsigned short __ATTRS_o_ai
4173vec_madd(vector unsigned short __a, vector unsigned short __b,
4174         vector unsigned short __c) {
4175  return vec_mladd(__a, __b, __c);
4176}
4177
4178static __inline__ vector float __ATTRS_o_ai vec_madd(vector float __a,
4179                                                     vector float __b,
4180                                                     vector float __c) {
4181#ifdef __VSX__
4182  return __builtin_vsx_xvmaddasp(__a, __b, __c);
4183#else
4184  return __builtin_altivec_vmaddfp(__a, __b, __c);
4185#endif
4186}
4187
4188#ifdef __VSX__
4189static __inline__ vector double __ATTRS_o_ai vec_madd(vector double __a,
4190                                                      vector double __b,
4191                                                      vector double __c) {
4192  return __builtin_vsx_xvmaddadp(__a, __b, __c);
4193}
4194#endif
4195
4196/* vec_vmaddfp */
4197
4198static __inline__ vector float __attribute__((__always_inline__))
4199vec_vmaddfp(vector float __a, vector float __b, vector float __c) {
4200  return __builtin_altivec_vmaddfp(__a, __b, __c);
4201}
4202
4203/* vec_madds */
4204
4205static __inline__ vector signed short __attribute__((__always_inline__))
4206vec_madds(vector signed short __a, vector signed short __b,
4207          vector signed short __c) {
4208  return __builtin_altivec_vmhaddshs(__a, __b, __c);
4209}
4210
4211/* vec_vmhaddshs */
4212static __inline__ vector signed short __attribute__((__always_inline__))
4213vec_vmhaddshs(vector signed short __a, vector signed short __b,
4214              vector signed short __c) {
4215  return __builtin_altivec_vmhaddshs(__a, __b, __c);
4216}
4217
4218/* vec_msub */
4219
4220#ifdef __VSX__
4221static __inline__ vector float __ATTRS_o_ai vec_msub(vector float __a,
4222                                                     vector float __b,
4223                                                     vector float __c) {
4224  return __builtin_vsx_xvmsubasp(__a, __b, __c);
4225}
4226
4227static __inline__ vector double __ATTRS_o_ai vec_msub(vector double __a,
4228                                                      vector double __b,
4229                                                      vector double __c) {
4230  return __builtin_vsx_xvmsubadp(__a, __b, __c);
4231}
4232#endif
4233
4234/* vec_max */
4235
4236static __inline__ vector signed char __ATTRS_o_ai
4237vec_max(vector signed char __a, vector signed char __b) {
4238  return __builtin_altivec_vmaxsb(__a, __b);
4239}
4240
4241static __inline__ vector signed char __ATTRS_o_ai
4242vec_max(vector bool char __a, vector signed char __b) {
4243  return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
4244}
4245
4246static __inline__ vector signed char __ATTRS_o_ai
4247vec_max(vector signed char __a, vector bool char __b) {
4248  return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
4249}
4250
4251static __inline__ vector unsigned char __ATTRS_o_ai
4252vec_max(vector unsigned char __a, vector unsigned char __b) {
4253  return __builtin_altivec_vmaxub(__a, __b);
4254}
4255
4256static __inline__ vector unsigned char __ATTRS_o_ai
4257vec_max(vector bool char __a, vector unsigned char __b) {
4258  return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
4259}
4260
4261static __inline__ vector unsigned char __ATTRS_o_ai
4262vec_max(vector unsigned char __a, vector bool char __b) {
4263  return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
4264}
4265
4266static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
4267                                                    vector short __b) {
4268  return __builtin_altivec_vmaxsh(__a, __b);
4269}
4270
4271static __inline__ vector short __ATTRS_o_ai vec_max(vector bool short __a,
4272                                                    vector short __b) {
4273  return __builtin_altivec_vmaxsh((vector short)__a, __b);
4274}
4275
4276static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
4277                                                    vector bool short __b) {
4278  return __builtin_altivec_vmaxsh(__a, (vector short)__b);
4279}
4280
4281static __inline__ vector unsigned short __ATTRS_o_ai
4282vec_max(vector unsigned short __a, vector unsigned short __b) {
4283  return __builtin_altivec_vmaxuh(__a, __b);
4284}
4285
4286static __inline__ vector unsigned short __ATTRS_o_ai
4287vec_max(vector bool short __a, vector unsigned short __b) {
4288  return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
4289}
4290
4291static __inline__ vector unsigned short __ATTRS_o_ai
4292vec_max(vector unsigned short __a, vector bool short __b) {
4293  return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
4294}
4295
4296static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
4297                                                  vector int __b) {
4298  return __builtin_altivec_vmaxsw(__a, __b);
4299}
4300
4301static __inline__ vector int __ATTRS_o_ai vec_max(vector bool int __a,
4302                                                  vector int __b) {
4303  return __builtin_altivec_vmaxsw((vector int)__a, __b);
4304}
4305
4306static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
4307                                                  vector bool int __b) {
4308  return __builtin_altivec_vmaxsw(__a, (vector int)__b);
4309}
4310
4311static __inline__ vector unsigned int __ATTRS_o_ai
4312vec_max(vector unsigned int __a, vector unsigned int __b) {
4313  return __builtin_altivec_vmaxuw(__a, __b);
4314}
4315
4316static __inline__ vector unsigned int __ATTRS_o_ai
4317vec_max(vector bool int __a, vector unsigned int __b) {
4318  return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
4319}
4320
4321static __inline__ vector unsigned int __ATTRS_o_ai
4322vec_max(vector unsigned int __a, vector bool int __b) {
4323  return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
4324}
4325
4326#ifdef __POWER8_VECTOR__
4327static __inline__ vector signed long long __ATTRS_o_ai
4328vec_max(vector signed long long __a, vector signed long long __b) {
4329  return __builtin_altivec_vmaxsd(__a, __b);
4330}
4331
4332static __inline__ vector signed long long __ATTRS_o_ai
4333vec_max(vector bool long long __a, vector signed long long __b) {
4334  return __builtin_altivec_vmaxsd((vector signed long long)__a, __b);
4335}
4336
4337static __inline__ vector signed long long __ATTRS_o_ai
4338vec_max(vector signed long long __a, vector bool long long __b) {
4339  return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b);
4340}
4341
4342static __inline__ vector unsigned long long __ATTRS_o_ai
4343vec_max(vector unsigned long long __a, vector unsigned long long __b) {
4344  return __builtin_altivec_vmaxud(__a, __b);
4345}
4346
4347static __inline__ vector unsigned long long __ATTRS_o_ai
4348vec_max(vector bool long long __a, vector unsigned long long __b) {
4349  return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b);
4350}
4351
4352static __inline__ vector unsigned long long __ATTRS_o_ai
4353vec_max(vector unsigned long long __a, vector bool long long __b) {
4354  return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b);
4355}
4356#endif
4357
4358static __inline__ vector float __ATTRS_o_ai vec_max(vector float __a,
4359                                                    vector float __b) {
4360#ifdef __VSX__
4361  return __builtin_vsx_xvmaxsp(__a, __b);
4362#else
4363  return __builtin_altivec_vmaxfp(__a, __b);
4364#endif
4365}
4366
4367#ifdef __VSX__
4368static __inline__ vector double __ATTRS_o_ai vec_max(vector double __a,
4369                                                     vector double __b) {
4370  return __builtin_vsx_xvmaxdp(__a, __b);
4371}
4372#endif
4373
4374/* vec_vmaxsb */
4375
4376static __inline__ vector signed char __ATTRS_o_ai
4377vec_vmaxsb(vector signed char __a, vector signed char __b) {
4378  return __builtin_altivec_vmaxsb(__a, __b);
4379}
4380
4381static __inline__ vector signed char __ATTRS_o_ai
4382vec_vmaxsb(vector bool char __a, vector signed char __b) {
4383  return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
4384}
4385
4386static __inline__ vector signed char __ATTRS_o_ai
4387vec_vmaxsb(vector signed char __a, vector bool char __b) {
4388  return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
4389}
4390
4391/* vec_vmaxub */
4392
4393static __inline__ vector unsigned char __ATTRS_o_ai
4394vec_vmaxub(vector unsigned char __a, vector unsigned char __b) {
4395  return __builtin_altivec_vmaxub(__a, __b);
4396}
4397
4398static __inline__ vector unsigned char __ATTRS_o_ai
4399vec_vmaxub(vector bool char __a, vector unsigned char __b) {
4400  return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
4401}
4402
4403static __inline__ vector unsigned char __ATTRS_o_ai
4404vec_vmaxub(vector unsigned char __a, vector bool char __b) {
4405  return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
4406}
4407
4408/* vec_vmaxsh */
4409
4410static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
4411                                                       vector short __b) {
4412  return __builtin_altivec_vmaxsh(__a, __b);
4413}
4414
4415static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a,
4416                                                       vector short __b) {
4417  return __builtin_altivec_vmaxsh((vector short)__a, __b);
4418}
4419
4420static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
4421                                                       vector bool short __b) {
4422  return __builtin_altivec_vmaxsh(__a, (vector short)__b);
4423}
4424
4425/* vec_vmaxuh */
4426
4427static __inline__ vector unsigned short __ATTRS_o_ai
4428vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) {
4429  return __builtin_altivec_vmaxuh(__a, __b);
4430}
4431
4432static __inline__ vector unsigned short __ATTRS_o_ai
4433vec_vmaxuh(vector bool short __a, vector unsigned short __b) {
4434  return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
4435}
4436
4437static __inline__ vector unsigned short __ATTRS_o_ai
4438vec_vmaxuh(vector unsigned short __a, vector bool short __b) {
4439  return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
4440}
4441
4442/* vec_vmaxsw */
4443
4444static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
4445                                                     vector int __b) {
4446  return __builtin_altivec_vmaxsw(__a, __b);
4447}
4448
4449static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a,
4450                                                     vector int __b) {
4451  return __builtin_altivec_vmaxsw((vector int)__a, __b);
4452}
4453
4454static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
4455                                                     vector bool int __b) {
4456  return __builtin_altivec_vmaxsw(__a, (vector int)__b);
4457}
4458
4459/* vec_vmaxuw */
4460
4461static __inline__ vector unsigned int __ATTRS_o_ai
4462vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) {
4463  return __builtin_altivec_vmaxuw(__a, __b);
4464}
4465
4466static __inline__ vector unsigned int __ATTRS_o_ai
4467vec_vmaxuw(vector bool int __a, vector unsigned int __b) {
4468  return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
4469}
4470
4471static __inline__ vector unsigned int __ATTRS_o_ai
4472vec_vmaxuw(vector unsigned int __a, vector bool int __b) {
4473  return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
4474}
4475
4476/* vec_vmaxfp */
4477
4478static __inline__ vector float __attribute__((__always_inline__))
4479vec_vmaxfp(vector float __a, vector float __b) {
4480#ifdef __VSX__
4481  return __builtin_vsx_xvmaxsp(__a, __b);
4482#else
4483  return __builtin_altivec_vmaxfp(__a, __b);
4484#endif
4485}
4486
4487/* vec_mergeh */
4488
4489static __inline__ vector signed char __ATTRS_o_ai
4490vec_mergeh(vector signed char __a, vector signed char __b) {
4491  return vec_perm(__a, __b,
4492                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4493                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4494                                         0x06, 0x16, 0x07, 0x17));
4495}
4496
4497static __inline__ vector unsigned char __ATTRS_o_ai
4498vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
4499  return vec_perm(__a, __b,
4500                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4501                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4502                                         0x06, 0x16, 0x07, 0x17));
4503}
4504
4505static __inline__ vector bool char __ATTRS_o_ai
4506vec_mergeh(vector bool char __a, vector bool char __b) {
4507  return vec_perm(__a, __b,
4508                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4509                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4510                                         0x06, 0x16, 0x07, 0x17));
4511}
4512
4513static __inline__ vector short __ATTRS_o_ai vec_mergeh(vector short __a,
4514                                                       vector short __b) {
4515  return vec_perm(__a, __b,
4516                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4517                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4518                                         0x06, 0x07, 0x16, 0x17));
4519}
4520
4521static __inline__ vector unsigned short __ATTRS_o_ai
4522vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
4523  return vec_perm(__a, __b,
4524                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4525                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4526                                         0x06, 0x07, 0x16, 0x17));
4527}
4528
4529static __inline__ vector bool short __ATTRS_o_ai
4530vec_mergeh(vector bool short __a, vector bool short __b) {
4531  return vec_perm(__a, __b,
4532                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4533                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4534                                         0x06, 0x07, 0x16, 0x17));
4535}
4536
4537static __inline__ vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a,
4538                                                       vector pixel __b) {
4539  return vec_perm(__a, __b,
4540                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4541                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4542                                         0x06, 0x07, 0x16, 0x17));
4543}
4544
4545static __inline__ vector int __ATTRS_o_ai vec_mergeh(vector int __a,
4546                                                     vector int __b) {
4547  return vec_perm(__a, __b,
4548                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4549                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4550                                         0x14, 0x15, 0x16, 0x17));
4551}
4552
4553static __inline__ vector unsigned int __ATTRS_o_ai
4554vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
4555  return vec_perm(__a, __b,
4556                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4557                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4558                                         0x14, 0x15, 0x16, 0x17));
4559}
4560
4561static __inline__ vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a,
4562                                                          vector bool int __b) {
4563  return vec_perm(__a, __b,
4564                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4565                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4566                                         0x14, 0x15, 0x16, 0x17));
4567}
4568
4569static __inline__ vector float __ATTRS_o_ai vec_mergeh(vector float __a,
4570                                                       vector float __b) {
4571  return vec_perm(__a, __b,
4572                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4573                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4574                                         0x14, 0x15, 0x16, 0x17));
4575}
4576
4577#ifdef __VSX__
4578static __inline__ vector signed long long __ATTRS_o_ai
4579vec_mergeh(vector signed long long __a, vector signed long long __b) {
4580  return vec_perm(__a, __b,
4581                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4582                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4583                                         0x14, 0x15, 0x16, 0x17));
4584}
4585
4586static __inline__ vector signed long long __ATTRS_o_ai
4587vec_mergeh(vector signed long long __a, vector bool long long __b) {
4588  return vec_perm(__a, (vector signed long long)__b,
4589                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4590                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4591                                         0x14, 0x15, 0x16, 0x17));
4592}
4593
4594static __inline__ vector signed long long __ATTRS_o_ai
4595vec_mergeh(vector bool long long __a, vector signed long long __b) {
4596  return vec_perm((vector signed long long)__a, __b,
4597                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4598                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4599                                         0x14, 0x15, 0x16, 0x17));
4600}
4601
4602static __inline__ vector unsigned long long __ATTRS_o_ai
4603vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
4604  return vec_perm(__a, __b,
4605                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4606                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4607                                         0x14, 0x15, 0x16, 0x17));
4608}
4609
4610static __inline__ vector unsigned long long __ATTRS_o_ai
4611vec_mergeh(vector unsigned long long __a, vector bool long long __b) {
4612  return vec_perm(__a, (vector unsigned long long)__b,
4613                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4614                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4615                                         0x14, 0x15, 0x16, 0x17));
4616}
4617
4618static __inline__ vector unsigned long long __ATTRS_o_ai
4619vec_mergeh(vector bool long long __a, vector unsigned long long __b) {
4620  return vec_perm((vector unsigned long long)__a, __b,
4621                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4622                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4623                                         0x14, 0x15, 0x16, 0x17));
4624}
4625
4626static __inline__ vector bool long long __ATTRS_o_ai
4627vec_mergeh(vector bool long long __a, vector bool long long __b) {
4628  return vec_perm(__a, __b,
4629                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4630                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4631                                         0x14, 0x15, 0x16, 0x17));
4632}
4633
4634static __inline__ vector double __ATTRS_o_ai vec_mergeh(vector double __a,
4635                                                        vector double __b) {
4636  return vec_perm(__a, __b,
4637                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4638                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4639                                         0x14, 0x15, 0x16, 0x17));
4640}
4641static __inline__ vector double __ATTRS_o_ai
4642vec_mergeh(vector double __a, vector bool long long __b) {
4643  return vec_perm(__a, (vector double)__b,
4644                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4645                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4646                                         0x14, 0x15, 0x16, 0x17));
4647}
4648static __inline__ vector double __ATTRS_o_ai
4649vec_mergeh(vector bool long long __a, vector double __b) {
4650  return vec_perm((vector double)__a, __b,
4651                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
4652                                         0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
4653                                         0x14, 0x15, 0x16, 0x17));
4654}
4655#endif
4656
4657/* vec_vmrghb */
4658
4659#define __builtin_altivec_vmrghb vec_vmrghb
4660
4661static __inline__ vector signed char __ATTRS_o_ai
4662vec_vmrghb(vector signed char __a, vector signed char __b) {
4663  return vec_perm(__a, __b,
4664                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4665                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4666                                         0x06, 0x16, 0x07, 0x17));
4667}
4668
4669static __inline__ vector unsigned char __ATTRS_o_ai
4670vec_vmrghb(vector unsigned char __a, vector unsigned char __b) {
4671  return vec_perm(__a, __b,
4672                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4673                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4674                                         0x06, 0x16, 0x07, 0x17));
4675}
4676
4677static __inline__ vector bool char __ATTRS_o_ai
4678vec_vmrghb(vector bool char __a, vector bool char __b) {
4679  return vec_perm(__a, __b,
4680                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
4681                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
4682                                         0x06, 0x16, 0x07, 0x17));
4683}
4684
4685/* vec_vmrghh */
4686
4687#define __builtin_altivec_vmrghh vec_vmrghh
4688
4689static __inline__ vector short __ATTRS_o_ai vec_vmrghh(vector short __a,
4690                                                       vector short __b) {
4691  return vec_perm(__a, __b,
4692                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4693                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4694                                         0x06, 0x07, 0x16, 0x17));
4695}
4696
4697static __inline__ vector unsigned short __ATTRS_o_ai
4698vec_vmrghh(vector unsigned short __a, vector unsigned short __b) {
4699  return vec_perm(__a, __b,
4700                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4701                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4702                                         0x06, 0x07, 0x16, 0x17));
4703}
4704
4705static __inline__ vector bool short __ATTRS_o_ai
4706vec_vmrghh(vector bool short __a, vector bool short __b) {
4707  return vec_perm(__a, __b,
4708                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4709                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4710                                         0x06, 0x07, 0x16, 0x17));
4711}
4712
4713static __inline__ vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a,
4714                                                       vector pixel __b) {
4715  return vec_perm(__a, __b,
4716                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
4717                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
4718                                         0x06, 0x07, 0x16, 0x17));
4719}
4720
4721/* vec_vmrghw */
4722
4723#define __builtin_altivec_vmrghw vec_vmrghw
4724
4725static __inline__ vector int __ATTRS_o_ai vec_vmrghw(vector int __a,
4726                                                     vector int __b) {
4727  return vec_perm(__a, __b,
4728                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4729                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4730                                         0x14, 0x15, 0x16, 0x17));
4731}
4732
4733static __inline__ vector unsigned int __ATTRS_o_ai
4734vec_vmrghw(vector unsigned int __a, vector unsigned int __b) {
4735  return vec_perm(__a, __b,
4736                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4737                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4738                                         0x14, 0x15, 0x16, 0x17));
4739}
4740
4741static __inline__ vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a,
4742                                                          vector bool int __b) {
4743  return vec_perm(__a, __b,
4744                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4745                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4746                                         0x14, 0x15, 0x16, 0x17));
4747}
4748
4749static __inline__ vector float __ATTRS_o_ai vec_vmrghw(vector float __a,
4750                                                       vector float __b) {
4751  return vec_perm(__a, __b,
4752                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
4753                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
4754                                         0x14, 0x15, 0x16, 0x17));
4755}
4756
4757/* vec_mergel */
4758
4759static __inline__ vector signed char __ATTRS_o_ai
4760vec_mergel(vector signed char __a, vector signed char __b) {
4761  return vec_perm(__a, __b,
4762                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4763                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4764                                         0x0E, 0x1E, 0x0F, 0x1F));
4765}
4766
4767static __inline__ vector unsigned char __ATTRS_o_ai
4768vec_mergel(vector unsigned char __a, vector unsigned char __b) {
4769  return vec_perm(__a, __b,
4770                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4771                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4772                                         0x0E, 0x1E, 0x0F, 0x1F));
4773}
4774
4775static __inline__ vector bool char __ATTRS_o_ai
4776vec_mergel(vector bool char __a, vector bool char __b) {
4777  return vec_perm(__a, __b,
4778                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4779                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4780                                         0x0E, 0x1E, 0x0F, 0x1F));
4781}
4782
4783static __inline__ vector short __ATTRS_o_ai vec_mergel(vector short __a,
4784                                                       vector short __b) {
4785  return vec_perm(__a, __b,
4786                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4787                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4788                                         0x0E, 0x0F, 0x1E, 0x1F));
4789}
4790
4791static __inline__ vector unsigned short __ATTRS_o_ai
4792vec_mergel(vector unsigned short __a, vector unsigned short __b) {
4793  return vec_perm(__a, __b,
4794                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4795                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4796                                         0x0E, 0x0F, 0x1E, 0x1F));
4797}
4798
4799static __inline__ vector bool short __ATTRS_o_ai
4800vec_mergel(vector bool short __a, vector bool short __b) {
4801  return vec_perm(__a, __b,
4802                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4803                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4804                                         0x0E, 0x0F, 0x1E, 0x1F));
4805}
4806
4807static __inline__ vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a,
4808                                                       vector pixel __b) {
4809  return vec_perm(__a, __b,
4810                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4811                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4812                                         0x0E, 0x0F, 0x1E, 0x1F));
4813}
4814
4815static __inline__ vector int __ATTRS_o_ai vec_mergel(vector int __a,
4816                                                     vector int __b) {
4817  return vec_perm(__a, __b,
4818                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4819                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4820                                         0x1C, 0x1D, 0x1E, 0x1F));
4821}
4822
4823static __inline__ vector unsigned int __ATTRS_o_ai
4824vec_mergel(vector unsigned int __a, vector unsigned int __b) {
4825  return vec_perm(__a, __b,
4826                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4827                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4828                                         0x1C, 0x1D, 0x1E, 0x1F));
4829}
4830
4831static __inline__ vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a,
4832                                                          vector bool int __b) {
4833  return vec_perm(__a, __b,
4834                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4835                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4836                                         0x1C, 0x1D, 0x1E, 0x1F));
4837}
4838
4839static __inline__ vector float __ATTRS_o_ai vec_mergel(vector float __a,
4840                                                       vector float __b) {
4841  return vec_perm(__a, __b,
4842                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4843                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4844                                         0x1C, 0x1D, 0x1E, 0x1F));
4845}
4846
4847#ifdef __VSX__
4848static __inline__ vector signed long long __ATTRS_o_ai
4849vec_mergel(vector signed long long __a, vector signed long long __b) {
4850  return vec_perm(__a, __b,
4851                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4852                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4853                                         0x1C, 0x1D, 0x1E, 0x1F));
4854}
4855static __inline__ vector signed long long __ATTRS_o_ai
4856vec_mergel(vector signed long long __a, vector bool long long __b) {
4857  return vec_perm(__a, (vector signed long long)__b,
4858                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4859                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4860                                         0x1C, 0x1D, 0x1E, 0x1F));
4861}
4862static __inline__ vector signed long long __ATTRS_o_ai
4863vec_mergel(vector bool long long __a, vector signed long long __b) {
4864  return vec_perm((vector signed long long)__a, __b,
4865                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4866                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4867                                         0x1C, 0x1D, 0x1E, 0x1F));
4868}
4869static __inline__ vector unsigned long long __ATTRS_o_ai
4870vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
4871  return vec_perm(__a, __b,
4872                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4873                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4874                                         0x1C, 0x1D, 0x1E, 0x1F));
4875}
4876static __inline__ vector unsigned long long __ATTRS_o_ai
4877vec_mergel(vector unsigned long long __a, vector bool long long __b) {
4878  return vec_perm(__a, (vector unsigned long long)__b,
4879                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4880                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4881                                         0x1C, 0x1D, 0x1E, 0x1F));
4882}
4883static __inline__ vector unsigned long long __ATTRS_o_ai
4884vec_mergel(vector bool long long __a, vector unsigned long long __b) {
4885  return vec_perm((vector unsigned long long)__a, __b,
4886                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4887                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4888                                         0x1C, 0x1D, 0x1E, 0x1F));
4889}
4890static __inline__ vector bool long long __ATTRS_o_ai
4891vec_mergel(vector bool long long __a, vector bool long long __b) {
4892  return vec_perm(__a, __b,
4893                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4894                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4895                                         0x1C, 0x1D, 0x1E, 0x1F));
4896}
4897static __inline__ vector double __ATTRS_o_ai vec_mergel(vector double __a,
4898                                                        vector double __b) {
4899  return vec_perm(__a, __b,
4900                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4901                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4902                                         0x1C, 0x1D, 0x1E, 0x1F));
4903}
4904static __inline__ vector double __ATTRS_o_ai
4905vec_mergel(vector double __a, vector bool long long __b) {
4906  return vec_perm(__a, (vector double)__b,
4907                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4908                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4909                                         0x1C, 0x1D, 0x1E, 0x1F));
4910}
4911static __inline__ vector double __ATTRS_o_ai
4912vec_mergel(vector bool long long __a, vector double __b) {
4913  return vec_perm((vector double)__a, __b,
4914                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
4915                                         0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
4916                                         0x1C, 0x1D, 0x1E, 0x1F));
4917}
4918#endif
4919
4920/* vec_vmrglb */
4921
4922#define __builtin_altivec_vmrglb vec_vmrglb
4923
4924static __inline__ vector signed char __ATTRS_o_ai
4925vec_vmrglb(vector signed char __a, vector signed char __b) {
4926  return vec_perm(__a, __b,
4927                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4928                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4929                                         0x0E, 0x1E, 0x0F, 0x1F));
4930}
4931
4932static __inline__ vector unsigned char __ATTRS_o_ai
4933vec_vmrglb(vector unsigned char __a, vector unsigned char __b) {
4934  return vec_perm(__a, __b,
4935                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4936                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4937                                         0x0E, 0x1E, 0x0F, 0x1F));
4938}
4939
4940static __inline__ vector bool char __ATTRS_o_ai
4941vec_vmrglb(vector bool char __a, vector bool char __b) {
4942  return vec_perm(__a, __b,
4943                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
4944                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
4945                                         0x0E, 0x1E, 0x0F, 0x1F));
4946}
4947
4948/* vec_vmrglh */
4949
4950#define __builtin_altivec_vmrglh vec_vmrglh
4951
4952static __inline__ vector short __ATTRS_o_ai vec_vmrglh(vector short __a,
4953                                                       vector short __b) {
4954  return vec_perm(__a, __b,
4955                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4956                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4957                                         0x0E, 0x0F, 0x1E, 0x1F));
4958}
4959
4960static __inline__ vector unsigned short __ATTRS_o_ai
4961vec_vmrglh(vector unsigned short __a, vector unsigned short __b) {
4962  return vec_perm(__a, __b,
4963                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4964                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4965                                         0x0E, 0x0F, 0x1E, 0x1F));
4966}
4967
4968static __inline__ vector bool short __ATTRS_o_ai
4969vec_vmrglh(vector bool short __a, vector bool short __b) {
4970  return vec_perm(__a, __b,
4971                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4972                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4973                                         0x0E, 0x0F, 0x1E, 0x1F));
4974}
4975
4976static __inline__ vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a,
4977                                                       vector pixel __b) {
4978  return vec_perm(__a, __b,
4979                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
4980                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
4981                                         0x0E, 0x0F, 0x1E, 0x1F));
4982}
4983
4984/* vec_vmrglw */
4985
4986#define __builtin_altivec_vmrglw vec_vmrglw
4987
4988static __inline__ vector int __ATTRS_o_ai vec_vmrglw(vector int __a,
4989                                                     vector int __b) {
4990  return vec_perm(__a, __b,
4991                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
4992                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
4993                                         0x1C, 0x1D, 0x1E, 0x1F));
4994}
4995
4996static __inline__ vector unsigned int __ATTRS_o_ai
4997vec_vmrglw(vector unsigned int __a, vector unsigned int __b) {
4998  return vec_perm(__a, __b,
4999                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5000                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5001                                         0x1C, 0x1D, 0x1E, 0x1F));
5002}
5003
5004static __inline__ vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a,
5005                                                          vector bool int __b) {
5006  return vec_perm(__a, __b,
5007                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5008                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5009                                         0x1C, 0x1D, 0x1E, 0x1F));
5010}
5011
5012static __inline__ vector float __ATTRS_o_ai vec_vmrglw(vector float __a,
5013                                                       vector float __b) {
5014  return vec_perm(__a, __b,
5015                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
5016                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
5017                                         0x1C, 0x1D, 0x1E, 0x1F));
5018}
5019
5020#ifdef __POWER8_VECTOR__
5021/* vec_mergee */
5022
5023static __inline__ vector bool int __ATTRS_o_ai vec_mergee(vector bool int __a,
5024                                                          vector bool int __b) {
5025  return vec_perm(__a, __b,
5026                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5027                                         0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5028                                         0x18, 0x19, 0x1A, 0x1B));
5029}
5030
5031static __inline__ vector signed int __ATTRS_o_ai
5032vec_mergee(vector signed int __a, vector signed int __b) {
5033  return vec_perm(__a, __b,
5034                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5035                                         0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5036                                         0x18, 0x19, 0x1A, 0x1B));
5037}
5038
5039static __inline__ vector unsigned int __ATTRS_o_ai
5040vec_mergee(vector unsigned int __a, vector unsigned int __b) {
5041  return vec_perm(__a, __b,
5042                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5043                                         0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5044                                         0x18, 0x19, 0x1A, 0x1B));
5045}
5046
5047static __inline__ vector bool long long __ATTRS_o_ai
5048vec_mergee(vector bool long long __a, vector bool long long __b) {
5049  return vec_mergeh(__a, __b);
5050}
5051
5052static __inline__ vector signed long long __ATTRS_o_ai
5053vec_mergee(vector signed long long __a, vector signed long long __b) {
5054  return vec_mergeh(__a, __b);
5055}
5056
5057static __inline__ vector unsigned long long __ATTRS_o_ai
5058vec_mergee(vector unsigned long long __a, vector unsigned long long __b) {
5059  return vec_mergeh(__a, __b);
5060}
5061
5062static __inline__ vector float __ATTRS_o_ai
5063vec_mergee(vector float __a, vector float __b) {
5064  return vec_perm(__a, __b,
5065                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
5066                                         0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
5067                                         0x18, 0x19, 0x1A, 0x1B));
5068}
5069
5070static __inline__ vector double __ATTRS_o_ai
5071vec_mergee(vector double __a, vector double __b) {
5072  return vec_mergeh(__a, __b);
5073}
5074
5075/* vec_mergeo */
5076
5077static __inline__ vector bool int __ATTRS_o_ai vec_mergeo(vector bool int __a,
5078                                                          vector bool int __b) {
5079  return vec_perm(__a, __b,
5080                  (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5081                                         0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5082                                         0x1C, 0x1D, 0x1E, 0x1F));
5083}
5084
5085static __inline__ vector signed int __ATTRS_o_ai
5086vec_mergeo(vector signed int __a, vector signed int __b) {
5087  return vec_perm(__a, __b,
5088                  (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5089                                         0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5090                                         0x1C, 0x1D, 0x1E, 0x1F));
5091}
5092
5093static __inline__ vector unsigned int __ATTRS_o_ai
5094vec_mergeo(vector unsigned int __a, vector unsigned int __b) {
5095  return vec_perm(__a, __b,
5096                  (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5097                                         0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5098                                         0x1C, 0x1D, 0x1E, 0x1F));
5099}
5100
5101static __inline__ vector bool long long __ATTRS_o_ai
5102vec_mergeo(vector bool long long __a, vector bool long long __b) {
5103  return vec_mergel(__a, __b);
5104}
5105
5106static __inline__ vector signed long long __ATTRS_o_ai
5107vec_mergeo(vector signed long long __a, vector signed long long __b) {
5108  return vec_mergel(__a, __b);
5109}
5110
5111static __inline__ vector unsigned long long __ATTRS_o_ai
5112vec_mergeo(vector unsigned long long __a, vector unsigned long long __b) {
5113  return vec_mergel(__a, __b);
5114}
5115
5116static __inline__ vector float __ATTRS_o_ai
5117vec_mergeo(vector float __a, vector float __b) {
5118  return vec_perm(__a, __b,
5119                  (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
5120                                         0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
5121                                         0x1C, 0x1D, 0x1E, 0x1F));
5122}
5123
5124static __inline__ vector double __ATTRS_o_ai
5125vec_mergeo(vector double __a, vector double __b) {
5126  return vec_mergel(__a, __b);
5127}
5128
5129#endif
5130
5131/* vec_mfvscr */
5132
5133static __inline__ vector unsigned short __attribute__((__always_inline__))
5134vec_mfvscr(void) {
5135  return __builtin_altivec_mfvscr();
5136}
5137
5138/* vec_min */
5139
5140static __inline__ vector signed char __ATTRS_o_ai
5141vec_min(vector signed char __a, vector signed char __b) {
5142  return __builtin_altivec_vminsb(__a, __b);
5143}
5144
5145static __inline__ vector signed char __ATTRS_o_ai
5146vec_min(vector bool char __a, vector signed char __b) {
5147  return __builtin_altivec_vminsb((vector signed char)__a, __b);
5148}
5149
5150static __inline__ vector signed char __ATTRS_o_ai
5151vec_min(vector signed char __a, vector bool char __b) {
5152  return __builtin_altivec_vminsb(__a, (vector signed char)__b);
5153}
5154
5155static __inline__ vector unsigned char __ATTRS_o_ai
5156vec_min(vector unsigned char __a, vector unsigned char __b) {
5157  return __builtin_altivec_vminub(__a, __b);
5158}
5159
5160static __inline__ vector unsigned char __ATTRS_o_ai
5161vec_min(vector bool char __a, vector unsigned char __b) {
5162  return __builtin_altivec_vminub((vector unsigned char)__a, __b);
5163}
5164
5165static __inline__ vector unsigned char __ATTRS_o_ai
5166vec_min(vector unsigned char __a, vector bool char __b) {
5167  return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
5168}
5169
5170static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
5171                                                    vector short __b) {
5172  return __builtin_altivec_vminsh(__a, __b);
5173}
5174
5175static __inline__ vector short __ATTRS_o_ai vec_min(vector bool short __a,
5176                                                    vector short __b) {
5177  return __builtin_altivec_vminsh((vector short)__a, __b);
5178}
5179
5180static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
5181                                                    vector bool short __b) {
5182  return __builtin_altivec_vminsh(__a, (vector short)__b);
5183}
5184
5185static __inline__ vector unsigned short __ATTRS_o_ai
5186vec_min(vector unsigned short __a, vector unsigned short __b) {
5187  return __builtin_altivec_vminuh(__a, __b);
5188}
5189
5190static __inline__ vector unsigned short __ATTRS_o_ai
5191vec_min(vector bool short __a, vector unsigned short __b) {
5192  return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
5193}
5194
5195static __inline__ vector unsigned short __ATTRS_o_ai
5196vec_min(vector unsigned short __a, vector bool short __b) {
5197  return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
5198}
5199
5200static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
5201                                                  vector int __b) {
5202  return __builtin_altivec_vminsw(__a, __b);
5203}
5204
5205static __inline__ vector int __ATTRS_o_ai vec_min(vector bool int __a,
5206                                                  vector int __b) {
5207  return __builtin_altivec_vminsw((vector int)__a, __b);
5208}
5209
5210static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
5211                                                  vector bool int __b) {
5212  return __builtin_altivec_vminsw(__a, (vector int)__b);
5213}
5214
5215static __inline__ vector unsigned int __ATTRS_o_ai
5216vec_min(vector unsigned int __a, vector unsigned int __b) {
5217  return __builtin_altivec_vminuw(__a, __b);
5218}
5219
5220static __inline__ vector unsigned int __ATTRS_o_ai
5221vec_min(vector bool int __a, vector unsigned int __b) {
5222  return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
5223}
5224
5225static __inline__ vector unsigned int __ATTRS_o_ai
5226vec_min(vector unsigned int __a, vector bool int __b) {
5227  return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
5228}
5229
5230#ifdef __POWER8_VECTOR__
5231static __inline__ vector signed long long __ATTRS_o_ai
5232vec_min(vector signed long long __a, vector signed long long __b) {
5233  return __builtin_altivec_vminsd(__a, __b);
5234}
5235
5236static __inline__ vector signed long long __ATTRS_o_ai
5237vec_min(vector bool long long __a, vector signed long long __b) {
5238  return __builtin_altivec_vminsd((vector signed long long)__a, __b);
5239}
5240
5241static __inline__ vector signed long long __ATTRS_o_ai
5242vec_min(vector signed long long __a, vector bool long long __b) {
5243  return __builtin_altivec_vminsd(__a, (vector signed long long)__b);
5244}
5245
5246static __inline__ vector unsigned long long __ATTRS_o_ai
5247vec_min(vector unsigned long long __a, vector unsigned long long __b) {
5248  return __builtin_altivec_vminud(__a, __b);
5249}
5250
5251static __inline__ vector unsigned long long __ATTRS_o_ai
5252vec_min(vector bool long long __a, vector unsigned long long __b) {
5253  return __builtin_altivec_vminud((vector unsigned long long)__a, __b);
5254}
5255
5256static __inline__ vector unsigned long long __ATTRS_o_ai
5257vec_min(vector unsigned long long __a, vector bool long long __b) {
5258  return __builtin_altivec_vminud(__a, (vector unsigned long long)__b);
5259}
5260#endif
5261
5262static __inline__ vector float __ATTRS_o_ai vec_min(vector float __a,
5263                                                    vector float __b) {
5264#ifdef __VSX__
5265  return __builtin_vsx_xvminsp(__a, __b);
5266#else
5267  return __builtin_altivec_vminfp(__a, __b);
5268#endif
5269}
5270
5271#ifdef __VSX__
5272static __inline__ vector double __ATTRS_o_ai vec_min(vector double __a,
5273                                                     vector double __b) {
5274  return __builtin_vsx_xvmindp(__a, __b);
5275}
5276#endif
5277
5278/* vec_vminsb */
5279
5280static __inline__ vector signed char __ATTRS_o_ai
5281vec_vminsb(vector signed char __a, vector signed char __b) {
5282  return __builtin_altivec_vminsb(__a, __b);
5283}
5284
5285static __inline__ vector signed char __ATTRS_o_ai
5286vec_vminsb(vector bool char __a, vector signed char __b) {
5287  return __builtin_altivec_vminsb((vector signed char)__a, __b);
5288}
5289
5290static __inline__ vector signed char __ATTRS_o_ai
5291vec_vminsb(vector signed char __a, vector bool char __b) {
5292  return __builtin_altivec_vminsb(__a, (vector signed char)__b);
5293}
5294
5295/* vec_vminub */
5296
5297static __inline__ vector unsigned char __ATTRS_o_ai
5298vec_vminub(vector unsigned char __a, vector unsigned char __b) {
5299  return __builtin_altivec_vminub(__a, __b);
5300}
5301
5302static __inline__ vector unsigned char __ATTRS_o_ai
5303vec_vminub(vector bool char __a, vector unsigned char __b) {
5304  return __builtin_altivec_vminub((vector unsigned char)__a, __b);
5305}
5306
5307static __inline__ vector unsigned char __ATTRS_o_ai
5308vec_vminub(vector unsigned char __a, vector bool char __b) {
5309  return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
5310}
5311
5312/* vec_vminsh */
5313
5314static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
5315                                                       vector short __b) {
5316  return __builtin_altivec_vminsh(__a, __b);
5317}
5318
5319static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector bool short __a,
5320                                                       vector short __b) {
5321  return __builtin_altivec_vminsh((vector short)__a, __b);
5322}
5323
5324static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
5325                                                       vector bool short __b) {
5326  return __builtin_altivec_vminsh(__a, (vector short)__b);
5327}
5328
5329/* vec_vminuh */
5330
5331static __inline__ vector unsigned short __ATTRS_o_ai
5332vec_vminuh(vector unsigned short __a, vector unsigned short __b) {
5333  return __builtin_altivec_vminuh(__a, __b);
5334}
5335
5336static __inline__ vector unsigned short __ATTRS_o_ai
5337vec_vminuh(vector bool short __a, vector unsigned short __b) {
5338  return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
5339}
5340
5341static __inline__ vector unsigned short __ATTRS_o_ai
5342vec_vminuh(vector unsigned short __a, vector bool short __b) {
5343  return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
5344}
5345
5346/* vec_vminsw */
5347
5348static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
5349                                                     vector int __b) {
5350  return __builtin_altivec_vminsw(__a, __b);
5351}
5352
5353static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector bool int __a,
5354                                                     vector int __b) {
5355  return __builtin_altivec_vminsw((vector int)__a, __b);
5356}
5357
5358static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
5359                                                     vector bool int __b) {
5360  return __builtin_altivec_vminsw(__a, (vector int)__b);
5361}
5362
5363/* vec_vminuw */
5364
5365static __inline__ vector unsigned int __ATTRS_o_ai
5366vec_vminuw(vector unsigned int __a, vector unsigned int __b) {
5367  return __builtin_altivec_vminuw(__a, __b);
5368}
5369
5370static __inline__ vector unsigned int __ATTRS_o_ai
5371vec_vminuw(vector bool int __a, vector unsigned int __b) {
5372  return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
5373}
5374
5375static __inline__ vector unsigned int __ATTRS_o_ai
5376vec_vminuw(vector unsigned int __a, vector bool int __b) {
5377  return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
5378}
5379
5380/* vec_vminfp */
5381
5382static __inline__ vector float __attribute__((__always_inline__))
5383vec_vminfp(vector float __a, vector float __b) {
5384#ifdef __VSX__
5385  return __builtin_vsx_xvminsp(__a, __b);
5386#else
5387  return __builtin_altivec_vminfp(__a, __b);
5388#endif
5389}
5390
5391/* vec_mladd */
5392
5393#define __builtin_altivec_vmladduhm vec_mladd
5394
5395static __inline__ vector short __ATTRS_o_ai vec_mladd(vector short __a,
5396                                                      vector short __b,
5397                                                      vector short __c) {
5398  return __a * __b + __c;
5399}
5400
5401static __inline__ vector short __ATTRS_o_ai vec_mladd(
5402    vector short __a, vector unsigned short __b, vector unsigned short __c) {
5403  return __a * (vector short)__b + (vector short)__c;
5404}
5405
5406static __inline__ vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
5407                                                      vector short __b,
5408                                                      vector short __c) {
5409  return (vector short)__a * __b + __c;
5410}
5411
5412static __inline__ vector unsigned short __ATTRS_o_ai
5413vec_mladd(vector unsigned short __a, vector unsigned short __b,
5414          vector unsigned short __c) {
5415  return __a * __b + __c;
5416}
5417
5418/* vec_vmladduhm */
5419
5420static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
5421                                                          vector short __b,
5422                                                          vector short __c) {
5423  return __a * __b + __c;
5424}
5425
5426static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(
5427    vector short __a, vector unsigned short __b, vector unsigned short __c) {
5428  return __a * (vector short)__b + (vector short)__c;
5429}
5430
5431static __inline__ vector short __ATTRS_o_ai
5432vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) {
5433  return (vector short)__a * __b + __c;
5434}
5435
5436static __inline__ vector unsigned short __ATTRS_o_ai
5437vec_vmladduhm(vector unsigned short __a, vector unsigned short __b,
5438              vector unsigned short __c) {
5439  return __a * __b + __c;
5440}
5441
5442/* vec_mradds */
5443
5444static __inline__ vector short __attribute__((__always_inline__))
5445vec_mradds(vector short __a, vector short __b, vector short __c) {
5446  return __builtin_altivec_vmhraddshs(__a, __b, __c);
5447}
5448
5449/* vec_vmhraddshs */
5450
5451static __inline__ vector short __attribute__((__always_inline__))
5452vec_vmhraddshs(vector short __a, vector short __b, vector short __c) {
5453  return __builtin_altivec_vmhraddshs(__a, __b, __c);
5454}
5455
5456/* vec_msum */
5457
5458static __inline__ vector int __ATTRS_o_ai vec_msum(vector signed char __a,
5459                                                   vector unsigned char __b,
5460                                                   vector int __c) {
5461  return __builtin_altivec_vmsummbm(__a, __b, __c);
5462}
5463
5464static __inline__ vector unsigned int __ATTRS_o_ai
5465vec_msum(vector unsigned char __a, vector unsigned char __b,
5466         vector unsigned int __c) {
5467  return __builtin_altivec_vmsumubm(__a, __b, __c);
5468}
5469
5470static __inline__ vector int __ATTRS_o_ai vec_msum(vector short __a,
5471                                                   vector short __b,
5472                                                   vector int __c) {
5473  return __builtin_altivec_vmsumshm(__a, __b, __c);
5474}
5475
5476static __inline__ vector unsigned int __ATTRS_o_ai
5477vec_msum(vector unsigned short __a, vector unsigned short __b,
5478         vector unsigned int __c) {
5479  return __builtin_altivec_vmsumuhm(__a, __b, __c);
5480}
5481
5482/* vec_vmsummbm */
5483
5484static __inline__ vector int __attribute__((__always_inline__))
5485vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) {
5486  return __builtin_altivec_vmsummbm(__a, __b, __c);
5487}
5488
5489/* vec_vmsumubm */
5490
5491static __inline__ vector unsigned int __attribute__((__always_inline__))
5492vec_vmsumubm(vector unsigned char __a, vector unsigned char __b,
5493             vector unsigned int __c) {
5494  return __builtin_altivec_vmsumubm(__a, __b, __c);
5495}
5496
5497/* vec_vmsumshm */
5498
5499static __inline__ vector int __attribute__((__always_inline__))
5500vec_vmsumshm(vector short __a, vector short __b, vector int __c) {
5501  return __builtin_altivec_vmsumshm(__a, __b, __c);
5502}
5503
5504/* vec_vmsumuhm */
5505
5506static __inline__ vector unsigned int __attribute__((__always_inline__))
5507vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b,
5508             vector unsigned int __c) {
5509  return __builtin_altivec_vmsumuhm(__a, __b, __c);
5510}
5511
5512/* vec_msums */
5513
5514static __inline__ vector int __ATTRS_o_ai vec_msums(vector short __a,
5515                                                    vector short __b,
5516                                                    vector int __c) {
5517  return __builtin_altivec_vmsumshs(__a, __b, __c);
5518}
5519
5520static __inline__ vector unsigned int __ATTRS_o_ai
5521vec_msums(vector unsigned short __a, vector unsigned short __b,
5522          vector unsigned int __c) {
5523  return __builtin_altivec_vmsumuhs(__a, __b, __c);
5524}
5525
5526/* vec_vmsumshs */
5527
5528static __inline__ vector int __attribute__((__always_inline__))
5529vec_vmsumshs(vector short __a, vector short __b, vector int __c) {
5530  return __builtin_altivec_vmsumshs(__a, __b, __c);
5531}
5532
5533/* vec_vmsumuhs */
5534
5535static __inline__ vector unsigned int __attribute__((__always_inline__))
5536vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b,
5537             vector unsigned int __c) {
5538  return __builtin_altivec_vmsumuhs(__a, __b, __c);
5539}
5540
5541/* vec_mtvscr */
5542
5543static __inline__ void __ATTRS_o_ai vec_mtvscr(vector signed char __a) {
5544  __builtin_altivec_mtvscr((vector int)__a);
5545}
5546
5547static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) {
5548  __builtin_altivec_mtvscr((vector int)__a);
5549}
5550
5551static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool char __a) {
5552  __builtin_altivec_mtvscr((vector int)__a);
5553}
5554
5555static __inline__ void __ATTRS_o_ai vec_mtvscr(vector short __a) {
5556  __builtin_altivec_mtvscr((vector int)__a);
5557}
5558
5559static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) {
5560  __builtin_altivec_mtvscr((vector int)__a);
5561}
5562
5563static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool short __a) {
5564  __builtin_altivec_mtvscr((vector int)__a);
5565}
5566
5567static __inline__ void __ATTRS_o_ai vec_mtvscr(vector pixel __a) {
5568  __builtin_altivec_mtvscr((vector int)__a);
5569}
5570
5571static __inline__ void __ATTRS_o_ai vec_mtvscr(vector int __a) {
5572  __builtin_altivec_mtvscr((vector int)__a);
5573}
5574
5575static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) {
5576  __builtin_altivec_mtvscr((vector int)__a);
5577}
5578
5579static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool int __a) {
5580  __builtin_altivec_mtvscr((vector int)__a);
5581}
5582
5583static __inline__ void __ATTRS_o_ai vec_mtvscr(vector float __a) {
5584  __builtin_altivec_mtvscr((vector int)__a);
5585}
5586
5587/* vec_mul */
5588
5589/* Integer vector multiplication will involve multiplication of the odd/even
5590   elements separately, then truncating the results and moving to the
5591   result vector.
5592*/
5593static __inline__ vector signed char __ATTRS_o_ai
5594vec_mul(vector signed char __a, vector signed char __b) {
5595  return __a * __b;
5596}
5597
5598static __inline__ vector unsigned char __ATTRS_o_ai
5599vec_mul(vector unsigned char __a, vector unsigned char __b) {
5600  return __a * __b;
5601}
5602
5603static __inline__ vector signed short __ATTRS_o_ai
5604vec_mul(vector signed short __a, vector signed short __b) {
5605  return __a * __b;
5606}
5607
5608static __inline__ vector unsigned short __ATTRS_o_ai
5609vec_mul(vector unsigned short __a, vector unsigned short __b) {
5610  return __a * __b;
5611}
5612
5613static __inline__ vector signed int __ATTRS_o_ai
5614vec_mul(vector signed int __a, vector signed int __b) {
5615  return __a * __b;
5616}
5617
5618static __inline__ vector unsigned int __ATTRS_o_ai
5619vec_mul(vector unsigned int __a, vector unsigned int __b) {
5620  return __a * __b;
5621}
5622
5623#ifdef __VSX__
5624static __inline__ vector signed long long __ATTRS_o_ai
5625vec_mul(vector signed long long __a, vector signed long long __b) {
5626  return __a * __b;
5627}
5628
5629static __inline__ vector unsigned long long __ATTRS_o_ai
5630vec_mul(vector unsigned long long __a, vector unsigned long long __b) {
5631  return __a * __b;
5632}
5633#endif
5634
5635static __inline__ vector float __ATTRS_o_ai vec_mul(vector float __a,
5636                                                    vector float __b) {
5637  return __a * __b;
5638}
5639
5640#ifdef __VSX__
5641static __inline__ vector double __ATTRS_o_ai vec_mul(vector double __a,
5642                                                     vector double __b) {
5643  return __a * __b;
5644}
5645#endif
5646
5647/* The vmulos* and vmules* instructions have a big endian bias, so
5648   we must reverse the meaning of "even" and "odd" for little endian.  */
5649
5650/* vec_mule */
5651
5652static __inline__ vector short __ATTRS_o_ai vec_mule(vector signed char __a,
5653                                                     vector signed char __b) {
5654#ifdef __LITTLE_ENDIAN__
5655  return __builtin_altivec_vmulosb(__a, __b);
5656#else
5657  return __builtin_altivec_vmulesb(__a, __b);
5658#endif
5659}
5660
5661static __inline__ vector unsigned short __ATTRS_o_ai
5662vec_mule(vector unsigned char __a, vector unsigned char __b) {
5663#ifdef __LITTLE_ENDIAN__
5664  return __builtin_altivec_vmuloub(__a, __b);
5665#else
5666  return __builtin_altivec_vmuleub(__a, __b);
5667#endif
5668}
5669
5670static __inline__ vector int __ATTRS_o_ai vec_mule(vector short __a,
5671                                                   vector short __b) {
5672#ifdef __LITTLE_ENDIAN__
5673  return __builtin_altivec_vmulosh(__a, __b);
5674#else
5675  return __builtin_altivec_vmulesh(__a, __b);
5676#endif
5677}
5678
5679static __inline__ vector unsigned int __ATTRS_o_ai
5680vec_mule(vector unsigned short __a, vector unsigned short __b) {
5681#ifdef __LITTLE_ENDIAN__
5682  return __builtin_altivec_vmulouh(__a, __b);
5683#else
5684  return __builtin_altivec_vmuleuh(__a, __b);
5685#endif
5686}
5687
5688#ifdef __POWER8_VECTOR__
5689static __inline__ vector signed long long __ATTRS_o_ai
5690vec_mule(vector signed int __a, vector signed int __b) {
5691#ifdef __LITTLE_ENDIAN__
5692  return __builtin_altivec_vmulosw(__a, __b);
5693#else
5694  return __builtin_altivec_vmulesw(__a, __b);
5695#endif
5696}
5697
5698static __inline__ vector unsigned long long __ATTRS_o_ai
5699vec_mule(vector unsigned int __a, vector unsigned int __b) {
5700#ifdef __LITTLE_ENDIAN__
5701  return __builtin_altivec_vmulouw(__a, __b);
5702#else
5703  return __builtin_altivec_vmuleuw(__a, __b);
5704#endif
5705}
5706#endif
5707
5708/* vec_vmulesb */
5709
5710static __inline__ vector short __attribute__((__always_inline__))
5711vec_vmulesb(vector signed char __a, vector signed char __b) {
5712#ifdef __LITTLE_ENDIAN__
5713  return __builtin_altivec_vmulosb(__a, __b);
5714#else
5715  return __builtin_altivec_vmulesb(__a, __b);
5716#endif
5717}
5718
5719/* vec_vmuleub */
5720
5721static __inline__ vector unsigned short __attribute__((__always_inline__))
5722vec_vmuleub(vector unsigned char __a, vector unsigned char __b) {
5723#ifdef __LITTLE_ENDIAN__
5724  return __builtin_altivec_vmuloub(__a, __b);
5725#else
5726  return __builtin_altivec_vmuleub(__a, __b);
5727#endif
5728}
5729
5730/* vec_vmulesh */
5731
5732static __inline__ vector int __attribute__((__always_inline__))
5733vec_vmulesh(vector short __a, vector short __b) {
5734#ifdef __LITTLE_ENDIAN__
5735  return __builtin_altivec_vmulosh(__a, __b);
5736#else
5737  return __builtin_altivec_vmulesh(__a, __b);
5738#endif
5739}
5740
5741/* vec_vmuleuh */
5742
5743static __inline__ vector unsigned int __attribute__((__always_inline__))
5744vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) {
5745#ifdef __LITTLE_ENDIAN__
5746  return __builtin_altivec_vmulouh(__a, __b);
5747#else
5748  return __builtin_altivec_vmuleuh(__a, __b);
5749#endif
5750}
5751
5752/* vec_mulo */
5753
5754static __inline__ vector short __ATTRS_o_ai vec_mulo(vector signed char __a,
5755                                                     vector signed char __b) {
5756#ifdef __LITTLE_ENDIAN__
5757  return __builtin_altivec_vmulesb(__a, __b);
5758#else
5759  return __builtin_altivec_vmulosb(__a, __b);
5760#endif
5761}
5762
5763static __inline__ vector unsigned short __ATTRS_o_ai
5764vec_mulo(vector unsigned char __a, vector unsigned char __b) {
5765#ifdef __LITTLE_ENDIAN__
5766  return __builtin_altivec_vmuleub(__a, __b);
5767#else
5768  return __builtin_altivec_vmuloub(__a, __b);
5769#endif
5770}
5771
5772static __inline__ vector int __ATTRS_o_ai vec_mulo(vector short __a,
5773                                                   vector short __b) {
5774#ifdef __LITTLE_ENDIAN__
5775  return __builtin_altivec_vmulesh(__a, __b);
5776#else
5777  return __builtin_altivec_vmulosh(__a, __b);
5778#endif
5779}
5780
5781static __inline__ vector unsigned int __ATTRS_o_ai
5782vec_mulo(vector unsigned short __a, vector unsigned short __b) {
5783#ifdef __LITTLE_ENDIAN__
5784  return __builtin_altivec_vmuleuh(__a, __b);
5785#else
5786  return __builtin_altivec_vmulouh(__a, __b);
5787#endif
5788}
5789
5790#ifdef __POWER8_VECTOR__
5791static __inline__ vector signed long long __ATTRS_o_ai
5792vec_mulo(vector signed int __a, vector signed int __b) {
5793#ifdef __LITTLE_ENDIAN__
5794  return __builtin_altivec_vmulesw(__a, __b);
5795#else
5796  return __builtin_altivec_vmulosw(__a, __b);
5797#endif
5798}
5799
5800static __inline__ vector unsigned long long __ATTRS_o_ai
5801vec_mulo(vector unsigned int __a, vector unsigned int __b) {
5802#ifdef __LITTLE_ENDIAN__
5803  return __builtin_altivec_vmuleuw(__a, __b);
5804#else
5805  return __builtin_altivec_vmulouw(__a, __b);
5806#endif
5807}
5808#endif
5809
5810/* vec_vmulosb */
5811
5812static __inline__ vector short __attribute__((__always_inline__))
5813vec_vmulosb(vector signed char __a, vector signed char __b) {
5814#ifdef __LITTLE_ENDIAN__
5815  return __builtin_altivec_vmulesb(__a, __b);
5816#else
5817  return __builtin_altivec_vmulosb(__a, __b);
5818#endif
5819}
5820
5821/* vec_vmuloub */
5822
5823static __inline__ vector unsigned short __attribute__((__always_inline__))
5824vec_vmuloub(vector unsigned char __a, vector unsigned char __b) {
5825#ifdef __LITTLE_ENDIAN__
5826  return __builtin_altivec_vmuleub(__a, __b);
5827#else
5828  return __builtin_altivec_vmuloub(__a, __b);
5829#endif
5830}
5831
5832/* vec_vmulosh */
5833
5834static __inline__ vector int __attribute__((__always_inline__))
5835vec_vmulosh(vector short __a, vector short __b) {
5836#ifdef __LITTLE_ENDIAN__
5837  return __builtin_altivec_vmulesh(__a, __b);
5838#else
5839  return __builtin_altivec_vmulosh(__a, __b);
5840#endif
5841}
5842
5843/* vec_vmulouh */
5844
5845static __inline__ vector unsigned int __attribute__((__always_inline__))
5846vec_vmulouh(vector unsigned short __a, vector unsigned short __b) {
5847#ifdef __LITTLE_ENDIAN__
5848  return __builtin_altivec_vmuleuh(__a, __b);
5849#else
5850  return __builtin_altivec_vmulouh(__a, __b);
5851#endif
5852}
5853
5854/*  vec_nand */
5855
5856#ifdef __POWER8_VECTOR__
5857static __inline__ vector signed char __ATTRS_o_ai
5858vec_nand(vector signed char __a, vector signed char __b) {
5859  return ~(__a & __b);
5860}
5861
5862static __inline__ vector signed char __ATTRS_o_ai
5863vec_nand(vector signed char __a, vector bool char __b) {
5864  return ~(__a & __b);
5865}
5866
5867static __inline__ vector signed char __ATTRS_o_ai
5868vec_nand(vector bool char __a, vector signed char __b) {
5869  return ~(__a & __b);
5870}
5871
5872static __inline__ vector unsigned char __ATTRS_o_ai
5873vec_nand(vector unsigned char __a, vector unsigned char __b) {
5874  return ~(__a & __b);
5875}
5876
5877static __inline__ vector unsigned char __ATTRS_o_ai
5878vec_nand(vector unsigned char __a, vector bool char __b) {
5879  return ~(__a & __b);
5880}
5881
5882static __inline__ vector unsigned char __ATTRS_o_ai
5883vec_nand(vector bool char __a, vector unsigned char __b) {
5884  return ~(__a & __b);
5885}
5886
5887static __inline__ vector bool char __ATTRS_o_ai vec_nand(vector bool char __a,
5888                                                         vector bool char __b) {
5889  return ~(__a & __b);
5890}
5891
5892static __inline__ vector signed short __ATTRS_o_ai
5893vec_nand(vector signed short __a, vector signed short __b) {
5894  return ~(__a & __b);
5895}
5896
5897static __inline__ vector signed short __ATTRS_o_ai
5898vec_nand(vector signed short __a, vector bool short __b) {
5899  return ~(__a & __b);
5900}
5901
5902static __inline__ vector signed short __ATTRS_o_ai
5903vec_nand(vector bool short __a, vector signed short __b) {
5904  return ~(__a & __b);
5905}
5906
5907static __inline__ vector unsigned short __ATTRS_o_ai
5908vec_nand(vector unsigned short __a, vector unsigned short __b) {
5909  return ~(__a & __b);
5910}
5911
5912static __inline__ vector unsigned short __ATTRS_o_ai
5913vec_nand(vector unsigned short __a, vector bool short __b) {
5914  return ~(__a & __b);
5915}
5916
5917static __inline__ vector bool short __ATTRS_o_ai
5918vec_nand(vector bool short __a, vector bool short __b) {
5919  return ~(__a & __b);
5920}
5921
5922static __inline__ vector signed int __ATTRS_o_ai
5923vec_nand(vector signed int __a, vector signed int __b) {
5924  return ~(__a & __b);
5925}
5926
5927static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
5928                                                          vector bool int __b) {
5929  return ~(__a & __b);
5930}
5931
5932static __inline__ vector signed int __ATTRS_o_ai
5933vec_nand(vector bool int __a, vector signed int __b) {
5934  return ~(__a & __b);
5935}
5936
5937static __inline__ vector unsigned int __ATTRS_o_ai
5938vec_nand(vector unsigned int __a, vector unsigned int __b) {
5939  return ~(__a & __b);
5940}
5941
5942static __inline__ vector unsigned int __ATTRS_o_ai
5943vec_nand(vector unsigned int __a, vector bool int __b) {
5944  return ~(__a & __b);
5945}
5946
5947static __inline__ vector unsigned int __ATTRS_o_ai
5948vec_nand(vector bool int __a, vector unsigned int __b) {
5949  return ~(__a & __b);
5950}
5951
5952static __inline__ vector bool int __ATTRS_o_ai vec_nand(vector bool int __a,
5953                                                        vector bool int __b) {
5954  return ~(__a & __b);
5955}
5956
5957static __inline__ vector float __ATTRS_o_ai
5958vec_nand(vector float __a, vector float __b) {
5959  return (vector float)(~((vector unsigned int)__a &
5960                          (vector unsigned int)__b));
5961}
5962
5963static __inline__ vector signed long long __ATTRS_o_ai
5964vec_nand(vector signed long long __a, vector signed long long __b) {
5965  return ~(__a & __b);
5966}
5967
5968static __inline__ vector signed long long __ATTRS_o_ai
5969vec_nand(vector signed long long __a, vector bool long long __b) {
5970  return ~(__a & __b);
5971}
5972
5973static __inline__ vector signed long long __ATTRS_o_ai
5974vec_nand(vector bool long long __a, vector signed long long __b) {
5975  return ~(__a & __b);
5976}
5977
5978static __inline__ vector unsigned long long __ATTRS_o_ai
5979vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
5980  return ~(__a & __b);
5981}
5982
5983static __inline__ vector unsigned long long __ATTRS_o_ai
5984vec_nand(vector unsigned long long __a, vector bool long long __b) {
5985  return ~(__a & __b);
5986}
5987
5988static __inline__ vector unsigned long long __ATTRS_o_ai
5989vec_nand(vector bool long long __a, vector unsigned long long __b) {
5990  return ~(__a & __b);
5991}
5992
5993static __inline__ vector bool long long __ATTRS_o_ai
5994vec_nand(vector bool long long __a, vector bool long long __b) {
5995  return ~(__a & __b);
5996}
5997
5998static __inline__ vector double __ATTRS_o_ai
5999vec_nand(vector double __a, vector double __b) {
6000  return (vector double)(~((vector unsigned long long)__a &
6001                           (vector unsigned long long)__b));
6002}
6003
6004#endif
6005
6006/* vec_nmadd */
6007
6008#ifdef __VSX__
6009static __inline__ vector float __ATTRS_o_ai vec_nmadd(vector float __a,
6010                                                      vector float __b,
6011                                                      vector float __c) {
6012  return __builtin_vsx_xvnmaddasp(__a, __b, __c);
6013}
6014
6015static __inline__ vector double __ATTRS_o_ai vec_nmadd(vector double __a,
6016                                                       vector double __b,
6017                                                       vector double __c) {
6018  return __builtin_vsx_xvnmaddadp(__a, __b, __c);
6019}
6020#endif
6021
6022/* vec_nmsub */
6023
6024static __inline__ vector float __ATTRS_o_ai vec_nmsub(vector float __a,
6025                                                      vector float __b,
6026                                                      vector float __c) {
6027#ifdef __VSX__
6028  return __builtin_vsx_xvnmsubasp(__a, __b, __c);
6029#else
6030  return __builtin_altivec_vnmsubfp(__a, __b, __c);
6031#endif
6032}
6033
6034#ifdef __VSX__
6035static __inline__ vector double __ATTRS_o_ai vec_nmsub(vector double __a,
6036                                                       vector double __b,
6037                                                       vector double __c) {
6038  return __builtin_vsx_xvnmsubadp(__a, __b, __c);
6039}
6040#endif
6041
6042/* vec_vnmsubfp */
6043
6044static __inline__ vector float __attribute__((__always_inline__))
6045vec_vnmsubfp(vector float __a, vector float __b, vector float __c) {
6046  return __builtin_altivec_vnmsubfp(__a, __b, __c);
6047}
6048
6049/* vec_nor */
6050
6051#define __builtin_altivec_vnor vec_nor
6052
6053static __inline__ vector signed char __ATTRS_o_ai
6054vec_nor(vector signed char __a, vector signed char __b) {
6055  return ~(__a | __b);
6056}
6057
6058static __inline__ vector unsigned char __ATTRS_o_ai
6059vec_nor(vector unsigned char __a, vector unsigned char __b) {
6060  return ~(__a | __b);
6061}
6062
6063static __inline__ vector bool char __ATTRS_o_ai vec_nor(vector bool char __a,
6064                                                        vector bool char __b) {
6065  return ~(__a | __b);
6066}
6067
6068static __inline__ vector short __ATTRS_o_ai vec_nor(vector short __a,
6069                                                    vector short __b) {
6070  return ~(__a | __b);
6071}
6072
6073static __inline__ vector unsigned short __ATTRS_o_ai
6074vec_nor(vector unsigned short __a, vector unsigned short __b) {
6075  return ~(__a | __b);
6076}
6077
6078static __inline__ vector bool short __ATTRS_o_ai
6079vec_nor(vector bool short __a, vector bool short __b) {
6080  return ~(__a | __b);
6081}
6082
6083static __inline__ vector int __ATTRS_o_ai vec_nor(vector int __a,
6084                                                  vector int __b) {
6085  return ~(__a | __b);
6086}
6087
6088static __inline__ vector unsigned int __ATTRS_o_ai
6089vec_nor(vector unsigned int __a, vector unsigned int __b) {
6090  return ~(__a | __b);
6091}
6092
6093static __inline__ vector bool int __ATTRS_o_ai vec_nor(vector bool int __a,
6094                                                       vector bool int __b) {
6095  return ~(__a | __b);
6096}
6097
6098static __inline__ vector float __ATTRS_o_ai vec_nor(vector float __a,
6099                                                    vector float __b) {
6100  vector unsigned int __res =
6101      ~((vector unsigned int)__a | (vector unsigned int)__b);
6102  return (vector float)__res;
6103}
6104
6105#ifdef __VSX__
6106static __inline__ vector double __ATTRS_o_ai vec_nor(vector double __a,
6107                                                     vector double __b) {
6108  vector unsigned long long __res =
6109      ~((vector unsigned long long)__a | (vector unsigned long long)__b);
6110  return (vector double)__res;
6111}
6112#endif
6113
6114/* vec_vnor */
6115
6116static __inline__ vector signed char __ATTRS_o_ai
6117vec_vnor(vector signed char __a, vector signed char __b) {
6118  return ~(__a | __b);
6119}
6120
6121static __inline__ vector unsigned char __ATTRS_o_ai
6122vec_vnor(vector unsigned char __a, vector unsigned char __b) {
6123  return ~(__a | __b);
6124}
6125
6126static __inline__ vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a,
6127                                                         vector bool char __b) {
6128  return ~(__a | __b);
6129}
6130
6131static __inline__ vector short __ATTRS_o_ai vec_vnor(vector short __a,
6132                                                     vector short __b) {
6133  return ~(__a | __b);
6134}
6135
6136static __inline__ vector unsigned short __ATTRS_o_ai
6137vec_vnor(vector unsigned short __a, vector unsigned short __b) {
6138  return ~(__a | __b);
6139}
6140
6141static __inline__ vector bool short __ATTRS_o_ai
6142vec_vnor(vector bool short __a, vector bool short __b) {
6143  return ~(__a | __b);
6144}
6145
6146static __inline__ vector int __ATTRS_o_ai vec_vnor(vector int __a,
6147                                                   vector int __b) {
6148  return ~(__a | __b);
6149}
6150
6151static __inline__ vector unsigned int __ATTRS_o_ai
6152vec_vnor(vector unsigned int __a, vector unsigned int __b) {
6153  return ~(__a | __b);
6154}
6155
6156static __inline__ vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a,
6157                                                        vector bool int __b) {
6158  return ~(__a | __b);
6159}
6160
6161static __inline__ vector float __ATTRS_o_ai vec_vnor(vector float __a,
6162                                                     vector float __b) {
6163  vector unsigned int __res =
6164      ~((vector unsigned int)__a | (vector unsigned int)__b);
6165  return (vector float)__res;
6166}
6167
6168#ifdef __VSX__
6169static __inline__ vector signed long long __ATTRS_o_ai
6170vec_nor(vector signed long long __a, vector signed long long __b) {
6171  return ~(__a | __b);
6172}
6173
6174static __inline__ vector unsigned long long __ATTRS_o_ai
6175vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
6176  return ~(__a | __b);
6177}
6178
6179static __inline__ vector bool long long __ATTRS_o_ai
6180vec_nor(vector bool long long __a, vector bool long long __b) {
6181  return ~(__a | __b);
6182}
6183#endif
6184
6185/* vec_or */
6186
6187#define __builtin_altivec_vor vec_or
6188
6189static __inline__ vector signed char __ATTRS_o_ai
6190vec_or(vector signed char __a, vector signed char __b) {
6191  return __a | __b;
6192}
6193
6194static __inline__ vector signed char __ATTRS_o_ai
6195vec_or(vector bool char __a, vector signed char __b) {
6196  return (vector signed char)__a | __b;
6197}
6198
6199static __inline__ vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
6200                                                         vector bool char __b) {
6201  return __a | (vector signed char)__b;
6202}
6203
6204static __inline__ vector unsigned char __ATTRS_o_ai
6205vec_or(vector unsigned char __a, vector unsigned char __b) {
6206  return __a | __b;
6207}
6208
6209static __inline__ vector unsigned char __ATTRS_o_ai
6210vec_or(vector bool char __a, vector unsigned char __b) {
6211  return (vector unsigned char)__a | __b;
6212}
6213
6214static __inline__ vector unsigned char __ATTRS_o_ai
6215vec_or(vector unsigned char __a, vector bool char __b) {
6216  return __a | (vector unsigned char)__b;
6217}
6218
6219static __inline__ vector bool char __ATTRS_o_ai vec_or(vector bool char __a,
6220                                                       vector bool char __b) {
6221  return __a | __b;
6222}
6223
6224static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
6225                                                   vector short __b) {
6226  return __a | __b;
6227}
6228
6229static __inline__ vector short __ATTRS_o_ai vec_or(vector bool short __a,
6230                                                   vector short __b) {
6231  return (vector short)__a | __b;
6232}
6233
6234static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
6235                                                   vector bool short __b) {
6236  return __a | (vector short)__b;
6237}
6238
6239static __inline__ vector unsigned short __ATTRS_o_ai
6240vec_or(vector unsigned short __a, vector unsigned short __b) {
6241  return __a | __b;
6242}
6243
6244static __inline__ vector unsigned short __ATTRS_o_ai
6245vec_or(vector bool short __a, vector unsigned short __b) {
6246  return (vector unsigned short)__a | __b;
6247}
6248
6249static __inline__ vector unsigned short __ATTRS_o_ai
6250vec_or(vector unsigned short __a, vector bool short __b) {
6251  return __a | (vector unsigned short)__b;
6252}
6253
6254static __inline__ vector bool short __ATTRS_o_ai vec_or(vector bool short __a,
6255                                                        vector bool short __b) {
6256  return __a | __b;
6257}
6258
6259static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
6260                                                 vector int __b) {
6261  return __a | __b;
6262}
6263
6264static __inline__ vector int __ATTRS_o_ai vec_or(vector bool int __a,
6265                                                 vector int __b) {
6266  return (vector int)__a | __b;
6267}
6268
6269static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
6270                                                 vector bool int __b) {
6271  return __a | (vector int)__b;
6272}
6273
6274static __inline__ vector unsigned int __ATTRS_o_ai
6275vec_or(vector unsigned int __a, vector unsigned int __b) {
6276  return __a | __b;
6277}
6278
6279static __inline__ vector unsigned int __ATTRS_o_ai
6280vec_or(vector bool int __a, vector unsigned int __b) {
6281  return (vector unsigned int)__a | __b;
6282}
6283
6284static __inline__ vector unsigned int __ATTRS_o_ai
6285vec_or(vector unsigned int __a, vector bool int __b) {
6286  return __a | (vector unsigned int)__b;
6287}
6288
6289static __inline__ vector bool int __ATTRS_o_ai vec_or(vector bool int __a,
6290                                                      vector bool int __b) {
6291  return __a | __b;
6292}
6293
6294static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
6295                                                   vector float __b) {
6296  vector unsigned int __res =
6297      (vector unsigned int)__a | (vector unsigned int)__b;
6298  return (vector float)__res;
6299}
6300
6301static __inline__ vector float __ATTRS_o_ai vec_or(vector bool int __a,
6302                                                   vector float __b) {
6303  vector unsigned int __res =
6304      (vector unsigned int)__a | (vector unsigned int)__b;
6305  return (vector float)__res;
6306}
6307
6308static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
6309                                                   vector bool int __b) {
6310  vector unsigned int __res =
6311      (vector unsigned int)__a | (vector unsigned int)__b;
6312  return (vector float)__res;
6313}
6314
6315#ifdef __VSX__
6316static __inline__ vector double __ATTRS_o_ai vec_or(vector bool long long __a,
6317                                                    vector double __b) {
6318  return (vector unsigned long long)__a | (vector unsigned long long)__b;
6319}
6320
6321static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
6322                                                    vector bool long long __b) {
6323  return (vector unsigned long long)__a | (vector unsigned long long)__b;
6324}
6325
6326static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
6327                                                    vector double __b) {
6328  vector unsigned long long __res =
6329      (vector unsigned long long)__a | (vector unsigned long long)__b;
6330  return (vector double)__res;
6331}
6332
6333static __inline__ vector signed long long __ATTRS_o_ai
6334vec_or(vector signed long long __a, vector signed long long __b) {
6335  return __a | __b;
6336}
6337
6338static __inline__ vector signed long long __ATTRS_o_ai
6339vec_or(vector bool long long __a, vector signed long long __b) {
6340  return (vector signed long long)__a | __b;
6341}
6342
6343static __inline__ vector signed long long __ATTRS_o_ai
6344vec_or(vector signed long long __a, vector bool long long __b) {
6345  return __a | (vector signed long long)__b;
6346}
6347
6348static __inline__ vector unsigned long long __ATTRS_o_ai
6349vec_or(vector unsigned long long __a, vector unsigned long long __b) {
6350  return __a | __b;
6351}
6352
6353static __inline__ vector unsigned long long __ATTRS_o_ai
6354vec_or(vector bool long long __a, vector unsigned long long __b) {
6355  return (vector unsigned long long)__a | __b;
6356}
6357
6358static __inline__ vector unsigned long long __ATTRS_o_ai
6359vec_or(vector unsigned long long __a, vector bool long long __b) {
6360  return __a | (vector unsigned long long)__b;
6361}
6362
6363static __inline__ vector bool long long __ATTRS_o_ai
6364vec_or(vector bool long long __a, vector bool long long __b) {
6365  return __a | __b;
6366}
6367#endif
6368
6369#ifdef __POWER8_VECTOR__
6370static __inline__ vector signed char __ATTRS_o_ai
6371vec_orc(vector signed char __a, vector signed char __b) {
6372  return __a | ~__b;
6373}
6374
6375static __inline__ vector signed char __ATTRS_o_ai
6376vec_orc(vector signed char __a, vector bool char __b) {
6377  return __a | ~__b;
6378}
6379
6380static __inline__ vector signed char __ATTRS_o_ai
6381vec_orc(vector bool char __a, vector signed char __b) {
6382  return __a | ~__b;
6383}
6384
6385static __inline__ vector unsigned char __ATTRS_o_ai
6386vec_orc(vector unsigned char __a, vector unsigned char __b) {
6387  return __a | ~__b;
6388}
6389
6390static __inline__ vector unsigned char __ATTRS_o_ai
6391vec_orc(vector unsigned char __a, vector bool char __b) {
6392  return __a | ~__b;
6393}
6394
6395static __inline__ vector unsigned char __ATTRS_o_ai
6396vec_orc(vector bool char __a, vector unsigned char __b) {
6397  return __a | ~__b;
6398}
6399
6400static __inline__ vector bool char __ATTRS_o_ai vec_orc(vector bool char __a,
6401                                                        vector bool char __b) {
6402  return __a | ~__b;
6403}
6404
6405static __inline__ vector signed short __ATTRS_o_ai
6406vec_orc(vector signed short __a, vector signed short __b) {
6407  return __a | ~__b;
6408}
6409
6410static __inline__ vector signed short __ATTRS_o_ai
6411vec_orc(vector signed short __a, vector bool short __b) {
6412  return __a | ~__b;
6413}
6414
6415static __inline__ vector signed short __ATTRS_o_ai
6416vec_orc(vector bool short __a, vector signed short __b) {
6417  return __a | ~__b;
6418}
6419
6420static __inline__ vector unsigned short __ATTRS_o_ai
6421vec_orc(vector unsigned short __a, vector unsigned short __b) {
6422  return __a | ~__b;
6423}
6424
6425static __inline__ vector unsigned short __ATTRS_o_ai
6426vec_orc(vector unsigned short __a, vector bool short __b) {
6427  return __a | ~__b;
6428}
6429
6430static __inline__ vector unsigned short __ATTRS_o_ai
6431vec_orc(vector bool short __a, vector unsigned short __b) {
6432  return __a | ~__b;
6433}
6434
6435static __inline__ vector bool short __ATTRS_o_ai
6436vec_orc(vector bool short __a, vector bool short __b) {
6437  return __a | ~__b;
6438}
6439
6440static __inline__ vector signed int __ATTRS_o_ai
6441vec_orc(vector signed int __a, vector signed int __b) {
6442  return __a | ~__b;
6443}
6444
6445static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
6446                                                         vector bool int __b) {
6447  return __a | ~__b;
6448}
6449
6450static __inline__ vector signed int __ATTRS_o_ai
6451vec_orc(vector bool int __a, vector signed int __b) {
6452  return __a | ~__b;
6453}
6454
6455static __inline__ vector unsigned int __ATTRS_o_ai
6456vec_orc(vector unsigned int __a, vector unsigned int __b) {
6457  return __a | ~__b;
6458}
6459
6460static __inline__ vector unsigned int __ATTRS_o_ai
6461vec_orc(vector unsigned int __a, vector bool int __b) {
6462  return __a | ~__b;
6463}
6464
6465static __inline__ vector unsigned int __ATTRS_o_ai
6466vec_orc(vector bool int __a, vector unsigned int __b) {
6467  return __a | ~__b;
6468}
6469
6470static __inline__ vector bool int __ATTRS_o_ai vec_orc(vector bool int __a,
6471                                                       vector bool int __b) {
6472  return __a | ~__b;
6473}
6474
6475static __inline__ vector float __ATTRS_o_ai
6476vec_orc(vector bool int __a, vector float __b) {
6477 return (vector float)(__a | ~(vector unsigned int)__b);
6478}
6479
6480static __inline__ vector float __ATTRS_o_ai
6481vec_orc(vector float __a, vector bool int __b) {
6482  return (vector float)((vector unsigned int)__a | ~__b);
6483}
6484
6485static __inline__ vector signed long long __ATTRS_o_ai
6486vec_orc(vector signed long long __a, vector signed long long __b) {
6487  return __a | ~__b;
6488}
6489
6490static __inline__ vector signed long long __ATTRS_o_ai
6491vec_orc(vector signed long long __a, vector bool long long __b) {
6492  return __a | ~__b;
6493}
6494
6495static __inline__ vector signed long long __ATTRS_o_ai
6496vec_orc(vector bool long long __a, vector signed long long __b) {
6497  return __a | ~__b;
6498}
6499
6500static __inline__ vector unsigned long long __ATTRS_o_ai
6501vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
6502  return __a | ~__b;
6503}
6504
6505static __inline__ vector unsigned long long __ATTRS_o_ai
6506vec_orc(vector unsigned long long __a, vector bool long long __b) {
6507  return __a | ~__b;
6508}
6509
6510static __inline__ vector unsigned long long __ATTRS_o_ai
6511vec_orc(vector bool long long __a, vector unsigned long long __b) {
6512  return __a | ~__b;
6513}
6514
6515static __inline__ vector bool long long __ATTRS_o_ai
6516vec_orc(vector bool long long __a, vector bool long long __b) {
6517  return __a | ~__b;
6518}
6519
6520static __inline__ vector double __ATTRS_o_ai
6521vec_orc(vector double __a, vector bool long long __b) {
6522  return (vector double)((vector unsigned long long)__a | ~__b);
6523}
6524
6525static __inline__ vector double __ATTRS_o_ai
6526vec_orc(vector bool long long __a, vector double __b) {
6527  return (vector double)(__a | ~(vector unsigned long long)__b);
6528}
6529#endif
6530
6531/* vec_vor */
6532
6533static __inline__ vector signed char __ATTRS_o_ai
6534vec_vor(vector signed char __a, vector signed char __b) {
6535  return __a | __b;
6536}
6537
6538static __inline__ vector signed char __ATTRS_o_ai
6539vec_vor(vector bool char __a, vector signed char __b) {
6540  return (vector signed char)__a | __b;
6541}
6542
6543static __inline__ vector signed char __ATTRS_o_ai
6544vec_vor(vector signed char __a, vector bool char __b) {
6545  return __a | (vector signed char)__b;
6546}
6547
6548static __inline__ vector unsigned char __ATTRS_o_ai
6549vec_vor(vector unsigned char __a, vector unsigned char __b) {
6550  return __a | __b;
6551}
6552
6553static __inline__ vector unsigned char __ATTRS_o_ai
6554vec_vor(vector bool char __a, vector unsigned char __b) {
6555  return (vector unsigned char)__a | __b;
6556}
6557
6558static __inline__ vector unsigned char __ATTRS_o_ai
6559vec_vor(vector unsigned char __a, vector bool char __b) {
6560  return __a | (vector unsigned char)__b;
6561}
6562
6563static __inline__ vector bool char __ATTRS_o_ai vec_vor(vector bool char __a,
6564                                                        vector bool char __b) {
6565  return __a | __b;
6566}
6567
6568static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
6569                                                    vector short __b) {
6570  return __a | __b;
6571}
6572
6573static __inline__ vector short __ATTRS_o_ai vec_vor(vector bool short __a,
6574                                                    vector short __b) {
6575  return (vector short)__a | __b;
6576}
6577
6578static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
6579                                                    vector bool short __b) {
6580  return __a | (vector short)__b;
6581}
6582
6583static __inline__ vector unsigned short __ATTRS_o_ai
6584vec_vor(vector unsigned short __a, vector unsigned short __b) {
6585  return __a | __b;
6586}
6587
6588static __inline__ vector unsigned short __ATTRS_o_ai
6589vec_vor(vector bool short __a, vector unsigned short __b) {
6590  return (vector unsigned short)__a | __b;
6591}
6592
6593static __inline__ vector unsigned short __ATTRS_o_ai
6594vec_vor(vector unsigned short __a, vector bool short __b) {
6595  return __a | (vector unsigned short)__b;
6596}
6597
6598static __inline__ vector bool short __ATTRS_o_ai
6599vec_vor(vector bool short __a, vector bool short __b) {
6600  return __a | __b;
6601}
6602
6603static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
6604                                                  vector int __b) {
6605  return __a | __b;
6606}
6607
6608static __inline__ vector int __ATTRS_o_ai vec_vor(vector bool int __a,
6609                                                  vector int __b) {
6610  return (vector int)__a | __b;
6611}
6612
6613static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
6614                                                  vector bool int __b) {
6615  return __a | (vector int)__b;
6616}
6617
6618static __inline__ vector unsigned int __ATTRS_o_ai
6619vec_vor(vector unsigned int __a, vector unsigned int __b) {
6620  return __a | __b;
6621}
6622
6623static __inline__ vector unsigned int __ATTRS_o_ai
6624vec_vor(vector bool int __a, vector unsigned int __b) {
6625  return (vector unsigned int)__a | __b;
6626}
6627
6628static __inline__ vector unsigned int __ATTRS_o_ai
6629vec_vor(vector unsigned int __a, vector bool int __b) {
6630  return __a | (vector unsigned int)__b;
6631}
6632
6633static __inline__ vector bool int __ATTRS_o_ai vec_vor(vector bool int __a,
6634                                                       vector bool int __b) {
6635  return __a | __b;
6636}
6637
6638static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
6639                                                    vector float __b) {
6640  vector unsigned int __res =
6641      (vector unsigned int)__a | (vector unsigned int)__b;
6642  return (vector float)__res;
6643}
6644
6645static __inline__ vector float __ATTRS_o_ai vec_vor(vector bool int __a,
6646                                                    vector float __b) {
6647  vector unsigned int __res =
6648      (vector unsigned int)__a | (vector unsigned int)__b;
6649  return (vector float)__res;
6650}
6651
6652static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
6653                                                    vector bool int __b) {
6654  vector unsigned int __res =
6655      (vector unsigned int)__a | (vector unsigned int)__b;
6656  return (vector float)__res;
6657}
6658
6659#ifdef __VSX__
6660static __inline__ vector signed long long __ATTRS_o_ai
6661vec_vor(vector signed long long __a, vector signed long long __b) {
6662  return __a | __b;
6663}
6664
6665static __inline__ vector signed long long __ATTRS_o_ai
6666vec_vor(vector bool long long __a, vector signed long long __b) {
6667  return (vector signed long long)__a | __b;
6668}
6669
6670static __inline__ vector signed long long __ATTRS_o_ai
6671vec_vor(vector signed long long __a, vector bool long long __b) {
6672  return __a | (vector signed long long)__b;
6673}
6674
6675static __inline__ vector unsigned long long __ATTRS_o_ai
6676vec_vor(vector unsigned long long __a, vector unsigned long long __b) {
6677  return __a | __b;
6678}
6679
6680static __inline__ vector unsigned long long __ATTRS_o_ai
6681vec_vor(vector bool long long __a, vector unsigned long long __b) {
6682  return (vector unsigned long long)__a | __b;
6683}
6684
6685static __inline__ vector unsigned long long __ATTRS_o_ai
6686vec_vor(vector unsigned long long __a, vector bool long long __b) {
6687  return __a | (vector unsigned long long)__b;
6688}
6689
6690static __inline__ vector bool long long __ATTRS_o_ai
6691vec_vor(vector bool long long __a, vector bool long long __b) {
6692  return __a | __b;
6693}
6694#endif
6695
6696/* vec_pack */
6697
6698/* The various vector pack instructions have a big-endian bias, so for
6699   little endian we must handle reversed element numbering.  */
6700
6701static __inline__ vector signed char __ATTRS_o_ai
6702vec_pack(vector signed short __a, vector signed short __b) {
6703#ifdef __LITTLE_ENDIAN__
6704  return (vector signed char)vec_perm(
6705      __a, __b,
6706      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6707                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6708#else
6709  return (vector signed char)vec_perm(
6710      __a, __b,
6711      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6712                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6713#endif
6714}
6715
6716static __inline__ vector unsigned char __ATTRS_o_ai
6717vec_pack(vector unsigned short __a, vector unsigned short __b) {
6718#ifdef __LITTLE_ENDIAN__
6719  return (vector unsigned char)vec_perm(
6720      __a, __b,
6721      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6722                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6723#else
6724  return (vector unsigned char)vec_perm(
6725      __a, __b,
6726      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6727                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6728#endif
6729}
6730
6731static __inline__ vector bool char __ATTRS_o_ai
6732vec_pack(vector bool short __a, vector bool short __b) {
6733#ifdef __LITTLE_ENDIAN__
6734  return (vector bool char)vec_perm(
6735      __a, __b,
6736      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6737                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6738#else
6739  return (vector bool char)vec_perm(
6740      __a, __b,
6741      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6742                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6743#endif
6744}
6745
6746static __inline__ vector short __ATTRS_o_ai vec_pack(vector int __a,
6747                                                     vector int __b) {
6748#ifdef __LITTLE_ENDIAN__
6749  return (vector short)vec_perm(
6750      __a, __b,
6751      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6752                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6753#else
6754  return (vector short)vec_perm(
6755      __a, __b,
6756      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6757                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6758#endif
6759}
6760
6761static __inline__ vector unsigned short __ATTRS_o_ai
6762vec_pack(vector unsigned int __a, vector unsigned int __b) {
6763#ifdef __LITTLE_ENDIAN__
6764  return (vector unsigned short)vec_perm(
6765      __a, __b,
6766      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6767                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6768#else
6769  return (vector unsigned short)vec_perm(
6770      __a, __b,
6771      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6772                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6773#endif
6774}
6775
6776static __inline__ vector bool short __ATTRS_o_ai vec_pack(vector bool int __a,
6777                                                          vector bool int __b) {
6778#ifdef __LITTLE_ENDIAN__
6779  return (vector bool short)vec_perm(
6780      __a, __b,
6781      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6782                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6783#else
6784  return (vector bool short)vec_perm(
6785      __a, __b,
6786      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6787                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6788#endif
6789}
6790
6791#ifdef __VSX__
6792static __inline__ vector signed int __ATTRS_o_ai
6793vec_pack(vector signed long long __a, vector signed long long __b) {
6794#ifdef __LITTLE_ENDIAN__
6795  return (vector signed int)vec_perm(
6796      __a, __b,
6797      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6798                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6799#else
6800  return (vector signed int)vec_perm(
6801      __a, __b,
6802      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6803                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6804#endif
6805}
6806static __inline__ vector unsigned int __ATTRS_o_ai
6807vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
6808#ifdef __LITTLE_ENDIAN__
6809  return (vector unsigned int)vec_perm(
6810      __a, __b,
6811      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6812                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6813#else
6814  return (vector unsigned int)vec_perm(
6815      __a, __b,
6816      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6817                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6818#endif
6819}
6820
6821static __inline__ vector bool int __ATTRS_o_ai
6822vec_pack(vector bool long long __a, vector bool long long __b) {
6823#ifdef __LITTLE_ENDIAN__
6824  return (vector bool int)vec_perm(
6825      __a, __b,
6826      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6827                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6828#else
6829  return (vector bool int)vec_perm(
6830      __a, __b,
6831      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6832                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6833#endif
6834}
6835
6836static __inline__ vector float __ATTRS_o_ai
6837vec_pack(vector double __a, vector double __b) {
6838  return (vector float) (__a[0], __a[1], __b[0], __b[1]);
6839}
6840#endif
6841
6842#ifdef __POWER9_VECTOR__
6843static __inline__ vector unsigned short __ATTRS_o_ai
6844vec_pack_to_short_fp32(vector float __a, vector float __b) {
6845  vector float __resa = __builtin_vsx_xvcvsphp(__a);
6846  vector float __resb = __builtin_vsx_xvcvsphp(__b);
6847#ifdef __LITTLE_ENDIAN__
6848  return (vector unsigned short)vec_mergee(__resa, __resb);
6849#else
6850  return (vector unsigned short)vec_mergeo(__resa, __resb);
6851#endif
6852}
6853
6854#endif
6855/* vec_vpkuhum */
6856
6857#define __builtin_altivec_vpkuhum vec_vpkuhum
6858
6859static __inline__ vector signed char __ATTRS_o_ai
6860vec_vpkuhum(vector signed short __a, vector signed short __b) {
6861#ifdef __LITTLE_ENDIAN__
6862  return (vector signed char)vec_perm(
6863      __a, __b,
6864      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6865                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6866#else
6867  return (vector signed char)vec_perm(
6868      __a, __b,
6869      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6870                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6871#endif
6872}
6873
6874static __inline__ vector unsigned char __ATTRS_o_ai
6875vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) {
6876#ifdef __LITTLE_ENDIAN__
6877  return (vector unsigned char)vec_perm(
6878      __a, __b,
6879      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6880                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6881#else
6882  return (vector unsigned char)vec_perm(
6883      __a, __b,
6884      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6885                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6886#endif
6887}
6888
6889static __inline__ vector bool char __ATTRS_o_ai
6890vec_vpkuhum(vector bool short __a, vector bool short __b) {
6891#ifdef __LITTLE_ENDIAN__
6892  return (vector bool char)vec_perm(
6893      __a, __b,
6894      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
6895                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
6896#else
6897  return (vector bool char)vec_perm(
6898      __a, __b,
6899      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
6900                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
6901#endif
6902}
6903
6904/* vec_vpkuwum */
6905
6906#define __builtin_altivec_vpkuwum vec_vpkuwum
6907
6908static __inline__ vector short __ATTRS_o_ai vec_vpkuwum(vector int __a,
6909                                                        vector int __b) {
6910#ifdef __LITTLE_ENDIAN__
6911  return (vector short)vec_perm(
6912      __a, __b,
6913      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6914                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6915#else
6916  return (vector short)vec_perm(
6917      __a, __b,
6918      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6919                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6920#endif
6921}
6922
6923static __inline__ vector unsigned short __ATTRS_o_ai
6924vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) {
6925#ifdef __LITTLE_ENDIAN__
6926  return (vector unsigned short)vec_perm(
6927      __a, __b,
6928      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6929                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6930#else
6931  return (vector unsigned short)vec_perm(
6932      __a, __b,
6933      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6934                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6935#endif
6936}
6937
6938static __inline__ vector bool short __ATTRS_o_ai
6939vec_vpkuwum(vector bool int __a, vector bool int __b) {
6940#ifdef __LITTLE_ENDIAN__
6941  return (vector bool short)vec_perm(
6942      __a, __b,
6943      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
6944                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
6945#else
6946  return (vector bool short)vec_perm(
6947      __a, __b,
6948      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
6949                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
6950#endif
6951}
6952
6953/* vec_vpkudum */
6954
6955#ifdef __POWER8_VECTOR__
6956#define __builtin_altivec_vpkudum vec_vpkudum
6957
6958static __inline__ vector int __ATTRS_o_ai vec_vpkudum(vector long long __a,
6959                                                      vector long long __b) {
6960#ifdef __LITTLE_ENDIAN__
6961  return (vector int)vec_perm(
6962      __a, __b,
6963      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6964                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6965#else
6966  return (vector int)vec_perm(
6967      __a, __b,
6968      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6969                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6970#endif
6971}
6972
6973static __inline__ vector unsigned int __ATTRS_o_ai
6974vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) {
6975#ifdef __LITTLE_ENDIAN__
6976  return (vector unsigned int)vec_perm(
6977      __a, __b,
6978      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6979                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6980#else
6981  return (vector unsigned int)vec_perm(
6982      __a, __b,
6983      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6984                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
6985#endif
6986}
6987
6988static __inline__ vector bool int __ATTRS_o_ai
6989vec_vpkudum(vector bool long long __a, vector bool long long __b) {
6990#ifdef __LITTLE_ENDIAN__
6991  return (vector bool int)vec_perm(
6992      (vector long long)__a, (vector long long)__b,
6993      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
6994                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
6995#else
6996  return (vector bool int)vec_perm(
6997      (vector long long)__a, (vector long long)__b,
6998      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
6999                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
7000#endif
7001}
7002#endif
7003
7004/* vec_packpx */
7005
7006static __inline__ vector pixel __attribute__((__always_inline__))
7007vec_packpx(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_vpkpx */
7016
7017static __inline__ vector pixel __attribute__((__always_inline__))
7018vec_vpkpx(vector unsigned int __a, vector unsigned int __b) {
7019#ifdef __LITTLE_ENDIAN__
7020  return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
7021#else
7022  return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
7023#endif
7024}
7025
7026/* vec_packs */
7027
7028static __inline__ vector signed char __ATTRS_o_ai vec_packs(vector short __a,
7029                                                            vector short __b) {
7030#ifdef __LITTLE_ENDIAN__
7031  return __builtin_altivec_vpkshss(__b, __a);
7032#else
7033  return __builtin_altivec_vpkshss(__a, __b);
7034#endif
7035}
7036
7037static __inline__ vector unsigned char __ATTRS_o_ai
7038vec_packs(vector unsigned short __a, vector unsigned short __b) {
7039#ifdef __LITTLE_ENDIAN__
7040  return __builtin_altivec_vpkuhus(__b, __a);
7041#else
7042  return __builtin_altivec_vpkuhus(__a, __b);
7043#endif
7044}
7045
7046static __inline__ vector signed short __ATTRS_o_ai vec_packs(vector int __a,
7047                                                             vector int __b) {
7048#ifdef __LITTLE_ENDIAN__
7049  return __builtin_altivec_vpkswss(__b, __a);
7050#else
7051  return __builtin_altivec_vpkswss(__a, __b);
7052#endif
7053}
7054
7055static __inline__ vector unsigned short __ATTRS_o_ai
7056vec_packs(vector unsigned int __a, vector unsigned int __b) {
7057#ifdef __LITTLE_ENDIAN__
7058  return __builtin_altivec_vpkuwus(__b, __a);
7059#else
7060  return __builtin_altivec_vpkuwus(__a, __b);
7061#endif
7062}
7063
7064#ifdef __POWER8_VECTOR__
7065static __inline__ vector int __ATTRS_o_ai vec_packs(vector long long __a,
7066                                                    vector long long __b) {
7067#ifdef __LITTLE_ENDIAN__
7068  return __builtin_altivec_vpksdss(__b, __a);
7069#else
7070  return __builtin_altivec_vpksdss(__a, __b);
7071#endif
7072}
7073
7074static __inline__ vector unsigned int __ATTRS_o_ai
7075vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
7076#ifdef __LITTLE_ENDIAN__
7077  return __builtin_altivec_vpkudus(__b, __a);
7078#else
7079  return __builtin_altivec_vpkudus(__a, __b);
7080#endif
7081}
7082#endif
7083
7084/* vec_vpkshss */
7085
7086static __inline__ vector signed char __attribute__((__always_inline__))
7087vec_vpkshss(vector short __a, vector short __b) {
7088#ifdef __LITTLE_ENDIAN__
7089  return __builtin_altivec_vpkshss(__b, __a);
7090#else
7091  return __builtin_altivec_vpkshss(__a, __b);
7092#endif
7093}
7094
7095/* vec_vpksdss */
7096
7097#ifdef __POWER8_VECTOR__
7098static __inline__ vector int __ATTRS_o_ai vec_vpksdss(vector long long __a,
7099                                                      vector long long __b) {
7100#ifdef __LITTLE_ENDIAN__
7101  return __builtin_altivec_vpksdss(__b, __a);
7102#else
7103  return __builtin_altivec_vpksdss(__a, __b);
7104#endif
7105}
7106#endif
7107
7108/* vec_vpkuhus */
7109
7110static __inline__ vector unsigned char __attribute__((__always_inline__))
7111vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) {
7112#ifdef __LITTLE_ENDIAN__
7113  return __builtin_altivec_vpkuhus(__b, __a);
7114#else
7115  return __builtin_altivec_vpkuhus(__a, __b);
7116#endif
7117}
7118
7119/* vec_vpkudus */
7120
7121#ifdef __POWER8_VECTOR__
7122static __inline__ vector unsigned int __attribute__((__always_inline__))
7123vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) {
7124#ifdef __LITTLE_ENDIAN__
7125  return __builtin_altivec_vpkudus(__b, __a);
7126#else
7127  return __builtin_altivec_vpkudus(__a, __b);
7128#endif
7129}
7130#endif
7131
7132/* vec_vpkswss */
7133
7134static __inline__ vector signed short __attribute__((__always_inline__))
7135vec_vpkswss(vector int __a, vector int __b) {
7136#ifdef __LITTLE_ENDIAN__
7137  return __builtin_altivec_vpkswss(__b, __a);
7138#else
7139  return __builtin_altivec_vpkswss(__a, __b);
7140#endif
7141}
7142
7143/* vec_vpkuwus */
7144
7145static __inline__ vector unsigned short __attribute__((__always_inline__))
7146vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) {
7147#ifdef __LITTLE_ENDIAN__
7148  return __builtin_altivec_vpkuwus(__b, __a);
7149#else
7150  return __builtin_altivec_vpkuwus(__a, __b);
7151#endif
7152}
7153
7154/* vec_packsu */
7155
7156static __inline__ vector unsigned char __ATTRS_o_ai
7157vec_packsu(vector short __a, vector short __b) {
7158#ifdef __LITTLE_ENDIAN__
7159  return __builtin_altivec_vpkshus(__b, __a);
7160#else
7161  return __builtin_altivec_vpkshus(__a, __b);
7162#endif
7163}
7164
7165static __inline__ vector unsigned char __ATTRS_o_ai
7166vec_packsu(vector unsigned short __a, vector unsigned short __b) {
7167#ifdef __LITTLE_ENDIAN__
7168  return __builtin_altivec_vpkuhus(__b, __a);
7169#else
7170  return __builtin_altivec_vpkuhus(__a, __b);
7171#endif
7172}
7173
7174static __inline__ vector unsigned short __ATTRS_o_ai
7175vec_packsu(vector int __a, vector int __b) {
7176#ifdef __LITTLE_ENDIAN__
7177  return __builtin_altivec_vpkswus(__b, __a);
7178#else
7179  return __builtin_altivec_vpkswus(__a, __b);
7180#endif
7181}
7182
7183static __inline__ vector unsigned short __ATTRS_o_ai
7184vec_packsu(vector unsigned int __a, vector unsigned int __b) {
7185#ifdef __LITTLE_ENDIAN__
7186  return __builtin_altivec_vpkuwus(__b, __a);
7187#else
7188  return __builtin_altivec_vpkuwus(__a, __b);
7189#endif
7190}
7191
7192#ifdef __POWER8_VECTOR__
7193static __inline__ vector unsigned int __ATTRS_o_ai
7194vec_packsu(vector long long __a, vector long long __b) {
7195#ifdef __LITTLE_ENDIAN__
7196  return __builtin_altivec_vpksdus(__b, __a);
7197#else
7198  return __builtin_altivec_vpksdus(__a, __b);
7199#endif
7200}
7201
7202static __inline__ vector unsigned int __ATTRS_o_ai
7203vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
7204#ifdef __LITTLE_ENDIAN__
7205  return __builtin_altivec_vpkudus(__b, __a);
7206#else
7207  return __builtin_altivec_vpkudus(__a, __b);
7208#endif
7209}
7210#endif
7211
7212/* vec_vpkshus */
7213
7214static __inline__ vector unsigned char __ATTRS_o_ai
7215vec_vpkshus(vector short __a, vector short __b) {
7216#ifdef __LITTLE_ENDIAN__
7217  return __builtin_altivec_vpkshus(__b, __a);
7218#else
7219  return __builtin_altivec_vpkshus(__a, __b);
7220#endif
7221}
7222
7223static __inline__ vector unsigned char __ATTRS_o_ai
7224vec_vpkshus(vector unsigned short __a, vector unsigned short __b) {
7225#ifdef __LITTLE_ENDIAN__
7226  return __builtin_altivec_vpkuhus(__b, __a);
7227#else
7228  return __builtin_altivec_vpkuhus(__a, __b);
7229#endif
7230}
7231
7232/* vec_vpkswus */
7233
7234static __inline__ vector unsigned short __ATTRS_o_ai
7235vec_vpkswus(vector int __a, vector int __b) {
7236#ifdef __LITTLE_ENDIAN__
7237  return __builtin_altivec_vpkswus(__b, __a);
7238#else
7239  return __builtin_altivec_vpkswus(__a, __b);
7240#endif
7241}
7242
7243static __inline__ vector unsigned short __ATTRS_o_ai
7244vec_vpkswus(vector unsigned int __a, vector unsigned int __b) {
7245#ifdef __LITTLE_ENDIAN__
7246  return __builtin_altivec_vpkuwus(__b, __a);
7247#else
7248  return __builtin_altivec_vpkuwus(__a, __b);
7249#endif
7250}
7251
7252/* vec_vpksdus */
7253
7254#ifdef __POWER8_VECTOR__
7255static __inline__ vector unsigned int __ATTRS_o_ai
7256vec_vpksdus(vector long long __a, vector long long __b) {
7257#ifdef __LITTLE_ENDIAN__
7258  return __builtin_altivec_vpksdus(__b, __a);
7259#else
7260  return __builtin_altivec_vpksdus(__a, __b);
7261#endif
7262}
7263#endif
7264
7265/* vec_perm */
7266
7267// The vperm instruction is defined architecturally with a big-endian bias.
7268// For little endian, we swap the input operands and invert the permute
7269// control vector.  Only the rightmost 5 bits matter, so we could use
7270// a vector of all 31s instead of all 255s to perform the inversion.
7271// However, when the PCV is not a constant, using 255 has an advantage
7272// in that the vec_xor can be recognized as a vec_nor (and for P8 and
7273// later, possibly a vec_nand).
7274
7275static __inline__ vector signed char __ATTRS_o_ai vec_perm(
7276    vector signed char __a, vector signed char __b, vector unsigned char __c) {
7277#ifdef __LITTLE_ENDIAN__
7278  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7279                              255, 255, 255, 255, 255, 255, 255, 255};
7280  __d = vec_xor(__c, __d);
7281  return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b,
7282                                                         (vector int)__a, __d);
7283#else
7284  return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a,
7285                                                         (vector int)__b, __c);
7286#endif
7287}
7288
7289static __inline__ vector unsigned char __ATTRS_o_ai
7290vec_perm(vector unsigned char __a, vector unsigned char __b,
7291         vector unsigned char __c) {
7292#ifdef __LITTLE_ENDIAN__
7293  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7294                              255, 255, 255, 255, 255, 255, 255, 255};
7295  __d = vec_xor(__c, __d);
7296  return (vector unsigned char)__builtin_altivec_vperm_4si(
7297      (vector int)__b, (vector int)__a, __d);
7298#else
7299  return (vector unsigned char)__builtin_altivec_vperm_4si(
7300      (vector int)__a, (vector int)__b, __c);
7301#endif
7302}
7303
7304static __inline__ vector bool char __ATTRS_o_ai
7305vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) {
7306#ifdef __LITTLE_ENDIAN__
7307  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7308                              255, 255, 255, 255, 255, 255, 255, 255};
7309  __d = vec_xor(__c, __d);
7310  return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b,
7311                                                       (vector int)__a, __d);
7312#else
7313  return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a,
7314                                                       (vector int)__b, __c);
7315#endif
7316}
7317
7318static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
7319                                                     vector signed short __b,
7320                                                     vector unsigned char __c) {
7321#ifdef __LITTLE_ENDIAN__
7322  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7323                              255, 255, 255, 255, 255, 255, 255, 255};
7324  __d = vec_xor(__c, __d);
7325  return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b,
7326                                                          (vector int)__a, __d);
7327#else
7328  return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a,
7329                                                          (vector int)__b, __c);
7330#endif
7331}
7332
7333static __inline__ vector unsigned short __ATTRS_o_ai
7334vec_perm(vector unsigned short __a, vector unsigned short __b,
7335         vector unsigned char __c) {
7336#ifdef __LITTLE_ENDIAN__
7337  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7338                              255, 255, 255, 255, 255, 255, 255, 255};
7339  __d = vec_xor(__c, __d);
7340  return (vector unsigned short)__builtin_altivec_vperm_4si(
7341      (vector int)__b, (vector int)__a, __d);
7342#else
7343  return (vector unsigned short)__builtin_altivec_vperm_4si(
7344      (vector int)__a, (vector int)__b, __c);
7345#endif
7346}
7347
7348static __inline__ vector bool short __ATTRS_o_ai vec_perm(
7349    vector bool short __a, vector bool short __b, vector unsigned char __c) {
7350#ifdef __LITTLE_ENDIAN__
7351  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7352                              255, 255, 255, 255, 255, 255, 255, 255};
7353  __d = vec_xor(__c, __d);
7354  return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b,
7355                                                        (vector int)__a, __d);
7356#else
7357  return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a,
7358                                                        (vector int)__b, __c);
7359#endif
7360}
7361
7362static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
7363                                                     vector pixel __b,
7364                                                     vector unsigned char __c) {
7365#ifdef __LITTLE_ENDIAN__
7366  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7367                              255, 255, 255, 255, 255, 255, 255, 255};
7368  __d = vec_xor(__c, __d);
7369  return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b,
7370                                                   (vector int)__a, __d);
7371#else
7372  return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a,
7373                                                   (vector int)__b, __c);
7374#endif
7375}
7376
7377static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
7378                                                   vector signed int __b,
7379                                                   vector unsigned char __c) {
7380#ifdef __LITTLE_ENDIAN__
7381  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7382                              255, 255, 255, 255, 255, 255, 255, 255};
7383  __d = vec_xor(__c, __d);
7384  return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d);
7385#else
7386  return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c);
7387#endif
7388}
7389
7390static __inline__ vector unsigned int __ATTRS_o_ai
7391vec_perm(vector unsigned int __a, vector unsigned int __b,
7392         vector unsigned char __c) {
7393#ifdef __LITTLE_ENDIAN__
7394  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7395                              255, 255, 255, 255, 255, 255, 255, 255};
7396  __d = vec_xor(__c, __d);
7397  return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b,
7398                                                          (vector int)__a, __d);
7399#else
7400  return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a,
7401                                                          (vector int)__b, __c);
7402#endif
7403}
7404
7405static __inline__ vector bool int __ATTRS_o_ai
7406vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
7407#ifdef __LITTLE_ENDIAN__
7408  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7409                              255, 255, 255, 255, 255, 255, 255, 255};
7410  __d = vec_xor(__c, __d);
7411  return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b,
7412                                                      (vector int)__a, __d);
7413#else
7414  return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a,
7415                                                      (vector int)__b, __c);
7416#endif
7417}
7418
7419static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
7420                                                     vector float __b,
7421                                                     vector unsigned char __c) {
7422#ifdef __LITTLE_ENDIAN__
7423  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7424                              255, 255, 255, 255, 255, 255, 255, 255};
7425  __d = vec_xor(__c, __d);
7426  return (vector float)__builtin_altivec_vperm_4si((vector int)__b,
7427                                                   (vector int)__a, __d);
7428#else
7429  return (vector float)__builtin_altivec_vperm_4si((vector int)__a,
7430                                                   (vector int)__b, __c);
7431#endif
7432}
7433
7434#ifdef __VSX__
7435static __inline__ vector long long __ATTRS_o_ai
7436vec_perm(vector signed long long __a, vector signed long long __b,
7437         vector unsigned char __c) {
7438#ifdef __LITTLE_ENDIAN__
7439  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7440                              255, 255, 255, 255, 255, 255, 255, 255};
7441  __d = vec_xor(__c, __d);
7442  return (vector signed long long)__builtin_altivec_vperm_4si(
7443      (vector int)__b, (vector int)__a, __d);
7444#else
7445  return (vector signed long long)__builtin_altivec_vperm_4si(
7446      (vector int)__a, (vector int)__b, __c);
7447#endif
7448}
7449
7450static __inline__ vector unsigned long long __ATTRS_o_ai
7451vec_perm(vector unsigned long long __a, vector unsigned long long __b,
7452         vector unsigned char __c) {
7453#ifdef __LITTLE_ENDIAN__
7454  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7455                              255, 255, 255, 255, 255, 255, 255, 255};
7456  __d = vec_xor(__c, __d);
7457  return (vector unsigned long long)__builtin_altivec_vperm_4si(
7458      (vector int)__b, (vector int)__a, __d);
7459#else
7460  return (vector unsigned long long)__builtin_altivec_vperm_4si(
7461      (vector int)__a, (vector int)__b, __c);
7462#endif
7463}
7464
7465static __inline__ vector bool long long __ATTRS_o_ai
7466vec_perm(vector bool long long __a, vector bool long long __b,
7467         vector unsigned char __c) {
7468#ifdef __LITTLE_ENDIAN__
7469  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7470                              255, 255, 255, 255, 255, 255, 255, 255};
7471  __d = vec_xor(__c, __d);
7472  return (vector bool long long)__builtin_altivec_vperm_4si(
7473      (vector int)__b, (vector int)__a, __d);
7474#else
7475  return (vector bool long long)__builtin_altivec_vperm_4si(
7476      (vector int)__a, (vector int)__b, __c);
7477#endif
7478}
7479
7480static __inline__ vector double __ATTRS_o_ai
7481vec_perm(vector double __a, vector double __b, vector unsigned char __c) {
7482#ifdef __LITTLE_ENDIAN__
7483  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
7484                              255, 255, 255, 255, 255, 255, 255, 255};
7485  __d = vec_xor(__c, __d);
7486  return (vector double)__builtin_altivec_vperm_4si((vector int)__b,
7487                                                    (vector int)__a, __d);
7488#else
7489  return (vector double)__builtin_altivec_vperm_4si((vector int)__a,
7490                                                    (vector int)__b, __c);
7491#endif
7492}
7493#endif
7494
7495/* vec_vperm */
7496
7497static __inline__ vector signed char __ATTRS_o_ai vec_vperm(
7498    vector signed char __a, vector signed char __b, vector unsigned char __c) {
7499  return vec_perm(__a, __b, __c);
7500}
7501
7502static __inline__ vector unsigned char __ATTRS_o_ai
7503vec_vperm(vector unsigned char __a, vector unsigned char __b,
7504          vector unsigned char __c) {
7505  return vec_perm(__a, __b, __c);
7506}
7507
7508static __inline__ vector bool char __ATTRS_o_ai vec_vperm(
7509    vector bool char __a, vector bool char __b, vector unsigned char __c) {
7510  return vec_perm(__a, __b, __c);
7511}
7512
7513static __inline__ vector short __ATTRS_o_ai
7514vec_vperm(vector short __a, vector short __b, vector unsigned char __c) {
7515  return vec_perm(__a, __b, __c);
7516}
7517
7518static __inline__ vector unsigned short __ATTRS_o_ai
7519vec_vperm(vector unsigned short __a, vector unsigned short __b,
7520          vector unsigned char __c) {
7521  return vec_perm(__a, __b, __c);
7522}
7523
7524static __inline__ vector bool short __ATTRS_o_ai vec_vperm(
7525    vector bool short __a, vector bool short __b, vector unsigned char __c) {
7526  return vec_perm(__a, __b, __c);
7527}
7528
7529static __inline__ vector pixel __ATTRS_o_ai
7530vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) {
7531  return vec_perm(__a, __b, __c);
7532}
7533
7534static __inline__ vector int __ATTRS_o_ai vec_vperm(vector int __a,
7535                                                    vector int __b,
7536                                                    vector unsigned char __c) {
7537  return vec_perm(__a, __b, __c);
7538}
7539
7540static __inline__ vector unsigned int __ATTRS_o_ai
7541vec_vperm(vector unsigned int __a, vector unsigned int __b,
7542          vector unsigned char __c) {
7543  return vec_perm(__a, __b, __c);
7544}
7545
7546static __inline__ vector bool int __ATTRS_o_ai
7547vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
7548  return vec_perm(__a, __b, __c);
7549}
7550
7551static __inline__ vector float __ATTRS_o_ai
7552vec_vperm(vector float __a, vector float __b, vector unsigned char __c) {
7553  return vec_perm(__a, __b, __c);
7554}
7555
7556#ifdef __VSX__
7557static __inline__ vector long long __ATTRS_o_ai vec_vperm(
7558    vector long long __a, vector long long __b, vector unsigned char __c) {
7559  return vec_perm(__a, __b, __c);
7560}
7561
7562static __inline__ vector unsigned long long __ATTRS_o_ai
7563vec_vperm(vector unsigned long long __a, vector unsigned long long __b,
7564          vector unsigned char __c) {
7565  return vec_perm(__a, __b, __c);
7566}
7567
7568static __inline__ vector double __ATTRS_o_ai
7569vec_vperm(vector double __a, vector double __b, vector unsigned char __c) {
7570  return vec_perm(__a, __b, __c);
7571}
7572#endif
7573
7574/* vec_re */
7575
7576static __inline__ vector float __ATTRS_o_ai vec_re(vector float __a) {
7577#ifdef __VSX__
7578  return __builtin_vsx_xvresp(__a);
7579#else
7580  return __builtin_altivec_vrefp(__a);
7581#endif
7582}
7583
7584#ifdef __VSX__
7585static __inline__ vector double __ATTRS_o_ai vec_re(vector double __a) {
7586  return __builtin_vsx_xvredp(__a);
7587}
7588#endif
7589
7590/* vec_vrefp */
7591
7592static __inline__ vector float __attribute__((__always_inline__))
7593vec_vrefp(vector float __a) {
7594  return __builtin_altivec_vrefp(__a);
7595}
7596
7597/* vec_rl */
7598
7599static __inline__ vector signed char __ATTRS_o_ai
7600vec_rl(vector signed char __a, vector unsigned char __b) {
7601  return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
7602}
7603
7604static __inline__ vector unsigned char __ATTRS_o_ai
7605vec_rl(vector unsigned char __a, vector unsigned char __b) {
7606  return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
7607}
7608
7609static __inline__ vector short __ATTRS_o_ai vec_rl(vector short __a,
7610                                                   vector unsigned short __b) {
7611  return __builtin_altivec_vrlh(__a, __b);
7612}
7613
7614static __inline__ vector unsigned short __ATTRS_o_ai
7615vec_rl(vector unsigned short __a, vector unsigned short __b) {
7616  return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
7617}
7618
7619static __inline__ vector int __ATTRS_o_ai vec_rl(vector int __a,
7620                                                 vector unsigned int __b) {
7621  return __builtin_altivec_vrlw(__a, __b);
7622}
7623
7624static __inline__ vector unsigned int __ATTRS_o_ai
7625vec_rl(vector unsigned int __a, vector unsigned int __b) {
7626  return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
7627}
7628
7629#ifdef __POWER8_VECTOR__
7630static __inline__ vector signed long long __ATTRS_o_ai
7631vec_rl(vector signed long long __a, vector unsigned long long __b) {
7632  return __builtin_altivec_vrld(__a, __b);
7633}
7634
7635static __inline__ vector unsigned long long __ATTRS_o_ai
7636vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
7637  return __builtin_altivec_vrld(__a, __b);
7638}
7639#endif
7640
7641/* vec_rlmi */
7642#ifdef __POWER9_VECTOR__
7643static __inline__ vector unsigned int __ATTRS_o_ai
7644vec_rlmi(vector unsigned int __a, vector unsigned int __b,
7645         vector unsigned int __c) {
7646  return __builtin_altivec_vrlwmi(__a, __c, __b);
7647}
7648
7649static __inline__ vector unsigned long long __ATTRS_o_ai
7650vec_rlmi(vector unsigned long long __a, vector unsigned long long __b,
7651         vector unsigned long long __c) {
7652  return __builtin_altivec_vrldmi(__a, __c, __b);
7653}
7654
7655/* vec_rlnm */
7656static __inline__ vector unsigned int __ATTRS_o_ai
7657vec_rlnm(vector unsigned int __a, vector unsigned int __b,
7658         vector unsigned int __c) {
7659  vector unsigned int OneByte = { 0x8, 0x8, 0x8, 0x8 };
7660  return __builtin_altivec_vrlwnm(__a, ((__c << OneByte) | __b));
7661}
7662
7663static __inline__ vector unsigned long long __ATTRS_o_ai
7664vec_rlnm(vector unsigned long long __a, vector unsigned long long __b,
7665         vector unsigned long long __c) {
7666  vector unsigned long long OneByte = { 0x8, 0x8 };
7667  return __builtin_altivec_vrldnm(__a, ((__c << OneByte) | __b));
7668}
7669#endif
7670
7671/* vec_vrlb */
7672
7673static __inline__ vector signed char __ATTRS_o_ai
7674vec_vrlb(vector signed char __a, vector unsigned char __b) {
7675  return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
7676}
7677
7678static __inline__ vector unsigned char __ATTRS_o_ai
7679vec_vrlb(vector unsigned char __a, vector unsigned char __b) {
7680  return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
7681}
7682
7683/* vec_vrlh */
7684
7685static __inline__ vector short __ATTRS_o_ai
7686vec_vrlh(vector short __a, vector unsigned short __b) {
7687  return __builtin_altivec_vrlh(__a, __b);
7688}
7689
7690static __inline__ vector unsigned short __ATTRS_o_ai
7691vec_vrlh(vector unsigned short __a, vector unsigned short __b) {
7692  return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
7693}
7694
7695/* vec_vrlw */
7696
7697static __inline__ vector int __ATTRS_o_ai vec_vrlw(vector int __a,
7698                                                   vector unsigned int __b) {
7699  return __builtin_altivec_vrlw(__a, __b);
7700}
7701
7702static __inline__ vector unsigned int __ATTRS_o_ai
7703vec_vrlw(vector unsigned int __a, vector unsigned int __b) {
7704  return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
7705}
7706
7707/* vec_round */
7708
7709static __inline__ vector float __ATTRS_o_ai vec_round(vector float __a) {
7710#ifdef __VSX__
7711  return __builtin_vsx_xvrspi(__a);
7712#else
7713  return __builtin_altivec_vrfin(__a);
7714#endif
7715}
7716
7717#ifdef __VSX__
7718static __inline__ vector double __ATTRS_o_ai vec_round(vector double __a) {
7719  return __builtin_vsx_xvrdpi(__a);
7720}
7721
7722/* vec_rint */
7723
7724static __inline__ vector float __ATTRS_o_ai vec_rint(vector float __a) {
7725  return __builtin_vsx_xvrspic(__a);
7726}
7727
7728static __inline__ vector double __ATTRS_o_ai vec_rint(vector double __a) {
7729  return __builtin_vsx_xvrdpic(__a);
7730}
7731
7732/* vec_nearbyint */
7733
7734static __inline__ vector float __ATTRS_o_ai vec_nearbyint(vector float __a) {
7735  return __builtin_vsx_xvrspi(__a);
7736}
7737
7738static __inline__ vector double __ATTRS_o_ai vec_nearbyint(vector double __a) {
7739  return __builtin_vsx_xvrdpi(__a);
7740}
7741#endif
7742
7743/* vec_vrfin */
7744
7745static __inline__ vector float __attribute__((__always_inline__))
7746vec_vrfin(vector float __a) {
7747  return __builtin_altivec_vrfin(__a);
7748}
7749
7750/* vec_sqrt */
7751
7752#ifdef __VSX__
7753static __inline__ vector float __ATTRS_o_ai vec_sqrt(vector float __a) {
7754  return __builtin_vsx_xvsqrtsp(__a);
7755}
7756
7757static __inline__ vector double __ATTRS_o_ai vec_sqrt(vector double __a) {
7758  return __builtin_vsx_xvsqrtdp(__a);
7759}
7760#endif
7761
7762/* vec_rsqrte */
7763
7764static __inline__ vector float __ATTRS_o_ai vec_rsqrte(vector float __a) {
7765#ifdef __VSX__
7766  return __builtin_vsx_xvrsqrtesp(__a);
7767#else
7768  return __builtin_altivec_vrsqrtefp(__a);
7769#endif
7770}
7771
7772#ifdef __VSX__
7773static __inline__ vector double __ATTRS_o_ai vec_rsqrte(vector double __a) {
7774  return __builtin_vsx_xvrsqrtedp(__a);
7775}
7776#endif
7777
7778/* vec_vrsqrtefp */
7779
7780static __inline__ __vector float __attribute__((__always_inline__))
7781vec_vrsqrtefp(vector float __a) {
7782  return __builtin_altivec_vrsqrtefp(__a);
7783}
7784
7785/* vec_sel */
7786
7787#define __builtin_altivec_vsel_4si vec_sel
7788
7789static __inline__ vector signed char __ATTRS_o_ai vec_sel(
7790    vector signed char __a, vector signed char __b, vector unsigned char __c) {
7791  return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
7792}
7793
7794static __inline__ vector signed char __ATTRS_o_ai
7795vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
7796  return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
7797}
7798
7799static __inline__ vector unsigned char __ATTRS_o_ai
7800vec_sel(vector unsigned char __a, vector unsigned char __b,
7801        vector unsigned char __c) {
7802  return (__a & ~__c) | (__b & __c);
7803}
7804
7805static __inline__ vector unsigned char __ATTRS_o_ai vec_sel(
7806    vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
7807  return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
7808}
7809
7810static __inline__ vector bool char __ATTRS_o_ai
7811vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
7812  return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
7813}
7814
7815static __inline__ vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
7816                                                        vector bool char __b,
7817                                                        vector bool char __c) {
7818  return (__a & ~__c) | (__b & __c);
7819}
7820
7821static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
7822                                                    vector short __b,
7823                                                    vector unsigned short __c) {
7824  return (__a & ~(vector short)__c) | (__b & (vector short)__c);
7825}
7826
7827static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
7828                                                    vector short __b,
7829                                                    vector bool short __c) {
7830  return (__a & ~(vector short)__c) | (__b & (vector short)__c);
7831}
7832
7833static __inline__ vector unsigned short __ATTRS_o_ai
7834vec_sel(vector unsigned short __a, vector unsigned short __b,
7835        vector unsigned short __c) {
7836  return (__a & ~__c) | (__b & __c);
7837}
7838
7839static __inline__ vector unsigned short __ATTRS_o_ai
7840vec_sel(vector unsigned short __a, vector unsigned short __b,
7841        vector bool short __c) {
7842  return (__a & ~(vector unsigned short)__c) |
7843         (__b & (vector unsigned short)__c);
7844}
7845
7846static __inline__ vector bool short __ATTRS_o_ai vec_sel(
7847    vector bool short __a, vector bool short __b, vector unsigned short __c) {
7848  return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
7849}
7850
7851static __inline__ vector bool short __ATTRS_o_ai
7852vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
7853  return (__a & ~__c) | (__b & __c);
7854}
7855
7856static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
7857                                                  vector int __b,
7858                                                  vector unsigned int __c) {
7859  return (__a & ~(vector int)__c) | (__b & (vector int)__c);
7860}
7861
7862static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
7863                                                  vector int __b,
7864                                                  vector bool int __c) {
7865  return (__a & ~(vector int)__c) | (__b & (vector int)__c);
7866}
7867
7868static __inline__ vector unsigned int __ATTRS_o_ai vec_sel(
7869    vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
7870  return (__a & ~__c) | (__b & __c);
7871}
7872
7873static __inline__ vector unsigned int __ATTRS_o_ai
7874vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
7875  return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
7876}
7877
7878static __inline__ vector bool int __ATTRS_o_ai
7879vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
7880  return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
7881}
7882
7883static __inline__ vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
7884                                                       vector bool int __b,
7885                                                       vector bool int __c) {
7886  return (__a & ~__c) | (__b & __c);
7887}
7888
7889static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
7890                                                    vector float __b,
7891                                                    vector unsigned int __c) {
7892  vector int __res = ((vector int)__a & ~(vector int)__c) |
7893                     ((vector int)__b & (vector int)__c);
7894  return (vector float)__res;
7895}
7896
7897static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
7898                                                    vector float __b,
7899                                                    vector bool int __c) {
7900  vector int __res = ((vector int)__a & ~(vector int)__c) |
7901                     ((vector int)__b & (vector int)__c);
7902  return (vector float)__res;
7903}
7904
7905#ifdef __VSX__
7906static __inline__ vector double __ATTRS_o_ai
7907vec_sel(vector double __a, vector double __b, vector bool long long __c) {
7908  vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
7909                           ((vector long long)__b & (vector long long)__c);
7910  return (vector double)__res;
7911}
7912
7913static __inline__ vector double __ATTRS_o_ai
7914vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
7915  vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
7916                           ((vector long long)__b & (vector long long)__c);
7917  return (vector double)__res;
7918}
7919#endif
7920
7921/* vec_vsel */
7922
7923static __inline__ vector signed char __ATTRS_o_ai vec_vsel(
7924    vector signed char __a, vector signed char __b, vector unsigned char __c) {
7925  return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
7926}
7927
7928static __inline__ vector signed char __ATTRS_o_ai
7929vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) {
7930  return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
7931}
7932
7933static __inline__ vector unsigned char __ATTRS_o_ai
7934vec_vsel(vector unsigned char __a, vector unsigned char __b,
7935         vector unsigned char __c) {
7936  return (__a & ~__c) | (__b & __c);
7937}
7938
7939static __inline__ vector unsigned char __ATTRS_o_ai vec_vsel(
7940    vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
7941  return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
7942}
7943
7944static __inline__ vector bool char __ATTRS_o_ai
7945vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
7946  return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
7947}
7948
7949static __inline__ vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
7950                                                         vector bool char __b,
7951                                                         vector bool char __c) {
7952  return (__a & ~__c) | (__b & __c);
7953}
7954
7955static __inline__ vector short __ATTRS_o_ai
7956vec_vsel(vector short __a, vector short __b, vector unsigned short __c) {
7957  return (__a & ~(vector short)__c) | (__b & (vector short)__c);
7958}
7959
7960static __inline__ vector short __ATTRS_o_ai vec_vsel(vector short __a,
7961                                                     vector short __b,
7962                                                     vector bool short __c) {
7963  return (__a & ~(vector short)__c) | (__b & (vector short)__c);
7964}
7965
7966static __inline__ vector unsigned short __ATTRS_o_ai
7967vec_vsel(vector unsigned short __a, vector unsigned short __b,
7968         vector unsigned short __c) {
7969  return (__a & ~__c) | (__b & __c);
7970}
7971
7972static __inline__ vector unsigned short __ATTRS_o_ai
7973vec_vsel(vector unsigned short __a, vector unsigned short __b,
7974         vector bool short __c) {
7975  return (__a & ~(vector unsigned short)__c) |
7976         (__b & (vector unsigned short)__c);
7977}
7978
7979static __inline__ vector bool short __ATTRS_o_ai vec_vsel(
7980    vector bool short __a, vector bool short __b, vector unsigned short __c) {
7981  return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
7982}
7983
7984static __inline__ vector bool short __ATTRS_o_ai
7985vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) {
7986  return (__a & ~__c) | (__b & __c);
7987}
7988
7989static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
7990                                                   vector int __b,
7991                                                   vector unsigned int __c) {
7992  return (__a & ~(vector int)__c) | (__b & (vector int)__c);
7993}
7994
7995static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
7996                                                   vector int __b,
7997                                                   vector bool int __c) {
7998  return (__a & ~(vector int)__c) | (__b & (vector int)__c);
7999}
8000
8001static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
8002    vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
8003  return (__a & ~__c) | (__b & __c);
8004}
8005
8006static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
8007    vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
8008  return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
8009}
8010
8011static __inline__ vector bool int __ATTRS_o_ai
8012vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
8013  return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
8014}
8015
8016static __inline__ vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
8017                                                        vector bool int __b,
8018                                                        vector bool int __c) {
8019  return (__a & ~__c) | (__b & __c);
8020}
8021
8022static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
8023                                                     vector float __b,
8024                                                     vector unsigned int __c) {
8025  vector int __res = ((vector int)__a & ~(vector int)__c) |
8026                     ((vector int)__b & (vector int)__c);
8027  return (vector float)__res;
8028}
8029
8030static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
8031                                                     vector float __b,
8032                                                     vector bool int __c) {
8033  vector int __res = ((vector int)__a & ~(vector int)__c) |
8034                     ((vector int)__b & (vector int)__c);
8035  return (vector float)__res;
8036}
8037
8038/* vec_sl */
8039
8040// vec_sl does modulo arithmetic on __b first, so __b is allowed to be more
8041// than the length of __a.
8042static __inline__ vector unsigned char __ATTRS_o_ai
8043vec_sl(vector unsigned char __a, vector unsigned char __b) {
8044  return __a << (__b %
8045                 (vector unsigned char)(sizeof(unsigned char) * __CHAR_BIT__));
8046}
8047
8048static __inline__ vector signed char __ATTRS_o_ai
8049vec_sl(vector signed char __a, vector unsigned char __b) {
8050  return (vector signed char)vec_sl((vector unsigned char)__a, __b);
8051}
8052
8053static __inline__ vector unsigned short __ATTRS_o_ai
8054vec_sl(vector unsigned short __a, vector unsigned short __b) {
8055  return __a << (__b % (vector unsigned short)(sizeof(unsigned short) *
8056                                               __CHAR_BIT__));
8057}
8058
8059static __inline__ vector short __ATTRS_o_ai vec_sl(vector short __a,
8060                                                   vector unsigned short __b) {
8061  return (vector short)vec_sl((vector unsigned short)__a, __b);
8062}
8063
8064static __inline__ vector unsigned int __ATTRS_o_ai
8065vec_sl(vector unsigned int __a, vector unsigned int __b) {
8066  return __a << (__b %
8067                 (vector unsigned int)(sizeof(unsigned int) * __CHAR_BIT__));
8068}
8069
8070static __inline__ vector int __ATTRS_o_ai vec_sl(vector int __a,
8071                                                 vector unsigned int __b) {
8072  return (vector int)vec_sl((vector unsigned int)__a, __b);
8073}
8074
8075#ifdef __POWER8_VECTOR__
8076static __inline__ vector unsigned long long __ATTRS_o_ai
8077vec_sl(vector unsigned long long __a, vector unsigned long long __b) {
8078  return __a << (__b % (vector unsigned long long)(sizeof(unsigned long long) *
8079                                                   __CHAR_BIT__));
8080}
8081
8082static __inline__ vector long long __ATTRS_o_ai
8083vec_sl(vector long long __a, vector unsigned long long __b) {
8084  return (vector long long)vec_sl((vector unsigned long long)__a, __b);
8085}
8086#endif
8087
8088/* vec_vslb */
8089
8090#define __builtin_altivec_vslb vec_vslb
8091
8092static __inline__ vector signed char __ATTRS_o_ai
8093vec_vslb(vector signed char __a, vector unsigned char __b) {
8094  return vec_sl(__a, __b);
8095}
8096
8097static __inline__ vector unsigned char __ATTRS_o_ai
8098vec_vslb(vector unsigned char __a, vector unsigned char __b) {
8099  return vec_sl(__a, __b);
8100}
8101
8102/* vec_vslh */
8103
8104#define __builtin_altivec_vslh vec_vslh
8105
8106static __inline__ vector short __ATTRS_o_ai
8107vec_vslh(vector short __a, vector unsigned short __b) {
8108  return vec_sl(__a, __b);
8109}
8110
8111static __inline__ vector unsigned short __ATTRS_o_ai
8112vec_vslh(vector unsigned short __a, vector unsigned short __b) {
8113  return vec_sl(__a, __b);
8114}
8115
8116/* vec_vslw */
8117
8118#define __builtin_altivec_vslw vec_vslw
8119
8120static __inline__ vector int __ATTRS_o_ai vec_vslw(vector int __a,
8121                                                   vector unsigned int __b) {
8122  return vec_sl(__a, __b);
8123}
8124
8125static __inline__ vector unsigned int __ATTRS_o_ai
8126vec_vslw(vector unsigned int __a, vector unsigned int __b) {
8127  return vec_sl(__a, __b);
8128}
8129
8130/* vec_sld */
8131
8132#define __builtin_altivec_vsldoi_4si vec_sld
8133
8134static __inline__ vector signed char __ATTRS_o_ai vec_sld(
8135    vector signed char __a, vector signed char __b, unsigned const int __c) {
8136  unsigned char __d = __c & 0x0F;
8137#ifdef __LITTLE_ENDIAN__
8138  return vec_perm(
8139      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8140                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8141                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8142                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8143#else
8144  return vec_perm(
8145      __a, __b,
8146      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8147                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8148                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8149#endif
8150}
8151
8152static __inline__ vector unsigned char __ATTRS_o_ai
8153vec_sld(vector unsigned char __a, vector unsigned char __b,
8154        unsigned const int __c) {
8155  unsigned char __d = __c & 0x0F;
8156#ifdef __LITTLE_ENDIAN__
8157  return vec_perm(
8158      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8159                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8160                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8161                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8162#else
8163  return vec_perm(
8164      __a, __b,
8165      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8166                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8167                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8168#endif
8169}
8170
8171static __inline__ vector bool char __ATTRS_o_ai
8172vec_sld(vector bool char __a, vector bool char __b, unsigned const int __c) {
8173  unsigned char __d = __c & 0x0F;
8174#ifdef __LITTLE_ENDIAN__
8175  return vec_perm(
8176      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8177                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8178                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8179                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8180#else
8181  return vec_perm(
8182      __a, __b,
8183      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8184                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8185                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8186#endif
8187}
8188
8189static __inline__ vector signed short __ATTRS_o_ai vec_sld(
8190    vector signed short __a, vector signed short __b, unsigned const int __c) {
8191  unsigned char __d = __c & 0x0F;
8192#ifdef __LITTLE_ENDIAN__
8193  return vec_perm(
8194      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8195                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8196                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8197                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8198#else
8199  return vec_perm(
8200      __a, __b,
8201      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8202                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8203                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8204#endif
8205}
8206
8207static __inline__ vector unsigned short __ATTRS_o_ai
8208vec_sld(vector unsigned short __a, vector unsigned short __b,
8209        unsigned const int __c) {
8210  unsigned char __d = __c & 0x0F;
8211#ifdef __LITTLE_ENDIAN__
8212  return vec_perm(
8213      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8214                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8215                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8216                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8217#else
8218  return vec_perm(
8219      __a, __b,
8220      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8221                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8222                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8223#endif
8224}
8225
8226static __inline__ vector bool short __ATTRS_o_ai
8227vec_sld(vector bool short __a, vector bool short __b, unsigned const int __c) {
8228  unsigned char __d = __c & 0x0F;
8229#ifdef __LITTLE_ENDIAN__
8230  return vec_perm(
8231      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8232                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8233                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8234                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8235#else
8236  return vec_perm(
8237      __a, __b,
8238      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8239                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8240                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8241#endif
8242}
8243
8244static __inline__ vector pixel __ATTRS_o_ai vec_sld(vector pixel __a,
8245                                                    vector pixel __b,
8246                                                    unsigned const int __c) {
8247  unsigned char __d = __c & 0x0F;
8248#ifdef __LITTLE_ENDIAN__
8249  return vec_perm(
8250      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8251                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8252                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8253                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8254#else
8255  return vec_perm(
8256      __a, __b,
8257      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8258                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8259                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8260#endif
8261}
8262
8263static __inline__ vector signed int __ATTRS_o_ai
8264vec_sld(vector signed int __a, vector signed int __b, unsigned const int __c) {
8265  unsigned char __d = __c & 0x0F;
8266#ifdef __LITTLE_ENDIAN__
8267  return vec_perm(
8268      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8269                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8270                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8271                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8272#else
8273  return vec_perm(
8274      __a, __b,
8275      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8276                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8277                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8278#endif
8279}
8280
8281static __inline__ vector unsigned int __ATTRS_o_ai vec_sld(
8282    vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
8283  unsigned char __d = __c & 0x0F;
8284#ifdef __LITTLE_ENDIAN__
8285  return vec_perm(
8286      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8287                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8288                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8289                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8290#else
8291  return vec_perm(
8292      __a, __b,
8293      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8294                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8295                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8296#endif
8297}
8298
8299static __inline__ vector bool int __ATTRS_o_ai vec_sld(vector bool int __a,
8300                                                       vector bool int __b,
8301                                                       unsigned const int __c) {
8302  unsigned char __d = __c & 0x0F;
8303#ifdef __LITTLE_ENDIAN__
8304  return vec_perm(
8305      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8306                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8307                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8308                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8309#else
8310  return vec_perm(
8311      __a, __b,
8312      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8313                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8314                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8315#endif
8316}
8317
8318static __inline__ vector float __ATTRS_o_ai vec_sld(vector float __a,
8319                                                    vector float __b,
8320                                                    unsigned const int __c) {
8321  unsigned char __d = __c & 0x0F;
8322#ifdef __LITTLE_ENDIAN__
8323  return vec_perm(
8324      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8325                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8326                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8327                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8328#else
8329  return vec_perm(
8330      __a, __b,
8331      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8332                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8333                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8334#endif
8335}
8336
8337#ifdef __VSX__
8338static __inline__ vector bool long long __ATTRS_o_ai
8339vec_sld(vector bool long long __a, vector bool long long __b,
8340        unsigned const int __c) {
8341  unsigned char __d = __c & 0x0F;
8342#ifdef __LITTLE_ENDIAN__
8343  return vec_perm(
8344      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8345                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8346                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8347                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8348#else
8349  return vec_perm(
8350      __a, __b,
8351      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8352                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8353                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8354#endif
8355}
8356
8357static __inline__ vector signed long long __ATTRS_o_ai
8358vec_sld(vector signed long long __a, vector signed long long __b,
8359        unsigned const int __c) {
8360  unsigned char __d = __c & 0x0F;
8361#ifdef __LITTLE_ENDIAN__
8362  return vec_perm(
8363      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8364                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8365                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8366                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8367#else
8368  return vec_perm(
8369      __a, __b,
8370      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8371                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8372                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8373#endif
8374}
8375
8376static __inline__ vector unsigned long long __ATTRS_o_ai
8377vec_sld(vector unsigned long long __a, vector unsigned long long __b,
8378        unsigned const int __c) {
8379  unsigned char __d = __c & 0x0F;
8380#ifdef __LITTLE_ENDIAN__
8381  return vec_perm(
8382      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8383                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8384                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8385                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8386#else
8387  return vec_perm(
8388      __a, __b,
8389      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8390                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8391                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8392#endif
8393}
8394
8395static __inline__ vector double __ATTRS_o_ai vec_sld(vector double __a,
8396                                                     vector double __b,
8397                                                     unsigned const int __c) {
8398  unsigned char __d = __c & 0x0F;
8399#ifdef __LITTLE_ENDIAN__
8400  return vec_perm(
8401      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8402                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8403                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8404                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8405#else
8406  return vec_perm(
8407      __a, __b,
8408      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8409                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8410                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8411#endif
8412}
8413#endif
8414
8415/* vec_sldw */
8416static __inline__ vector signed char __ATTRS_o_ai vec_sldw(
8417    vector signed char __a, vector signed char __b, unsigned const int __c) {
8418  return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8419}
8420
8421static __inline__ vector unsigned char __ATTRS_o_ai
8422vec_sldw(vector unsigned char __a, vector unsigned char __b,
8423         unsigned const int __c) {
8424  return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8425}
8426
8427static __inline__ vector signed short __ATTRS_o_ai vec_sldw(
8428    vector signed short __a, vector signed short __b, unsigned const int __c) {
8429  return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8430}
8431
8432static __inline__ vector unsigned short __ATTRS_o_ai
8433vec_sldw(vector unsigned short __a, vector unsigned short __b,
8434         unsigned const int __c) {
8435  return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8436}
8437
8438static __inline__ vector signed int __ATTRS_o_ai
8439vec_sldw(vector signed int __a, vector signed int __b, unsigned const int __c) {
8440  return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8441}
8442
8443static __inline__ vector unsigned int __ATTRS_o_ai vec_sldw(
8444    vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
8445  return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8446}
8447
8448#ifdef __VSX__
8449static __inline__ vector signed long long __ATTRS_o_ai
8450vec_sldw(vector signed long long __a, vector signed long long __b,
8451         unsigned const int __c) {
8452  return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8453}
8454
8455static __inline__ vector unsigned long long __ATTRS_o_ai
8456vec_sldw(vector unsigned long long __a, vector unsigned long long __b,
8457         unsigned const int __c) {
8458  return vec_sld(__a, __b, ((__c << 2) & 0x0F));
8459}
8460#endif
8461
8462#ifdef __POWER9_VECTOR__
8463/* vec_slv */
8464static __inline__ vector unsigned char __ATTRS_o_ai
8465vec_slv(vector unsigned char __a, vector unsigned char __b) {
8466  return __builtin_altivec_vslv(__a, __b);
8467}
8468
8469/* vec_srv */
8470static __inline__ vector unsigned char __ATTRS_o_ai
8471vec_srv(vector unsigned char __a, vector unsigned char __b) {
8472  return __builtin_altivec_vsrv(__a, __b);
8473}
8474#endif
8475
8476/* vec_vsldoi */
8477
8478static __inline__ vector signed char __ATTRS_o_ai
8479vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) {
8480  unsigned char __d = __c & 0x0F;
8481#ifdef __LITTLE_ENDIAN__
8482  return vec_perm(
8483      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8484                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8485                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8486                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8487#else
8488  return vec_perm(
8489      __a, __b,
8490      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8491                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8492                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8493#endif
8494}
8495
8496static __inline__ vector unsigned char __ATTRS_o_ai vec_vsldoi(
8497    vector unsigned char __a, vector unsigned char __b, unsigned char __c) {
8498  unsigned char __d = __c & 0x0F;
8499#ifdef __LITTLE_ENDIAN__
8500  return vec_perm(
8501      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8502                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8503                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8504                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8505#else
8506  return vec_perm(
8507      __a, __b,
8508      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8509                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8510                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8511#endif
8512}
8513
8514static __inline__ vector short __ATTRS_o_ai vec_vsldoi(vector short __a,
8515                                                       vector short __b,
8516                                                       unsigned char __c) {
8517  unsigned char __d = __c & 0x0F;
8518#ifdef __LITTLE_ENDIAN__
8519  return vec_perm(
8520      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8521                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8522                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8523                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8524#else
8525  return vec_perm(
8526      __a, __b,
8527      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8528                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8529                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8530#endif
8531}
8532
8533static __inline__ vector unsigned short __ATTRS_o_ai vec_vsldoi(
8534    vector unsigned short __a, vector unsigned short __b, unsigned char __c) {
8535  unsigned char __d = __c & 0x0F;
8536#ifdef __LITTLE_ENDIAN__
8537  return vec_perm(
8538      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8539                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8540                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8541                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8542#else
8543  return vec_perm(
8544      __a, __b,
8545      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8546                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8547                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8548#endif
8549}
8550
8551static __inline__ vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a,
8552                                                       vector pixel __b,
8553                                                       unsigned char __c) {
8554  unsigned char __d = __c & 0x0F;
8555#ifdef __LITTLE_ENDIAN__
8556  return vec_perm(
8557      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8558                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8559                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8560                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8561#else
8562  return vec_perm(
8563      __a, __b,
8564      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8565                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8566                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8567#endif
8568}
8569
8570static __inline__ vector int __ATTRS_o_ai vec_vsldoi(vector int __a,
8571                                                     vector int __b,
8572                                                     unsigned char __c) {
8573  unsigned char __d = __c & 0x0F;
8574#ifdef __LITTLE_ENDIAN__
8575  return vec_perm(
8576      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8577                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8578                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8579                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8580#else
8581  return vec_perm(
8582      __a, __b,
8583      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8584                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8585                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8586#endif
8587}
8588
8589static __inline__ vector unsigned int __ATTRS_o_ai vec_vsldoi(
8590    vector unsigned int __a, vector unsigned int __b, unsigned char __c) {
8591  unsigned char __d = __c & 0x0F;
8592#ifdef __LITTLE_ENDIAN__
8593  return vec_perm(
8594      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8595                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8596                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8597                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8598#else
8599  return vec_perm(
8600      __a, __b,
8601      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8602                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8603                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8604#endif
8605}
8606
8607static __inline__ vector float __ATTRS_o_ai vec_vsldoi(vector float __a,
8608                                                       vector float __b,
8609                                                       unsigned char __c) {
8610  unsigned char __d = __c & 0x0F;
8611#ifdef __LITTLE_ENDIAN__
8612  return vec_perm(
8613      __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
8614                                       20 - __d, 21 - __d, 22 - __d, 23 - __d,
8615                                       24 - __d, 25 - __d, 26 - __d, 27 - __d,
8616                                       28 - __d, 29 - __d, 30 - __d, 31 - __d));
8617#else
8618  return vec_perm(
8619      __a, __b,
8620      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
8621                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
8622                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
8623#endif
8624}
8625
8626/* vec_sll */
8627
8628static __inline__ vector signed char __ATTRS_o_ai
8629vec_sll(vector signed char __a, vector unsigned char __b) {
8630  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8631                                                   (vector int)__b);
8632}
8633
8634static __inline__ vector signed char __ATTRS_o_ai
8635vec_sll(vector signed char __a, vector unsigned short __b) {
8636  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8637                                                   (vector int)__b);
8638}
8639
8640static __inline__ vector signed char __ATTRS_o_ai
8641vec_sll(vector signed char __a, vector unsigned int __b) {
8642  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8643                                                   (vector int)__b);
8644}
8645
8646static __inline__ vector unsigned char __ATTRS_o_ai
8647vec_sll(vector unsigned char __a, vector unsigned char __b) {
8648  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8649                                                     (vector int)__b);
8650}
8651
8652static __inline__ vector unsigned char __ATTRS_o_ai
8653vec_sll(vector unsigned char __a, vector unsigned short __b) {
8654  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8655                                                     (vector int)__b);
8656}
8657
8658static __inline__ vector unsigned char __ATTRS_o_ai
8659vec_sll(vector unsigned char __a, vector unsigned int __b) {
8660  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8661                                                     (vector int)__b);
8662}
8663
8664static __inline__ vector bool char __ATTRS_o_ai
8665vec_sll(vector bool char __a, vector unsigned char __b) {
8666  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8667                                                 (vector int)__b);
8668}
8669
8670static __inline__ vector bool char __ATTRS_o_ai
8671vec_sll(vector bool char __a, vector unsigned short __b) {
8672  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8673                                                 (vector int)__b);
8674}
8675
8676static __inline__ vector bool char __ATTRS_o_ai
8677vec_sll(vector bool char __a, vector unsigned int __b) {
8678  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8679                                                 (vector int)__b);
8680}
8681
8682static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
8683                                                    vector unsigned char __b) {
8684  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8685}
8686
8687static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
8688                                                    vector unsigned short __b) {
8689  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8690}
8691
8692static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
8693                                                    vector unsigned int __b) {
8694  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8695}
8696
8697static __inline__ vector unsigned short __ATTRS_o_ai
8698vec_sll(vector unsigned short __a, vector unsigned char __b) {
8699  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8700                                                      (vector int)__b);
8701}
8702
8703static __inline__ vector unsigned short __ATTRS_o_ai
8704vec_sll(vector unsigned short __a, vector unsigned short __b) {
8705  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8706                                                      (vector int)__b);
8707}
8708
8709static __inline__ vector unsigned short __ATTRS_o_ai
8710vec_sll(vector unsigned short __a, vector unsigned int __b) {
8711  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8712                                                      (vector int)__b);
8713}
8714
8715static __inline__ vector bool short __ATTRS_o_ai
8716vec_sll(vector bool short __a, vector unsigned char __b) {
8717  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8718                                                  (vector int)__b);
8719}
8720
8721static __inline__ vector bool short __ATTRS_o_ai
8722vec_sll(vector bool short __a, vector unsigned short __b) {
8723  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8724                                                  (vector int)__b);
8725}
8726
8727static __inline__ vector bool short __ATTRS_o_ai
8728vec_sll(vector bool short __a, vector unsigned int __b) {
8729  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8730                                                  (vector int)__b);
8731}
8732
8733static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
8734                                                    vector unsigned char __b) {
8735  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8736}
8737
8738static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
8739                                                    vector unsigned short __b) {
8740  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8741}
8742
8743static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
8744                                                    vector unsigned int __b) {
8745  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8746}
8747
8748static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
8749                                                  vector unsigned char __b) {
8750  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8751}
8752
8753static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
8754                                                  vector unsigned short __b) {
8755  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8756}
8757
8758static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
8759                                                  vector unsigned int __b) {
8760  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8761}
8762
8763static __inline__ vector unsigned int __ATTRS_o_ai
8764vec_sll(vector unsigned int __a, vector unsigned char __b) {
8765  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8766                                                    (vector int)__b);
8767}
8768
8769static __inline__ vector unsigned int __ATTRS_o_ai
8770vec_sll(vector unsigned int __a, vector unsigned short __b) {
8771  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8772                                                    (vector int)__b);
8773}
8774
8775static __inline__ vector unsigned int __ATTRS_o_ai
8776vec_sll(vector unsigned int __a, vector unsigned int __b) {
8777  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8778                                                    (vector int)__b);
8779}
8780
8781static __inline__ vector bool int __ATTRS_o_ai
8782vec_sll(vector bool int __a, vector unsigned char __b) {
8783  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8784                                                (vector int)__b);
8785}
8786
8787static __inline__ vector bool int __ATTRS_o_ai
8788vec_sll(vector bool int __a, vector unsigned short __b) {
8789  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8790                                                (vector int)__b);
8791}
8792
8793static __inline__ vector bool int __ATTRS_o_ai
8794vec_sll(vector bool int __a, vector unsigned int __b) {
8795  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8796                                                (vector int)__b);
8797}
8798
8799#ifdef __VSX__
8800static __inline__ vector signed long long __ATTRS_o_ai
8801vec_sll(vector signed long long __a, vector unsigned char __b) {
8802  return (vector signed long long)__builtin_altivec_vsl((vector int)__a,
8803                                                        (vector int)__b);
8804}
8805
8806static __inline__ vector unsigned long long __ATTRS_o_ai
8807vec_sll(vector unsigned long long __a, vector unsigned char __b) {
8808  return (vector unsigned long long)__builtin_altivec_vsl((vector int)__a,
8809                                                          (vector int)__b);
8810}
8811#endif
8812
8813/* vec_vsl */
8814
8815static __inline__ vector signed char __ATTRS_o_ai
8816vec_vsl(vector signed char __a, vector unsigned char __b) {
8817  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8818                                                   (vector int)__b);
8819}
8820
8821static __inline__ vector signed char __ATTRS_o_ai
8822vec_vsl(vector signed char __a, vector unsigned short __b) {
8823  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8824                                                   (vector int)__b);
8825}
8826
8827static __inline__ vector signed char __ATTRS_o_ai
8828vec_vsl(vector signed char __a, vector unsigned int __b) {
8829  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
8830                                                   (vector int)__b);
8831}
8832
8833static __inline__ vector unsigned char __ATTRS_o_ai
8834vec_vsl(vector unsigned char __a, vector unsigned char __b) {
8835  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8836                                                     (vector int)__b);
8837}
8838
8839static __inline__ vector unsigned char __ATTRS_o_ai
8840vec_vsl(vector unsigned char __a, vector unsigned short __b) {
8841  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8842                                                     (vector int)__b);
8843}
8844
8845static __inline__ vector unsigned char __ATTRS_o_ai
8846vec_vsl(vector unsigned char __a, vector unsigned int __b) {
8847  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
8848                                                     (vector int)__b);
8849}
8850
8851static __inline__ vector bool char __ATTRS_o_ai
8852vec_vsl(vector bool char __a, vector unsigned char __b) {
8853  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8854                                                 (vector int)__b);
8855}
8856
8857static __inline__ vector bool char __ATTRS_o_ai
8858vec_vsl(vector bool char __a, vector unsigned short __b) {
8859  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8860                                                 (vector int)__b);
8861}
8862
8863static __inline__ vector bool char __ATTRS_o_ai
8864vec_vsl(vector bool char __a, vector unsigned int __b) {
8865  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
8866                                                 (vector int)__b);
8867}
8868
8869static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
8870                                                    vector unsigned char __b) {
8871  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8872}
8873
8874static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
8875                                                    vector unsigned short __b) {
8876  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8877}
8878
8879static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
8880                                                    vector unsigned int __b) {
8881  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8882}
8883
8884static __inline__ vector unsigned short __ATTRS_o_ai
8885vec_vsl(vector unsigned short __a, vector unsigned char __b) {
8886  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8887                                                      (vector int)__b);
8888}
8889
8890static __inline__ vector unsigned short __ATTRS_o_ai
8891vec_vsl(vector unsigned short __a, vector unsigned short __b) {
8892  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8893                                                      (vector int)__b);
8894}
8895
8896static __inline__ vector unsigned short __ATTRS_o_ai
8897vec_vsl(vector unsigned short __a, vector unsigned int __b) {
8898  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
8899                                                      (vector int)__b);
8900}
8901
8902static __inline__ vector bool short __ATTRS_o_ai
8903vec_vsl(vector bool short __a, vector unsigned char __b) {
8904  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8905                                                  (vector int)__b);
8906}
8907
8908static __inline__ vector bool short __ATTRS_o_ai
8909vec_vsl(vector bool short __a, vector unsigned short __b) {
8910  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8911                                                  (vector int)__b);
8912}
8913
8914static __inline__ vector bool short __ATTRS_o_ai
8915vec_vsl(vector bool short __a, vector unsigned int __b) {
8916  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
8917                                                  (vector int)__b);
8918}
8919
8920static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
8921                                                    vector unsigned char __b) {
8922  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8923}
8924
8925static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
8926                                                    vector unsigned short __b) {
8927  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8928}
8929
8930static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
8931                                                    vector unsigned int __b) {
8932  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
8933}
8934
8935static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
8936                                                  vector unsigned char __b) {
8937  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8938}
8939
8940static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
8941                                                  vector unsigned short __b) {
8942  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8943}
8944
8945static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
8946                                                  vector unsigned int __b) {
8947  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
8948}
8949
8950static __inline__ vector unsigned int __ATTRS_o_ai
8951vec_vsl(vector unsigned int __a, vector unsigned char __b) {
8952  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8953                                                    (vector int)__b);
8954}
8955
8956static __inline__ vector unsigned int __ATTRS_o_ai
8957vec_vsl(vector unsigned int __a, vector unsigned short __b) {
8958  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8959                                                    (vector int)__b);
8960}
8961
8962static __inline__ vector unsigned int __ATTRS_o_ai
8963vec_vsl(vector unsigned int __a, vector unsigned int __b) {
8964  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
8965                                                    (vector int)__b);
8966}
8967
8968static __inline__ vector bool int __ATTRS_o_ai
8969vec_vsl(vector bool int __a, vector unsigned char __b) {
8970  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8971                                                (vector int)__b);
8972}
8973
8974static __inline__ vector bool int __ATTRS_o_ai
8975vec_vsl(vector bool int __a, vector unsigned short __b) {
8976  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8977                                                (vector int)__b);
8978}
8979
8980static __inline__ vector bool int __ATTRS_o_ai
8981vec_vsl(vector bool int __a, vector unsigned int __b) {
8982  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
8983                                                (vector int)__b);
8984}
8985
8986/* vec_slo */
8987
8988static __inline__ vector signed char __ATTRS_o_ai
8989vec_slo(vector signed char __a, vector signed char __b) {
8990  return (vector signed char)__builtin_altivec_vslo((vector int)__a,
8991                                                    (vector int)__b);
8992}
8993
8994static __inline__ vector signed char __ATTRS_o_ai
8995vec_slo(vector signed char __a, vector unsigned char __b) {
8996  return (vector signed char)__builtin_altivec_vslo((vector int)__a,
8997                                                    (vector int)__b);
8998}
8999
9000static __inline__ vector unsigned char __ATTRS_o_ai
9001vec_slo(vector unsigned char __a, vector signed char __b) {
9002  return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9003                                                      (vector int)__b);
9004}
9005
9006static __inline__ vector unsigned char __ATTRS_o_ai
9007vec_slo(vector unsigned char __a, vector unsigned char __b) {
9008  return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9009                                                      (vector int)__b);
9010}
9011
9012static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
9013                                                    vector signed char __b) {
9014  return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9015}
9016
9017static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
9018                                                    vector unsigned char __b) {
9019  return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9020}
9021
9022static __inline__ vector unsigned short __ATTRS_o_ai
9023vec_slo(vector unsigned short __a, vector signed char __b) {
9024  return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9025                                                       (vector int)__b);
9026}
9027
9028static __inline__ vector unsigned short __ATTRS_o_ai
9029vec_slo(vector unsigned short __a, vector unsigned char __b) {
9030  return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9031                                                       (vector int)__b);
9032}
9033
9034static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
9035                                                    vector signed char __b) {
9036  return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9037}
9038
9039static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
9040                                                    vector unsigned char __b) {
9041  return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9042}
9043
9044static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
9045                                                  vector signed char __b) {
9046  return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9047}
9048
9049static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
9050                                                  vector unsigned char __b) {
9051  return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9052}
9053
9054static __inline__ vector unsigned int __ATTRS_o_ai
9055vec_slo(vector unsigned int __a, vector signed char __b) {
9056  return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9057                                                     (vector int)__b);
9058}
9059
9060static __inline__ vector unsigned int __ATTRS_o_ai
9061vec_slo(vector unsigned int __a, vector unsigned char __b) {
9062  return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9063                                                     (vector int)__b);
9064}
9065
9066static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
9067                                                    vector signed char __b) {
9068  return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9069}
9070
9071static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
9072                                                    vector unsigned char __b) {
9073  return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9074}
9075
9076#ifdef __VSX__
9077static __inline__ vector signed long long __ATTRS_o_ai
9078vec_slo(vector signed long long __a, vector signed char __b) {
9079  return (vector signed long long)__builtin_altivec_vslo((vector int)__a,
9080                                                         (vector int)__b);
9081}
9082
9083static __inline__ vector signed long long __ATTRS_o_ai
9084vec_slo(vector signed long long __a, vector unsigned char __b) {
9085  return (vector signed long long)__builtin_altivec_vslo((vector int)__a,
9086                                                         (vector int)__b);
9087}
9088
9089static __inline__ vector unsigned long long __ATTRS_o_ai
9090vec_slo(vector unsigned long long __a, vector signed char __b) {
9091  return (vector unsigned long long)__builtin_altivec_vslo((vector int)__a,
9092                                                           (vector int)__b);
9093}
9094
9095static __inline__ vector unsigned long long __ATTRS_o_ai
9096vec_slo(vector unsigned long long __a, vector unsigned char __b) {
9097  return (vector unsigned long long)__builtin_altivec_vslo((vector int)__a,
9098                                                           (vector int)__b);
9099}
9100#endif
9101
9102/* vec_vslo */
9103
9104static __inline__ vector signed char __ATTRS_o_ai
9105vec_vslo(vector signed char __a, vector signed char __b) {
9106  return (vector signed char)__builtin_altivec_vslo((vector int)__a,
9107                                                    (vector int)__b);
9108}
9109
9110static __inline__ vector signed char __ATTRS_o_ai
9111vec_vslo(vector signed char __a, vector unsigned char __b) {
9112  return (vector signed char)__builtin_altivec_vslo((vector int)__a,
9113                                                    (vector int)__b);
9114}
9115
9116static __inline__ vector unsigned char __ATTRS_o_ai
9117vec_vslo(vector unsigned char __a, vector signed char __b) {
9118  return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9119                                                      (vector int)__b);
9120}
9121
9122static __inline__ vector unsigned char __ATTRS_o_ai
9123vec_vslo(vector unsigned char __a, vector unsigned char __b) {
9124  return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
9125                                                      (vector int)__b);
9126}
9127
9128static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
9129                                                     vector signed char __b) {
9130  return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9131}
9132
9133static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
9134                                                     vector unsigned char __b) {
9135  return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9136}
9137
9138static __inline__ vector unsigned short __ATTRS_o_ai
9139vec_vslo(vector unsigned short __a, vector signed char __b) {
9140  return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9141                                                       (vector int)__b);
9142}
9143
9144static __inline__ vector unsigned short __ATTRS_o_ai
9145vec_vslo(vector unsigned short __a, vector unsigned char __b) {
9146  return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
9147                                                       (vector int)__b);
9148}
9149
9150static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
9151                                                     vector signed char __b) {
9152  return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9153}
9154
9155static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
9156                                                     vector unsigned char __b) {
9157  return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9158}
9159
9160static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
9161                                                   vector signed char __b) {
9162  return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9163}
9164
9165static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
9166                                                   vector unsigned char __b) {
9167  return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
9168}
9169
9170static __inline__ vector unsigned int __ATTRS_o_ai
9171vec_vslo(vector unsigned int __a, vector signed char __b) {
9172  return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9173                                                     (vector int)__b);
9174}
9175
9176static __inline__ vector unsigned int __ATTRS_o_ai
9177vec_vslo(vector unsigned int __a, vector unsigned char __b) {
9178  return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
9179                                                     (vector int)__b);
9180}
9181
9182static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
9183                                                     vector signed char __b) {
9184  return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9185}
9186
9187static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
9188                                                     vector unsigned char __b) {
9189  return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
9190}
9191
9192/* vec_splat */
9193
9194static __inline__ vector signed char __ATTRS_o_ai
9195vec_splat(vector signed char __a, unsigned const int __b) {
9196  return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
9197}
9198
9199static __inline__ vector unsigned char __ATTRS_o_ai
9200vec_splat(vector unsigned char __a, unsigned const int __b) {
9201  return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
9202}
9203
9204static __inline__ vector bool char __ATTRS_o_ai
9205vec_splat(vector bool char __a, unsigned const int __b) {
9206  return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
9207}
9208
9209static __inline__ vector signed short __ATTRS_o_ai
9210vec_splat(vector signed short __a, unsigned const int __b) {
9211  unsigned char b0 = (__b & 0x07) * 2;
9212  unsigned char b1 = b0 + 1;
9213  return vec_perm(__a, __a,
9214                  (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9215                                         b0, b1, b0, b1, b0, b1));
9216}
9217
9218static __inline__ vector unsigned short __ATTRS_o_ai
9219vec_splat(vector unsigned short __a, unsigned const int __b) {
9220  unsigned char b0 = (__b & 0x07) * 2;
9221  unsigned char b1 = b0 + 1;
9222  return vec_perm(__a, __a,
9223                  (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9224                                         b0, b1, b0, b1, b0, b1));
9225}
9226
9227static __inline__ vector bool short __ATTRS_o_ai
9228vec_splat(vector bool short __a, unsigned const int __b) {
9229  unsigned char b0 = (__b & 0x07) * 2;
9230  unsigned char b1 = b0 + 1;
9231  return vec_perm(__a, __a,
9232                  (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9233                                         b0, b1, b0, b1, b0, b1));
9234}
9235
9236static __inline__ vector pixel __ATTRS_o_ai vec_splat(vector pixel __a,
9237                                                      unsigned const int __b) {
9238  unsigned char b0 = (__b & 0x07) * 2;
9239  unsigned char b1 = b0 + 1;
9240  return vec_perm(__a, __a,
9241                  (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
9242                                         b0, b1, b0, b1, b0, b1));
9243}
9244
9245static __inline__ vector signed int __ATTRS_o_ai
9246vec_splat(vector signed int __a, unsigned const int __b) {
9247  unsigned char b0 = (__b & 0x03) * 4;
9248  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9249  return vec_perm(__a, __a,
9250                  (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9251                                         b2, b3, b0, b1, b2, b3));
9252}
9253
9254static __inline__ vector unsigned int __ATTRS_o_ai
9255vec_splat(vector unsigned int __a, unsigned const int __b) {
9256  unsigned char b0 = (__b & 0x03) * 4;
9257  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9258  return vec_perm(__a, __a,
9259                  (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9260                                         b2, b3, b0, b1, b2, b3));
9261}
9262
9263static __inline__ vector bool int __ATTRS_o_ai
9264vec_splat(vector bool int __a, unsigned const int __b) {
9265  unsigned char b0 = (__b & 0x03) * 4;
9266  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9267  return vec_perm(__a, __a,
9268                  (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9269                                         b2, b3, b0, b1, b2, b3));
9270}
9271
9272static __inline__ vector float __ATTRS_o_ai vec_splat(vector float __a,
9273                                                      unsigned const int __b) {
9274  unsigned char b0 = (__b & 0x03) * 4;
9275  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
9276  return vec_perm(__a, __a,
9277                  (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
9278                                         b2, b3, b0, b1, b2, b3));
9279}
9280
9281#ifdef __VSX__
9282static __inline__ vector double __ATTRS_o_ai vec_splat(vector double __a,
9283                                                       unsigned const int __b) {
9284  unsigned char b0 = (__b & 0x01) * 8;
9285  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9286                b6 = b0 + 6, b7 = b0 + 7;
9287  return vec_perm(__a, __a,
9288                  (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9289                                         b2, b3, b4, b5, b6, b7));
9290}
9291static __inline__ vector bool long long __ATTRS_o_ai
9292vec_splat(vector bool long long __a, unsigned const int __b) {
9293  unsigned char b0 = (__b & 0x01) * 8;
9294  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9295                b6 = b0 + 6, b7 = b0 + 7;
9296  return vec_perm(__a, __a,
9297                  (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9298                                         b2, b3, b4, b5, b6, b7));
9299}
9300static __inline__ vector signed long long __ATTRS_o_ai
9301vec_splat(vector signed long long __a, unsigned const int __b) {
9302  unsigned char b0 = (__b & 0x01) * 8;
9303  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9304                b6 = b0 + 6, b7 = b0 + 7;
9305  return vec_perm(__a, __a,
9306                  (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9307                                         b2, b3, b4, b5, b6, b7));
9308}
9309static __inline__ vector unsigned long long __ATTRS_o_ai
9310vec_splat(vector unsigned long long __a, unsigned const int __b) {
9311  unsigned char b0 = (__b & 0x01) * 8;
9312  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
9313                b6 = b0 + 6, b7 = b0 + 7;
9314  return vec_perm(__a, __a,
9315                  (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
9316                                         b2, b3, b4, b5, b6, b7));
9317}
9318#endif
9319
9320/* vec_vspltb */
9321
9322#define __builtin_altivec_vspltb vec_vspltb
9323
9324static __inline__ vector signed char __ATTRS_o_ai
9325vec_vspltb(vector signed char __a, unsigned char __b) {
9326  return vec_perm(__a, __a, (vector unsigned char)(__b));
9327}
9328
9329static __inline__ vector unsigned char __ATTRS_o_ai
9330vec_vspltb(vector unsigned char __a, unsigned char __b) {
9331  return vec_perm(__a, __a, (vector unsigned char)(__b));
9332}
9333
9334static __inline__ vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a,
9335                                                           unsigned char __b) {
9336  return vec_perm(__a, __a, (vector unsigned char)(__b));
9337}
9338
9339/* vec_vsplth */
9340
9341#define __builtin_altivec_vsplth vec_vsplth
9342
9343static __inline__ vector short __ATTRS_o_ai vec_vsplth(vector short __a,
9344                                                       unsigned char __b) {
9345  __b *= 2;
9346  unsigned char b1 = __b + 1;
9347  return vec_perm(__a, __a,
9348                  (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9349                                         __b, b1, __b, b1, __b, b1, __b, b1));
9350}
9351
9352static __inline__ vector unsigned short __ATTRS_o_ai
9353vec_vsplth(vector unsigned short __a, unsigned char __b) {
9354  __b *= 2;
9355  unsigned char b1 = __b + 1;
9356  return vec_perm(__a, __a,
9357                  (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9358                                         __b, b1, __b, b1, __b, b1, __b, b1));
9359}
9360
9361static __inline__ vector bool short __ATTRS_o_ai
9362vec_vsplth(vector bool short __a, unsigned char __b) {
9363  __b *= 2;
9364  unsigned char b1 = __b + 1;
9365  return vec_perm(__a, __a,
9366                  (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9367                                         __b, b1, __b, b1, __b, b1, __b, b1));
9368}
9369
9370static __inline__ vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a,
9371                                                       unsigned char __b) {
9372  __b *= 2;
9373  unsigned char b1 = __b + 1;
9374  return vec_perm(__a, __a,
9375                  (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
9376                                         __b, b1, __b, b1, __b, b1, __b, b1));
9377}
9378
9379/* vec_vspltw */
9380
9381#define __builtin_altivec_vspltw vec_vspltw
9382
9383static __inline__ vector int __ATTRS_o_ai vec_vspltw(vector int __a,
9384                                                     unsigned char __b) {
9385  __b *= 4;
9386  unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9387  return vec_perm(__a, __a,
9388                  (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9389                                         b1, b2, b3, __b, b1, b2, b3));
9390}
9391
9392static __inline__ vector unsigned int __ATTRS_o_ai
9393vec_vspltw(vector unsigned int __a, unsigned char __b) {
9394  __b *= 4;
9395  unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9396  return vec_perm(__a, __a,
9397                  (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9398                                         b1, b2, b3, __b, b1, b2, b3));
9399}
9400
9401static __inline__ vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a,
9402                                                          unsigned char __b) {
9403  __b *= 4;
9404  unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9405  return vec_perm(__a, __a,
9406                  (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9407                                         b1, b2, b3, __b, b1, b2, b3));
9408}
9409
9410static __inline__ vector float __ATTRS_o_ai vec_vspltw(vector float __a,
9411                                                       unsigned char __b) {
9412  __b *= 4;
9413  unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
9414  return vec_perm(__a, __a,
9415                  (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
9416                                         b1, b2, b3, __b, b1, b2, b3));
9417}
9418
9419/* vec_splat_s8 */
9420
9421#define __builtin_altivec_vspltisb vec_splat_s8
9422
9423// FIXME: parameter should be treated as 5-bit signed literal
9424static __inline__ vector signed char __ATTRS_o_ai
9425vec_splat_s8(signed char __a) {
9426  return (vector signed char)(__a);
9427}
9428
9429/* vec_vspltisb */
9430
9431// FIXME: parameter should be treated as 5-bit signed literal
9432static __inline__ vector signed char __ATTRS_o_ai
9433vec_vspltisb(signed char __a) {
9434  return (vector signed char)(__a);
9435}
9436
9437/* vec_splat_s16 */
9438
9439#define __builtin_altivec_vspltish vec_splat_s16
9440
9441// FIXME: parameter should be treated as 5-bit signed literal
9442static __inline__ vector short __ATTRS_o_ai vec_splat_s16(signed char __a) {
9443  return (vector short)(__a);
9444}
9445
9446/* vec_vspltish */
9447
9448// FIXME: parameter should be treated as 5-bit signed literal
9449static __inline__ vector short __ATTRS_o_ai vec_vspltish(signed char __a) {
9450  return (vector short)(__a);
9451}
9452
9453/* vec_splat_s32 */
9454
9455#define __builtin_altivec_vspltisw vec_splat_s32
9456
9457// FIXME: parameter should be treated as 5-bit signed literal
9458static __inline__ vector int __ATTRS_o_ai vec_splat_s32(signed char __a) {
9459  return (vector int)(__a);
9460}
9461
9462/* vec_vspltisw */
9463
9464// FIXME: parameter should be treated as 5-bit signed literal
9465static __inline__ vector int __ATTRS_o_ai vec_vspltisw(signed char __a) {
9466  return (vector int)(__a);
9467}
9468
9469/* vec_splat_u8 */
9470
9471// FIXME: parameter should be treated as 5-bit signed literal
9472static __inline__ vector unsigned char __ATTRS_o_ai
9473vec_splat_u8(unsigned char __a) {
9474  return (vector unsigned char)(__a);
9475}
9476
9477/* vec_splat_u16 */
9478
9479// FIXME: parameter should be treated as 5-bit signed literal
9480static __inline__ vector unsigned short __ATTRS_o_ai
9481vec_splat_u16(signed char __a) {
9482  return (vector unsigned short)(__a);
9483}
9484
9485/* vec_splat_u32 */
9486
9487// FIXME: parameter should be treated as 5-bit signed literal
9488static __inline__ vector unsigned int __ATTRS_o_ai
9489vec_splat_u32(signed char __a) {
9490  return (vector unsigned int)(__a);
9491}
9492
9493/* vec_sr */
9494
9495static __inline__ vector signed char __ATTRS_o_ai
9496vec_sr(vector signed char __a, vector unsigned char __b) {
9497  vector unsigned char __res = (vector unsigned char)__a >> __b;
9498  return (vector signed char)__res;
9499}
9500
9501static __inline__ vector unsigned char __ATTRS_o_ai
9502vec_sr(vector unsigned char __a, vector unsigned char __b) {
9503  return __a >> __b;
9504}
9505
9506static __inline__ vector signed short __ATTRS_o_ai
9507vec_sr(vector signed short __a, vector unsigned short __b) {
9508  vector unsigned short __res = (vector unsigned short)__a >> __b;
9509  return (vector signed short)__res;
9510}
9511
9512static __inline__ vector unsigned short __ATTRS_o_ai
9513vec_sr(vector unsigned short __a, vector unsigned short __b) {
9514  return __a >> __b;
9515}
9516
9517static __inline__ vector signed int __ATTRS_o_ai
9518vec_sr(vector signed int __a, vector unsigned int __b) {
9519  vector unsigned int __res = (vector unsigned int)__a >> __b;
9520  return (vector signed int)__res;
9521}
9522
9523static __inline__ vector unsigned int __ATTRS_o_ai
9524vec_sr(vector unsigned int __a, vector unsigned int __b) {
9525  return __a >> __b;
9526}
9527
9528#ifdef __POWER8_VECTOR__
9529static __inline__ vector signed long long __ATTRS_o_ai
9530vec_sr(vector signed long long __a, vector unsigned long long __b) {
9531  vector unsigned long long __res = (vector unsigned long long)__a >> __b;
9532  return (vector signed long long)__res;
9533}
9534
9535static __inline__ vector unsigned long long __ATTRS_o_ai
9536vec_sr(vector unsigned long long __a, vector unsigned long long __b) {
9537  return __a >> __b;
9538}
9539#endif
9540
9541/* vec_vsrb */
9542
9543#define __builtin_altivec_vsrb vec_vsrb
9544
9545static __inline__ vector signed char __ATTRS_o_ai
9546vec_vsrb(vector signed char __a, vector unsigned char __b) {
9547  return __a >> (vector signed char)__b;
9548}
9549
9550static __inline__ vector unsigned char __ATTRS_o_ai
9551vec_vsrb(vector unsigned char __a, vector unsigned char __b) {
9552  return __a >> __b;
9553}
9554
9555/* vec_vsrh */
9556
9557#define __builtin_altivec_vsrh vec_vsrh
9558
9559static __inline__ vector short __ATTRS_o_ai
9560vec_vsrh(vector short __a, vector unsigned short __b) {
9561  return __a >> (vector short)__b;
9562}
9563
9564static __inline__ vector unsigned short __ATTRS_o_ai
9565vec_vsrh(vector unsigned short __a, vector unsigned short __b) {
9566  return __a >> __b;
9567}
9568
9569/* vec_vsrw */
9570
9571#define __builtin_altivec_vsrw vec_vsrw
9572
9573static __inline__ vector int __ATTRS_o_ai vec_vsrw(vector int __a,
9574                                                   vector unsigned int __b) {
9575  return __a >> (vector int)__b;
9576}
9577
9578static __inline__ vector unsigned int __ATTRS_o_ai
9579vec_vsrw(vector unsigned int __a, vector unsigned int __b) {
9580  return __a >> __b;
9581}
9582
9583/* vec_sra */
9584
9585static __inline__ vector signed char __ATTRS_o_ai
9586vec_sra(vector signed char __a, vector unsigned char __b) {
9587  return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
9588}
9589
9590static __inline__ vector unsigned char __ATTRS_o_ai
9591vec_sra(vector unsigned char __a, vector unsigned char __b) {
9592  return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
9593}
9594
9595static __inline__ vector short __ATTRS_o_ai vec_sra(vector short __a,
9596                                                    vector unsigned short __b) {
9597  return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
9598}
9599
9600static __inline__ vector unsigned short __ATTRS_o_ai
9601vec_sra(vector unsigned short __a, vector unsigned short __b) {
9602  return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
9603}
9604
9605static __inline__ vector int __ATTRS_o_ai vec_sra(vector int __a,
9606                                                  vector unsigned int __b) {
9607  return __builtin_altivec_vsraw(__a, __b);
9608}
9609
9610static __inline__ vector unsigned int __ATTRS_o_ai
9611vec_sra(vector unsigned int __a, vector unsigned int __b) {
9612  return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
9613}
9614
9615#ifdef __POWER8_VECTOR__
9616static __inline__ vector signed long long __ATTRS_o_ai
9617vec_sra(vector signed long long __a, vector unsigned long long __b) {
9618  return __a >> __b;
9619}
9620
9621static __inline__ vector unsigned long long __ATTRS_o_ai
9622vec_sra(vector unsigned long long __a, vector unsigned long long __b) {
9623  return (vector unsigned long long)((vector signed long long)__a >> __b);
9624}
9625#endif
9626
9627/* vec_vsrab */
9628
9629static __inline__ vector signed char __ATTRS_o_ai
9630vec_vsrab(vector signed char __a, vector unsigned char __b) {
9631  return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
9632}
9633
9634static __inline__ vector unsigned char __ATTRS_o_ai
9635vec_vsrab(vector unsigned char __a, vector unsigned char __b) {
9636  return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
9637}
9638
9639/* vec_vsrah */
9640
9641static __inline__ vector short __ATTRS_o_ai
9642vec_vsrah(vector short __a, vector unsigned short __b) {
9643  return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
9644}
9645
9646static __inline__ vector unsigned short __ATTRS_o_ai
9647vec_vsrah(vector unsigned short __a, vector unsigned short __b) {
9648  return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
9649}
9650
9651/* vec_vsraw */
9652
9653static __inline__ vector int __ATTRS_o_ai vec_vsraw(vector int __a,
9654                                                    vector unsigned int __b) {
9655  return __builtin_altivec_vsraw(__a, __b);
9656}
9657
9658static __inline__ vector unsigned int __ATTRS_o_ai
9659vec_vsraw(vector unsigned int __a, vector unsigned int __b) {
9660  return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
9661}
9662
9663/* vec_srl */
9664
9665static __inline__ vector signed char __ATTRS_o_ai
9666vec_srl(vector signed char __a, vector unsigned char __b) {
9667  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9668                                                   (vector int)__b);
9669}
9670
9671static __inline__ vector signed char __ATTRS_o_ai
9672vec_srl(vector signed char __a, vector unsigned short __b) {
9673  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9674                                                   (vector int)__b);
9675}
9676
9677static __inline__ vector signed char __ATTRS_o_ai
9678vec_srl(vector signed char __a, vector unsigned int __b) {
9679  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9680                                                   (vector int)__b);
9681}
9682
9683static __inline__ vector unsigned char __ATTRS_o_ai
9684vec_srl(vector unsigned char __a, vector unsigned char __b) {
9685  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9686                                                     (vector int)__b);
9687}
9688
9689static __inline__ vector unsigned char __ATTRS_o_ai
9690vec_srl(vector unsigned char __a, vector unsigned short __b) {
9691  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9692                                                     (vector int)__b);
9693}
9694
9695static __inline__ vector unsigned char __ATTRS_o_ai
9696vec_srl(vector unsigned char __a, vector unsigned int __b) {
9697  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9698                                                     (vector int)__b);
9699}
9700
9701static __inline__ vector bool char __ATTRS_o_ai
9702vec_srl(vector bool char __a, vector unsigned char __b) {
9703  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9704                                                 (vector int)__b);
9705}
9706
9707static __inline__ vector bool char __ATTRS_o_ai
9708vec_srl(vector bool char __a, vector unsigned short __b) {
9709  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9710                                                 (vector int)__b);
9711}
9712
9713static __inline__ vector bool char __ATTRS_o_ai
9714vec_srl(vector bool char __a, vector unsigned int __b) {
9715  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9716                                                 (vector int)__b);
9717}
9718
9719static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
9720                                                    vector unsigned char __b) {
9721  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9722}
9723
9724static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
9725                                                    vector unsigned short __b) {
9726  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9727}
9728
9729static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
9730                                                    vector unsigned int __b) {
9731  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9732}
9733
9734static __inline__ vector unsigned short __ATTRS_o_ai
9735vec_srl(vector unsigned short __a, vector unsigned char __b) {
9736  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9737                                                      (vector int)__b);
9738}
9739
9740static __inline__ vector unsigned short __ATTRS_o_ai
9741vec_srl(vector unsigned short __a, vector unsigned short __b) {
9742  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9743                                                      (vector int)__b);
9744}
9745
9746static __inline__ vector unsigned short __ATTRS_o_ai
9747vec_srl(vector unsigned short __a, vector unsigned int __b) {
9748  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9749                                                      (vector int)__b);
9750}
9751
9752static __inline__ vector bool short __ATTRS_o_ai
9753vec_srl(vector bool short __a, vector unsigned char __b) {
9754  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9755                                                  (vector int)__b);
9756}
9757
9758static __inline__ vector bool short __ATTRS_o_ai
9759vec_srl(vector bool short __a, vector unsigned short __b) {
9760  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9761                                                  (vector int)__b);
9762}
9763
9764static __inline__ vector bool short __ATTRS_o_ai
9765vec_srl(vector bool short __a, vector unsigned int __b) {
9766  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9767                                                  (vector int)__b);
9768}
9769
9770static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
9771                                                    vector unsigned char __b) {
9772  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9773}
9774
9775static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
9776                                                    vector unsigned short __b) {
9777  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9778}
9779
9780static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
9781                                                    vector unsigned int __b) {
9782  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9783}
9784
9785static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
9786                                                  vector unsigned char __b) {
9787  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9788}
9789
9790static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
9791                                                  vector unsigned short __b) {
9792  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9793}
9794
9795static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
9796                                                  vector unsigned int __b) {
9797  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9798}
9799
9800static __inline__ vector unsigned int __ATTRS_o_ai
9801vec_srl(vector unsigned int __a, vector unsigned char __b) {
9802  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9803                                                    (vector int)__b);
9804}
9805
9806static __inline__ vector unsigned int __ATTRS_o_ai
9807vec_srl(vector unsigned int __a, vector unsigned short __b) {
9808  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9809                                                    (vector int)__b);
9810}
9811
9812static __inline__ vector unsigned int __ATTRS_o_ai
9813vec_srl(vector unsigned int __a, vector unsigned int __b) {
9814  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9815                                                    (vector int)__b);
9816}
9817
9818static __inline__ vector bool int __ATTRS_o_ai
9819vec_srl(vector bool int __a, vector unsigned char __b) {
9820  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
9821                                                (vector int)__b);
9822}
9823
9824static __inline__ vector bool int __ATTRS_o_ai
9825vec_srl(vector bool int __a, vector unsigned short __b) {
9826  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
9827                                                (vector int)__b);
9828}
9829
9830static __inline__ vector bool int __ATTRS_o_ai
9831vec_srl(vector bool int __a, vector unsigned int __b) {
9832  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
9833                                                (vector int)__b);
9834}
9835
9836#ifdef __VSX__
9837static __inline__ vector signed long long __ATTRS_o_ai
9838vec_srl(vector signed long long __a, vector unsigned char __b) {
9839  return (vector signed long long)__builtin_altivec_vsr((vector int)__a,
9840                                                        (vector int)__b);
9841}
9842
9843static __inline__ vector unsigned long long __ATTRS_o_ai
9844vec_srl(vector unsigned long long __a, vector unsigned char __b) {
9845  return (vector unsigned long long)__builtin_altivec_vsr((vector int)__a,
9846                                                          (vector int)__b);
9847}
9848#endif
9849
9850/* vec_vsr */
9851
9852static __inline__ vector signed char __ATTRS_o_ai
9853vec_vsr(vector signed char __a, vector unsigned char __b) {
9854  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9855                                                   (vector int)__b);
9856}
9857
9858static __inline__ vector signed char __ATTRS_o_ai
9859vec_vsr(vector signed char __a, vector unsigned short __b) {
9860  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9861                                                   (vector int)__b);
9862}
9863
9864static __inline__ vector signed char __ATTRS_o_ai
9865vec_vsr(vector signed char __a, vector unsigned int __b) {
9866  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
9867                                                   (vector int)__b);
9868}
9869
9870static __inline__ vector unsigned char __ATTRS_o_ai
9871vec_vsr(vector unsigned char __a, vector unsigned char __b) {
9872  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9873                                                     (vector int)__b);
9874}
9875
9876static __inline__ vector unsigned char __ATTRS_o_ai
9877vec_vsr(vector unsigned char __a, vector unsigned short __b) {
9878  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9879                                                     (vector int)__b);
9880}
9881
9882static __inline__ vector unsigned char __ATTRS_o_ai
9883vec_vsr(vector unsigned char __a, vector unsigned int __b) {
9884  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
9885                                                     (vector int)__b);
9886}
9887
9888static __inline__ vector bool char __ATTRS_o_ai
9889vec_vsr(vector bool char __a, vector unsigned char __b) {
9890  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9891                                                 (vector int)__b);
9892}
9893
9894static __inline__ vector bool char __ATTRS_o_ai
9895vec_vsr(vector bool char __a, vector unsigned short __b) {
9896  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9897                                                 (vector int)__b);
9898}
9899
9900static __inline__ vector bool char __ATTRS_o_ai
9901vec_vsr(vector bool char __a, vector unsigned int __b) {
9902  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
9903                                                 (vector int)__b);
9904}
9905
9906static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
9907                                                    vector unsigned char __b) {
9908  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9909}
9910
9911static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
9912                                                    vector unsigned short __b) {
9913  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9914}
9915
9916static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
9917                                                    vector unsigned int __b) {
9918  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9919}
9920
9921static __inline__ vector unsigned short __ATTRS_o_ai
9922vec_vsr(vector unsigned short __a, vector unsigned char __b) {
9923  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9924                                                      (vector int)__b);
9925}
9926
9927static __inline__ vector unsigned short __ATTRS_o_ai
9928vec_vsr(vector unsigned short __a, vector unsigned short __b) {
9929  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9930                                                      (vector int)__b);
9931}
9932
9933static __inline__ vector unsigned short __ATTRS_o_ai
9934vec_vsr(vector unsigned short __a, vector unsigned int __b) {
9935  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
9936                                                      (vector int)__b);
9937}
9938
9939static __inline__ vector bool short __ATTRS_o_ai
9940vec_vsr(vector bool short __a, vector unsigned char __b) {
9941  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9942                                                  (vector int)__b);
9943}
9944
9945static __inline__ vector bool short __ATTRS_o_ai
9946vec_vsr(vector bool short __a, vector unsigned short __b) {
9947  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9948                                                  (vector int)__b);
9949}
9950
9951static __inline__ vector bool short __ATTRS_o_ai
9952vec_vsr(vector bool short __a, vector unsigned int __b) {
9953  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
9954                                                  (vector int)__b);
9955}
9956
9957static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
9958                                                    vector unsigned char __b) {
9959  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9960}
9961
9962static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
9963                                                    vector unsigned short __b) {
9964  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9965}
9966
9967static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
9968                                                    vector unsigned int __b) {
9969  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
9970}
9971
9972static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
9973                                                  vector unsigned char __b) {
9974  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9975}
9976
9977static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
9978                                                  vector unsigned short __b) {
9979  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9980}
9981
9982static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
9983                                                  vector unsigned int __b) {
9984  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
9985}
9986
9987static __inline__ vector unsigned int __ATTRS_o_ai
9988vec_vsr(vector unsigned int __a, vector unsigned char __b) {
9989  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9990                                                    (vector int)__b);
9991}
9992
9993static __inline__ vector unsigned int __ATTRS_o_ai
9994vec_vsr(vector unsigned int __a, vector unsigned short __b) {
9995  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
9996                                                    (vector int)__b);
9997}
9998
9999static __inline__ vector unsigned int __ATTRS_o_ai
10000vec_vsr(vector unsigned int __a, vector unsigned int __b) {
10001  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
10002                                                    (vector int)__b);
10003}
10004
10005static __inline__ vector bool int __ATTRS_o_ai
10006vec_vsr(vector bool int __a, vector unsigned char __b) {
10007  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10008                                                (vector int)__b);
10009}
10010
10011static __inline__ vector bool int __ATTRS_o_ai
10012vec_vsr(vector bool int __a, vector unsigned short __b) {
10013  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10014                                                (vector int)__b);
10015}
10016
10017static __inline__ vector bool int __ATTRS_o_ai
10018vec_vsr(vector bool int __a, vector unsigned int __b) {
10019  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
10020                                                (vector int)__b);
10021}
10022
10023/* vec_sro */
10024
10025static __inline__ vector signed char __ATTRS_o_ai
10026vec_sro(vector signed char __a, vector signed char __b) {
10027  return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10028                                                    (vector int)__b);
10029}
10030
10031static __inline__ vector signed char __ATTRS_o_ai
10032vec_sro(vector signed char __a, vector unsigned char __b) {
10033  return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10034                                                    (vector int)__b);
10035}
10036
10037static __inline__ vector unsigned char __ATTRS_o_ai
10038vec_sro(vector unsigned char __a, vector signed char __b) {
10039  return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10040                                                      (vector int)__b);
10041}
10042
10043static __inline__ vector unsigned char __ATTRS_o_ai
10044vec_sro(vector unsigned char __a, vector unsigned char __b) {
10045  return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10046                                                      (vector int)__b);
10047}
10048
10049static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
10050                                                    vector signed char __b) {
10051  return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10052}
10053
10054static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
10055                                                    vector unsigned char __b) {
10056  return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10057}
10058
10059static __inline__ vector unsigned short __ATTRS_o_ai
10060vec_sro(vector unsigned short __a, vector signed char __b) {
10061  return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10062                                                       (vector int)__b);
10063}
10064
10065static __inline__ vector unsigned short __ATTRS_o_ai
10066vec_sro(vector unsigned short __a, vector unsigned char __b) {
10067  return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10068                                                       (vector int)__b);
10069}
10070
10071static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
10072                                                    vector signed char __b) {
10073  return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10074}
10075
10076static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
10077                                                    vector unsigned char __b) {
10078  return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10079}
10080
10081static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
10082                                                  vector signed char __b) {
10083  return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10084}
10085
10086static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
10087                                                  vector unsigned char __b) {
10088  return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10089}
10090
10091static __inline__ vector unsigned int __ATTRS_o_ai
10092vec_sro(vector unsigned int __a, vector signed char __b) {
10093  return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10094                                                     (vector int)__b);
10095}
10096
10097static __inline__ vector unsigned int __ATTRS_o_ai
10098vec_sro(vector unsigned int __a, vector unsigned char __b) {
10099  return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10100                                                     (vector int)__b);
10101}
10102
10103static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
10104                                                    vector signed char __b) {
10105  return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10106}
10107
10108static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
10109                                                    vector unsigned char __b) {
10110  return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10111}
10112
10113#ifdef __VSX__
10114static __inline__ vector signed long long __ATTRS_o_ai
10115vec_sro(vector signed long long __a, vector signed char __b) {
10116  return (vector signed long long)__builtin_altivec_vsro((vector int)__a,
10117                                                         (vector int)__b);
10118}
10119
10120static __inline__ vector signed long long __ATTRS_o_ai
10121vec_sro(vector signed long long __a, vector unsigned char __b) {
10122  return (vector signed long long)__builtin_altivec_vsro((vector int)__a,
10123                                                         (vector int)__b);
10124}
10125
10126static __inline__ vector unsigned long long __ATTRS_o_ai
10127vec_sro(vector unsigned long long __a, vector signed char __b) {
10128  return (vector unsigned long long)__builtin_altivec_vsro((vector int)__a,
10129                                                           (vector int)__b);
10130}
10131
10132static __inline__ vector unsigned long long __ATTRS_o_ai
10133vec_sro(vector unsigned long long __a, vector unsigned char __b) {
10134  return (vector unsigned long long)__builtin_altivec_vsro((vector int)__a,
10135                                                           (vector int)__b);
10136}
10137#endif
10138
10139/* vec_vsro */
10140
10141static __inline__ vector signed char __ATTRS_o_ai
10142vec_vsro(vector signed char __a, vector signed char __b) {
10143  return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10144                                                    (vector int)__b);
10145}
10146
10147static __inline__ vector signed char __ATTRS_o_ai
10148vec_vsro(vector signed char __a, vector unsigned char __b) {
10149  return (vector signed char)__builtin_altivec_vsro((vector int)__a,
10150                                                    (vector int)__b);
10151}
10152
10153static __inline__ vector unsigned char __ATTRS_o_ai
10154vec_vsro(vector unsigned char __a, vector signed char __b) {
10155  return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10156                                                      (vector int)__b);
10157}
10158
10159static __inline__ vector unsigned char __ATTRS_o_ai
10160vec_vsro(vector unsigned char __a, vector unsigned char __b) {
10161  return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
10162                                                      (vector int)__b);
10163}
10164
10165static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
10166                                                     vector signed char __b) {
10167  return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10168}
10169
10170static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
10171                                                     vector unsigned char __b) {
10172  return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10173}
10174
10175static __inline__ vector unsigned short __ATTRS_o_ai
10176vec_vsro(vector unsigned short __a, vector signed char __b) {
10177  return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10178                                                       (vector int)__b);
10179}
10180
10181static __inline__ vector unsigned short __ATTRS_o_ai
10182vec_vsro(vector unsigned short __a, vector unsigned char __b) {
10183  return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
10184                                                       (vector int)__b);
10185}
10186
10187static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
10188                                                     vector signed char __b) {
10189  return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10190}
10191
10192static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
10193                                                     vector unsigned char __b) {
10194  return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10195}
10196
10197static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
10198                                                   vector signed char __b) {
10199  return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10200}
10201
10202static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
10203                                                   vector unsigned char __b) {
10204  return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
10205}
10206
10207static __inline__ vector unsigned int __ATTRS_o_ai
10208vec_vsro(vector unsigned int __a, vector signed char __b) {
10209  return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10210                                                     (vector int)__b);
10211}
10212
10213static __inline__ vector unsigned int __ATTRS_o_ai
10214vec_vsro(vector unsigned int __a, vector unsigned char __b) {
10215  return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
10216                                                     (vector int)__b);
10217}
10218
10219static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
10220                                                     vector signed char __b) {
10221  return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10222}
10223
10224static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
10225                                                     vector unsigned char __b) {
10226  return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
10227}
10228
10229/* vec_st */
10230
10231static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
10232                                           vector signed char *__c) {
10233  __builtin_altivec_stvx((vector int)__a, __b, __c);
10234}
10235
10236static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
10237                                           signed char *__c) {
10238  __builtin_altivec_stvx((vector int)__a, __b, __c);
10239}
10240
10241static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
10242                                           vector unsigned char *__c) {
10243  __builtin_altivec_stvx((vector int)__a, __b, __c);
10244}
10245
10246static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
10247                                           unsigned char *__c) {
10248  __builtin_altivec_stvx((vector int)__a, __b, __c);
10249}
10250
10251static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
10252                                           signed char *__c) {
10253  __builtin_altivec_stvx((vector int)__a, __b, __c);
10254}
10255
10256static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
10257                                           unsigned char *__c) {
10258  __builtin_altivec_stvx((vector int)__a, __b, __c);
10259}
10260
10261static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
10262                                           vector bool char *__c) {
10263  __builtin_altivec_stvx((vector int)__a, __b, __c);
10264}
10265
10266static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
10267                                           vector short *__c) {
10268  __builtin_altivec_stvx((vector int)__a, __b, __c);
10269}
10270
10271static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
10272                                           short *__c) {
10273  __builtin_altivec_stvx((vector int)__a, __b, __c);
10274}
10275
10276static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
10277                                           vector unsigned short *__c) {
10278  __builtin_altivec_stvx((vector int)__a, __b, __c);
10279}
10280
10281static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
10282                                           unsigned short *__c) {
10283  __builtin_altivec_stvx((vector int)__a, __b, __c);
10284}
10285
10286static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
10287                                           short *__c) {
10288  __builtin_altivec_stvx((vector int)__a, __b, __c);
10289}
10290
10291static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
10292                                           unsigned short *__c) {
10293  __builtin_altivec_stvx((vector int)__a, __b, __c);
10294}
10295
10296static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
10297                                           vector bool short *__c) {
10298  __builtin_altivec_stvx((vector int)__a, __b, __c);
10299}
10300
10301static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
10302                                           short *__c) {
10303  __builtin_altivec_stvx((vector int)__a, __b, __c);
10304}
10305
10306static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
10307                                           unsigned short *__c) {
10308  __builtin_altivec_stvx((vector int)__a, __b, __c);
10309}
10310
10311static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
10312                                           vector pixel *__c) {
10313  __builtin_altivec_stvx((vector int)__a, __b, __c);
10314}
10315
10316static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b,
10317                                           vector int *__c) {
10318  __builtin_altivec_stvx(__a, __b, __c);
10319}
10320
10321static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) {
10322  __builtin_altivec_stvx(__a, __b, __c);
10323}
10324
10325static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
10326                                           vector unsigned int *__c) {
10327  __builtin_altivec_stvx((vector int)__a, __b, __c);
10328}
10329
10330static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
10331                                           unsigned int *__c) {
10332  __builtin_altivec_stvx((vector int)__a, __b, __c);
10333}
10334
10335static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
10336                                           int *__c) {
10337  __builtin_altivec_stvx((vector int)__a, __b, __c);
10338}
10339
10340static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
10341                                           unsigned int *__c) {
10342  __builtin_altivec_stvx((vector int)__a, __b, __c);
10343}
10344
10345static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
10346                                           vector bool int *__c) {
10347  __builtin_altivec_stvx((vector int)__a, __b, __c);
10348}
10349
10350static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
10351                                           vector float *__c) {
10352  __builtin_altivec_stvx((vector int)__a, __b, __c);
10353}
10354
10355static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
10356                                           float *__c) {
10357  __builtin_altivec_stvx((vector int)__a, __b, __c);
10358}
10359
10360/* vec_stvx */
10361
10362static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
10363                                             vector signed char *__c) {
10364  __builtin_altivec_stvx((vector int)__a, __b, __c);
10365}
10366
10367static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
10368                                             signed char *__c) {
10369  __builtin_altivec_stvx((vector int)__a, __b, __c);
10370}
10371
10372static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
10373                                             vector unsigned char *__c) {
10374  __builtin_altivec_stvx((vector int)__a, __b, __c);
10375}
10376
10377static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
10378                                             unsigned char *__c) {
10379  __builtin_altivec_stvx((vector int)__a, __b, __c);
10380}
10381
10382static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
10383                                             signed char *__c) {
10384  __builtin_altivec_stvx((vector int)__a, __b, __c);
10385}
10386
10387static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
10388                                             unsigned char *__c) {
10389  __builtin_altivec_stvx((vector int)__a, __b, __c);
10390}
10391
10392static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
10393                                             vector bool char *__c) {
10394  __builtin_altivec_stvx((vector int)__a, __b, __c);
10395}
10396
10397static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
10398                                             vector short *__c) {
10399  __builtin_altivec_stvx((vector int)__a, __b, __c);
10400}
10401
10402static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
10403                                             short *__c) {
10404  __builtin_altivec_stvx((vector int)__a, __b, __c);
10405}
10406
10407static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
10408                                             vector unsigned short *__c) {
10409  __builtin_altivec_stvx((vector int)__a, __b, __c);
10410}
10411
10412static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
10413                                             unsigned short *__c) {
10414  __builtin_altivec_stvx((vector int)__a, __b, __c);
10415}
10416
10417static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
10418                                             short *__c) {
10419  __builtin_altivec_stvx((vector int)__a, __b, __c);
10420}
10421
10422static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
10423                                             unsigned short *__c) {
10424  __builtin_altivec_stvx((vector int)__a, __b, __c);
10425}
10426
10427static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
10428                                             vector bool short *__c) {
10429  __builtin_altivec_stvx((vector int)__a, __b, __c);
10430}
10431
10432static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
10433                                             short *__c) {
10434  __builtin_altivec_stvx((vector int)__a, __b, __c);
10435}
10436
10437static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
10438                                             unsigned short *__c) {
10439  __builtin_altivec_stvx((vector int)__a, __b, __c);
10440}
10441
10442static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
10443                                             vector pixel *__c) {
10444  __builtin_altivec_stvx((vector int)__a, __b, __c);
10445}
10446
10447static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
10448                                             vector int *__c) {
10449  __builtin_altivec_stvx(__a, __b, __c);
10450}
10451
10452static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
10453                                             int *__c) {
10454  __builtin_altivec_stvx(__a, __b, __c);
10455}
10456
10457static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
10458                                             vector unsigned int *__c) {
10459  __builtin_altivec_stvx((vector int)__a, __b, __c);
10460}
10461
10462static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
10463                                             unsigned int *__c) {
10464  __builtin_altivec_stvx((vector int)__a, __b, __c);
10465}
10466
10467static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
10468                                             int *__c) {
10469  __builtin_altivec_stvx((vector int)__a, __b, __c);
10470}
10471
10472static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
10473                                             unsigned int *__c) {
10474  __builtin_altivec_stvx((vector int)__a, __b, __c);
10475}
10476
10477static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
10478                                             vector bool int *__c) {
10479  __builtin_altivec_stvx((vector int)__a, __b, __c);
10480}
10481
10482static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
10483                                             vector float *__c) {
10484  __builtin_altivec_stvx((vector int)__a, __b, __c);
10485}
10486
10487static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
10488                                             float *__c) {
10489  __builtin_altivec_stvx((vector int)__a, __b, __c);
10490}
10491
10492/* vec_ste */
10493
10494static __inline__ void __ATTRS_o_ai vec_ste(vector signed char __a, int __b,
10495                                            signed char *__c) {
10496  __builtin_altivec_stvebx((vector char)__a, __b, __c);
10497}
10498
10499static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b,
10500                                            unsigned char *__c) {
10501  __builtin_altivec_stvebx((vector char)__a, __b, __c);
10502}
10503
10504static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
10505                                            signed char *__c) {
10506  __builtin_altivec_stvebx((vector char)__a, __b, __c);
10507}
10508
10509static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
10510                                            unsigned char *__c) {
10511  __builtin_altivec_stvebx((vector char)__a, __b, __c);
10512}
10513
10514static __inline__ void __ATTRS_o_ai vec_ste(vector short __a, int __b,
10515                                            short *__c) {
10516  __builtin_altivec_stvehx(__a, __b, __c);
10517}
10518
10519static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b,
10520                                            unsigned short *__c) {
10521  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10522}
10523
10524static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
10525                                            short *__c) {
10526  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10527}
10528
10529static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
10530                                            unsigned short *__c) {
10531  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10532}
10533
10534static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
10535                                            short *__c) {
10536  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10537}
10538
10539static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
10540                                            unsigned short *__c) {
10541  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10542}
10543
10544static __inline__ void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) {
10545  __builtin_altivec_stvewx(__a, __b, __c);
10546}
10547
10548static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b,
10549                                            unsigned int *__c) {
10550  __builtin_altivec_stvewx((vector int)__a, __b, __c);
10551}
10552
10553static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
10554                                            int *__c) {
10555  __builtin_altivec_stvewx((vector int)__a, __b, __c);
10556}
10557
10558static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
10559                                            unsigned int *__c) {
10560  __builtin_altivec_stvewx((vector int)__a, __b, __c);
10561}
10562
10563static __inline__ void __ATTRS_o_ai vec_ste(vector float __a, int __b,
10564                                            float *__c) {
10565  __builtin_altivec_stvewx((vector int)__a, __b, __c);
10566}
10567
10568/* vec_stvebx */
10569
10570static __inline__ void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b,
10571                                               signed char *__c) {
10572  __builtin_altivec_stvebx((vector char)__a, __b, __c);
10573}
10574
10575static __inline__ void __ATTRS_o_ai vec_stvebx(vector unsigned char __a,
10576                                               int __b, unsigned char *__c) {
10577  __builtin_altivec_stvebx((vector char)__a, __b, __c);
10578}
10579
10580static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
10581                                               signed char *__c) {
10582  __builtin_altivec_stvebx((vector char)__a, __b, __c);
10583}
10584
10585static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
10586                                               unsigned char *__c) {
10587  __builtin_altivec_stvebx((vector char)__a, __b, __c);
10588}
10589
10590/* vec_stvehx */
10591
10592static __inline__ void __ATTRS_o_ai vec_stvehx(vector short __a, int __b,
10593                                               short *__c) {
10594  __builtin_altivec_stvehx(__a, __b, __c);
10595}
10596
10597static __inline__ void __ATTRS_o_ai vec_stvehx(vector unsigned short __a,
10598                                               int __b, unsigned short *__c) {
10599  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10600}
10601
10602static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
10603                                               short *__c) {
10604  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10605}
10606
10607static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
10608                                               unsigned short *__c) {
10609  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10610}
10611
10612static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
10613                                               short *__c) {
10614  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10615}
10616
10617static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
10618                                               unsigned short *__c) {
10619  __builtin_altivec_stvehx((vector short)__a, __b, __c);
10620}
10621
10622/* vec_stvewx */
10623
10624static __inline__ void __ATTRS_o_ai vec_stvewx(vector int __a, int __b,
10625                                               int *__c) {
10626  __builtin_altivec_stvewx(__a, __b, __c);
10627}
10628
10629static __inline__ void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b,
10630                                               unsigned int *__c) {
10631  __builtin_altivec_stvewx((vector int)__a, __b, __c);
10632}
10633
10634static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
10635                                               int *__c) {
10636  __builtin_altivec_stvewx((vector int)__a, __b, __c);
10637}
10638
10639static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
10640                                               unsigned int *__c) {
10641  __builtin_altivec_stvewx((vector int)__a, __b, __c);
10642}
10643
10644static __inline__ void __ATTRS_o_ai vec_stvewx(vector float __a, int __b,
10645                                               float *__c) {
10646  __builtin_altivec_stvewx((vector int)__a, __b, __c);
10647}
10648
10649/* vec_stl */
10650
10651static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
10652                                            vector signed char *__c) {
10653  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10654}
10655
10656static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
10657                                            signed char *__c) {
10658  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10659}
10660
10661static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
10662                                            vector unsigned char *__c) {
10663  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10664}
10665
10666static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
10667                                            unsigned char *__c) {
10668  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10669}
10670
10671static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
10672                                            signed char *__c) {
10673  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10674}
10675
10676static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
10677                                            unsigned char *__c) {
10678  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10679}
10680
10681static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
10682                                            vector bool char *__c) {
10683  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10684}
10685
10686static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
10687                                            vector short *__c) {
10688  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10689}
10690
10691static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
10692                                            short *__c) {
10693  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10694}
10695
10696static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
10697                                            vector unsigned short *__c) {
10698  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10699}
10700
10701static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
10702                                            unsigned short *__c) {
10703  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10704}
10705
10706static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
10707                                            short *__c) {
10708  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10709}
10710
10711static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
10712                                            unsigned short *__c) {
10713  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10714}
10715
10716static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
10717                                            vector bool short *__c) {
10718  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10719}
10720
10721static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
10722                                            short *__c) {
10723  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10724}
10725
10726static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
10727                                            unsigned short *__c) {
10728  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10729}
10730
10731static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
10732                                            vector pixel *__c) {
10733  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10734}
10735
10736static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b,
10737                                            vector int *__c) {
10738  __builtin_altivec_stvxl(__a, __b, __c);
10739}
10740
10741static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) {
10742  __builtin_altivec_stvxl(__a, __b, __c);
10743}
10744
10745static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
10746                                            vector unsigned int *__c) {
10747  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10748}
10749
10750static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
10751                                            unsigned int *__c) {
10752  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10753}
10754
10755static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
10756                                            int *__c) {
10757  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10758}
10759
10760static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
10761                                            unsigned int *__c) {
10762  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10763}
10764
10765static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
10766                                            vector bool int *__c) {
10767  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10768}
10769
10770static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
10771                                            vector float *__c) {
10772  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10773}
10774
10775static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
10776                                            float *__c) {
10777  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10778}
10779
10780/* vec_stvxl */
10781
10782static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
10783                                              vector signed char *__c) {
10784  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10785}
10786
10787static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
10788                                              signed char *__c) {
10789  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10790}
10791
10792static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
10793                                              vector unsigned char *__c) {
10794  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10795}
10796
10797static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
10798                                              unsigned char *__c) {
10799  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10800}
10801
10802static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
10803                                              signed char *__c) {
10804  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10805}
10806
10807static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
10808                                              unsigned char *__c) {
10809  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10810}
10811
10812static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
10813                                              vector bool char *__c) {
10814  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10815}
10816
10817static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
10818                                              vector short *__c) {
10819  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10820}
10821
10822static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
10823                                              short *__c) {
10824  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10825}
10826
10827static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
10828                                              int __b,
10829                                              vector unsigned short *__c) {
10830  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10831}
10832
10833static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
10834                                              int __b, unsigned short *__c) {
10835  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10836}
10837
10838static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
10839                                              short *__c) {
10840  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10841}
10842
10843static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
10844                                              unsigned short *__c) {
10845  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10846}
10847
10848static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
10849                                              vector bool short *__c) {
10850  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10851}
10852
10853static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
10854                                              short *__c) {
10855  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10856}
10857
10858static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
10859                                              unsigned short *__c) {
10860  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10861}
10862
10863static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
10864                                              vector pixel *__c) {
10865  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10866}
10867
10868static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
10869                                              vector int *__c) {
10870  __builtin_altivec_stvxl(__a, __b, __c);
10871}
10872
10873static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
10874                                              int *__c) {
10875  __builtin_altivec_stvxl(__a, __b, __c);
10876}
10877
10878static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
10879                                              vector unsigned int *__c) {
10880  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10881}
10882
10883static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
10884                                              unsigned int *__c) {
10885  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10886}
10887
10888static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
10889                                              int *__c) {
10890  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10891}
10892
10893static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
10894                                              unsigned int *__c) {
10895  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10896}
10897
10898static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
10899                                              vector bool int *__c) {
10900  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10901}
10902
10903static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
10904                                              vector float *__c) {
10905  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10906}
10907
10908static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
10909                                              float *__c) {
10910  __builtin_altivec_stvxl((vector int)__a, __b, __c);
10911}
10912
10913/* vec_sub */
10914
10915static __inline__ vector signed char __ATTRS_o_ai
10916vec_sub(vector signed char __a, vector signed char __b) {
10917  return __a - __b;
10918}
10919
10920static __inline__ vector signed char __ATTRS_o_ai
10921vec_sub(vector bool char __a, vector signed char __b) {
10922  return (vector signed char)__a - __b;
10923}
10924
10925static __inline__ vector signed char __ATTRS_o_ai
10926vec_sub(vector signed char __a, vector bool char __b) {
10927  return __a - (vector signed char)__b;
10928}
10929
10930static __inline__ vector unsigned char __ATTRS_o_ai
10931vec_sub(vector unsigned char __a, vector unsigned char __b) {
10932  return __a - __b;
10933}
10934
10935static __inline__ vector unsigned char __ATTRS_o_ai
10936vec_sub(vector bool char __a, vector unsigned char __b) {
10937  return (vector unsigned char)__a - __b;
10938}
10939
10940static __inline__ vector unsigned char __ATTRS_o_ai
10941vec_sub(vector unsigned char __a, vector bool char __b) {
10942  return __a - (vector unsigned char)__b;
10943}
10944
10945static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
10946                                                    vector short __b) {
10947  return __a - __b;
10948}
10949
10950static __inline__ vector short __ATTRS_o_ai vec_sub(vector bool short __a,
10951                                                    vector short __b) {
10952  return (vector short)__a - __b;
10953}
10954
10955static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
10956                                                    vector bool short __b) {
10957  return __a - (vector short)__b;
10958}
10959
10960static __inline__ vector unsigned short __ATTRS_o_ai
10961vec_sub(vector unsigned short __a, vector unsigned short __b) {
10962  return __a - __b;
10963}
10964
10965static __inline__ vector unsigned short __ATTRS_o_ai
10966vec_sub(vector bool short __a, vector unsigned short __b) {
10967  return (vector unsigned short)__a - __b;
10968}
10969
10970static __inline__ vector unsigned short __ATTRS_o_ai
10971vec_sub(vector unsigned short __a, vector bool short __b) {
10972  return __a - (vector unsigned short)__b;
10973}
10974
10975static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
10976                                                  vector int __b) {
10977  return __a - __b;
10978}
10979
10980static __inline__ vector int __ATTRS_o_ai vec_sub(vector bool int __a,
10981                                                  vector int __b) {
10982  return (vector int)__a - __b;
10983}
10984
10985static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
10986                                                  vector bool int __b) {
10987  return __a - (vector int)__b;
10988}
10989
10990static __inline__ vector unsigned int __ATTRS_o_ai
10991vec_sub(vector unsigned int __a, vector unsigned int __b) {
10992  return __a - __b;
10993}
10994
10995static __inline__ vector unsigned int __ATTRS_o_ai
10996vec_sub(vector bool int __a, vector unsigned int __b) {
10997  return (vector unsigned int)__a - __b;
10998}
10999
11000static __inline__ vector unsigned int __ATTRS_o_ai
11001vec_sub(vector unsigned int __a, vector bool int __b) {
11002  return __a - (vector unsigned int)__b;
11003}
11004
11005#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11006static __inline__ vector signed __int128 __ATTRS_o_ai
11007vec_sub(vector signed __int128 __a, vector signed __int128 __b) {
11008  return __a - __b;
11009}
11010
11011static __inline__ vector unsigned __int128 __ATTRS_o_ai
11012vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11013  return __a - __b;
11014}
11015#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11016
11017#ifdef __VSX__
11018static __inline__ vector signed long long __ATTRS_o_ai
11019vec_sub(vector signed long long __a, vector signed long long __b) {
11020  return __a - __b;
11021}
11022
11023static __inline__ vector unsigned long long __ATTRS_o_ai
11024vec_sub(vector unsigned long long __a, vector unsigned long long __b) {
11025  return __a - __b;
11026}
11027
11028static __inline__ vector double __ATTRS_o_ai vec_sub(vector double __a,
11029                                                     vector double __b) {
11030  return __a - __b;
11031}
11032#endif
11033
11034static __inline__ vector float __ATTRS_o_ai vec_sub(vector float __a,
11035                                                    vector float __b) {
11036  return __a - __b;
11037}
11038
11039/* vec_vsububm */
11040
11041#define __builtin_altivec_vsububm vec_vsububm
11042
11043static __inline__ vector signed char __ATTRS_o_ai
11044vec_vsububm(vector signed char __a, vector signed char __b) {
11045  return __a - __b;
11046}
11047
11048static __inline__ vector signed char __ATTRS_o_ai
11049vec_vsububm(vector bool char __a, vector signed char __b) {
11050  return (vector signed char)__a - __b;
11051}
11052
11053static __inline__ vector signed char __ATTRS_o_ai
11054vec_vsububm(vector signed char __a, vector bool char __b) {
11055  return __a - (vector signed char)__b;
11056}
11057
11058static __inline__ vector unsigned char __ATTRS_o_ai
11059vec_vsububm(vector unsigned char __a, vector unsigned char __b) {
11060  return __a - __b;
11061}
11062
11063static __inline__ vector unsigned char __ATTRS_o_ai
11064vec_vsububm(vector bool char __a, vector unsigned char __b) {
11065  return (vector unsigned char)__a - __b;
11066}
11067
11068static __inline__ vector unsigned char __ATTRS_o_ai
11069vec_vsububm(vector unsigned char __a, vector bool char __b) {
11070  return __a - (vector unsigned char)__b;
11071}
11072
11073/* vec_vsubuhm */
11074
11075#define __builtin_altivec_vsubuhm vec_vsubuhm
11076
11077static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
11078                                                        vector short __b) {
11079  return __a - __b;
11080}
11081
11082static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a,
11083                                                        vector short __b) {
11084  return (vector short)__a - __b;
11085}
11086
11087static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
11088                                                        vector bool short __b) {
11089  return __a - (vector short)__b;
11090}
11091
11092static __inline__ vector unsigned short __ATTRS_o_ai
11093vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) {
11094  return __a - __b;
11095}
11096
11097static __inline__ vector unsigned short __ATTRS_o_ai
11098vec_vsubuhm(vector bool short __a, vector unsigned short __b) {
11099  return (vector unsigned short)__a - __b;
11100}
11101
11102static __inline__ vector unsigned short __ATTRS_o_ai
11103vec_vsubuhm(vector unsigned short __a, vector bool short __b) {
11104  return __a - (vector unsigned short)__b;
11105}
11106
11107/* vec_vsubuwm */
11108
11109#define __builtin_altivec_vsubuwm vec_vsubuwm
11110
11111static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
11112                                                      vector int __b) {
11113  return __a - __b;
11114}
11115
11116static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
11117                                                      vector int __b) {
11118  return (vector int)__a - __b;
11119}
11120
11121static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
11122                                                      vector bool int __b) {
11123  return __a - (vector int)__b;
11124}
11125
11126static __inline__ vector unsigned int __ATTRS_o_ai
11127vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) {
11128  return __a - __b;
11129}
11130
11131static __inline__ vector unsigned int __ATTRS_o_ai
11132vec_vsubuwm(vector bool int __a, vector unsigned int __b) {
11133  return (vector unsigned int)__a - __b;
11134}
11135
11136static __inline__ vector unsigned int __ATTRS_o_ai
11137vec_vsubuwm(vector unsigned int __a, vector bool int __b) {
11138  return __a - (vector unsigned int)__b;
11139}
11140
11141/* vec_vsubfp */
11142
11143#define __builtin_altivec_vsubfp vec_vsubfp
11144
11145static __inline__ vector float __attribute__((__always_inline__))
11146vec_vsubfp(vector float __a, vector float __b) {
11147  return __a - __b;
11148}
11149
11150/* vec_subc */
11151
11152static __inline__ vector signed int __ATTRS_o_ai
11153vec_subc(vector signed int __a, vector signed int __b) {
11154  return (vector signed int)__builtin_altivec_vsubcuw((vector unsigned int)__a,
11155                                                      (vector unsigned int) __b);
11156}
11157
11158static __inline__ vector unsigned int __ATTRS_o_ai
11159vec_subc(vector unsigned int __a, vector unsigned int __b) {
11160  return __builtin_altivec_vsubcuw(__a, __b);
11161}
11162
11163#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11164static __inline__ vector unsigned __int128 __ATTRS_o_ai
11165vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11166  return __builtin_altivec_vsubcuq(__a, __b);
11167}
11168
11169static __inline__ vector signed __int128 __ATTRS_o_ai
11170vec_subc(vector signed __int128 __a, vector signed __int128 __b) {
11171  return __builtin_altivec_vsubcuq(__a, __b);
11172}
11173#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11174
11175/* vec_vsubcuw */
11176
11177static __inline__ vector unsigned int __attribute__((__always_inline__))
11178vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) {
11179  return __builtin_altivec_vsubcuw(__a, __b);
11180}
11181
11182/* vec_subs */
11183
11184static __inline__ vector signed char __ATTRS_o_ai
11185vec_subs(vector signed char __a, vector signed char __b) {
11186  return __builtin_altivec_vsubsbs(__a, __b);
11187}
11188
11189static __inline__ vector signed char __ATTRS_o_ai
11190vec_subs(vector bool char __a, vector signed char __b) {
11191  return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
11192}
11193
11194static __inline__ vector signed char __ATTRS_o_ai
11195vec_subs(vector signed char __a, vector bool char __b) {
11196  return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
11197}
11198
11199static __inline__ vector unsigned char __ATTRS_o_ai
11200vec_subs(vector unsigned char __a, vector unsigned char __b) {
11201  return __builtin_altivec_vsububs(__a, __b);
11202}
11203
11204static __inline__ vector unsigned char __ATTRS_o_ai
11205vec_subs(vector bool char __a, vector unsigned char __b) {
11206  return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
11207}
11208
11209static __inline__ vector unsigned char __ATTRS_o_ai
11210vec_subs(vector unsigned char __a, vector bool char __b) {
11211  return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
11212}
11213
11214static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
11215                                                     vector short __b) {
11216  return __builtin_altivec_vsubshs(__a, __b);
11217}
11218
11219static __inline__ vector short __ATTRS_o_ai vec_subs(vector bool short __a,
11220                                                     vector short __b) {
11221  return __builtin_altivec_vsubshs((vector short)__a, __b);
11222}
11223
11224static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
11225                                                     vector bool short __b) {
11226  return __builtin_altivec_vsubshs(__a, (vector short)__b);
11227}
11228
11229static __inline__ vector unsigned short __ATTRS_o_ai
11230vec_subs(vector unsigned short __a, vector unsigned short __b) {
11231  return __builtin_altivec_vsubuhs(__a, __b);
11232}
11233
11234static __inline__ vector unsigned short __ATTRS_o_ai
11235vec_subs(vector bool short __a, vector unsigned short __b) {
11236  return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
11237}
11238
11239static __inline__ vector unsigned short __ATTRS_o_ai
11240vec_subs(vector unsigned short __a, vector bool short __b) {
11241  return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
11242}
11243
11244static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
11245                                                   vector int __b) {
11246  return __builtin_altivec_vsubsws(__a, __b);
11247}
11248
11249static __inline__ vector int __ATTRS_o_ai vec_subs(vector bool int __a,
11250                                                   vector int __b) {
11251  return __builtin_altivec_vsubsws((vector int)__a, __b);
11252}
11253
11254static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
11255                                                   vector bool int __b) {
11256  return __builtin_altivec_vsubsws(__a, (vector int)__b);
11257}
11258
11259static __inline__ vector unsigned int __ATTRS_o_ai
11260vec_subs(vector unsigned int __a, vector unsigned int __b) {
11261  return __builtin_altivec_vsubuws(__a, __b);
11262}
11263
11264static __inline__ vector unsigned int __ATTRS_o_ai
11265vec_subs(vector bool int __a, vector unsigned int __b) {
11266  return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
11267}
11268
11269static __inline__ vector unsigned int __ATTRS_o_ai
11270vec_subs(vector unsigned int __a, vector bool int __b) {
11271  return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
11272}
11273
11274/* vec_vsubsbs */
11275
11276static __inline__ vector signed char __ATTRS_o_ai
11277vec_vsubsbs(vector signed char __a, vector signed char __b) {
11278  return __builtin_altivec_vsubsbs(__a, __b);
11279}
11280
11281static __inline__ vector signed char __ATTRS_o_ai
11282vec_vsubsbs(vector bool char __a, vector signed char __b) {
11283  return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
11284}
11285
11286static __inline__ vector signed char __ATTRS_o_ai
11287vec_vsubsbs(vector signed char __a, vector bool char __b) {
11288  return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
11289}
11290
11291/* vec_vsububs */
11292
11293static __inline__ vector unsigned char __ATTRS_o_ai
11294vec_vsububs(vector unsigned char __a, vector unsigned char __b) {
11295  return __builtin_altivec_vsububs(__a, __b);
11296}
11297
11298static __inline__ vector unsigned char __ATTRS_o_ai
11299vec_vsububs(vector bool char __a, vector unsigned char __b) {
11300  return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
11301}
11302
11303static __inline__ vector unsigned char __ATTRS_o_ai
11304vec_vsububs(vector unsigned char __a, vector bool char __b) {
11305  return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
11306}
11307
11308/* vec_vsubshs */
11309
11310static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
11311                                                        vector short __b) {
11312  return __builtin_altivec_vsubshs(__a, __b);
11313}
11314
11315static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a,
11316                                                        vector short __b) {
11317  return __builtin_altivec_vsubshs((vector short)__a, __b);
11318}
11319
11320static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
11321                                                        vector bool short __b) {
11322  return __builtin_altivec_vsubshs(__a, (vector short)__b);
11323}
11324
11325/* vec_vsubuhs */
11326
11327static __inline__ vector unsigned short __ATTRS_o_ai
11328vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) {
11329  return __builtin_altivec_vsubuhs(__a, __b);
11330}
11331
11332static __inline__ vector unsigned short __ATTRS_o_ai
11333vec_vsubuhs(vector bool short __a, vector unsigned short __b) {
11334  return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
11335}
11336
11337static __inline__ vector unsigned short __ATTRS_o_ai
11338vec_vsubuhs(vector unsigned short __a, vector bool short __b) {
11339  return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
11340}
11341
11342/* vec_vsubsws */
11343
11344static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
11345                                                      vector int __b) {
11346  return __builtin_altivec_vsubsws(__a, __b);
11347}
11348
11349static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a,
11350                                                      vector int __b) {
11351  return __builtin_altivec_vsubsws((vector int)__a, __b);
11352}
11353
11354static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
11355                                                      vector bool int __b) {
11356  return __builtin_altivec_vsubsws(__a, (vector int)__b);
11357}
11358
11359/* vec_vsubuws */
11360
11361static __inline__ vector unsigned int __ATTRS_o_ai
11362vec_vsubuws(vector unsigned int __a, vector unsigned int __b) {
11363  return __builtin_altivec_vsubuws(__a, __b);
11364}
11365
11366static __inline__ vector unsigned int __ATTRS_o_ai
11367vec_vsubuws(vector bool int __a, vector unsigned int __b) {
11368  return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
11369}
11370
11371static __inline__ vector unsigned int __ATTRS_o_ai
11372vec_vsubuws(vector unsigned int __a, vector bool int __b) {
11373  return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
11374}
11375
11376#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11377/* vec_vsubuqm */
11378
11379static __inline__ vector signed __int128 __ATTRS_o_ai
11380vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) {
11381  return __a - __b;
11382}
11383
11384static __inline__ vector unsigned __int128 __ATTRS_o_ai
11385vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11386  return __a - __b;
11387}
11388
11389/* vec_vsubeuqm */
11390
11391
11392static __inline__ vector signed __int128 __ATTRS_o_ai
11393vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b,
11394             vector signed __int128 __c) {
11395  return __builtin_altivec_vsubeuqm(__a, __b, __c);
11396}
11397
11398static __inline__ vector unsigned __int128 __ATTRS_o_ai
11399vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
11400             vector unsigned __int128 __c) {
11401  return __builtin_altivec_vsubeuqm(__a, __b, __c);
11402}
11403
11404static __inline__ vector signed __int128 __ATTRS_o_ai
11405vec_sube(vector signed __int128 __a, vector signed __int128 __b,
11406             vector signed __int128 __c) {
11407  return __builtin_altivec_vsubeuqm(__a, __b, __c);
11408}
11409
11410static __inline__ vector unsigned __int128 __ATTRS_o_ai
11411vec_sube(vector unsigned __int128 __a, vector unsigned __int128 __b,
11412             vector unsigned __int128 __c) {
11413  return __builtin_altivec_vsubeuqm(__a, __b, __c);
11414}
11415
11416/* vec_vsubcuq */
11417
11418static __inline__ vector signed __int128 __ATTRS_o_ai
11419vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) {
11420  return __builtin_altivec_vsubcuq(__a, __b);
11421}
11422
11423static __inline__ vector unsigned __int128 __ATTRS_o_ai
11424vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
11425  return __builtin_altivec_vsubcuq(__a, __b);
11426}
11427
11428/* vec_vsubecuq */
11429
11430static __inline__ vector signed __int128 __ATTRS_o_ai
11431vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b,
11432             vector signed __int128 __c) {
11433  return __builtin_altivec_vsubecuq(__a, __b, __c);
11434}
11435
11436static __inline__ vector unsigned __int128 __ATTRS_o_ai
11437vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
11438             vector unsigned __int128 __c) {
11439  return __builtin_altivec_vsubecuq(__a, __b, __c);
11440}
11441
11442static __inline__ vector signed int __ATTRS_o_ai
11443vec_subec(vector signed int __a, vector signed int __b,
11444             vector signed int __c) {
11445  return vec_addec(__a, ~__b, __c);
11446}
11447
11448static __inline__ vector unsigned int __ATTRS_o_ai
11449vec_subec(vector unsigned int __a, vector unsigned int __b,
11450             vector unsigned int __c) {
11451  return vec_addec(__a, ~__b, __c);
11452}
11453
11454static __inline__ vector signed __int128 __ATTRS_o_ai
11455vec_subec(vector signed __int128 __a, vector signed __int128 __b,
11456             vector signed __int128 __c) {
11457  return __builtin_altivec_vsubecuq(__a, __b, __c);
11458}
11459
11460static __inline__ vector unsigned __int128 __ATTRS_o_ai
11461vec_subec(vector unsigned __int128 __a, vector unsigned __int128 __b,
11462             vector unsigned __int128 __c) {
11463  return __builtin_altivec_vsubecuq(__a, __b, __c);
11464}
11465#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
11466
11467static __inline__ vector signed int __ATTRS_o_ai
11468vec_sube(vector signed int __a, vector signed int __b,
11469         vector signed int __c) {
11470  vector signed int __mask = {1, 1, 1, 1};
11471  vector signed int __carry = __c & __mask;
11472  return vec_adde(__a, ~__b, __carry);
11473}
11474
11475static __inline__ vector unsigned int __ATTRS_o_ai
11476vec_sube(vector unsigned int __a, vector unsigned int __b,
11477         vector unsigned int __c) {
11478  vector unsigned int __mask = {1, 1, 1, 1};
11479  vector unsigned int __carry = __c & __mask;
11480  return vec_adde(__a, ~__b, __carry);
11481}
11482/* vec_sum4s */
11483
11484static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed char __a,
11485                                                    vector int __b) {
11486  return __builtin_altivec_vsum4sbs(__a, __b);
11487}
11488
11489static __inline__ vector unsigned int __ATTRS_o_ai
11490vec_sum4s(vector unsigned char __a, vector unsigned int __b) {
11491  return __builtin_altivec_vsum4ubs(__a, __b);
11492}
11493
11494static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed short __a,
11495                                                    vector int __b) {
11496  return __builtin_altivec_vsum4shs(__a, __b);
11497}
11498
11499/* vec_vsum4sbs */
11500
11501static __inline__ vector int __attribute__((__always_inline__))
11502vec_vsum4sbs(vector signed char __a, vector int __b) {
11503  return __builtin_altivec_vsum4sbs(__a, __b);
11504}
11505
11506/* vec_vsum4ubs */
11507
11508static __inline__ vector unsigned int __attribute__((__always_inline__))
11509vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) {
11510  return __builtin_altivec_vsum4ubs(__a, __b);
11511}
11512
11513/* vec_vsum4shs */
11514
11515static __inline__ vector int __attribute__((__always_inline__))
11516vec_vsum4shs(vector signed short __a, vector int __b) {
11517  return __builtin_altivec_vsum4shs(__a, __b);
11518}
11519
11520/* vec_sum2s */
11521
11522/* The vsum2sws instruction has a big-endian bias, so that the second
11523   input vector and the result always reference big-endian elements
11524   1 and 3 (little-endian element 0 and 2).  For ease of porting the
11525   programmer wants elements 1 and 3 in both cases, so for little
11526   endian we must perform some permutes.  */
11527
11528static __inline__ vector signed int __attribute__((__always_inline__))
11529vec_sum2s(vector int __a, vector int __b) {
11530#ifdef __LITTLE_ENDIAN__
11531  vector int __c = (vector signed int)vec_perm(
11532      __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11533                                       8, 9, 10, 11));
11534  __c = __builtin_altivec_vsum2sws(__a, __c);
11535  return (vector signed int)vec_perm(
11536      __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11537                                       8, 9, 10, 11));
11538#else
11539  return __builtin_altivec_vsum2sws(__a, __b);
11540#endif
11541}
11542
11543/* vec_vsum2sws */
11544
11545static __inline__ vector signed int __attribute__((__always_inline__))
11546vec_vsum2sws(vector int __a, vector int __b) {
11547#ifdef __LITTLE_ENDIAN__
11548  vector int __c = (vector signed int)vec_perm(
11549      __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11550                                       8, 9, 10, 11));
11551  __c = __builtin_altivec_vsum2sws(__a, __c);
11552  return (vector signed int)vec_perm(
11553      __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
11554                                       8, 9, 10, 11));
11555#else
11556  return __builtin_altivec_vsum2sws(__a, __b);
11557#endif
11558}
11559
11560/* vec_sums */
11561
11562/* The vsumsws instruction has a big-endian bias, so that the second
11563   input vector and the result always reference big-endian element 3
11564   (little-endian element 0).  For ease of porting the programmer
11565   wants element 3 in both cases, so for little endian we must perform
11566   some permutes.  */
11567
11568static __inline__ vector signed int __attribute__((__always_inline__))
11569vec_sums(vector signed int __a, vector signed int __b) {
11570#ifdef __LITTLE_ENDIAN__
11571  __b = (vector signed int)vec_splat(__b, 3);
11572  __b = __builtin_altivec_vsumsws(__a, __b);
11573  return (vector signed int)(0, 0, 0, __b[0]);
11574#else
11575  return __builtin_altivec_vsumsws(__a, __b);
11576#endif
11577}
11578
11579/* vec_vsumsws */
11580
11581static __inline__ vector signed int __attribute__((__always_inline__))
11582vec_vsumsws(vector signed int __a, vector signed int __b) {
11583#ifdef __LITTLE_ENDIAN__
11584  __b = (vector signed int)vec_splat(__b, 3);
11585  __b = __builtin_altivec_vsumsws(__a, __b);
11586  return (vector signed int)(0, 0, 0, __b[0]);
11587#else
11588  return __builtin_altivec_vsumsws(__a, __b);
11589#endif
11590}
11591
11592/* vec_trunc */
11593
11594static __inline__ vector float __ATTRS_o_ai vec_trunc(vector float __a) {
11595#ifdef __VSX__
11596  return __builtin_vsx_xvrspiz(__a);
11597#else
11598  return __builtin_altivec_vrfiz(__a);
11599#endif
11600}
11601
11602#ifdef __VSX__
11603static __inline__ vector double __ATTRS_o_ai vec_trunc(vector double __a) {
11604  return __builtin_vsx_xvrdpiz(__a);
11605}
11606#endif
11607
11608/* vec_vrfiz */
11609
11610static __inline__ vector float __attribute__((__always_inline__))
11611vec_vrfiz(vector float __a) {
11612  return __builtin_altivec_vrfiz(__a);
11613}
11614
11615/* vec_unpackh */
11616
11617/* The vector unpack instructions all have a big-endian bias, so for
11618   little endian we must reverse the meanings of "high" and "low."  */
11619
11620static __inline__ vector short __ATTRS_o_ai
11621vec_unpackh(vector signed char __a) {
11622#ifdef __LITTLE_ENDIAN__
11623  return __builtin_altivec_vupklsb((vector char)__a);
11624#else
11625  return __builtin_altivec_vupkhsb((vector char)__a);
11626#endif
11627}
11628
11629static __inline__ vector bool short __ATTRS_o_ai
11630vec_unpackh(vector bool char __a) {
11631#ifdef __LITTLE_ENDIAN__
11632  return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
11633#else
11634  return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
11635#endif
11636}
11637
11638static __inline__ vector int __ATTRS_o_ai vec_unpackh(vector short __a) {
11639#ifdef __LITTLE_ENDIAN__
11640  return __builtin_altivec_vupklsh(__a);
11641#else
11642  return __builtin_altivec_vupkhsh(__a);
11643#endif
11644}
11645
11646static __inline__ vector bool int __ATTRS_o_ai
11647vec_unpackh(vector bool short __a) {
11648#ifdef __LITTLE_ENDIAN__
11649  return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
11650#else
11651  return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
11652#endif
11653}
11654
11655static __inline__ vector unsigned int __ATTRS_o_ai
11656vec_unpackh(vector pixel __a) {
11657#ifdef __LITTLE_ENDIAN__
11658  return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
11659#else
11660  return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
11661#endif
11662}
11663
11664#ifdef __POWER8_VECTOR__
11665static __inline__ vector long long __ATTRS_o_ai vec_unpackh(vector int __a) {
11666#ifdef __LITTLE_ENDIAN__
11667  return __builtin_altivec_vupklsw(__a);
11668#else
11669  return __builtin_altivec_vupkhsw(__a);
11670#endif
11671}
11672
11673static __inline__ vector bool long long __ATTRS_o_ai
11674vec_unpackh(vector bool int __a) {
11675#ifdef __LITTLE_ENDIAN__
11676  return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
11677#else
11678  return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
11679#endif
11680}
11681
11682static __inline__ vector double __ATTRS_o_ai
11683vec_unpackh(vector float __a) {
11684  return (vector double)(__a[0], __a[1]);
11685}
11686#endif
11687
11688/* vec_vupkhsb */
11689
11690static __inline__ vector short __ATTRS_o_ai
11691vec_vupkhsb(vector signed char __a) {
11692#ifdef __LITTLE_ENDIAN__
11693  return __builtin_altivec_vupklsb((vector char)__a);
11694#else
11695  return __builtin_altivec_vupkhsb((vector char)__a);
11696#endif
11697}
11698
11699static __inline__ vector bool short __ATTRS_o_ai
11700vec_vupkhsb(vector bool char __a) {
11701#ifdef __LITTLE_ENDIAN__
11702  return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
11703#else
11704  return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
11705#endif
11706}
11707
11708/* vec_vupkhsh */
11709
11710static __inline__ vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) {
11711#ifdef __LITTLE_ENDIAN__
11712  return __builtin_altivec_vupklsh(__a);
11713#else
11714  return __builtin_altivec_vupkhsh(__a);
11715#endif
11716}
11717
11718static __inline__ vector bool int __ATTRS_o_ai
11719vec_vupkhsh(vector bool short __a) {
11720#ifdef __LITTLE_ENDIAN__
11721  return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
11722#else
11723  return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
11724#endif
11725}
11726
11727static __inline__ vector unsigned int __ATTRS_o_ai
11728vec_vupkhsh(vector pixel __a) {
11729#ifdef __LITTLE_ENDIAN__
11730  return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
11731#else
11732  return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
11733#endif
11734}
11735
11736/* vec_vupkhsw */
11737
11738#ifdef __POWER8_VECTOR__
11739static __inline__ vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) {
11740#ifdef __LITTLE_ENDIAN__
11741  return __builtin_altivec_vupklsw(__a);
11742#else
11743  return __builtin_altivec_vupkhsw(__a);
11744#endif
11745}
11746
11747static __inline__ vector bool long long __ATTRS_o_ai
11748vec_vupkhsw(vector bool int __a) {
11749#ifdef __LITTLE_ENDIAN__
11750  return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
11751#else
11752  return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
11753#endif
11754}
11755#endif
11756
11757/* vec_unpackl */
11758
11759static __inline__ vector short __ATTRS_o_ai
11760vec_unpackl(vector signed char __a) {
11761#ifdef __LITTLE_ENDIAN__
11762  return __builtin_altivec_vupkhsb((vector char)__a);
11763#else
11764  return __builtin_altivec_vupklsb((vector char)__a);
11765#endif
11766}
11767
11768static __inline__ vector bool short __ATTRS_o_ai
11769vec_unpackl(vector bool char __a) {
11770#ifdef __LITTLE_ENDIAN__
11771  return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
11772#else
11773  return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
11774#endif
11775}
11776
11777static __inline__ vector int __ATTRS_o_ai vec_unpackl(vector short __a) {
11778#ifdef __LITTLE_ENDIAN__
11779  return __builtin_altivec_vupkhsh(__a);
11780#else
11781  return __builtin_altivec_vupklsh(__a);
11782#endif
11783}
11784
11785static __inline__ vector bool int __ATTRS_o_ai
11786vec_unpackl(vector bool short __a) {
11787#ifdef __LITTLE_ENDIAN__
11788  return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
11789#else
11790  return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
11791#endif
11792}
11793
11794static __inline__ vector unsigned int __ATTRS_o_ai
11795vec_unpackl(vector pixel __a) {
11796#ifdef __LITTLE_ENDIAN__
11797  return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
11798#else
11799  return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
11800#endif
11801}
11802
11803#ifdef __POWER8_VECTOR__
11804static __inline__ vector long long __ATTRS_o_ai vec_unpackl(vector int __a) {
11805#ifdef __LITTLE_ENDIAN__
11806  return __builtin_altivec_vupkhsw(__a);
11807#else
11808  return __builtin_altivec_vupklsw(__a);
11809#endif
11810}
11811
11812static __inline__ vector bool long long __ATTRS_o_ai
11813vec_unpackl(vector bool int __a) {
11814#ifdef __LITTLE_ENDIAN__
11815  return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
11816#else
11817  return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
11818#endif
11819}
11820
11821static __inline__ vector double __ATTRS_o_ai
11822vec_unpackl(vector float __a) {
11823  return (vector double)(__a[2], __a[3]);
11824}
11825#endif
11826
11827/* vec_vupklsb */
11828
11829static __inline__ vector short __ATTRS_o_ai
11830vec_vupklsb(vector signed char __a) {
11831#ifdef __LITTLE_ENDIAN__
11832  return __builtin_altivec_vupkhsb((vector char)__a);
11833#else
11834  return __builtin_altivec_vupklsb((vector char)__a);
11835#endif
11836}
11837
11838static __inline__ vector bool short __ATTRS_o_ai
11839vec_vupklsb(vector bool char __a) {
11840#ifdef __LITTLE_ENDIAN__
11841  return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
11842#else
11843  return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
11844#endif
11845}
11846
11847/* vec_vupklsh */
11848
11849static __inline__ vector int __ATTRS_o_ai vec_vupklsh(vector short __a) {
11850#ifdef __LITTLE_ENDIAN__
11851  return __builtin_altivec_vupkhsh(__a);
11852#else
11853  return __builtin_altivec_vupklsh(__a);
11854#endif
11855}
11856
11857static __inline__ vector bool int __ATTRS_o_ai
11858vec_vupklsh(vector bool short __a) {
11859#ifdef __LITTLE_ENDIAN__
11860  return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
11861#else
11862  return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
11863#endif
11864}
11865
11866static __inline__ vector unsigned int __ATTRS_o_ai
11867vec_vupklsh(vector pixel __a) {
11868#ifdef __LITTLE_ENDIAN__
11869  return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
11870#else
11871  return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
11872#endif
11873}
11874
11875/* vec_vupklsw */
11876
11877#ifdef __POWER8_VECTOR__
11878static __inline__ vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) {
11879#ifdef __LITTLE_ENDIAN__
11880  return __builtin_altivec_vupkhsw(__a);
11881#else
11882  return __builtin_altivec_vupklsw(__a);
11883#endif
11884}
11885
11886static __inline__ vector bool long long __ATTRS_o_ai
11887vec_vupklsw(vector bool int __a) {
11888#ifdef __LITTLE_ENDIAN__
11889  return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
11890#else
11891  return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
11892#endif
11893}
11894#endif
11895
11896/* vec_vsx_ld */
11897
11898#ifdef __VSX__
11899
11900static __inline__ vector bool int __ATTRS_o_ai
11901vec_vsx_ld(int __a, const vector bool int *__b) {
11902  return (vector bool int)__builtin_vsx_lxvw4x(__a, __b);
11903}
11904
11905static __inline__ vector signed int __ATTRS_o_ai
11906vec_vsx_ld(int __a, const vector signed int *__b) {
11907  return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
11908}
11909
11910static __inline__ vector signed int __ATTRS_o_ai
11911vec_vsx_ld(int __a, const signed int *__b) {
11912  return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
11913}
11914
11915static __inline__ vector unsigned int __ATTRS_o_ai
11916vec_vsx_ld(int __a, const vector unsigned int *__b) {
11917  return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
11918}
11919
11920static __inline__ vector unsigned int __ATTRS_o_ai
11921vec_vsx_ld(int __a, const unsigned int *__b) {
11922  return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
11923}
11924
11925static __inline__ vector float __ATTRS_o_ai
11926vec_vsx_ld(int __a, const vector float *__b) {
11927  return (vector float)__builtin_vsx_lxvw4x(__a, __b);
11928}
11929
11930static __inline__ vector float __ATTRS_o_ai vec_vsx_ld(int __a,
11931                                                       const float *__b) {
11932  return (vector float)__builtin_vsx_lxvw4x(__a, __b);
11933}
11934
11935static __inline__ vector signed long long __ATTRS_o_ai
11936vec_vsx_ld(int __a, const vector signed long long *__b) {
11937  return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b);
11938}
11939
11940static __inline__ vector unsigned long long __ATTRS_o_ai
11941vec_vsx_ld(int __a, const vector unsigned long long *__b) {
11942  return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b);
11943}
11944
11945static __inline__ vector double __ATTRS_o_ai
11946vec_vsx_ld(int __a, const vector double *__b) {
11947  return (vector double)__builtin_vsx_lxvd2x(__a, __b);
11948}
11949
11950static __inline__ vector double __ATTRS_o_ai
11951vec_vsx_ld(int __a, const double *__b) {
11952  return (vector double)__builtin_vsx_lxvd2x(__a, __b);
11953}
11954
11955static __inline__ vector bool short __ATTRS_o_ai
11956vec_vsx_ld(int __a, const vector bool short *__b) {
11957  return (vector bool short)__builtin_vsx_lxvw4x(__a, __b);
11958}
11959
11960static __inline__ vector signed short __ATTRS_o_ai
11961vec_vsx_ld(int __a, const vector signed short *__b) {
11962  return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
11963}
11964
11965static __inline__ vector signed short __ATTRS_o_ai
11966vec_vsx_ld(int __a, const signed short *__b) {
11967  return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
11968}
11969
11970static __inline__ vector unsigned short __ATTRS_o_ai
11971vec_vsx_ld(int __a, const vector unsigned short *__b) {
11972  return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
11973}
11974
11975static __inline__ vector unsigned short __ATTRS_o_ai
11976vec_vsx_ld(int __a, const unsigned short *__b) {
11977  return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
11978}
11979
11980static __inline__ vector bool char __ATTRS_o_ai
11981vec_vsx_ld(int __a, const vector bool char *__b) {
11982  return (vector bool char)__builtin_vsx_lxvw4x(__a, __b);
11983}
11984
11985static __inline__ vector signed char __ATTRS_o_ai
11986vec_vsx_ld(int __a, const vector signed char *__b) {
11987  return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
11988}
11989
11990static __inline__ vector signed char __ATTRS_o_ai
11991vec_vsx_ld(int __a, const signed char *__b) {
11992  return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
11993}
11994
11995static __inline__ vector unsigned char __ATTRS_o_ai
11996vec_vsx_ld(int __a, const vector unsigned char *__b) {
11997  return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
11998}
11999
12000static __inline__ vector unsigned char __ATTRS_o_ai
12001vec_vsx_ld(int __a, const unsigned char *__b) {
12002  return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
12003}
12004
12005#endif
12006
12007/* vec_vsx_st */
12008
12009#ifdef __VSX__
12010
12011static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
12012                                               vector bool int *__c) {
12013  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12014}
12015
12016static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
12017                                               signed int *__c) {
12018  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12019}
12020
12021static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
12022                                               unsigned int *__c) {
12023  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12024}
12025
12026static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
12027                                               vector signed int *__c) {
12028  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12029}
12030
12031static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
12032                                               signed int *__c) {
12033  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12034}
12035
12036static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
12037                                               vector unsigned int *__c) {
12038  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12039}
12040
12041static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
12042                                               unsigned int *__c) {
12043  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12044}
12045
12046static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
12047                                               vector float *__c) {
12048  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12049}
12050
12051static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
12052                                               float *__c) {
12053  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12054}
12055
12056static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed long long __a,
12057                                               int __b,
12058                                               vector signed long long *__c) {
12059  __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12060}
12061
12062static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a,
12063                                               int __b,
12064                                               vector unsigned long long *__c) {
12065  __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12066}
12067
12068static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
12069                                               vector double *__c) {
12070  __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12071}
12072
12073static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
12074                                               double *__c) {
12075  __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
12076}
12077
12078static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
12079                                               vector bool short *__c) {
12080  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12081}
12082
12083static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
12084                                               signed short *__c) {
12085  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12086}
12087
12088static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
12089                                               unsigned short *__c) {
12090  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12091}
12092static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
12093                                               vector signed short *__c) {
12094  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12095}
12096
12097static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
12098                                               signed short *__c) {
12099  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12100}
12101
12102static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
12103                                               int __b,
12104                                               vector unsigned short *__c) {
12105  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12106}
12107
12108static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
12109                                               int __b, unsigned short *__c) {
12110  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12111}
12112
12113static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
12114                                               vector bool char *__c) {
12115  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12116}
12117
12118static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
12119                                               signed char *__c) {
12120  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12121}
12122
12123static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
12124                                               unsigned char *__c) {
12125  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12126}
12127
12128static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
12129                                               vector signed char *__c) {
12130  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12131}
12132
12133static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
12134                                               signed char *__c) {
12135  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12136}
12137
12138static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
12139                                               int __b,
12140                                               vector unsigned char *__c) {
12141  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12142}
12143
12144static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
12145                                               int __b, unsigned char *__c) {
12146  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
12147}
12148
12149#endif
12150
12151#ifdef __VSX__
12152#define vec_xxpermdi __builtin_vsx_xxpermdi
12153#define vec_xxsldwi __builtin_vsx_xxsldwi
12154#endif
12155
12156/* vec_xor */
12157
12158#define __builtin_altivec_vxor vec_xor
12159
12160static __inline__ vector signed char __ATTRS_o_ai
12161vec_xor(vector signed char __a, vector signed char __b) {
12162  return __a ^ __b;
12163}
12164
12165static __inline__ vector signed char __ATTRS_o_ai
12166vec_xor(vector bool char __a, vector signed char __b) {
12167  return (vector signed char)__a ^ __b;
12168}
12169
12170static __inline__ vector signed char __ATTRS_o_ai
12171vec_xor(vector signed char __a, vector bool char __b) {
12172  return __a ^ (vector signed char)__b;
12173}
12174
12175static __inline__ vector unsigned char __ATTRS_o_ai
12176vec_xor(vector unsigned char __a, vector unsigned char __b) {
12177  return __a ^ __b;
12178}
12179
12180static __inline__ vector unsigned char __ATTRS_o_ai
12181vec_xor(vector bool char __a, vector unsigned char __b) {
12182  return (vector unsigned char)__a ^ __b;
12183}
12184
12185static __inline__ vector unsigned char __ATTRS_o_ai
12186vec_xor(vector unsigned char __a, vector bool char __b) {
12187  return __a ^ (vector unsigned char)__b;
12188}
12189
12190static __inline__ vector bool char __ATTRS_o_ai vec_xor(vector bool char __a,
12191                                                        vector bool char __b) {
12192  return __a ^ __b;
12193}
12194
12195static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
12196                                                    vector short __b) {
12197  return __a ^ __b;
12198}
12199
12200static __inline__ vector short __ATTRS_o_ai vec_xor(vector bool short __a,
12201                                                    vector short __b) {
12202  return (vector short)__a ^ __b;
12203}
12204
12205static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
12206                                                    vector bool short __b) {
12207  return __a ^ (vector short)__b;
12208}
12209
12210static __inline__ vector unsigned short __ATTRS_o_ai
12211vec_xor(vector unsigned short __a, vector unsigned short __b) {
12212  return __a ^ __b;
12213}
12214
12215static __inline__ vector unsigned short __ATTRS_o_ai
12216vec_xor(vector bool short __a, vector unsigned short __b) {
12217  return (vector unsigned short)__a ^ __b;
12218}
12219
12220static __inline__ vector unsigned short __ATTRS_o_ai
12221vec_xor(vector unsigned short __a, vector bool short __b) {
12222  return __a ^ (vector unsigned short)__b;
12223}
12224
12225static __inline__ vector bool short __ATTRS_o_ai
12226vec_xor(vector bool short __a, vector bool short __b) {
12227  return __a ^ __b;
12228}
12229
12230static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
12231                                                  vector int __b) {
12232  return __a ^ __b;
12233}
12234
12235static __inline__ vector int __ATTRS_o_ai vec_xor(vector bool int __a,
12236                                                  vector int __b) {
12237  return (vector int)__a ^ __b;
12238}
12239
12240static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
12241                                                  vector bool int __b) {
12242  return __a ^ (vector int)__b;
12243}
12244
12245static __inline__ vector unsigned int __ATTRS_o_ai
12246vec_xor(vector unsigned int __a, vector unsigned int __b) {
12247  return __a ^ __b;
12248}
12249
12250static __inline__ vector unsigned int __ATTRS_o_ai
12251vec_xor(vector bool int __a, vector unsigned int __b) {
12252  return (vector unsigned int)__a ^ __b;
12253}
12254
12255static __inline__ vector unsigned int __ATTRS_o_ai
12256vec_xor(vector unsigned int __a, vector bool int __b) {
12257  return __a ^ (vector unsigned int)__b;
12258}
12259
12260static __inline__ vector bool int __ATTRS_o_ai vec_xor(vector bool int __a,
12261                                                       vector bool int __b) {
12262  return __a ^ __b;
12263}
12264
12265static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
12266                                                    vector float __b) {
12267  vector unsigned int __res =
12268      (vector unsigned int)__a ^ (vector unsigned int)__b;
12269  return (vector float)__res;
12270}
12271
12272static __inline__ vector float __ATTRS_o_ai vec_xor(vector bool int __a,
12273                                                    vector float __b) {
12274  vector unsigned int __res =
12275      (vector unsigned int)__a ^ (vector unsigned int)__b;
12276  return (vector float)__res;
12277}
12278
12279static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
12280                                                    vector bool int __b) {
12281  vector unsigned int __res =
12282      (vector unsigned int)__a ^ (vector unsigned int)__b;
12283  return (vector float)__res;
12284}
12285
12286#ifdef __VSX__
12287static __inline__ vector signed long long __ATTRS_o_ai
12288vec_xor(vector signed long long __a, vector signed long long __b) {
12289  return __a ^ __b;
12290}
12291
12292static __inline__ vector signed long long __ATTRS_o_ai
12293vec_xor(vector bool long long __a, vector signed long long __b) {
12294  return (vector signed long long)__a ^ __b;
12295}
12296
12297static __inline__ vector signed long long __ATTRS_o_ai
12298vec_xor(vector signed long long __a, vector bool long long __b) {
12299  return __a ^ (vector signed long long)__b;
12300}
12301
12302static __inline__ vector unsigned long long __ATTRS_o_ai
12303vec_xor(vector unsigned long long __a, vector unsigned long long __b) {
12304  return __a ^ __b;
12305}
12306
12307static __inline__ vector unsigned long long __ATTRS_o_ai
12308vec_xor(vector bool long long __a, vector unsigned long long __b) {
12309  return (vector unsigned long long)__a ^ __b;
12310}
12311
12312static __inline__ vector unsigned long long __ATTRS_o_ai
12313vec_xor(vector unsigned long long __a, vector bool long long __b) {
12314  return __a ^ (vector unsigned long long)__b;
12315}
12316
12317static __inline__ vector bool long long __ATTRS_o_ai
12318vec_xor(vector bool long long __a, vector bool long long __b) {
12319  return __a ^ __b;
12320}
12321
12322static __inline__ vector double __ATTRS_o_ai vec_xor(vector double __a,
12323                                                     vector double __b) {
12324  return (vector double)((vector unsigned long long)__a ^
12325                         (vector unsigned long long)__b);
12326}
12327
12328static __inline__ vector double __ATTRS_o_ai
12329vec_xor(vector double __a, vector bool long long __b) {
12330  return (vector double)((vector unsigned long long)__a ^
12331                         (vector unsigned long long)__b);
12332}
12333
12334static __inline__ vector double __ATTRS_o_ai vec_xor(vector bool long long __a,
12335                                                     vector double __b) {
12336  return (vector double)((vector unsigned long long)__a ^
12337                         (vector unsigned long long)__b);
12338}
12339#endif
12340
12341/* vec_vxor */
12342
12343static __inline__ vector signed char __ATTRS_o_ai
12344vec_vxor(vector signed char __a, vector signed char __b) {
12345  return __a ^ __b;
12346}
12347
12348static __inline__ vector signed char __ATTRS_o_ai
12349vec_vxor(vector bool char __a, vector signed char __b) {
12350  return (vector signed char)__a ^ __b;
12351}
12352
12353static __inline__ vector signed char __ATTRS_o_ai
12354vec_vxor(vector signed char __a, vector bool char __b) {
12355  return __a ^ (vector signed char)__b;
12356}
12357
12358static __inline__ vector unsigned char __ATTRS_o_ai
12359vec_vxor(vector unsigned char __a, vector unsigned char __b) {
12360  return __a ^ __b;
12361}
12362
12363static __inline__ vector unsigned char __ATTRS_o_ai
12364vec_vxor(vector bool char __a, vector unsigned char __b) {
12365  return (vector unsigned char)__a ^ __b;
12366}
12367
12368static __inline__ vector unsigned char __ATTRS_o_ai
12369vec_vxor(vector unsigned char __a, vector bool char __b) {
12370  return __a ^ (vector unsigned char)__b;
12371}
12372
12373static __inline__ vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a,
12374                                                         vector bool char __b) {
12375  return __a ^ __b;
12376}
12377
12378static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
12379                                                     vector short __b) {
12380  return __a ^ __b;
12381}
12382
12383static __inline__ vector short __ATTRS_o_ai vec_vxor(vector bool short __a,
12384                                                     vector short __b) {
12385  return (vector short)__a ^ __b;
12386}
12387
12388static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
12389                                                     vector bool short __b) {
12390  return __a ^ (vector short)__b;
12391}
12392
12393static __inline__ vector unsigned short __ATTRS_o_ai
12394vec_vxor(vector unsigned short __a, vector unsigned short __b) {
12395  return __a ^ __b;
12396}
12397
12398static __inline__ vector unsigned short __ATTRS_o_ai
12399vec_vxor(vector bool short __a, vector unsigned short __b) {
12400  return (vector unsigned short)__a ^ __b;
12401}
12402
12403static __inline__ vector unsigned short __ATTRS_o_ai
12404vec_vxor(vector unsigned short __a, vector bool short __b) {
12405  return __a ^ (vector unsigned short)__b;
12406}
12407
12408static __inline__ vector bool short __ATTRS_o_ai
12409vec_vxor(vector bool short __a, vector bool short __b) {
12410  return __a ^ __b;
12411}
12412
12413static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
12414                                                   vector int __b) {
12415  return __a ^ __b;
12416}
12417
12418static __inline__ vector int __ATTRS_o_ai vec_vxor(vector bool int __a,
12419                                                   vector int __b) {
12420  return (vector int)__a ^ __b;
12421}
12422
12423static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
12424                                                   vector bool int __b) {
12425  return __a ^ (vector int)__b;
12426}
12427
12428static __inline__ vector unsigned int __ATTRS_o_ai
12429vec_vxor(vector unsigned int __a, vector unsigned int __b) {
12430  return __a ^ __b;
12431}
12432
12433static __inline__ vector unsigned int __ATTRS_o_ai
12434vec_vxor(vector bool int __a, vector unsigned int __b) {
12435  return (vector unsigned int)__a ^ __b;
12436}
12437
12438static __inline__ vector unsigned int __ATTRS_o_ai
12439vec_vxor(vector unsigned int __a, vector bool int __b) {
12440  return __a ^ (vector unsigned int)__b;
12441}
12442
12443static __inline__ vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a,
12444                                                        vector bool int __b) {
12445  return __a ^ __b;
12446}
12447
12448static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
12449                                                     vector float __b) {
12450  vector unsigned int __res =
12451      (vector unsigned int)__a ^ (vector unsigned int)__b;
12452  return (vector float)__res;
12453}
12454
12455static __inline__ vector float __ATTRS_o_ai vec_vxor(vector bool int __a,
12456                                                     vector float __b) {
12457  vector unsigned int __res =
12458      (vector unsigned int)__a ^ (vector unsigned int)__b;
12459  return (vector float)__res;
12460}
12461
12462static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
12463                                                     vector bool int __b) {
12464  vector unsigned int __res =
12465      (vector unsigned int)__a ^ (vector unsigned int)__b;
12466  return (vector float)__res;
12467}
12468
12469#ifdef __VSX__
12470static __inline__ vector signed long long __ATTRS_o_ai
12471vec_vxor(vector signed long long __a, vector signed long long __b) {
12472  return __a ^ __b;
12473}
12474
12475static __inline__ vector signed long long __ATTRS_o_ai
12476vec_vxor(vector bool long long __a, vector signed long long __b) {
12477  return (vector signed long long)__a ^ __b;
12478}
12479
12480static __inline__ vector signed long long __ATTRS_o_ai
12481vec_vxor(vector signed long long __a, vector bool long long __b) {
12482  return __a ^ (vector signed long long)__b;
12483}
12484
12485static __inline__ vector unsigned long long __ATTRS_o_ai
12486vec_vxor(vector unsigned long long __a, vector unsigned long long __b) {
12487  return __a ^ __b;
12488}
12489
12490static __inline__ vector unsigned long long __ATTRS_o_ai
12491vec_vxor(vector bool long long __a, vector unsigned long long __b) {
12492  return (vector unsigned long long)__a ^ __b;
12493}
12494
12495static __inline__ vector unsigned long long __ATTRS_o_ai
12496vec_vxor(vector unsigned long long __a, vector bool long long __b) {
12497  return __a ^ (vector unsigned long long)__b;
12498}
12499
12500static __inline__ vector bool long long __ATTRS_o_ai
12501vec_vxor(vector bool long long __a, vector bool long long __b) {
12502  return __a ^ __b;
12503}
12504#endif
12505
12506/* ------------------------ extensions for CBEA ----------------------------- */
12507
12508/* vec_extract */
12509
12510static __inline__ signed char __ATTRS_o_ai vec_extract(vector signed char __a,
12511                                                       int __b) {
12512  return __a[__b];
12513}
12514
12515static __inline__ unsigned char __ATTRS_o_ai
12516vec_extract(vector unsigned char __a, int __b) {
12517  return __a[__b];
12518}
12519
12520static __inline__ unsigned char __ATTRS_o_ai vec_extract(vector bool char __a,
12521                                                         int __b) {
12522  return __a[__b];
12523}
12524
12525static __inline__ signed short __ATTRS_o_ai vec_extract(vector signed short __a,
12526                                                        int __b) {
12527  return __a[__b];
12528}
12529
12530static __inline__ unsigned short __ATTRS_o_ai
12531vec_extract(vector unsigned short __a, int __b) {
12532  return __a[__b];
12533}
12534
12535static __inline__ unsigned short __ATTRS_o_ai vec_extract(vector bool short __a,
12536                                                          int __b) {
12537  return __a[__b];
12538}
12539
12540static __inline__ signed int __ATTRS_o_ai vec_extract(vector signed int __a,
12541                                                      int __b) {
12542  return __a[__b];
12543}
12544
12545static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a,
12546                                                        int __b) {
12547  return __a[__b];
12548}
12549
12550static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector bool int __a,
12551                                                        int __b) {
12552  return __a[__b];
12553}
12554
12555#ifdef __VSX__
12556static __inline__ signed long long __ATTRS_o_ai
12557vec_extract(vector signed long long __a, int __b) {
12558  return __a[__b];
12559}
12560
12561static __inline__ unsigned long long __ATTRS_o_ai
12562vec_extract(vector unsigned long long __a, int __b) {
12563  return __a[__b];
12564}
12565
12566static __inline__ unsigned long long __ATTRS_o_ai
12567vec_extract(vector bool long long __a, int __b) {
12568  return __a[__b];
12569}
12570
12571static __inline__ double __ATTRS_o_ai vec_extract(vector double __a, int __b) {
12572  return __a[__b];
12573}
12574#endif
12575
12576static __inline__ float __ATTRS_o_ai vec_extract(vector float __a, int __b) {
12577  return __a[__b];
12578}
12579
12580#ifdef __POWER9_VECTOR__
12581
12582#define vec_insert4b __builtin_vsx_insertword
12583#define vec_extract4b __builtin_vsx_extractuword
12584
12585/* vec_extract_exp */
12586
12587static __inline__ vector unsigned int __ATTRS_o_ai
12588vec_extract_exp(vector float __a) {
12589  return __builtin_vsx_xvxexpsp(__a);
12590}
12591
12592static __inline__ vector unsigned long long __ATTRS_o_ai
12593vec_extract_exp(vector double __a) {
12594  return __builtin_vsx_xvxexpdp(__a);
12595}
12596
12597/* vec_extract_sig */
12598
12599static __inline__ vector unsigned int __ATTRS_o_ai
12600vec_extract_sig(vector float __a) {
12601  return __builtin_vsx_xvxsigsp(__a);
12602}
12603
12604static __inline__ vector unsigned long long __ATTRS_o_ai
12605vec_extract_sig (vector double __a) {
12606  return __builtin_vsx_xvxsigdp(__a);
12607}
12608
12609static __inline__ vector float __ATTRS_o_ai
12610vec_extract_fp32_from_shorth(vector unsigned short __a) {
12611  vector unsigned short __b =
12612#ifdef __LITTLE_ENDIAN__
12613            __builtin_shufflevector(__a, __a, 0, -1, 1, -1, 2, -1, 3, -1);
12614#else
12615            __builtin_shufflevector(__a, __a, -1, 0, -1, 1, -1, 2, -1, 3);
12616#endif
12617  return __builtin_vsx_xvcvhpsp(__b);
12618}
12619
12620static __inline__ vector float __ATTRS_o_ai
12621vec_extract_fp32_from_shortl(vector unsigned short __a) {
12622  vector unsigned short __b =
12623#ifdef __LITTLE_ENDIAN__
12624            __builtin_shufflevector(__a, __a, 4, -1, 5, -1, 6, -1, 7, -1);
12625#else
12626            __builtin_shufflevector(__a, __a, -1, 4, -1, 5, -1, 6, -1, 7);
12627#endif
12628  return __builtin_vsx_xvcvhpsp(__b);
12629}
12630#endif /* __POWER9_VECTOR__ */
12631
12632/* vec_insert */
12633
12634static __inline__ vector signed char __ATTRS_o_ai
12635vec_insert(signed char __a, vector signed char __b, int __c) {
12636  __b[__c] = __a;
12637  return __b;
12638}
12639
12640static __inline__ vector unsigned char __ATTRS_o_ai
12641vec_insert(unsigned char __a, vector unsigned char __b, int __c) {
12642  __b[__c] = __a;
12643  return __b;
12644}
12645
12646static __inline__ vector bool char __ATTRS_o_ai vec_insert(unsigned char __a,
12647                                                           vector bool char __b,
12648                                                           int __c) {
12649  __b[__c] = __a;
12650  return __b;
12651}
12652
12653static __inline__ vector signed short __ATTRS_o_ai
12654vec_insert(signed short __a, vector signed short __b, int __c) {
12655  __b[__c] = __a;
12656  return __b;
12657}
12658
12659static __inline__ vector unsigned short __ATTRS_o_ai
12660vec_insert(unsigned short __a, vector unsigned short __b, int __c) {
12661  __b[__c] = __a;
12662  return __b;
12663}
12664
12665static __inline__ vector bool short __ATTRS_o_ai
12666vec_insert(unsigned short __a, vector bool short __b, int __c) {
12667  __b[__c] = __a;
12668  return __b;
12669}
12670
12671static __inline__ vector signed int __ATTRS_o_ai
12672vec_insert(signed int __a, vector signed int __b, int __c) {
12673  __b[__c] = __a;
12674  return __b;
12675}
12676
12677static __inline__ vector unsigned int __ATTRS_o_ai
12678vec_insert(unsigned int __a, vector unsigned int __b, int __c) {
12679  __b[__c] = __a;
12680  return __b;
12681}
12682
12683static __inline__ vector bool int __ATTRS_o_ai vec_insert(unsigned int __a,
12684                                                          vector bool int __b,
12685                                                          int __c) {
12686  __b[__c] = __a;
12687  return __b;
12688}
12689
12690#ifdef __VSX__
12691static __inline__ vector signed long long __ATTRS_o_ai
12692vec_insert(signed long long __a, vector signed long long __b, int __c) {
12693  __b[__c] = __a;
12694  return __b;
12695}
12696
12697static __inline__ vector unsigned long long __ATTRS_o_ai
12698vec_insert(unsigned long long __a, vector unsigned long long __b, int __c) {
12699  __b[__c] = __a;
12700  return __b;
12701}
12702
12703static __inline__ vector bool long long __ATTRS_o_ai
12704vec_insert(unsigned long long __a, vector bool long long __b, int __c) {
12705  __b[__c] = __a;
12706  return __b;
12707}
12708static __inline__ vector double __ATTRS_o_ai vec_insert(double __a,
12709                                                        vector double __b,
12710                                                        int __c) {
12711  __b[__c] = __a;
12712  return __b;
12713}
12714#endif
12715
12716static __inline__ vector float __ATTRS_o_ai vec_insert(float __a,
12717                                                       vector float __b,
12718                                                       int __c) {
12719  __b[__c] = __a;
12720  return __b;
12721}
12722
12723/* vec_lvlx */
12724
12725static __inline__ vector signed char __ATTRS_o_ai
12726vec_lvlx(int __a, const signed char *__b) {
12727  return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
12728                  vec_lvsl(__a, __b));
12729}
12730
12731static __inline__ vector signed char __ATTRS_o_ai
12732vec_lvlx(int __a, const vector signed char *__b) {
12733  return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
12734                  vec_lvsl(__a, (unsigned char *)__b));
12735}
12736
12737static __inline__ vector unsigned char __ATTRS_o_ai
12738vec_lvlx(int __a, const unsigned char *__b) {
12739  return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
12740                  vec_lvsl(__a, __b));
12741}
12742
12743static __inline__ vector unsigned char __ATTRS_o_ai
12744vec_lvlx(int __a, const vector unsigned char *__b) {
12745  return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
12746                  vec_lvsl(__a, (unsigned char *)__b));
12747}
12748
12749static __inline__ vector bool char __ATTRS_o_ai
12750vec_lvlx(int __a, const vector bool char *__b) {
12751  return vec_perm(vec_ld(__a, __b), (vector bool char)(0),
12752                  vec_lvsl(__a, (unsigned char *)__b));
12753}
12754
12755static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
12756                                                     const short *__b) {
12757  return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
12758}
12759
12760static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
12761                                                     const vector short *__b) {
12762  return vec_perm(vec_ld(__a, __b), (vector short)(0),
12763                  vec_lvsl(__a, (unsigned char *)__b));
12764}
12765
12766static __inline__ vector unsigned short __ATTRS_o_ai
12767vec_lvlx(int __a, const unsigned short *__b) {
12768  return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
12769                  vec_lvsl(__a, __b));
12770}
12771
12772static __inline__ vector unsigned short __ATTRS_o_ai
12773vec_lvlx(int __a, const vector unsigned short *__b) {
12774  return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
12775                  vec_lvsl(__a, (unsigned char *)__b));
12776}
12777
12778static __inline__ vector bool short __ATTRS_o_ai
12779vec_lvlx(int __a, const vector bool short *__b) {
12780  return vec_perm(vec_ld(__a, __b), (vector bool short)(0),
12781                  vec_lvsl(__a, (unsigned char *)__b));
12782}
12783
12784static __inline__ vector pixel __ATTRS_o_ai vec_lvlx(int __a,
12785                                                     const vector pixel *__b) {
12786  return vec_perm(vec_ld(__a, __b), (vector pixel)(0),
12787                  vec_lvsl(__a, (unsigned char *)__b));
12788}
12789
12790static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) {
12791  return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
12792}
12793
12794static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a,
12795                                                   const vector int *__b) {
12796  return vec_perm(vec_ld(__a, __b), (vector int)(0),
12797                  vec_lvsl(__a, (unsigned char *)__b));
12798}
12799
12800static __inline__ vector unsigned int __ATTRS_o_ai
12801vec_lvlx(int __a, const unsigned int *__b) {
12802  return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
12803                  vec_lvsl(__a, __b));
12804}
12805
12806static __inline__ vector unsigned int __ATTRS_o_ai
12807vec_lvlx(int __a, const vector unsigned int *__b) {
12808  return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
12809                  vec_lvsl(__a, (unsigned char *)__b));
12810}
12811
12812static __inline__ vector bool int __ATTRS_o_ai
12813vec_lvlx(int __a, const vector bool int *__b) {
12814  return vec_perm(vec_ld(__a, __b), (vector bool int)(0),
12815                  vec_lvsl(__a, (unsigned char *)__b));
12816}
12817
12818static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
12819                                                     const float *__b) {
12820  return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
12821}
12822
12823static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
12824                                                     const vector float *__b) {
12825  return vec_perm(vec_ld(__a, __b), (vector float)(0),
12826                  vec_lvsl(__a, (unsigned char *)__b));
12827}
12828
12829/* vec_lvlxl */
12830
12831static __inline__ vector signed char __ATTRS_o_ai
12832vec_lvlxl(int __a, const signed char *__b) {
12833  return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
12834                  vec_lvsl(__a, __b));
12835}
12836
12837static __inline__ vector signed char __ATTRS_o_ai
12838vec_lvlxl(int __a, const vector signed char *__b) {
12839  return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
12840                  vec_lvsl(__a, (unsigned char *)__b));
12841}
12842
12843static __inline__ vector unsigned char __ATTRS_o_ai
12844vec_lvlxl(int __a, const unsigned char *__b) {
12845  return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
12846                  vec_lvsl(__a, __b));
12847}
12848
12849static __inline__ vector unsigned char __ATTRS_o_ai
12850vec_lvlxl(int __a, const vector unsigned char *__b) {
12851  return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
12852                  vec_lvsl(__a, (unsigned char *)__b));
12853}
12854
12855static __inline__ vector bool char __ATTRS_o_ai
12856vec_lvlxl(int __a, const vector bool char *__b) {
12857  return vec_perm(vec_ldl(__a, __b), (vector bool char)(0),
12858                  vec_lvsl(__a, (unsigned char *)__b));
12859}
12860
12861static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
12862                                                      const short *__b) {
12863  return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
12864}
12865
12866static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
12867                                                      const vector short *__b) {
12868  return vec_perm(vec_ldl(__a, __b), (vector short)(0),
12869                  vec_lvsl(__a, (unsigned char *)__b));
12870}
12871
12872static __inline__ vector unsigned short __ATTRS_o_ai
12873vec_lvlxl(int __a, const unsigned short *__b) {
12874  return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
12875                  vec_lvsl(__a, __b));
12876}
12877
12878static __inline__ vector unsigned short __ATTRS_o_ai
12879vec_lvlxl(int __a, const vector unsigned short *__b) {
12880  return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
12881                  vec_lvsl(__a, (unsigned char *)__b));
12882}
12883
12884static __inline__ vector bool short __ATTRS_o_ai
12885vec_lvlxl(int __a, const vector bool short *__b) {
12886  return vec_perm(vec_ldl(__a, __b), (vector bool short)(0),
12887                  vec_lvsl(__a, (unsigned char *)__b));
12888}
12889
12890static __inline__ vector pixel __ATTRS_o_ai vec_lvlxl(int __a,
12891                                                      const vector pixel *__b) {
12892  return vec_perm(vec_ldl(__a, __b), (vector pixel)(0),
12893                  vec_lvsl(__a, (unsigned char *)__b));
12894}
12895
12896static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) {
12897  return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
12898}
12899
12900static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a,
12901                                                    const vector int *__b) {
12902  return vec_perm(vec_ldl(__a, __b), (vector int)(0),
12903                  vec_lvsl(__a, (unsigned char *)__b));
12904}
12905
12906static __inline__ vector unsigned int __ATTRS_o_ai
12907vec_lvlxl(int __a, const unsigned int *__b) {
12908  return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
12909                  vec_lvsl(__a, __b));
12910}
12911
12912static __inline__ vector unsigned int __ATTRS_o_ai
12913vec_lvlxl(int __a, const vector unsigned int *__b) {
12914  return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
12915                  vec_lvsl(__a, (unsigned char *)__b));
12916}
12917
12918static __inline__ vector bool int __ATTRS_o_ai
12919vec_lvlxl(int __a, const vector bool int *__b) {
12920  return vec_perm(vec_ldl(__a, __b), (vector bool int)(0),
12921                  vec_lvsl(__a, (unsigned char *)__b));
12922}
12923
12924static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
12925                                                      const float *__b) {
12926  return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
12927}
12928
12929static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
12930                                                      vector float *__b) {
12931  return vec_perm(vec_ldl(__a, __b), (vector float)(0),
12932                  vec_lvsl(__a, (unsigned char *)__b));
12933}
12934
12935/* vec_lvrx */
12936
12937static __inline__ vector signed char __ATTRS_o_ai
12938vec_lvrx(int __a, const signed char *__b) {
12939  return vec_perm((vector signed char)(0), vec_ld(__a, __b),
12940                  vec_lvsl(__a, __b));
12941}
12942
12943static __inline__ vector signed char __ATTRS_o_ai
12944vec_lvrx(int __a, const vector signed char *__b) {
12945  return vec_perm((vector signed char)(0), vec_ld(__a, __b),
12946                  vec_lvsl(__a, (unsigned char *)__b));
12947}
12948
12949static __inline__ vector unsigned char __ATTRS_o_ai
12950vec_lvrx(int __a, const unsigned char *__b) {
12951  return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
12952                  vec_lvsl(__a, __b));
12953}
12954
12955static __inline__ vector unsigned char __ATTRS_o_ai
12956vec_lvrx(int __a, const vector unsigned char *__b) {
12957  return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
12958                  vec_lvsl(__a, (unsigned char *)__b));
12959}
12960
12961static __inline__ vector bool char __ATTRS_o_ai
12962vec_lvrx(int __a, const vector bool char *__b) {
12963  return vec_perm((vector bool char)(0), vec_ld(__a, __b),
12964                  vec_lvsl(__a, (unsigned char *)__b));
12965}
12966
12967static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
12968                                                     const short *__b) {
12969  return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
12970}
12971
12972static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
12973                                                     const vector short *__b) {
12974  return vec_perm((vector short)(0), vec_ld(__a, __b),
12975                  vec_lvsl(__a, (unsigned char *)__b));
12976}
12977
12978static __inline__ vector unsigned short __ATTRS_o_ai
12979vec_lvrx(int __a, const unsigned short *__b) {
12980  return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
12981                  vec_lvsl(__a, __b));
12982}
12983
12984static __inline__ vector unsigned short __ATTRS_o_ai
12985vec_lvrx(int __a, const vector unsigned short *__b) {
12986  return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
12987                  vec_lvsl(__a, (unsigned char *)__b));
12988}
12989
12990static __inline__ vector bool short __ATTRS_o_ai
12991vec_lvrx(int __a, const vector bool short *__b) {
12992  return vec_perm((vector bool short)(0), vec_ld(__a, __b),
12993                  vec_lvsl(__a, (unsigned char *)__b));
12994}
12995
12996static __inline__ vector pixel __ATTRS_o_ai vec_lvrx(int __a,
12997                                                     const vector pixel *__b) {
12998  return vec_perm((vector pixel)(0), vec_ld(__a, __b),
12999                  vec_lvsl(__a, (unsigned char *)__b));
13000}
13001
13002static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) {
13003  return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
13004}
13005
13006static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a,
13007                                                   const vector int *__b) {
13008  return vec_perm((vector int)(0), vec_ld(__a, __b),
13009                  vec_lvsl(__a, (unsigned char *)__b));
13010}
13011
13012static __inline__ vector unsigned int __ATTRS_o_ai
13013vec_lvrx(int __a, const unsigned int *__b) {
13014  return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
13015                  vec_lvsl(__a, __b));
13016}
13017
13018static __inline__ vector unsigned int __ATTRS_o_ai
13019vec_lvrx(int __a, const vector unsigned int *__b) {
13020  return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
13021                  vec_lvsl(__a, (unsigned char *)__b));
13022}
13023
13024static __inline__ vector bool int __ATTRS_o_ai
13025vec_lvrx(int __a, const vector bool int *__b) {
13026  return vec_perm((vector bool int)(0), vec_ld(__a, __b),
13027                  vec_lvsl(__a, (unsigned char *)__b));
13028}
13029
13030static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
13031                                                     const float *__b) {
13032  return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
13033}
13034
13035static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
13036                                                     const vector float *__b) {
13037  return vec_perm((vector float)(0), vec_ld(__a, __b),
13038                  vec_lvsl(__a, (unsigned char *)__b));
13039}
13040
13041/* vec_lvrxl */
13042
13043static __inline__ vector signed char __ATTRS_o_ai
13044vec_lvrxl(int __a, const signed char *__b) {
13045  return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
13046                  vec_lvsl(__a, __b));
13047}
13048
13049static __inline__ vector signed char __ATTRS_o_ai
13050vec_lvrxl(int __a, const vector signed char *__b) {
13051  return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
13052                  vec_lvsl(__a, (unsigned char *)__b));
13053}
13054
13055static __inline__ vector unsigned char __ATTRS_o_ai
13056vec_lvrxl(int __a, const unsigned char *__b) {
13057  return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
13058                  vec_lvsl(__a, __b));
13059}
13060
13061static __inline__ vector unsigned char __ATTRS_o_ai
13062vec_lvrxl(int __a, const vector unsigned char *__b) {
13063  return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
13064                  vec_lvsl(__a, (unsigned char *)__b));
13065}
13066
13067static __inline__ vector bool char __ATTRS_o_ai
13068vec_lvrxl(int __a, const vector bool char *__b) {
13069  return vec_perm((vector bool char)(0), vec_ldl(__a, __b),
13070                  vec_lvsl(__a, (unsigned char *)__b));
13071}
13072
13073static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
13074                                                      const short *__b) {
13075  return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
13076}
13077
13078static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
13079                                                      const vector short *__b) {
13080  return vec_perm((vector short)(0), vec_ldl(__a, __b),
13081                  vec_lvsl(__a, (unsigned char *)__b));
13082}
13083
13084static __inline__ vector unsigned short __ATTRS_o_ai
13085vec_lvrxl(int __a, const unsigned short *__b) {
13086  return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
13087                  vec_lvsl(__a, __b));
13088}
13089
13090static __inline__ vector unsigned short __ATTRS_o_ai
13091vec_lvrxl(int __a, const vector unsigned short *__b) {
13092  return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
13093                  vec_lvsl(__a, (unsigned char *)__b));
13094}
13095
13096static __inline__ vector bool short __ATTRS_o_ai
13097vec_lvrxl(int __a, const vector bool short *__b) {
13098  return vec_perm((vector bool short)(0), vec_ldl(__a, __b),
13099                  vec_lvsl(__a, (unsigned char *)__b));
13100}
13101
13102static __inline__ vector pixel __ATTRS_o_ai vec_lvrxl(int __a,
13103                                                      const vector pixel *__b) {
13104  return vec_perm((vector pixel)(0), vec_ldl(__a, __b),
13105                  vec_lvsl(__a, (unsigned char *)__b));
13106}
13107
13108static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) {
13109  return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
13110}
13111
13112static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a,
13113                                                    const vector int *__b) {
13114  return vec_perm((vector int)(0), vec_ldl(__a, __b),
13115                  vec_lvsl(__a, (unsigned char *)__b));
13116}
13117
13118static __inline__ vector unsigned int __ATTRS_o_ai
13119vec_lvrxl(int __a, const unsigned int *__b) {
13120  return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
13121                  vec_lvsl(__a, __b));
13122}
13123
13124static __inline__ vector unsigned int __ATTRS_o_ai
13125vec_lvrxl(int __a, const vector unsigned int *__b) {
13126  return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
13127                  vec_lvsl(__a, (unsigned char *)__b));
13128}
13129
13130static __inline__ vector bool int __ATTRS_o_ai
13131vec_lvrxl(int __a, const vector bool int *__b) {
13132  return vec_perm((vector bool int)(0), vec_ldl(__a, __b),
13133                  vec_lvsl(__a, (unsigned char *)__b));
13134}
13135
13136static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
13137                                                      const float *__b) {
13138  return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
13139}
13140
13141static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
13142                                                      const vector float *__b) {
13143  return vec_perm((vector float)(0), vec_ldl(__a, __b),
13144                  vec_lvsl(__a, (unsigned char *)__b));
13145}
13146
13147/* vec_stvlx */
13148
13149static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
13150                                              signed char *__c) {
13151  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13152                __c);
13153}
13154
13155static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
13156                                              vector signed char *__c) {
13157  return vec_st(
13158      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13159      __b, __c);
13160}
13161
13162static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
13163                                              unsigned char *__c) {
13164  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13165                __c);
13166}
13167
13168static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
13169                                              vector unsigned char *__c) {
13170  return vec_st(
13171      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13172      __b, __c);
13173}
13174
13175static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b,
13176                                              vector bool char *__c) {
13177  return vec_st(
13178      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13179      __b, __c);
13180}
13181
13182static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
13183                                              short *__c) {
13184  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13185                __c);
13186}
13187
13188static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
13189                                              vector short *__c) {
13190  return vec_st(
13191      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13192      __b, __c);
13193}
13194
13195static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
13196                                              int __b, unsigned short *__c) {
13197  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13198                __c);
13199}
13200
13201static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
13202                                              int __b,
13203                                              vector unsigned short *__c) {
13204  return vec_st(
13205      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13206      __b, __c);
13207}
13208
13209static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b,
13210                                              vector bool short *__c) {
13211  return vec_st(
13212      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13213      __b, __c);
13214}
13215
13216static __inline__ void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b,
13217                                              vector pixel *__c) {
13218  return vec_st(
13219      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13220      __b, __c);
13221}
13222
13223static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
13224                                              int *__c) {
13225  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13226                __c);
13227}
13228
13229static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
13230                                              vector int *__c) {
13231  return vec_st(
13232      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13233      __b, __c);
13234}
13235
13236static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
13237                                              unsigned int *__c) {
13238  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13239                __c);
13240}
13241
13242static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
13243                                              vector unsigned int *__c) {
13244  return vec_st(
13245      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13246      __b, __c);
13247}
13248
13249static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b,
13250                                              vector bool int *__c) {
13251  return vec_st(
13252      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13253      __b, __c);
13254}
13255
13256static __inline__ void __ATTRS_o_ai vec_stvlx(vector float __a, int __b,
13257                                              vector float *__c) {
13258  return vec_st(
13259      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13260      __b, __c);
13261}
13262
13263/* vec_stvlxl */
13264
13265static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
13266                                               signed char *__c) {
13267  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13268                 __c);
13269}
13270
13271static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
13272                                               vector signed char *__c) {
13273  return vec_stl(
13274      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13275      __b, __c);
13276}
13277
13278static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
13279                                               int __b, unsigned char *__c) {
13280  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13281                 __c);
13282}
13283
13284static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
13285                                               int __b,
13286                                               vector unsigned char *__c) {
13287  return vec_stl(
13288      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13289      __b, __c);
13290}
13291
13292static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b,
13293                                               vector bool char *__c) {
13294  return vec_stl(
13295      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13296      __b, __c);
13297}
13298
13299static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
13300                                               short *__c) {
13301  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13302                 __c);
13303}
13304
13305static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
13306                                               vector short *__c) {
13307  return vec_stl(
13308      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13309      __b, __c);
13310}
13311
13312static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
13313                                               int __b, unsigned short *__c) {
13314  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13315                 __c);
13316}
13317
13318static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
13319                                               int __b,
13320                                               vector unsigned short *__c) {
13321  return vec_stl(
13322      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13323      __b, __c);
13324}
13325
13326static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b,
13327                                               vector bool short *__c) {
13328  return vec_stl(
13329      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13330      __b, __c);
13331}
13332
13333static __inline__ void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b,
13334                                               vector pixel *__c) {
13335  return vec_stl(
13336      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13337      __b, __c);
13338}
13339
13340static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
13341                                               int *__c) {
13342  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13343                 __c);
13344}
13345
13346static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
13347                                               vector int *__c) {
13348  return vec_stl(
13349      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13350      __b, __c);
13351}
13352
13353static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
13354                                               unsigned int *__c) {
13355  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
13356                 __c);
13357}
13358
13359static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
13360                                               vector unsigned int *__c) {
13361  return vec_stl(
13362      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13363      __b, __c);
13364}
13365
13366static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b,
13367                                               vector bool int *__c) {
13368  return vec_stl(
13369      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13370      __b, __c);
13371}
13372
13373static __inline__ void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b,
13374                                               vector float *__c) {
13375  return vec_stl(
13376      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
13377      __b, __c);
13378}
13379
13380/* vec_stvrx */
13381
13382static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
13383                                              signed char *__c) {
13384  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13385                __c);
13386}
13387
13388static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
13389                                              vector signed char *__c) {
13390  return vec_st(
13391      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13392      __b, __c);
13393}
13394
13395static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
13396                                              unsigned char *__c) {
13397  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13398                __c);
13399}
13400
13401static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
13402                                              vector unsigned char *__c) {
13403  return vec_st(
13404      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13405      __b, __c);
13406}
13407
13408static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b,
13409                                              vector bool char *__c) {
13410  return vec_st(
13411      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13412      __b, __c);
13413}
13414
13415static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
13416                                              short *__c) {
13417  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13418                __c);
13419}
13420
13421static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
13422                                              vector short *__c) {
13423  return vec_st(
13424      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13425      __b, __c);
13426}
13427
13428static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
13429                                              int __b, unsigned short *__c) {
13430  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13431                __c);
13432}
13433
13434static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
13435                                              int __b,
13436                                              vector unsigned short *__c) {
13437  return vec_st(
13438      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13439      __b, __c);
13440}
13441
13442static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b,
13443                                              vector bool short *__c) {
13444  return vec_st(
13445      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13446      __b, __c);
13447}
13448
13449static __inline__ void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b,
13450                                              vector pixel *__c) {
13451  return vec_st(
13452      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13453      __b, __c);
13454}
13455
13456static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
13457                                              int *__c) {
13458  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13459                __c);
13460}
13461
13462static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
13463                                              vector int *__c) {
13464  return vec_st(
13465      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13466      __b, __c);
13467}
13468
13469static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
13470                                              unsigned int *__c) {
13471  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13472                __c);
13473}
13474
13475static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
13476                                              vector unsigned int *__c) {
13477  return vec_st(
13478      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13479      __b, __c);
13480}
13481
13482static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b,
13483                                              vector bool int *__c) {
13484  return vec_st(
13485      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13486      __b, __c);
13487}
13488
13489static __inline__ void __ATTRS_o_ai vec_stvrx(vector float __a, int __b,
13490                                              vector float *__c) {
13491  return vec_st(
13492      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13493      __b, __c);
13494}
13495
13496/* vec_stvrxl */
13497
13498static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
13499                                               signed char *__c) {
13500  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13501                 __c);
13502}
13503
13504static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
13505                                               vector signed char *__c) {
13506  return vec_stl(
13507      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13508      __b, __c);
13509}
13510
13511static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
13512                                               int __b, unsigned char *__c) {
13513  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13514                 __c);
13515}
13516
13517static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
13518                                               int __b,
13519                                               vector unsigned char *__c) {
13520  return vec_stl(
13521      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13522      __b, __c);
13523}
13524
13525static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b,
13526                                               vector bool char *__c) {
13527  return vec_stl(
13528      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13529      __b, __c);
13530}
13531
13532static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
13533                                               short *__c) {
13534  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13535                 __c);
13536}
13537
13538static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
13539                                               vector short *__c) {
13540  return vec_stl(
13541      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13542      __b, __c);
13543}
13544
13545static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
13546                                               int __b, unsigned short *__c) {
13547  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13548                 __c);
13549}
13550
13551static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
13552                                               int __b,
13553                                               vector unsigned short *__c) {
13554  return vec_stl(
13555      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13556      __b, __c);
13557}
13558
13559static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b,
13560                                               vector bool short *__c) {
13561  return vec_stl(
13562      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13563      __b, __c);
13564}
13565
13566static __inline__ void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b,
13567                                               vector pixel *__c) {
13568  return vec_stl(
13569      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13570      __b, __c);
13571}
13572
13573static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
13574                                               int *__c) {
13575  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13576                 __c);
13577}
13578
13579static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
13580                                               vector int *__c) {
13581  return vec_stl(
13582      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13583      __b, __c);
13584}
13585
13586static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
13587                                               unsigned int *__c) {
13588  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
13589                 __c);
13590}
13591
13592static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
13593                                               vector unsigned int *__c) {
13594  return vec_stl(
13595      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13596      __b, __c);
13597}
13598
13599static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b,
13600                                               vector bool int *__c) {
13601  return vec_stl(
13602      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13603      __b, __c);
13604}
13605
13606static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
13607                                               vector float *__c) {
13608  return vec_stl(
13609      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
13610      __b, __c);
13611}
13612
13613/* vec_promote */
13614
13615static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
13616                                                              int __b) {
13617  vector signed char __res = (vector signed char)(0);
13618  __res[__b] = __a;
13619  return __res;
13620}
13621
13622static __inline__ vector unsigned char __ATTRS_o_ai
13623vec_promote(unsigned char __a, int __b) {
13624  vector unsigned char __res = (vector unsigned char)(0);
13625  __res[__b] = __a;
13626  return __res;
13627}
13628
13629static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
13630  vector short __res = (vector short)(0);
13631  __res[__b] = __a;
13632  return __res;
13633}
13634
13635static __inline__ vector unsigned short __ATTRS_o_ai
13636vec_promote(unsigned short __a, int __b) {
13637  vector unsigned short __res = (vector unsigned short)(0);
13638  __res[__b] = __a;
13639  return __res;
13640}
13641
13642static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
13643  vector int __res = (vector int)(0);
13644  __res[__b] = __a;
13645  return __res;
13646}
13647
13648static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
13649                                                               int __b) {
13650  vector unsigned int __res = (vector unsigned int)(0);
13651  __res[__b] = __a;
13652  return __res;
13653}
13654
13655static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
13656  vector float __res = (vector float)(0);
13657  __res[__b] = __a;
13658  return __res;
13659}
13660
13661/* vec_splats */
13662
13663static __inline__ vector signed char __ATTRS_o_ai vec_splats(signed char __a) {
13664  return (vector signed char)(__a);
13665}
13666
13667static __inline__ vector unsigned char __ATTRS_o_ai
13668vec_splats(unsigned char __a) {
13669  return (vector unsigned char)(__a);
13670}
13671
13672static __inline__ vector short __ATTRS_o_ai vec_splats(short __a) {
13673  return (vector short)(__a);
13674}
13675
13676static __inline__ vector unsigned short __ATTRS_o_ai
13677vec_splats(unsigned short __a) {
13678  return (vector unsigned short)(__a);
13679}
13680
13681static __inline__ vector int __ATTRS_o_ai vec_splats(int __a) {
13682  return (vector int)(__a);
13683}
13684
13685static __inline__ vector unsigned int __ATTRS_o_ai
13686vec_splats(unsigned int __a) {
13687  return (vector unsigned int)(__a);
13688}
13689
13690#ifdef __VSX__
13691static __inline__ vector signed long long __ATTRS_o_ai
13692vec_splats(signed long long __a) {
13693  return (vector signed long long)(__a);
13694}
13695
13696static __inline__ vector unsigned long long __ATTRS_o_ai
13697vec_splats(unsigned long long __a) {
13698  return (vector unsigned long long)(__a);
13699}
13700
13701#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
13702static __inline__ vector signed __int128 __ATTRS_o_ai
13703vec_splats(signed __int128 __a) {
13704  return (vector signed __int128)(__a);
13705}
13706
13707static __inline__ vector unsigned __int128 __ATTRS_o_ai
13708vec_splats(unsigned __int128 __a) {
13709  return (vector unsigned __int128)(__a);
13710}
13711
13712#endif
13713
13714static __inline__ vector double __ATTRS_o_ai vec_splats(double __a) {
13715  return (vector double)(__a);
13716}
13717#endif
13718
13719static __inline__ vector float __ATTRS_o_ai vec_splats(float __a) {
13720  return (vector float)(__a);
13721}
13722
13723/* ----------------------------- predicates --------------------------------- */
13724
13725/* vec_all_eq */
13726
13727static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
13728                                              vector signed char __b) {
13729  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13730                                      (vector char)__b);
13731}
13732
13733static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
13734                                              vector bool char __b) {
13735  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13736                                      (vector char)__b);
13737}
13738
13739static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
13740                                              vector unsigned char __b) {
13741  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13742                                      (vector char)__b);
13743}
13744
13745static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
13746                                              vector bool char __b) {
13747  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13748                                      (vector char)__b);
13749}
13750
13751static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
13752                                              vector signed char __b) {
13753  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13754                                      (vector char)__b);
13755}
13756
13757static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
13758                                              vector unsigned char __b) {
13759  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13760                                      (vector char)__b);
13761}
13762
13763static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
13764                                              vector bool char __b) {
13765  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
13766                                      (vector char)__b);
13767}
13768
13769static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
13770                                              vector short __b) {
13771  return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
13772}
13773
13774static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
13775                                              vector bool short __b) {
13776  return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
13777}
13778
13779static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
13780                                              vector unsigned short __b) {
13781  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13782                                      (vector short)__b);
13783}
13784
13785static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
13786                                              vector bool short __b) {
13787  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13788                                      (vector short)__b);
13789}
13790
13791static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
13792                                              vector short __b) {
13793  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13794                                      (vector short)__b);
13795}
13796
13797static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
13798                                              vector unsigned short __b) {
13799  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13800                                      (vector short)__b);
13801}
13802
13803static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
13804                                              vector bool short __b) {
13805  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13806                                      (vector short)__b);
13807}
13808
13809static __inline__ int __ATTRS_o_ai vec_all_eq(vector pixel __a,
13810                                              vector pixel __b) {
13811  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
13812                                      (vector short)__b);
13813}
13814
13815static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) {
13816  return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
13817}
13818
13819static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a,
13820                                              vector bool int __b) {
13821  return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
13822}
13823
13824static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
13825                                              vector unsigned int __b) {
13826  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13827                                      (vector int)__b);
13828}
13829
13830static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
13831                                              vector bool int __b) {
13832  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13833                                      (vector int)__b);
13834}
13835
13836static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
13837                                              vector int __b) {
13838  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13839                                      (vector int)__b);
13840}
13841
13842static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
13843                                              vector unsigned int __b) {
13844  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13845                                      (vector int)__b);
13846}
13847
13848static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
13849                                              vector bool int __b) {
13850  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
13851                                      (vector int)__b);
13852}
13853
13854#ifdef __POWER8_VECTOR__
13855static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed long long __a,
13856                                              vector signed long long __b) {
13857  return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b);
13858}
13859
13860static __inline__ int __ATTRS_o_ai vec_all_eq(vector long long __a,
13861                                              vector bool long long __b) {
13862  return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b);
13863}
13864
13865static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
13866                                              vector unsigned long long __b) {
13867  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13868                                      (vector long long)__b);
13869}
13870
13871static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
13872                                              vector bool long long __b) {
13873  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13874                                      (vector long long)__b);
13875}
13876
13877static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
13878                                              vector long long __b) {
13879  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13880                                      (vector long long)__b);
13881}
13882
13883static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
13884                                              vector unsigned long long __b) {
13885  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13886                                      (vector long long)__b);
13887}
13888
13889static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
13890                                              vector bool long long __b) {
13891  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
13892                                      (vector long long)__b);
13893}
13894#endif
13895
13896static __inline__ int __ATTRS_o_ai vec_all_eq(vector float __a,
13897                                              vector float __b) {
13898#ifdef __VSX__
13899  return __builtin_vsx_xvcmpeqsp_p(__CR6_LT, __a, __b);
13900#else
13901  return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
13902#endif
13903}
13904
13905#ifdef __VSX__
13906static __inline__ int __ATTRS_o_ai vec_all_eq(vector double __a,
13907                                              vector double __b) {
13908  return __builtin_vsx_xvcmpeqdp_p(__CR6_LT, __a, __b);
13909}
13910#endif
13911
13912/* vec_all_ge */
13913
13914static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
13915                                              vector signed char __b) {
13916  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
13917}
13918
13919static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
13920                                              vector bool char __b) {
13921  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
13922}
13923
13924static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
13925                                              vector unsigned char __b) {
13926  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
13927}
13928
13929static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
13930                                              vector bool char __b) {
13931  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
13932}
13933
13934static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
13935                                              vector signed char __b) {
13936  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
13937                                      (vector unsigned char)__a);
13938}
13939
13940static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
13941                                              vector unsigned char __b) {
13942  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
13943}
13944
13945static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
13946                                              vector bool char __b) {
13947  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
13948                                      (vector unsigned char)__a);
13949}
13950
13951static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
13952                                              vector short __b) {
13953  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
13954}
13955
13956static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
13957                                              vector bool short __b) {
13958  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
13959}
13960
13961static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
13962                                              vector unsigned short __b) {
13963  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
13964}
13965
13966static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
13967                                              vector bool short __b) {
13968  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
13969                                      __a);
13970}
13971
13972static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
13973                                              vector short __b) {
13974  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
13975                                      (vector unsigned short)__a);
13976}
13977
13978static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
13979                                              vector unsigned short __b) {
13980  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b,
13981                                      (vector unsigned short)__a);
13982}
13983
13984static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
13985                                              vector bool short __b) {
13986  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
13987                                      (vector unsigned short)__a);
13988}
13989
13990static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) {
13991  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
13992}
13993
13994static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a,
13995                                              vector bool int __b) {
13996  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
13997}
13998
13999static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
14000                                              vector unsigned int __b) {
14001  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
14002}
14003
14004static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
14005                                              vector bool int __b) {
14006  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
14007}
14008
14009static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
14010                                              vector int __b) {
14011  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
14012                                      (vector unsigned int)__a);
14013}
14014
14015static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
14016                                              vector unsigned int __b) {
14017  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
14018}
14019
14020static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
14021                                              vector bool int __b) {
14022  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
14023                                      (vector unsigned int)__a);
14024}
14025
14026#ifdef __POWER8_VECTOR__
14027static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
14028                                              vector signed long long __b) {
14029  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a);
14030}
14031static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
14032                                              vector bool long long __b) {
14033  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b,
14034                                      __a);
14035}
14036
14037static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
14038                                              vector unsigned long long __b) {
14039  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a);
14040}
14041
14042static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
14043                                              vector bool long long __b) {
14044  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
14045                                      __a);
14046}
14047
14048static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
14049                                              vector signed long long __b) {
14050  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
14051                                      (vector unsigned long long)__a);
14052}
14053
14054static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
14055                                              vector unsigned long long __b) {
14056  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b,
14057                                      (vector unsigned long long)__a);
14058}
14059
14060static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
14061                                              vector bool long long __b) {
14062  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
14063                                      (vector unsigned long long)__a);
14064}
14065#endif
14066
14067static __inline__ int __ATTRS_o_ai vec_all_ge(vector float __a,
14068                                              vector float __b) {
14069#ifdef __VSX__
14070  return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __a, __b);
14071#else
14072  return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
14073#endif
14074}
14075
14076#ifdef __VSX__
14077static __inline__ int __ATTRS_o_ai vec_all_ge(vector double __a,
14078                                              vector double __b) {
14079  return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __a, __b);
14080}
14081#endif
14082
14083/* vec_all_gt */
14084
14085static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
14086                                              vector signed char __b) {
14087  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
14088}
14089
14090static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
14091                                              vector bool char __b) {
14092  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
14093}
14094
14095static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
14096                                              vector unsigned char __b) {
14097  return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
14098}
14099
14100static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
14101                                              vector bool char __b) {
14102  return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
14103}
14104
14105static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
14106                                              vector signed char __b) {
14107  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
14108                                      (vector unsigned char)__b);
14109}
14110
14111static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
14112                                              vector unsigned char __b) {
14113  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
14114}
14115
14116static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
14117                                              vector bool char __b) {
14118  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
14119                                      (vector unsigned char)__b);
14120}
14121
14122static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
14123                                              vector short __b) {
14124  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
14125}
14126
14127static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
14128                                              vector bool short __b) {
14129  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
14130}
14131
14132static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
14133                                              vector unsigned short __b) {
14134  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
14135}
14136
14137static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
14138                                              vector bool short __b) {
14139  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a,
14140                                      (vector unsigned short)__b);
14141}
14142
14143static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
14144                                              vector short __b) {
14145  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
14146                                      (vector unsigned short)__b);
14147}
14148
14149static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
14150                                              vector unsigned short __b) {
14151  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
14152                                      __b);
14153}
14154
14155static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
14156                                              vector bool short __b) {
14157  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
14158                                      (vector unsigned short)__b);
14159}
14160
14161static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) {
14162  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
14163}
14164
14165static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a,
14166                                              vector bool int __b) {
14167  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
14168}
14169
14170static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
14171                                              vector unsigned int __b) {
14172  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
14173}
14174
14175static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
14176                                              vector bool int __b) {
14177  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
14178}
14179
14180static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
14181                                              vector int __b) {
14182  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
14183                                      (vector unsigned int)__b);
14184}
14185
14186static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
14187                                              vector unsigned int __b) {
14188  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
14189}
14190
14191static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
14192                                              vector bool int __b) {
14193  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
14194                                      (vector unsigned int)__b);
14195}
14196
14197#ifdef __POWER8_VECTOR__
14198static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
14199                                              vector signed long long __b) {
14200  return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b);
14201}
14202static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
14203                                              vector bool long long __b) {
14204  return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a,
14205                                      (vector signed long long)__b);
14206}
14207
14208static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
14209                                              vector unsigned long long __b) {
14210  return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b);
14211}
14212
14213static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
14214                                              vector bool long long __b) {
14215  return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a,
14216                                      (vector unsigned long long)__b);
14217}
14218
14219static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
14220                                              vector signed long long __b) {
14221  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
14222                                      (vector unsigned long long)__b);
14223}
14224
14225static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
14226                                              vector unsigned long long __b) {
14227  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
14228                                      __b);
14229}
14230
14231static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
14232                                              vector bool long long __b) {
14233  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
14234                                      (vector unsigned long long)__b);
14235}
14236#endif
14237
14238static __inline__ int __ATTRS_o_ai vec_all_gt(vector float __a,
14239                                              vector float __b) {
14240#ifdef __VSX__
14241  return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __a, __b);
14242#else
14243  return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
14244#endif
14245}
14246
14247#ifdef __VSX__
14248static __inline__ int __ATTRS_o_ai vec_all_gt(vector double __a,
14249                                              vector double __b) {
14250  return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __a, __b);
14251}
14252#endif
14253
14254/* vec_all_in */
14255
14256static __inline__ int __attribute__((__always_inline__))
14257vec_all_in(vector float __a, vector float __b) {
14258  return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
14259}
14260
14261/* vec_all_le */
14262
14263static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
14264                                              vector signed char __b) {
14265  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
14266}
14267
14268static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
14269                                              vector bool char __b) {
14270  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
14271}
14272
14273static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
14274                                              vector unsigned char __b) {
14275  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
14276}
14277
14278static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
14279                                              vector bool char __b) {
14280  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
14281}
14282
14283static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
14284                                              vector signed char __b) {
14285  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
14286                                      (vector unsigned char)__b);
14287}
14288
14289static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
14290                                              vector unsigned char __b) {
14291  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
14292}
14293
14294static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
14295                                              vector bool char __b) {
14296  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
14297                                      (vector unsigned char)__b);
14298}
14299
14300static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
14301                                              vector short __b) {
14302  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
14303}
14304
14305static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
14306                                              vector bool short __b) {
14307  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
14308}
14309
14310static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
14311                                              vector unsigned short __b) {
14312  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
14313}
14314
14315static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
14316                                              vector bool short __b) {
14317  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a,
14318                                      (vector unsigned short)__b);
14319}
14320
14321static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
14322                                              vector short __b) {
14323  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
14324                                      (vector unsigned short)__b);
14325}
14326
14327static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
14328                                              vector unsigned short __b) {
14329  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
14330                                      __b);
14331}
14332
14333static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
14334                                              vector bool short __b) {
14335  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
14336                                      (vector unsigned short)__b);
14337}
14338
14339static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) {
14340  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
14341}
14342
14343static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a,
14344                                              vector bool int __b) {
14345  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
14346}
14347
14348static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
14349                                              vector unsigned int __b) {
14350  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
14351}
14352
14353static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
14354                                              vector bool int __b) {
14355  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
14356}
14357
14358static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
14359                                              vector int __b) {
14360  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
14361                                      (vector unsigned int)__b);
14362}
14363
14364static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
14365                                              vector unsigned int __b) {
14366  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
14367}
14368
14369static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
14370                                              vector bool int __b) {
14371  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
14372                                      (vector unsigned int)__b);
14373}
14374
14375#ifdef __POWER8_VECTOR__
14376static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
14377                                              vector signed long long __b) {
14378  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b);
14379}
14380
14381static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
14382                                              vector unsigned long long __b) {
14383  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b);
14384}
14385
14386static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
14387                                              vector bool long long __b) {
14388  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a,
14389                                      (vector signed long long)__b);
14390}
14391
14392static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
14393                                              vector bool long long __b) {
14394  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a,
14395                                      (vector unsigned long long)__b);
14396}
14397
14398static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
14399                                              vector signed long long __b) {
14400  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
14401                                      (vector unsigned long long)__b);
14402}
14403
14404static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
14405                                              vector unsigned long long __b) {
14406  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
14407                                      __b);
14408}
14409
14410static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
14411                                              vector bool long long __b) {
14412  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
14413                                      (vector unsigned long long)__b);
14414}
14415#endif
14416
14417static __inline__ int __ATTRS_o_ai vec_all_le(vector float __a,
14418                                              vector float __b) {
14419#ifdef __VSX__
14420  return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __b, __a);
14421#else
14422  return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
14423#endif
14424}
14425
14426#ifdef __VSX__
14427static __inline__ int __ATTRS_o_ai vec_all_le(vector double __a,
14428                                              vector double __b) {
14429  return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __b, __a);
14430}
14431#endif
14432
14433/* vec_all_lt */
14434
14435static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
14436                                              vector signed char __b) {
14437  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
14438}
14439
14440static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
14441                                              vector bool char __b) {
14442  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
14443}
14444
14445static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
14446                                              vector unsigned char __b) {
14447  return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
14448}
14449
14450static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
14451                                              vector bool char __b) {
14452  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
14453}
14454
14455static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
14456                                              vector signed char __b) {
14457  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
14458                                      (vector unsigned char)__a);
14459}
14460
14461static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
14462                                              vector unsigned char __b) {
14463  return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
14464}
14465
14466static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
14467                                              vector bool char __b) {
14468  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
14469                                      (vector unsigned char)__a);
14470}
14471
14472static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
14473                                              vector short __b) {
14474  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
14475}
14476
14477static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
14478                                              vector bool short __b) {
14479  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
14480}
14481
14482static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
14483                                              vector unsigned short __b) {
14484  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
14485}
14486
14487static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
14488                                              vector bool short __b) {
14489  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
14490                                      __a);
14491}
14492
14493static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
14494                                              vector short __b) {
14495  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
14496                                      (vector unsigned short)__a);
14497}
14498
14499static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
14500                                              vector unsigned short __b) {
14501  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b,
14502                                      (vector unsigned short)__a);
14503}
14504
14505static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
14506                                              vector bool short __b) {
14507  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
14508                                      (vector unsigned short)__a);
14509}
14510
14511static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) {
14512  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
14513}
14514
14515static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a,
14516                                              vector bool int __b) {
14517  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
14518}
14519
14520static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
14521                                              vector unsigned int __b) {
14522  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
14523}
14524
14525static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
14526                                              vector bool int __b) {
14527  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
14528}
14529
14530static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
14531                                              vector int __b) {
14532  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
14533                                      (vector unsigned int)__a);
14534}
14535
14536static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
14537                                              vector unsigned int __b) {
14538  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
14539}
14540
14541static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
14542                                              vector bool int __b) {
14543  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
14544                                      (vector unsigned int)__a);
14545}
14546
14547#ifdef __POWER8_VECTOR__
14548static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
14549                                              vector signed long long __b) {
14550  return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a);
14551}
14552
14553static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
14554                                              vector unsigned long long __b) {
14555  return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a);
14556}
14557
14558static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
14559                                              vector bool long long __b) {
14560  return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b,
14561                                      __a);
14562}
14563
14564static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
14565                                              vector bool long long __b) {
14566  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
14567                                      __a);
14568}
14569
14570static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
14571                                              vector signed long long __b) {
14572  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
14573                                      (vector unsigned long long)__a);
14574}
14575
14576static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
14577                                              vector unsigned long long __b) {
14578  return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b,
14579                                      (vector unsigned long long)__a);
14580}
14581
14582static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
14583                                              vector bool long long __b) {
14584  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
14585                                      (vector unsigned long long)__a);
14586}
14587#endif
14588
14589static __inline__ int __ATTRS_o_ai vec_all_lt(vector float __a,
14590                                              vector float __b) {
14591#ifdef __VSX__
14592  return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __b, __a);
14593#else
14594  return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
14595#endif
14596}
14597
14598#ifdef __VSX__
14599static __inline__ int __ATTRS_o_ai vec_all_lt(vector double __a,
14600                                              vector double __b) {
14601  return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __b, __a);
14602}
14603#endif
14604
14605/* vec_all_nan */
14606
14607static __inline__ int __ATTRS_o_ai vec_all_nan(vector float __a) {
14608#ifdef __VSX__
14609  return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __a);
14610#else
14611  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
14612#endif
14613}
14614
14615#ifdef __VSX__
14616static __inline__ int __ATTRS_o_ai vec_all_nan(vector double __a) {
14617  return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __a);
14618}
14619#endif
14620
14621/* vec_all_ne */
14622
14623static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
14624                                              vector signed char __b) {
14625  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14626                                      (vector char)__b);
14627}
14628
14629static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
14630                                              vector bool char __b) {
14631  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14632                                      (vector char)__b);
14633}
14634
14635static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
14636                                              vector unsigned char __b) {
14637  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14638                                      (vector char)__b);
14639}
14640
14641static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
14642                                              vector bool char __b) {
14643  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14644                                      (vector char)__b);
14645}
14646
14647static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
14648                                              vector signed char __b) {
14649  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14650                                      (vector char)__b);
14651}
14652
14653static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
14654                                              vector unsigned char __b) {
14655  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14656                                      (vector char)__b);
14657}
14658
14659static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
14660                                              vector bool char __b) {
14661  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
14662                                      (vector char)__b);
14663}
14664
14665static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
14666                                              vector short __b) {
14667  return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
14668}
14669
14670static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
14671                                              vector bool short __b) {
14672  return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
14673}
14674
14675static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
14676                                              vector unsigned short __b) {
14677  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14678                                      (vector short)__b);
14679}
14680
14681static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
14682                                              vector bool short __b) {
14683  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14684                                      (vector short)__b);
14685}
14686
14687static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
14688                                              vector short __b) {
14689  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14690                                      (vector short)__b);
14691}
14692
14693static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
14694                                              vector unsigned short __b) {
14695  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14696                                      (vector short)__b);
14697}
14698
14699static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
14700                                              vector bool short __b) {
14701  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14702                                      (vector short)__b);
14703}
14704
14705static __inline__ int __ATTRS_o_ai vec_all_ne(vector pixel __a,
14706                                              vector pixel __b) {
14707  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
14708                                      (vector short)__b);
14709}
14710
14711static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) {
14712  return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
14713}
14714
14715static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a,
14716                                              vector bool int __b) {
14717  return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
14718}
14719
14720static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
14721                                              vector unsigned int __b) {
14722  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14723                                      (vector int)__b);
14724}
14725
14726static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
14727                                              vector bool int __b) {
14728  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14729                                      (vector int)__b);
14730}
14731
14732static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
14733                                              vector int __b) {
14734  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14735                                      (vector int)__b);
14736}
14737
14738static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
14739                                              vector unsigned int __b) {
14740  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14741                                      (vector int)__b);
14742}
14743
14744static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
14745                                              vector bool int __b) {
14746  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
14747                                      (vector int)__b);
14748}
14749
14750#ifdef __POWER8_VECTOR__
14751static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
14752                                              vector signed long long __b) {
14753  return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b);
14754}
14755
14756static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
14757                                              vector unsigned long long __b) {
14758  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a,
14759                                      (vector long long)__b);
14760}
14761
14762static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
14763                                              vector bool long long __b) {
14764  return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a,
14765                                      (vector signed long long)__b);
14766}
14767
14768static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
14769                                              vector bool long long __b) {
14770  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
14771                                      (vector signed long long)__b);
14772}
14773
14774static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
14775                                              vector signed long long __b) {
14776  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
14777                                      (vector signed long long)__b);
14778}
14779
14780static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
14781                                              vector unsigned long long __b) {
14782  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
14783                                      (vector signed long long)__b);
14784}
14785
14786static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
14787                                              vector bool long long __b) {
14788  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
14789                                      (vector signed long long)__b);
14790}
14791#endif
14792
14793static __inline__ int __ATTRS_o_ai vec_all_ne(vector float __a,
14794                                              vector float __b) {
14795#ifdef __VSX__
14796  return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
14797#else
14798  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
14799#endif
14800}
14801
14802#ifdef __VSX__
14803static __inline__ int __ATTRS_o_ai vec_all_ne(vector double __a,
14804                                              vector double __b) {
14805  return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
14806}
14807#endif
14808
14809/* vec_all_nge */
14810
14811static __inline__ int __ATTRS_o_ai vec_all_nge(vector float __a,
14812                                               vector float __b) {
14813#ifdef __VSX__
14814  return __builtin_vsx_xvcmpgesp_p(__CR6_EQ, __a, __b);
14815#else
14816  return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
14817#endif
14818}
14819
14820#ifdef __VSX__
14821static __inline__ int __ATTRS_o_ai vec_all_nge(vector double __a,
14822                                               vector double __b) {
14823  return __builtin_vsx_xvcmpgedp_p(__CR6_EQ, __a, __b);
14824}
14825#endif
14826
14827/* vec_all_ngt */
14828
14829static __inline__ int __ATTRS_o_ai vec_all_ngt(vector float __a,
14830                                               vector float __b) {
14831#ifdef __VSX__
14832  return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ, __a, __b);
14833#else
14834  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
14835#endif
14836}
14837
14838#ifdef __VSX__
14839static __inline__ int __ATTRS_o_ai vec_all_ngt(vector double __a,
14840                                               vector double __b) {
14841  return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ, __a, __b);
14842}
14843#endif
14844
14845/* vec_all_nle */
14846
14847static __inline__ int __attribute__((__always_inline__))
14848vec_all_nle(vector float __a, vector float __b) {
14849  return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
14850}
14851
14852/* vec_all_nlt */
14853
14854static __inline__ int __attribute__((__always_inline__))
14855vec_all_nlt(vector float __a, vector float __b) {
14856  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
14857}
14858
14859/* vec_all_numeric */
14860
14861static __inline__ int __attribute__((__always_inline__))
14862vec_all_numeric(vector float __a) {
14863  return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
14864}
14865
14866/* vec_any_eq */
14867
14868static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
14869                                              vector signed char __b) {
14870  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14871                                      (vector char)__b);
14872}
14873
14874static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
14875                                              vector bool char __b) {
14876  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14877                                      (vector char)__b);
14878}
14879
14880static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
14881                                              vector unsigned char __b) {
14882  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14883                                      (vector char)__b);
14884}
14885
14886static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
14887                                              vector bool char __b) {
14888  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14889                                      (vector char)__b);
14890}
14891
14892static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
14893                                              vector signed char __b) {
14894  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14895                                      (vector char)__b);
14896}
14897
14898static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
14899                                              vector unsigned char __b) {
14900  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14901                                      (vector char)__b);
14902}
14903
14904static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
14905                                              vector bool char __b) {
14906  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
14907                                      (vector char)__b);
14908}
14909
14910static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
14911                                              vector short __b) {
14912  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
14913}
14914
14915static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
14916                                              vector bool short __b) {
14917  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
14918}
14919
14920static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
14921                                              vector unsigned short __b) {
14922  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14923                                      (vector short)__b);
14924}
14925
14926static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
14927                                              vector bool short __b) {
14928  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14929                                      (vector short)__b);
14930}
14931
14932static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
14933                                              vector short __b) {
14934  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14935                                      (vector short)__b);
14936}
14937
14938static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
14939                                              vector unsigned short __b) {
14940  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14941                                      (vector short)__b);
14942}
14943
14944static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
14945                                              vector bool short __b) {
14946  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14947                                      (vector short)__b);
14948}
14949
14950static __inline__ int __ATTRS_o_ai vec_any_eq(vector pixel __a,
14951                                              vector pixel __b) {
14952  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
14953                                      (vector short)__b);
14954}
14955
14956static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) {
14957  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
14958}
14959
14960static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a,
14961                                              vector bool int __b) {
14962  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
14963}
14964
14965static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
14966                                              vector unsigned int __b) {
14967  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14968                                      (vector int)__b);
14969}
14970
14971static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
14972                                              vector bool int __b) {
14973  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14974                                      (vector int)__b);
14975}
14976
14977static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
14978                                              vector int __b) {
14979  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14980                                      (vector int)__b);
14981}
14982
14983static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
14984                                              vector unsigned int __b) {
14985  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14986                                      (vector int)__b);
14987}
14988
14989static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
14990                                              vector bool int __b) {
14991  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
14992                                      (vector int)__b);
14993}
14994
14995#ifdef __POWER8_VECTOR__
14996static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
14997                                              vector signed long long __b) {
14998  return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b);
14999}
15000
15001static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
15002                                              vector unsigned long long __b) {
15003  return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a,
15004                                      (vector long long)__b);
15005}
15006
15007static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
15008                                              vector bool long long __b) {
15009  return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a,
15010                                      (vector signed long long)__b);
15011}
15012
15013static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
15014                                              vector bool long long __b) {
15015  return __builtin_altivec_vcmpequd_p(
15016      __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15017}
15018
15019static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
15020                                              vector signed long long __b) {
15021  return __builtin_altivec_vcmpequd_p(
15022      __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15023}
15024
15025static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
15026                                              vector unsigned long long __b) {
15027  return __builtin_altivec_vcmpequd_p(
15028      __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15029}
15030
15031static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
15032                                              vector bool long long __b) {
15033  return __builtin_altivec_vcmpequd_p(
15034      __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
15035}
15036#endif
15037
15038static __inline__ int __ATTRS_o_ai vec_any_eq(vector float __a,
15039                                              vector float __b) {
15040#ifdef __VSX__
15041  return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ_REV, __a, __b);
15042#else
15043  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
15044#endif
15045}
15046
15047#ifdef __VSX__
15048static __inline__ int __ATTRS_o_ai vec_any_eq(vector double __a,
15049                                              vector double __b) {
15050  return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ_REV, __a, __b);
15051}
15052#endif
15053
15054/* vec_any_ge */
15055
15056static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
15057                                              vector signed char __b) {
15058  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
15059}
15060
15061static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
15062                                              vector bool char __b) {
15063  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b,
15064                                      __a);
15065}
15066
15067static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
15068                                              vector unsigned char __b) {
15069  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
15070}
15071
15072static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
15073                                              vector bool char __b) {
15074  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
15075                                      __a);
15076}
15077
15078static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
15079                                              vector signed char __b) {
15080  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
15081                                      (vector unsigned char)__a);
15082}
15083
15084static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
15085                                              vector unsigned char __b) {
15086  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b,
15087                                      (vector unsigned char)__a);
15088}
15089
15090static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
15091                                              vector bool char __b) {
15092  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
15093                                      (vector unsigned char)__a);
15094}
15095
15096static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
15097                                              vector short __b) {
15098  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
15099}
15100
15101static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
15102                                              vector bool short __b) {
15103  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
15104}
15105
15106static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
15107                                              vector unsigned short __b) {
15108  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
15109}
15110
15111static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
15112                                              vector bool short __b) {
15113  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
15114                                      __a);
15115}
15116
15117static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
15118                                              vector short __b) {
15119  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
15120                                      (vector unsigned short)__a);
15121}
15122
15123static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
15124                                              vector unsigned short __b) {
15125  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b,
15126                                      (vector unsigned short)__a);
15127}
15128
15129static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
15130                                              vector bool short __b) {
15131  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
15132                                      (vector unsigned short)__a);
15133}
15134
15135static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) {
15136  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
15137}
15138
15139static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a,
15140                                              vector bool int __b) {
15141  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
15142}
15143
15144static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
15145                                              vector unsigned int __b) {
15146  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
15147}
15148
15149static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
15150                                              vector bool int __b) {
15151  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
15152                                      __a);
15153}
15154
15155static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
15156                                              vector int __b) {
15157  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
15158                                      (vector unsigned int)__a);
15159}
15160
15161static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
15162                                              vector unsigned int __b) {
15163  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b,
15164                                      (vector unsigned int)__a);
15165}
15166
15167static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
15168                                              vector bool int __b) {
15169  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
15170                                      (vector unsigned int)__a);
15171}
15172
15173#ifdef __POWER8_VECTOR__
15174static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
15175                                              vector signed long long __b) {
15176  return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a);
15177}
15178
15179static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
15180                                              vector unsigned long long __b) {
15181  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a);
15182}
15183
15184static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
15185                                              vector bool long long __b) {
15186  return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV,
15187                                      (vector signed long long)__b, __a);
15188}
15189
15190static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
15191                                              vector bool long long __b) {
15192  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15193                                      (vector unsigned long long)__b, __a);
15194}
15195
15196static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
15197                                              vector signed long long __b) {
15198  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15199                                      (vector unsigned long long)__b,
15200                                      (vector unsigned long long)__a);
15201}
15202
15203static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
15204                                              vector unsigned long long __b) {
15205  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b,
15206                                      (vector unsigned long long)__a);
15207}
15208
15209static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
15210                                              vector bool long long __b) {
15211  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15212                                      (vector unsigned long long)__b,
15213                                      (vector unsigned long long)__a);
15214}
15215#endif
15216
15217static __inline__ int __ATTRS_o_ai vec_any_ge(vector float __a,
15218                                              vector float __b) {
15219#ifdef __VSX__
15220  return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __a, __b);
15221#else
15222  return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
15223#endif
15224}
15225
15226#ifdef __VSX__
15227static __inline__ int __ATTRS_o_ai vec_any_ge(vector double __a,
15228                                              vector double __b) {
15229  return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __a, __b);
15230}
15231#endif
15232
15233/* vec_any_gt */
15234
15235static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
15236                                              vector signed char __b) {
15237  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
15238}
15239
15240static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
15241                                              vector bool char __b) {
15242  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a,
15243                                      (vector signed char)__b);
15244}
15245
15246static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
15247                                              vector unsigned char __b) {
15248  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
15249}
15250
15251static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
15252                                              vector bool char __b) {
15253  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a,
15254                                      (vector unsigned char)__b);
15255}
15256
15257static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
15258                                              vector signed char __b) {
15259  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
15260                                      (vector unsigned char)__b);
15261}
15262
15263static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
15264                                              vector unsigned char __b) {
15265  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
15266                                      __b);
15267}
15268
15269static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
15270                                              vector bool char __b) {
15271  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
15272                                      (vector unsigned char)__b);
15273}
15274
15275static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
15276                                              vector short __b) {
15277  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
15278}
15279
15280static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
15281                                              vector bool short __b) {
15282  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
15283}
15284
15285static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
15286                                              vector unsigned short __b) {
15287  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
15288}
15289
15290static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
15291                                              vector bool short __b) {
15292  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a,
15293                                      (vector unsigned short)__b);
15294}
15295
15296static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
15297                                              vector short __b) {
15298  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
15299                                      (vector unsigned short)__b);
15300}
15301
15302static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
15303                                              vector unsigned short __b) {
15304  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
15305                                      __b);
15306}
15307
15308static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
15309                                              vector bool short __b) {
15310  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
15311                                      (vector unsigned short)__b);
15312}
15313
15314static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) {
15315  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
15316}
15317
15318static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a,
15319                                              vector bool int __b) {
15320  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
15321}
15322
15323static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
15324                                              vector unsigned int __b) {
15325  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
15326}
15327
15328static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
15329                                              vector bool int __b) {
15330  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a,
15331                                      (vector unsigned int)__b);
15332}
15333
15334static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
15335                                              vector int __b) {
15336  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
15337                                      (vector unsigned int)__b);
15338}
15339
15340static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
15341                                              vector unsigned int __b) {
15342  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
15343                                      __b);
15344}
15345
15346static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
15347                                              vector bool int __b) {
15348  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
15349                                      (vector unsigned int)__b);
15350}
15351
15352#ifdef __POWER8_VECTOR__
15353static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
15354                                              vector signed long long __b) {
15355  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b);
15356}
15357
15358static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
15359                                              vector unsigned long long __b) {
15360  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b);
15361}
15362
15363static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
15364                                              vector bool long long __b) {
15365  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a,
15366                                      (vector signed long long)__b);
15367}
15368
15369static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
15370                                              vector bool long long __b) {
15371  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a,
15372                                      (vector unsigned long long)__b);
15373}
15374
15375static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
15376                                              vector signed long long __b) {
15377  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15378                                      (vector unsigned long long)__a,
15379                                      (vector unsigned long long)__b);
15380}
15381
15382static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
15383                                              vector unsigned long long __b) {
15384  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15385                                      (vector unsigned long long)__a, __b);
15386}
15387
15388static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
15389                                              vector bool long long __b) {
15390  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15391                                      (vector unsigned long long)__a,
15392                                      (vector unsigned long long)__b);
15393}
15394#endif
15395
15396static __inline__ int __ATTRS_o_ai vec_any_gt(vector float __a,
15397                                              vector float __b) {
15398#ifdef __VSX__
15399  return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __a, __b);
15400#else
15401  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
15402#endif
15403}
15404
15405#ifdef __VSX__
15406static __inline__ int __ATTRS_o_ai vec_any_gt(vector double __a,
15407                                              vector double __b) {
15408  return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __a, __b);
15409}
15410#endif
15411
15412/* vec_any_le */
15413
15414static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
15415                                              vector signed char __b) {
15416  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
15417}
15418
15419static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
15420                                              vector bool char __b) {
15421  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a,
15422                                      (vector signed char)__b);
15423}
15424
15425static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
15426                                              vector unsigned char __b) {
15427  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
15428}
15429
15430static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
15431                                              vector bool char __b) {
15432  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a,
15433                                      (vector unsigned char)__b);
15434}
15435
15436static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
15437                                              vector signed char __b) {
15438  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
15439                                      (vector unsigned char)__b);
15440}
15441
15442static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
15443                                              vector unsigned char __b) {
15444  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
15445                                      __b);
15446}
15447
15448static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
15449                                              vector bool char __b) {
15450  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
15451                                      (vector unsigned char)__b);
15452}
15453
15454static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
15455                                              vector short __b) {
15456  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
15457}
15458
15459static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
15460                                              vector bool short __b) {
15461  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
15462}
15463
15464static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
15465                                              vector unsigned short __b) {
15466  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
15467}
15468
15469static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
15470                                              vector bool short __b) {
15471  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a,
15472                                      (vector unsigned short)__b);
15473}
15474
15475static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
15476                                              vector short __b) {
15477  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
15478                                      (vector unsigned short)__b);
15479}
15480
15481static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
15482                                              vector unsigned short __b) {
15483  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
15484                                      __b);
15485}
15486
15487static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
15488                                              vector bool short __b) {
15489  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
15490                                      (vector unsigned short)__b);
15491}
15492
15493static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) {
15494  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
15495}
15496
15497static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a,
15498                                              vector bool int __b) {
15499  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
15500}
15501
15502static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
15503                                              vector unsigned int __b) {
15504  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
15505}
15506
15507static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
15508                                              vector bool int __b) {
15509  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a,
15510                                      (vector unsigned int)__b);
15511}
15512
15513static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
15514                                              vector int __b) {
15515  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
15516                                      (vector unsigned int)__b);
15517}
15518
15519static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
15520                                              vector unsigned int __b) {
15521  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
15522                                      __b);
15523}
15524
15525static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
15526                                              vector bool int __b) {
15527  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
15528                                      (vector unsigned int)__b);
15529}
15530
15531#ifdef __POWER8_VECTOR__
15532static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
15533                                              vector signed long long __b) {
15534  return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b);
15535}
15536
15537static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
15538                                              vector unsigned long long __b) {
15539  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b);
15540}
15541
15542static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
15543                                              vector bool long long __b) {
15544  return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a,
15545                                      (vector signed long long)__b);
15546}
15547
15548static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
15549                                              vector bool long long __b) {
15550  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a,
15551                                      (vector unsigned long long)__b);
15552}
15553
15554static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
15555                                              vector signed long long __b) {
15556  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15557                                      (vector unsigned long long)__a,
15558                                      (vector unsigned long long)__b);
15559}
15560
15561static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
15562                                              vector unsigned long long __b) {
15563  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15564                                      (vector unsigned long long)__a, __b);
15565}
15566
15567static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
15568                                              vector bool long long __b) {
15569  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
15570                                      (vector unsigned long long)__a,
15571                                      (vector unsigned long long)__b);
15572}
15573#endif
15574
15575static __inline__ int __ATTRS_o_ai vec_any_le(vector float __a,
15576                                              vector float __b) {
15577#ifdef __VSX__
15578  return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __b, __a);
15579#else
15580  return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
15581#endif
15582}
15583
15584#ifdef __VSX__
15585static __inline__ int __ATTRS_o_ai vec_any_le(vector double __a,
15586                                              vector double __b) {
15587  return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __b, __a);
15588}
15589#endif
15590
15591/* vec_any_lt */
15592
15593static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
15594                                              vector signed char __b) {
15595  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
15596}
15597
15598static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
15599                                              vector bool char __b) {
15600  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b,
15601                                      __a);
15602}
15603
15604static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
15605                                              vector unsigned char __b) {
15606  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
15607}
15608
15609static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
15610                                              vector bool char __b) {
15611  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
15612                                      __a);
15613}
15614
15615static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
15616                                              vector signed char __b) {
15617  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
15618                                      (vector unsigned char)__a);
15619}
15620
15621static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
15622                                              vector unsigned char __b) {
15623  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b,
15624                                      (vector unsigned char)__a);
15625}
15626
15627static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
15628                                              vector bool char __b) {
15629  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
15630                                      (vector unsigned char)__a);
15631}
15632
15633static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
15634                                              vector short __b) {
15635  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
15636}
15637
15638static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
15639                                              vector bool short __b) {
15640  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
15641}
15642
15643static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
15644                                              vector unsigned short __b) {
15645  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
15646}
15647
15648static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
15649                                              vector bool short __b) {
15650  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
15651                                      __a);
15652}
15653
15654static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
15655                                              vector short __b) {
15656  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
15657                                      (vector unsigned short)__a);
15658}
15659
15660static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
15661                                              vector unsigned short __b) {
15662  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b,
15663                                      (vector unsigned short)__a);
15664}
15665
15666static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
15667                                              vector bool short __b) {
15668  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
15669                                      (vector unsigned short)__a);
15670}
15671
15672static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) {
15673  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
15674}
15675
15676static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a,
15677                                              vector bool int __b) {
15678  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
15679}
15680
15681static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
15682                                              vector unsigned int __b) {
15683  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
15684}
15685
15686static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
15687                                              vector bool int __b) {
15688  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
15689                                      __a);
15690}
15691
15692static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
15693                                              vector int __b) {
15694  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
15695                                      (vector unsigned int)__a);
15696}
15697
15698static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
15699                                              vector unsigned int __b) {
15700  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b,
15701                                      (vector unsigned int)__a);
15702}
15703
15704static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
15705                                              vector bool int __b) {
15706  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
15707                                      (vector unsigned int)__a);
15708}
15709
15710#ifdef __POWER8_VECTOR__
15711static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
15712                                              vector signed long long __b) {
15713  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a);
15714}
15715
15716static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
15717                                              vector unsigned long long __b) {
15718  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a);
15719}
15720
15721static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
15722                                              vector bool long long __b) {
15723  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV,
15724                                      (vector signed long long)__b, __a);
15725}
15726
15727static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
15728                                              vector bool long long __b) {
15729  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15730                                      (vector unsigned long long)__b, __a);
15731}
15732
15733static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
15734                                              vector signed long long __b) {
15735  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15736                                      (vector unsigned long long)__b,
15737                                      (vector unsigned long long)__a);
15738}
15739
15740static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
15741                                              vector unsigned long long __b) {
15742  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b,
15743                                      (vector unsigned long long)__a);
15744}
15745
15746static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
15747                                              vector bool long long __b) {
15748  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
15749                                      (vector unsigned long long)__b,
15750                                      (vector unsigned long long)__a);
15751}
15752#endif
15753
15754static __inline__ int __ATTRS_o_ai vec_any_lt(vector float __a,
15755                                              vector float __b) {
15756#ifdef __VSX__
15757  return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __b, __a);
15758#else
15759  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
15760#endif
15761}
15762
15763#ifdef __VSX__
15764static __inline__ int __ATTRS_o_ai vec_any_lt(vector double __a,
15765                                              vector double __b) {
15766  return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __b, __a);
15767}
15768#endif
15769
15770/* vec_any_nan */
15771
15772static __inline__ int __attribute__((__always_inline__))
15773vec_any_nan(vector float __a) {
15774  return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
15775}
15776
15777/* vec_any_ne */
15778
15779static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
15780                                              vector signed char __b) {
15781  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15782                                      (vector char)__b);
15783}
15784
15785static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
15786                                              vector bool char __b) {
15787  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15788                                      (vector char)__b);
15789}
15790
15791static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
15792                                              vector unsigned char __b) {
15793  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15794                                      (vector char)__b);
15795}
15796
15797static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
15798                                              vector bool char __b) {
15799  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15800                                      (vector char)__b);
15801}
15802
15803static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
15804                                              vector signed char __b) {
15805  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15806                                      (vector char)__b);
15807}
15808
15809static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
15810                                              vector unsigned char __b) {
15811  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15812                                      (vector char)__b);
15813}
15814
15815static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
15816                                              vector bool char __b) {
15817  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
15818                                      (vector char)__b);
15819}
15820
15821static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
15822                                              vector short __b) {
15823  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
15824}
15825
15826static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
15827                                              vector bool short __b) {
15828  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
15829}
15830
15831static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
15832                                              vector unsigned short __b) {
15833  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15834                                      (vector short)__b);
15835}
15836
15837static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
15838                                              vector bool short __b) {
15839  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15840                                      (vector short)__b);
15841}
15842
15843static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
15844                                              vector short __b) {
15845  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15846                                      (vector short)__b);
15847}
15848
15849static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
15850                                              vector unsigned short __b) {
15851  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15852                                      (vector short)__b);
15853}
15854
15855static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
15856                                              vector bool short __b) {
15857  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15858                                      (vector short)__b);
15859}
15860
15861static __inline__ int __ATTRS_o_ai vec_any_ne(vector pixel __a,
15862                                              vector pixel __b) {
15863  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
15864                                      (vector short)__b);
15865}
15866
15867static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) {
15868  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
15869}
15870
15871static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a,
15872                                              vector bool int __b) {
15873  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
15874}
15875
15876static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
15877                                              vector unsigned int __b) {
15878  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15879                                      (vector int)__b);
15880}
15881
15882static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
15883                                              vector bool int __b) {
15884  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15885                                      (vector int)__b);
15886}
15887
15888static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
15889                                              vector int __b) {
15890  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15891                                      (vector int)__b);
15892}
15893
15894static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
15895                                              vector unsigned int __b) {
15896  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15897                                      (vector int)__b);
15898}
15899
15900static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
15901                                              vector bool int __b) {
15902  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
15903                                      (vector int)__b);
15904}
15905
15906#ifdef __POWER8_VECTOR__
15907static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
15908                                              vector signed long long __b) {
15909  return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b);
15910}
15911
15912static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
15913                                              vector unsigned long long __b) {
15914  return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a,
15915                                      (vector long long)__b);
15916}
15917
15918static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
15919                                              vector bool long long __b) {
15920  return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a,
15921                                      (vector signed long long)__b);
15922}
15923
15924static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
15925                                              vector bool long long __b) {
15926  return __builtin_altivec_vcmpequd_p(
15927      __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
15928}
15929
15930static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
15931                                              vector signed long long __b) {
15932  return __builtin_altivec_vcmpequd_p(
15933      __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
15934}
15935
15936static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
15937                                              vector unsigned long long __b) {
15938  return __builtin_altivec_vcmpequd_p(
15939      __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
15940}
15941
15942static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
15943                                              vector bool long long __b) {
15944  return __builtin_altivec_vcmpequd_p(
15945      __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
15946}
15947#endif
15948
15949static __inline__ int __ATTRS_o_ai vec_any_ne(vector float __a,
15950                                              vector float __b) {
15951#ifdef __VSX__
15952  return __builtin_vsx_xvcmpeqsp_p(__CR6_LT_REV, __a, __b);
15953#else
15954  return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
15955#endif
15956}
15957
15958#ifdef __VSX__
15959static __inline__ int __ATTRS_o_ai vec_any_ne(vector double __a,
15960                                              vector double __b) {
15961  return __builtin_vsx_xvcmpeqdp_p(__CR6_LT_REV, __a, __b);
15962}
15963#endif
15964
15965/* vec_any_nge */
15966
15967static __inline__ int __attribute__((__always_inline__))
15968vec_any_nge(vector float __a, vector float __b) {
15969  return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
15970}
15971
15972/* vec_any_ngt */
15973
15974static __inline__ int __attribute__((__always_inline__))
15975vec_any_ngt(vector float __a, vector float __b) {
15976  return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
15977}
15978
15979/* vec_any_nle */
15980
15981static __inline__ int __attribute__((__always_inline__))
15982vec_any_nle(vector float __a, vector float __b) {
15983  return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
15984}
15985
15986/* vec_any_nlt */
15987
15988static __inline__ int __attribute__((__always_inline__))
15989vec_any_nlt(vector float __a, vector float __b) {
15990  return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
15991}
15992
15993/* vec_any_numeric */
15994
15995static __inline__ int __attribute__((__always_inline__))
15996vec_any_numeric(vector float __a) {
15997  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
15998}
15999
16000/* vec_any_out */
16001
16002static __inline__ int __attribute__((__always_inline__))
16003vec_any_out(vector float __a, vector float __b) {
16004  return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
16005}
16006
16007/* Power 8 Crypto functions
16008Note: We diverge from the current GCC implementation with regard
16009to cryptography and related functions as follows:
16010- Only the SHA and AES instructions and builtins are disabled by -mno-crypto
16011- The remaining ones are only available on Power8 and up so
16012  require -mpower8-vector
16013The justification for this is that export requirements require that
16014Category:Vector.Crypto is optional (i.e. compliant hardware may not provide
16015support). As a result, we need to be able to turn off support for those.
16016The remaining ones (currently controlled by -mcrypto for GCC) still
16017need to be provided on compliant hardware even if Vector.Crypto is not
16018provided.
16019*/
16020#ifdef __CRYPTO__
16021#define vec_sbox_be __builtin_altivec_crypto_vsbox
16022#define vec_cipher_be __builtin_altivec_crypto_vcipher
16023#define vec_cipherlast_be __builtin_altivec_crypto_vcipherlast
16024#define vec_ncipher_be __builtin_altivec_crypto_vncipher
16025#define vec_ncipherlast_be __builtin_altivec_crypto_vncipherlast
16026
16027static __inline__ vector unsigned long long __attribute__((__always_inline__))
16028__builtin_crypto_vsbox(vector unsigned long long __a) {
16029  return __builtin_altivec_crypto_vsbox(__a);
16030}
16031
16032static __inline__ vector unsigned long long __attribute__((__always_inline__))
16033__builtin_crypto_vcipher(vector unsigned long long __a,
16034                         vector unsigned long long __b) {
16035  return __builtin_altivec_crypto_vcipher(__a, __b);
16036}
16037
16038static __inline__ vector unsigned long long __attribute__((__always_inline__))
16039__builtin_crypto_vcipherlast(vector unsigned long long __a,
16040                             vector unsigned long long __b) {
16041  return __builtin_altivec_crypto_vcipherlast(__a, __b);
16042}
16043
16044static __inline__ vector unsigned long long __attribute__((__always_inline__))
16045__builtin_crypto_vncipher(vector unsigned long long __a,
16046                          vector unsigned long long __b) {
16047  return __builtin_altivec_crypto_vncipher(__a, __b);
16048}
16049
16050static __inline__ vector unsigned long long __attribute__((__always_inline__))
16051__builtin_crypto_vncipherlast(vector unsigned long long __a,
16052                              vector unsigned long long __b) {
16053  return __builtin_altivec_crypto_vncipherlast(__a, __b);
16054}
16055
16056#define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad
16057#define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw
16058
16059#define vec_shasigma_be(X, Y, Z)                                               \
16060  _Generic((X), vector unsigned int                                            \
16061           : __builtin_crypto_vshasigmaw, vector unsigned long long            \
16062           : __builtin_crypto_vshasigmad)((X), (Y), (Z))
16063#endif
16064
16065#ifdef __POWER8_VECTOR__
16066static __inline__ vector bool char __ATTRS_o_ai
16067vec_permxor(vector bool char __a, vector bool char __b,
16068            vector bool char __c) {
16069  return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16070}
16071
16072static __inline__ vector signed char __ATTRS_o_ai
16073vec_permxor(vector signed char __a, vector signed char __b,
16074            vector signed char __c) {
16075  return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16076}
16077
16078static __inline__ vector unsigned char __ATTRS_o_ai
16079vec_permxor(vector unsigned char __a, vector unsigned char __b,
16080            vector unsigned char __c) {
16081  return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16082}
16083
16084static __inline__ vector unsigned char __ATTRS_o_ai
16085__builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b,
16086                          vector unsigned char __c) {
16087  return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
16088}
16089
16090static __inline__ vector unsigned short __ATTRS_o_ai
16091__builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b,
16092                          vector unsigned short __c) {
16093  return (vector unsigned short)__builtin_altivec_crypto_vpermxor(
16094      (vector unsigned char)__a, (vector unsigned char)__b,
16095      (vector unsigned char)__c);
16096}
16097
16098static __inline__ vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor(
16099    vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
16100  return (vector unsigned int)__builtin_altivec_crypto_vpermxor(
16101      (vector unsigned char)__a, (vector unsigned char)__b,
16102      (vector unsigned char)__c);
16103}
16104
16105static __inline__ vector unsigned long long __ATTRS_o_ai
16106__builtin_crypto_vpermxor(vector unsigned long long __a,
16107                          vector unsigned long long __b,
16108                          vector unsigned long long __c) {
16109  return (vector unsigned long long)__builtin_altivec_crypto_vpermxor(
16110      (vector unsigned char)__a, (vector unsigned char)__b,
16111      (vector unsigned char)__c);
16112}
16113
16114static __inline__ vector unsigned char __ATTRS_o_ai
16115__builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) {
16116  return __builtin_altivec_crypto_vpmsumb(__a, __b);
16117}
16118
16119static __inline__ vector unsigned short __ATTRS_o_ai
16120__builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) {
16121  return __builtin_altivec_crypto_vpmsumh(__a, __b);
16122}
16123
16124static __inline__ vector unsigned int __ATTRS_o_ai
16125__builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) {
16126  return __builtin_altivec_crypto_vpmsumw(__a, __b);
16127}
16128
16129static __inline__ vector unsigned long long __ATTRS_o_ai
16130__builtin_crypto_vpmsumb(vector unsigned long long __a,
16131                         vector unsigned long long __b) {
16132  return __builtin_altivec_crypto_vpmsumd(__a, __b);
16133}
16134
16135static __inline__ vector signed char __ATTRS_o_ai
16136vec_vgbbd(vector signed char __a) {
16137  return __builtin_altivec_vgbbd((vector unsigned char)__a);
16138}
16139
16140#define vec_pmsum_be __builtin_crypto_vpmsumb
16141#define vec_gb __builtin_altivec_vgbbd
16142
16143static __inline__ vector unsigned char __ATTRS_o_ai
16144vec_vgbbd(vector unsigned char __a) {
16145  return __builtin_altivec_vgbbd(__a);
16146}
16147
16148static __inline__ vector long long __ATTRS_o_ai
16149vec_vbpermq(vector signed char __a, vector signed char __b) {
16150  return __builtin_altivec_vbpermq((vector unsigned char)__a,
16151                                   (vector unsigned char)__b);
16152}
16153
16154static __inline__ vector long long __ATTRS_o_ai
16155vec_vbpermq(vector unsigned char __a, vector unsigned char __b) {
16156  return __builtin_altivec_vbpermq(__a, __b);
16157}
16158
16159#ifdef __powerpc64__
16160static __inline__ vector unsigned long long __attribute__((__always_inline__))
16161vec_bperm(vector unsigned __int128 __a, vector unsigned char __b) {
16162  return __builtin_altivec_vbpermq((vector unsigned char)__a,
16163                                   (vector unsigned char)__b);
16164}
16165#endif
16166#endif
16167
16168
16169/* vec_reve */
16170
16171static inline __ATTRS_o_ai vector bool char vec_reve(vector bool char __a) {
16172  return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
16173                                 5, 4, 3, 2, 1, 0);
16174}
16175
16176static inline __ATTRS_o_ai vector signed char vec_reve(vector signed char __a) {
16177  return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
16178                                 5, 4, 3, 2, 1, 0);
16179}
16180
16181static inline __ATTRS_o_ai vector unsigned char
16182vec_reve(vector unsigned char __a) {
16183  return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
16184                                 5, 4, 3, 2, 1, 0);
16185}
16186
16187static inline __ATTRS_o_ai vector bool int vec_reve(vector bool int __a) {
16188  return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16189}
16190
16191static inline __ATTRS_o_ai vector signed int vec_reve(vector signed int __a) {
16192  return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16193}
16194
16195static inline __ATTRS_o_ai vector unsigned int
16196vec_reve(vector unsigned int __a) {
16197  return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16198}
16199
16200static inline __ATTRS_o_ai vector bool short vec_reve(vector bool short __a) {
16201  return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
16202}
16203
16204static inline __ATTRS_o_ai vector signed short
16205vec_reve(vector signed short __a) {
16206  return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
16207}
16208
16209static inline __ATTRS_o_ai vector unsigned short
16210vec_reve(vector unsigned short __a) {
16211  return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
16212}
16213
16214static inline __ATTRS_o_ai vector float vec_reve(vector float __a) {
16215  return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
16216}
16217
16218#ifdef __VSX__
16219static inline __ATTRS_o_ai vector bool long long
16220vec_reve(vector bool long long __a) {
16221  return __builtin_shufflevector(__a, __a, 1, 0);
16222}
16223
16224static inline __ATTRS_o_ai vector signed long long
16225vec_reve(vector signed long long __a) {
16226  return __builtin_shufflevector(__a, __a, 1, 0);
16227}
16228
16229static inline __ATTRS_o_ai vector unsigned long long
16230vec_reve(vector unsigned long long __a) {
16231  return __builtin_shufflevector(__a, __a, 1, 0);
16232}
16233
16234static inline __ATTRS_o_ai vector double vec_reve(vector double __a) {
16235  return __builtin_shufflevector(__a, __a, 1, 0);
16236}
16237#endif
16238
16239/* vec_revb */
16240static __inline__ vector bool char __ATTRS_o_ai
16241vec_revb(vector bool char __a) {
16242  return __a;
16243}
16244
16245static __inline__ vector signed char __ATTRS_o_ai
16246vec_revb(vector signed char __a) {
16247  return __a;
16248}
16249
16250static __inline__ vector unsigned char __ATTRS_o_ai
16251vec_revb(vector unsigned char __a) {
16252  return __a;
16253}
16254
16255static __inline__ vector bool short __ATTRS_o_ai
16256vec_revb(vector bool short __a) {
16257  vector unsigned char __indices =
16258      { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
16259  return vec_perm(__a, __a, __indices);
16260}
16261
16262static __inline__ vector signed short __ATTRS_o_ai
16263vec_revb(vector signed short __a) {
16264  vector unsigned char __indices =
16265      { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
16266  return vec_perm(__a, __a, __indices);
16267}
16268
16269static __inline__ vector unsigned short __ATTRS_o_ai
16270vec_revb(vector unsigned short __a) {
16271  vector unsigned char __indices =
16272     { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
16273  return vec_perm(__a, __a, __indices);
16274}
16275
16276static __inline__ vector bool int __ATTRS_o_ai
16277vec_revb(vector bool int __a) {
16278  vector unsigned char __indices =
16279      { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16280  return vec_perm(__a, __a, __indices);
16281}
16282
16283static __inline__ vector signed int __ATTRS_o_ai
16284vec_revb(vector signed int __a) {
16285  vector unsigned char __indices =
16286      { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16287  return vec_perm(__a, __a, __indices);
16288}
16289
16290static __inline__ vector unsigned int __ATTRS_o_ai
16291vec_revb(vector unsigned int __a) {
16292  vector unsigned char __indices =
16293      { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16294  return vec_perm(__a, __a, __indices);
16295}
16296
16297static __inline__ vector float __ATTRS_o_ai
16298vec_revb(vector float __a) {
16299 vector unsigned char __indices =
16300      { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
16301 return vec_perm(__a, __a, __indices);
16302}
16303
16304#ifdef __VSX__
16305static __inline__ vector bool long long __ATTRS_o_ai
16306vec_revb(vector bool long long __a) {
16307  vector unsigned char __indices =
16308      { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16309  return vec_perm(__a, __a, __indices);
16310}
16311
16312static __inline__ vector signed long long __ATTRS_o_ai
16313vec_revb(vector signed long long __a) {
16314  vector unsigned char __indices =
16315      { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16316  return vec_perm(__a, __a, __indices);
16317}
16318
16319static __inline__ vector unsigned long long __ATTRS_o_ai
16320vec_revb(vector unsigned long long __a) {
16321  vector unsigned char __indices =
16322      { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16323  return vec_perm(__a, __a, __indices);
16324}
16325
16326static __inline__ vector double __ATTRS_o_ai
16327vec_revb(vector double __a) {
16328  vector unsigned char __indices =
16329      { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
16330  return vec_perm(__a, __a, __indices);
16331}
16332#endif /* End __VSX__ */
16333
16334#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16335static __inline__ vector signed __int128 __ATTRS_o_ai
16336vec_revb(vector signed __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 signed __int128)vec_perm((vector signed int)__a,
16340                                          (vector signed int)__a,
16341                                           __indices);
16342}
16343
16344static __inline__ vector unsigned __int128 __ATTRS_o_ai
16345vec_revb(vector unsigned __int128 __a) {
16346  vector unsigned char __indices =
16347      { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
16348  return (vector unsigned __int128)vec_perm((vector signed int)__a,
16349                                            (vector signed int)__a,
16350                                             __indices);
16351}
16352#endif /* END __POWER8_VECTOR__ && __powerpc64__ */
16353
16354/* vec_xl */
16355
16356static inline __ATTRS_o_ai vector signed char vec_xl(signed long long __offset,
16357                                                     signed char *__ptr) {
16358  return *(vector signed char *)(__ptr + __offset);
16359}
16360
16361static inline __ATTRS_o_ai vector unsigned char
16362vec_xl(signed long long __offset, unsigned char *__ptr) {
16363  return *(vector unsigned char *)(__ptr + __offset);
16364}
16365
16366static inline __ATTRS_o_ai vector signed short vec_xl(signed long long __offset,
16367                                                      signed short *__ptr) {
16368  return *(vector signed short *)(__ptr + __offset);
16369}
16370
16371static inline __ATTRS_o_ai vector unsigned short
16372vec_xl(signed long long __offset, unsigned short *__ptr) {
16373  return *(vector unsigned short *)(__ptr + __offset);
16374}
16375
16376static inline __ATTRS_o_ai vector signed int vec_xl(signed long long __offset,
16377                                                    signed int *__ptr) {
16378  return *(vector signed int *)(__ptr + __offset);
16379}
16380
16381static inline __ATTRS_o_ai vector unsigned int vec_xl(signed long long __offset,
16382                                                      unsigned int *__ptr) {
16383  return *(vector unsigned int *)(__ptr + __offset);
16384}
16385
16386static inline __ATTRS_o_ai vector float vec_xl(signed long long __offset,
16387                                               float *__ptr) {
16388  return *(vector float *)(__ptr + __offset);
16389}
16390
16391#ifdef __VSX__
16392static inline __ATTRS_o_ai vector signed long long
16393vec_xl(signed long long __offset, signed long long *__ptr) {
16394  return *(vector signed long long *)(__ptr + __offset);
16395}
16396
16397static inline __ATTRS_o_ai vector unsigned long long
16398vec_xl(signed long long __offset, unsigned long long *__ptr) {
16399  return *(vector unsigned long long *)(__ptr + __offset);
16400}
16401
16402static inline __ATTRS_o_ai vector double vec_xl(signed long long __offset,
16403                                                double *__ptr) {
16404  return *(vector double *)(__ptr + __offset);
16405}
16406#endif
16407
16408#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16409static inline __ATTRS_o_ai vector signed __int128
16410vec_xl(signed long long __offset, signed __int128 *__ptr) {
16411  return *(vector signed __int128 *)(__ptr + __offset);
16412}
16413
16414static inline __ATTRS_o_ai vector unsigned __int128
16415vec_xl(signed long long __offset, unsigned __int128 *__ptr) {
16416  return *(vector unsigned __int128 *)(__ptr + __offset);
16417}
16418#endif
16419
16420/* vec_xl_be */
16421
16422#ifdef __LITTLE_ENDIAN__
16423static __inline__ vector signed char __ATTRS_o_ai
16424vec_xl_be(signed long long __offset, signed char *__ptr) {
16425  vector signed char __vec = __builtin_vsx_lxvd2x_be(__offset, __ptr);
16426  return __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
16427                                 13, 12, 11, 10, 9, 8);
16428}
16429
16430static __inline__ vector unsigned char __ATTRS_o_ai
16431vec_xl_be(signed long long __offset, unsigned char *__ptr) {
16432  vector unsigned char __vec = __builtin_vsx_lxvd2x_be(__offset, __ptr);
16433  return __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
16434                                 13, 12, 11, 10, 9, 8);
16435}
16436
16437static __inline__ vector signed short  __ATTRS_o_ai
16438vec_xl_be(signed long long __offset, signed short *__ptr) {
16439  vector signed short __vec = __builtin_vsx_lxvd2x_be(__offset, __ptr);
16440  return __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
16441}
16442
16443static __inline__ vector unsigned short __ATTRS_o_ai
16444vec_xl_be(signed long long __offset, unsigned short *__ptr) {
16445  vector unsigned short __vec = __builtin_vsx_lxvd2x_be(__offset, __ptr);
16446  return __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
16447}
16448
16449static __inline__ vector signed int __ATTRS_o_ai
16450vec_xl_be(signed long long  __offset, signed int *__ptr) {
16451  return (vector signed int)__builtin_vsx_lxvw4x_be(__offset, __ptr);
16452}
16453
16454static __inline__ vector unsigned int __ATTRS_o_ai
16455vec_xl_be(signed long long  __offset, unsigned int *__ptr) {
16456  return (vector unsigned int)__builtin_vsx_lxvw4x_be(__offset, __ptr);
16457}
16458
16459static __inline__ vector float __ATTRS_o_ai
16460vec_xl_be(signed long long  __offset, float *__ptr) {
16461  return (vector float)__builtin_vsx_lxvw4x_be(__offset, __ptr);
16462}
16463
16464#ifdef __VSX__
16465static __inline__ vector signed long long __ATTRS_o_ai
16466vec_xl_be(signed long long  __offset, signed long long *__ptr) {
16467  return (vector signed long long)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16468}
16469
16470static __inline__ vector unsigned long long __ATTRS_o_ai
16471vec_xl_be(signed long long  __offset, unsigned long long *__ptr) {
16472  return (vector unsigned long long)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16473}
16474
16475static __inline__ vector double __ATTRS_o_ai
16476vec_xl_be(signed long long  __offset, double *__ptr) {
16477  return (vector double)__builtin_vsx_lxvd2x_be(__offset, __ptr);
16478}
16479#endif
16480
16481#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16482static __inline__ vector signed __int128 __ATTRS_o_ai
16483vec_xl_be(signed long long  __offset, signed __int128 *__ptr) {
16484  return vec_xl(__offset, __ptr);
16485}
16486
16487static __inline__ vector unsigned __int128 __ATTRS_o_ai
16488vec_xl_be(signed long long  __offset, unsigned __int128 *__ptr) {
16489  return vec_xl(__offset, __ptr);
16490}
16491#endif
16492#else
16493  #define vec_xl_be vec_xl
16494#endif
16495
16496/* vec_xst */
16497
16498static inline __ATTRS_o_ai void vec_xst(vector signed char __vec,
16499                                        signed long long __offset,
16500                                        signed char *__ptr) {
16501  *(vector signed char *)(__ptr + __offset) = __vec;
16502}
16503
16504static inline __ATTRS_o_ai void vec_xst(vector unsigned char __vec,
16505                                        signed long long __offset,
16506                                        unsigned char *__ptr) {
16507  *(vector unsigned char *)(__ptr + __offset) = __vec;
16508}
16509
16510static inline __ATTRS_o_ai void vec_xst(vector signed short __vec,
16511                                        signed long long __offset,
16512                                        signed short *__ptr) {
16513  *(vector signed short *)(__ptr + __offset) = __vec;
16514}
16515
16516static inline __ATTRS_o_ai void vec_xst(vector unsigned short __vec,
16517                                        signed long long __offset,
16518                                        unsigned short *__ptr) {
16519  *(vector unsigned short *)(__ptr + __offset) = __vec;
16520}
16521
16522static inline __ATTRS_o_ai void vec_xst(vector signed int __vec,
16523                                        signed long long __offset,
16524                                        signed int *__ptr) {
16525  *(vector signed int *)(__ptr + __offset) = __vec;
16526}
16527
16528static inline __ATTRS_o_ai void vec_xst(vector unsigned int __vec,
16529                                        signed long long __offset,
16530                                        unsigned int *__ptr) {
16531  *(vector unsigned int *)(__ptr + __offset) = __vec;
16532}
16533
16534static inline __ATTRS_o_ai void vec_xst(vector float __vec,
16535                                        signed long long __offset,
16536                                        float *__ptr) {
16537  *(vector float *)(__ptr + __offset) = __vec;
16538}
16539
16540#ifdef __VSX__
16541static inline __ATTRS_o_ai void vec_xst(vector signed long long __vec,
16542                                        signed long long __offset,
16543                                        signed long long *__ptr) {
16544  *(vector signed long long *)(__ptr + __offset) = __vec;
16545}
16546
16547static inline __ATTRS_o_ai void vec_xst(vector unsigned long long __vec,
16548                                        signed long long __offset,
16549                                        unsigned long long *__ptr) {
16550  *(vector unsigned long long *)(__ptr + __offset) = __vec;
16551}
16552
16553static inline __ATTRS_o_ai void vec_xst(vector double __vec,
16554                                        signed long long __offset,
16555                                        double *__ptr) {
16556  *(vector double *)(__ptr + __offset) = __vec;
16557}
16558#endif
16559
16560#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16561static inline __ATTRS_o_ai void vec_xst(vector signed __int128 __vec,
16562                                        signed long long __offset,
16563                                        signed __int128 *__ptr) {
16564  *(vector signed __int128 *)(__ptr + __offset) = __vec;
16565}
16566
16567static inline __ATTRS_o_ai void vec_xst(vector unsigned __int128 __vec,
16568                                        signed long long __offset,
16569                                        unsigned __int128 *__ptr) {
16570  *(vector unsigned __int128 *)(__ptr + __offset) = __vec;
16571}
16572#endif
16573
16574/* vec_xst_be */
16575
16576#ifdef __LITTLE_ENDIAN__
16577static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed char __vec,
16578                                               signed long long  __offset,
16579                                               signed char *__ptr) {
16580  vector signed char __tmp =
16581     __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
16582                             13, 12, 11, 10, 9, 8);
16583  __builtin_vsx_stxvd2x_be(__tmp, __offset, __ptr);
16584}
16585
16586static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned char __vec,
16587                                               signed long long  __offset,
16588                                               unsigned char *__ptr) {
16589  vector unsigned char __tmp =
16590     __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
16591                             13, 12, 11, 10, 9, 8);
16592  __builtin_vsx_stxvd2x_be(__tmp, __offset, __ptr);
16593}
16594
16595static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed short __vec,
16596                                               signed long long  __offset,
16597                                               signed short *__ptr) {
16598  vector signed short __tmp =
16599     __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
16600  __builtin_vsx_stxvd2x_be(__tmp, __offset, __ptr);
16601}
16602
16603static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned short __vec,
16604                                               signed long long  __offset,
16605                                               unsigned short *__ptr) {
16606  vector unsigned short __tmp =
16607     __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
16608  __builtin_vsx_stxvd2x_be(__tmp, __offset, __ptr);
16609}
16610
16611static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed int __vec,
16612                                               signed long long  __offset,
16613                                               signed int *__ptr) {
16614  __builtin_vsx_stxvw4x_be(__vec, __offset, __ptr);
16615}
16616
16617static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned int __vec,
16618                                               signed long long  __offset,
16619                                               unsigned int *__ptr) {
16620  __builtin_vsx_stxvw4x_be(__vec, __offset, __ptr);
16621}
16622
16623static __inline__ void __ATTRS_o_ai vec_xst_be(vector float __vec,
16624                                               signed long long  __offset,
16625                                               float *__ptr) {
16626  __builtin_vsx_stxvw4x_be(__vec, __offset, __ptr);
16627}
16628
16629#ifdef __VSX__
16630static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed long long __vec,
16631                                               signed long long  __offset,
16632                                               signed long long *__ptr) {
16633  __builtin_vsx_stxvd2x_be(__vec, __offset, __ptr);
16634}
16635
16636static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned long long __vec,
16637                                               signed long long  __offset,
16638                                               unsigned long long *__ptr) {
16639  __builtin_vsx_stxvd2x_be(__vec, __offset, __ptr);
16640}
16641
16642static __inline__ void __ATTRS_o_ai vec_xst_be(vector double __vec,
16643                                               signed long long  __offset,
16644                                               double *__ptr) {
16645  __builtin_vsx_stxvd2x_be(__vec, __offset, __ptr);
16646}
16647#endif
16648
16649#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16650static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed __int128 __vec,
16651                                               signed long long  __offset,
16652                                               signed __int128 *__ptr) {
16653  vec_xst(__vec, __offset, __ptr);
16654}
16655
16656static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned __int128 __vec,
16657                                               signed long long  __offset,
16658                                               unsigned __int128 *__ptr) {
16659  vec_xst(__vec, __offset, __ptr);
16660}
16661#endif
16662#else
16663  #define vec_xst_be vec_xst
16664#endif
16665
16666#ifdef __POWER9_VECTOR__
16667#define vec_test_data_class(__a, __b)                                      \
16668        _Generic((__a),                                                    \
16669           vector float:                                                   \
16670             (vector bool int)__builtin_vsx_xvtstdcsp((__a), (__b)),       \
16671           vector double:                                                  \
16672             (vector bool long long)__builtin_vsx_xvtstdcdp((__a), (__b))  \
16673        )
16674
16675#endif /* #ifdef __POWER9_VECTOR__ */
16676
16677static vector float __ATTRS_o_ai vec_neg(vector float __a) {
16678  return -__a;
16679}
16680
16681#ifdef __VSX__
16682static vector double __ATTRS_o_ai vec_neg(vector double __a) {
16683  return -__a;
16684}
16685
16686#endif
16687
16688#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16689static vector long long __ATTRS_o_ai vec_neg(vector long long __a) {
16690  return -__a;
16691}
16692#endif
16693
16694static vector signed int __ATTRS_o_ai vec_neg(vector signed int __a) {
16695  return -__a;
16696}
16697
16698static vector signed short __ATTRS_o_ai vec_neg(vector signed short __a) {
16699  return -__a;
16700}
16701
16702static vector signed char __ATTRS_o_ai vec_neg(vector signed char __a) {
16703  return -__a;
16704}
16705
16706static vector float __ATTRS_o_ai vec_nabs(vector float __a) {
16707  return - vec_abs(__a);
16708}
16709
16710#ifdef __VSX__
16711static vector double __ATTRS_o_ai vec_nabs(vector double __a) {
16712  return - vec_abs(__a);
16713}
16714
16715#endif
16716
16717#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
16718static vector long long __ATTRS_o_ai vec_nabs(vector long long __a) {
16719  return __builtin_altivec_vminsd(__a, -__a);
16720}
16721#endif
16722
16723static vector signed int __ATTRS_o_ai vec_nabs(vector signed int __a) {
16724  return __builtin_altivec_vminsw(__a, -__a);
16725}
16726
16727static vector signed short __ATTRS_o_ai vec_nabs(vector signed short __a) {
16728  return __builtin_altivec_vminsh(__a, -__a);
16729}
16730
16731static vector signed char __ATTRS_o_ai vec_nabs(vector signed char __a) {
16732  return __builtin_altivec_vminsb(__a, -__a);
16733}
16734#undef __ATTRS_o_ai
16735
16736#endif /* __ALTIVEC_H */
16737