altivec.h revision 288943
1/*===---- altivec.h - Standard header for type generic math ---------------===*\
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21\*===----------------------------------------------------------------------===*/
22
23#ifndef __ALTIVEC_H
24#define __ALTIVEC_H
25
26#ifndef __ALTIVEC__
27#error "AltiVec support not enabled"
28#endif
29
30/* constants for mapping CR6 bits to predicate result. */
31
32#define __CR6_EQ 0
33#define __CR6_EQ_REV 1
34#define __CR6_LT 2
35#define __CR6_LT_REV 3
36
37#define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
38
39static vector signed char __ATTRS_o_ai vec_perm(vector signed char __a,
40                                                vector signed char __b,
41                                                vector unsigned char __c);
42
43static vector unsigned char __ATTRS_o_ai vec_perm(vector unsigned char __a,
44                                                  vector unsigned char __b,
45                                                  vector unsigned char __c);
46
47static vector bool char __ATTRS_o_ai vec_perm(vector bool char __a,
48                                              vector bool char __b,
49                                              vector unsigned char __c);
50
51static vector short __ATTRS_o_ai vec_perm(vector signed short __a,
52                                          vector signed short __b,
53                                          vector unsigned char __c);
54
55static vector unsigned short __ATTRS_o_ai vec_perm(vector unsigned short __a,
56                                                   vector unsigned short __b,
57                                                   vector unsigned char __c);
58
59static vector bool short __ATTRS_o_ai vec_perm(vector bool short __a,
60                                               vector bool short __b,
61                                               vector unsigned char __c);
62
63static vector pixel __ATTRS_o_ai vec_perm(vector pixel __a, vector pixel __b,
64                                          vector unsigned char __c);
65
66static vector int __ATTRS_o_ai vec_perm(vector signed int __a,
67                                        vector signed int __b,
68                                        vector unsigned char __c);
69
70static vector unsigned int __ATTRS_o_ai vec_perm(vector unsigned int __a,
71                                                 vector unsigned int __b,
72                                                 vector unsigned char __c);
73
74static vector bool int __ATTRS_o_ai vec_perm(vector bool int __a,
75                                             vector bool int __b,
76                                             vector unsigned char __c);
77
78static vector float __ATTRS_o_ai vec_perm(vector float __a, vector float __b,
79                                          vector unsigned char __c);
80
81#ifdef __VSX__
82static vector long long __ATTRS_o_ai vec_perm(vector signed long long __a,
83                                              vector signed long long __b,
84                                              vector unsigned char __c);
85
86static vector unsigned long long __ATTRS_o_ai
87vec_perm(vector unsigned long long __a, vector unsigned long long __b,
88         vector unsigned char __c);
89
90static vector bool long long __ATTRS_o_ai
91vec_perm(vector bool long long __a, vector bool long long __b,
92         vector unsigned char __c);
93
94static vector double __ATTRS_o_ai vec_perm(vector double __a, vector double __b,
95                                           vector unsigned char __c);
96#endif
97
98static vector unsigned char __ATTRS_o_ai vec_xor(vector unsigned char __a,
99                                                 vector unsigned char __b);
100
101/* vec_abs */
102
103#define __builtin_altivec_abs_v16qi vec_abs
104#define __builtin_altivec_abs_v8hi vec_abs
105#define __builtin_altivec_abs_v4si vec_abs
106
107static vector signed char __ATTRS_o_ai vec_abs(vector signed char __a) {
108  return __builtin_altivec_vmaxsb(__a, -__a);
109}
110
111static vector signed short __ATTRS_o_ai vec_abs(vector signed short __a) {
112  return __builtin_altivec_vmaxsh(__a, -__a);
113}
114
115static vector signed int __ATTRS_o_ai vec_abs(vector signed int __a) {
116  return __builtin_altivec_vmaxsw(__a, -__a);
117}
118
119#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
120static vector signed long long __ATTRS_o_ai
121vec_abs(vector signed long long __a) {
122  return __builtin_altivec_vmaxsd(__a, -__a);
123}
124#endif
125
126static vector float __ATTRS_o_ai vec_abs(vector float __a) {
127  vector unsigned int __res =
128      (vector unsigned int)__a & (vector unsigned int)(0x7FFFFFFF);
129  return (vector float)__res;
130}
131
132#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
133static vector double __ATTRS_o_ai vec_abs(vector double __a) {
134  vector unsigned long long __res = { 0x7FFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFF };
135  __res &= (vector unsigned int)__a;
136  return (vector double)__res;
137}
138#endif
139
140/* vec_abss */
141#define __builtin_altivec_abss_v16qi vec_abss
142#define __builtin_altivec_abss_v8hi vec_abss
143#define __builtin_altivec_abss_v4si vec_abss
144
145static vector signed char __ATTRS_o_ai vec_abss(vector signed char __a) {
146  return __builtin_altivec_vmaxsb(
147      __a, __builtin_altivec_vsubsbs((vector signed char)(0), __a));
148}
149
150static vector signed short __ATTRS_o_ai vec_abss(vector signed short __a) {
151  return __builtin_altivec_vmaxsh(
152      __a, __builtin_altivec_vsubshs((vector signed short)(0), __a));
153}
154
155static vector signed int __ATTRS_o_ai vec_abss(vector signed int __a) {
156  return __builtin_altivec_vmaxsw(
157      __a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
158}
159
160/* vec_add */
161
162static vector signed char __ATTRS_o_ai vec_add(vector signed char __a,
163                                               vector signed char __b) {
164  return __a + __b;
165}
166
167static vector signed char __ATTRS_o_ai vec_add(vector bool char __a,
168                                               vector signed char __b) {
169  return (vector signed char)__a + __b;
170}
171
172static vector signed char __ATTRS_o_ai vec_add(vector signed char __a,
173                                               vector bool char __b) {
174  return __a + (vector signed char)__b;
175}
176
177static vector unsigned char __ATTRS_o_ai vec_add(vector unsigned char __a,
178                                                 vector unsigned char __b) {
179  return __a + __b;
180}
181
182static vector unsigned char __ATTRS_o_ai vec_add(vector bool char __a,
183                                                 vector unsigned char __b) {
184  return (vector unsigned char)__a + __b;
185}
186
187static vector unsigned char __ATTRS_o_ai vec_add(vector unsigned char __a,
188                                                 vector bool char __b) {
189  return __a + (vector unsigned char)__b;
190}
191
192static vector short __ATTRS_o_ai vec_add(vector short __a, vector short __b) {
193  return __a + __b;
194}
195
196static vector short __ATTRS_o_ai vec_add(vector bool short __a,
197                                         vector short __b) {
198  return (vector short)__a + __b;
199}
200
201static vector short __ATTRS_o_ai vec_add(vector short __a,
202                                         vector bool short __b) {
203  return __a + (vector short)__b;
204}
205
206static vector unsigned short __ATTRS_o_ai vec_add(vector unsigned short __a,
207                                                  vector unsigned short __b) {
208  return __a + __b;
209}
210
211static vector unsigned short __ATTRS_o_ai vec_add(vector bool short __a,
212                                                  vector unsigned short __b) {
213  return (vector unsigned short)__a + __b;
214}
215
216static vector unsigned short __ATTRS_o_ai vec_add(vector unsigned short __a,
217                                                  vector bool short __b) {
218  return __a + (vector unsigned short)__b;
219}
220
221static vector int __ATTRS_o_ai vec_add(vector int __a, vector int __b) {
222  return __a + __b;
223}
224
225static vector int __ATTRS_o_ai vec_add(vector bool int __a, vector int __b) {
226  return (vector int)__a + __b;
227}
228
229static vector int __ATTRS_o_ai vec_add(vector int __a, vector bool int __b) {
230  return __a + (vector int)__b;
231}
232
233static vector unsigned int __ATTRS_o_ai vec_add(vector unsigned int __a,
234                                                vector unsigned int __b) {
235  return __a + __b;
236}
237
238static vector unsigned int __ATTRS_o_ai vec_add(vector bool int __a,
239                                                vector unsigned int __b) {
240  return (vector unsigned int)__a + __b;
241}
242
243static vector unsigned int __ATTRS_o_ai vec_add(vector unsigned int __a,
244                                                vector bool int __b) {
245  return __a + (vector unsigned int)__b;
246}
247
248#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
249static vector signed long long __ATTRS_o_ai
250vec_add(vector signed long long __a, vector signed long long __b) {
251  return __a + __b;
252}
253
254static vector unsigned long long __ATTRS_o_ai
255vec_add(vector unsigned long long __a, vector unsigned long long __b) {
256  return __a + __b;
257}
258
259static vector signed __int128 __ATTRS_o_ai vec_add(vector signed __int128 __a,
260                                                   vector signed __int128 __b) {
261  return __a + __b;
262}
263
264static vector unsigned __int128 __ATTRS_o_ai
265vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) {
266  return __a + __b;
267}
268#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
269
270static vector float __ATTRS_o_ai vec_add(vector float __a, vector float __b) {
271  return __a + __b;
272}
273
274#ifdef __VSX__
275static vector double __ATTRS_o_ai
276vec_add(vector double __a, vector double __b) {
277  return __a + __b;
278}
279#endif // __VSX__
280
281/* vec_vaddubm */
282
283#define __builtin_altivec_vaddubm vec_vaddubm
284
285static vector signed char __ATTRS_o_ai vec_vaddubm(vector signed char __a,
286                                                   vector signed char __b) {
287  return __a + __b;
288}
289
290static vector signed char __ATTRS_o_ai vec_vaddubm(vector bool char __a,
291                                                   vector signed char __b) {
292  return (vector signed char)__a + __b;
293}
294
295static vector signed char __ATTRS_o_ai vec_vaddubm(vector signed char __a,
296                                                   vector bool char __b) {
297  return __a + (vector signed char)__b;
298}
299
300static vector unsigned char __ATTRS_o_ai vec_vaddubm(vector unsigned char __a,
301                                                     vector unsigned char __b) {
302  return __a + __b;
303}
304
305static vector unsigned char __ATTRS_o_ai vec_vaddubm(vector bool char __a,
306                                                     vector unsigned char __b) {
307  return (vector unsigned char)__a + __b;
308}
309
310static vector unsigned char __ATTRS_o_ai vec_vaddubm(vector unsigned char __a,
311                                                     vector bool char __b) {
312  return __a + (vector unsigned char)__b;
313}
314
315/* vec_vadduhm */
316
317#define __builtin_altivec_vadduhm vec_vadduhm
318
319static vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
320                                             vector short __b) {
321  return __a + __b;
322}
323
324static vector short __ATTRS_o_ai vec_vadduhm(vector bool short __a,
325                                             vector short __b) {
326  return (vector short)__a + __b;
327}
328
329static vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
330                                             vector bool short __b) {
331  return __a + (vector short)__b;
332}
333
334static vector unsigned short __ATTRS_o_ai
335vec_vadduhm(vector unsigned short __a, vector unsigned short __b) {
336  return __a + __b;
337}
338
339static vector unsigned short __ATTRS_o_ai
340vec_vadduhm(vector bool short __a, vector unsigned short __b) {
341  return (vector unsigned short)__a + __b;
342}
343
344static vector unsigned short __ATTRS_o_ai vec_vadduhm(vector unsigned short __a,
345                                                      vector bool short __b) {
346  return __a + (vector unsigned short)__b;
347}
348
349/* vec_vadduwm */
350
351#define __builtin_altivec_vadduwm vec_vadduwm
352
353static vector int __ATTRS_o_ai vec_vadduwm(vector int __a, vector int __b) {
354  return __a + __b;
355}
356
357static vector int __ATTRS_o_ai vec_vadduwm(vector bool int __a,
358                                           vector int __b) {
359  return (vector int)__a + __b;
360}
361
362static vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
363                                           vector bool int __b) {
364  return __a + (vector int)__b;
365}
366
367static vector unsigned int __ATTRS_o_ai vec_vadduwm(vector unsigned int __a,
368                                                    vector unsigned int __b) {
369  return __a + __b;
370}
371
372static vector unsigned int __ATTRS_o_ai vec_vadduwm(vector bool int __a,
373                                                    vector unsigned int __b) {
374  return (vector unsigned int)__a + __b;
375}
376
377static vector unsigned int __ATTRS_o_ai vec_vadduwm(vector unsigned int __a,
378                                                    vector bool int __b) {
379  return __a + (vector unsigned int)__b;
380}
381
382/* vec_vaddfp */
383
384#define __builtin_altivec_vaddfp vec_vaddfp
385
386static vector float __attribute__((__always_inline__))
387vec_vaddfp(vector float __a, vector float __b) {
388  return __a + __b;
389}
390
391/* vec_addc */
392
393static vector unsigned int __ATTRS_o_ai vec_addc(vector unsigned int __a,
394                                                 vector unsigned int __b) {
395  return __builtin_altivec_vaddcuw(__a, __b);
396}
397
398#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
399static vector signed __int128 __ATTRS_o_ai
400vec_addc(vector signed __int128 __a, vector signed __int128 __b) {
401  return __builtin_altivec_vaddcuq(__a, __b);
402}
403
404static vector unsigned __int128 __ATTRS_o_ai
405vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
406  return __builtin_altivec_vaddcuq(__a, __b);
407}
408#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
409
410/* vec_vaddcuw */
411
412static vector unsigned int __attribute__((__always_inline__))
413vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) {
414  return __builtin_altivec_vaddcuw(__a, __b);
415}
416
417/* vec_adds */
418
419static vector signed char __ATTRS_o_ai vec_adds(vector signed char __a,
420                                                vector signed char __b) {
421  return __builtin_altivec_vaddsbs(__a, __b);
422}
423
424static vector signed char __ATTRS_o_ai vec_adds(vector bool char __a,
425                                                vector signed char __b) {
426  return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
427}
428
429static vector signed char __ATTRS_o_ai vec_adds(vector signed char __a,
430                                                vector bool char __b) {
431  return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
432}
433
434static vector unsigned char __ATTRS_o_ai vec_adds(vector unsigned char __a,
435                                                  vector unsigned char __b) {
436  return __builtin_altivec_vaddubs(__a, __b);
437}
438
439static vector unsigned char __ATTRS_o_ai vec_adds(vector bool char __a,
440                                                  vector unsigned char __b) {
441  return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
442}
443
444static vector unsigned char __ATTRS_o_ai vec_adds(vector unsigned char __a,
445                                                  vector bool char __b) {
446  return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
447}
448
449static vector short __ATTRS_o_ai vec_adds(vector short __a, vector short __b) {
450  return __builtin_altivec_vaddshs(__a, __b);
451}
452
453static vector short __ATTRS_o_ai vec_adds(vector bool short __a,
454                                          vector short __b) {
455  return __builtin_altivec_vaddshs((vector short)__a, __b);
456}
457
458static vector short __ATTRS_o_ai vec_adds(vector short __a,
459                                          vector bool short __b) {
460  return __builtin_altivec_vaddshs(__a, (vector short)__b);
461}
462
463static vector unsigned short __ATTRS_o_ai vec_adds(vector unsigned short __a,
464                                                   vector unsigned short __b) {
465  return __builtin_altivec_vadduhs(__a, __b);
466}
467
468static vector unsigned short __ATTRS_o_ai vec_adds(vector bool short __a,
469                                                   vector unsigned short __b) {
470  return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
471}
472
473static vector unsigned short __ATTRS_o_ai vec_adds(vector unsigned short __a,
474                                                   vector bool short __b) {
475  return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
476}
477
478static vector int __ATTRS_o_ai vec_adds(vector int __a, vector int __b) {
479  return __builtin_altivec_vaddsws(__a, __b);
480}
481
482static vector int __ATTRS_o_ai vec_adds(vector bool int __a, vector int __b) {
483  return __builtin_altivec_vaddsws((vector int)__a, __b);
484}
485
486static vector int __ATTRS_o_ai vec_adds(vector int __a, vector bool int __b) {
487  return __builtin_altivec_vaddsws(__a, (vector int)__b);
488}
489
490static vector unsigned int __ATTRS_o_ai vec_adds(vector unsigned int __a,
491                                                 vector unsigned int __b) {
492  return __builtin_altivec_vadduws(__a, __b);
493}
494
495static vector unsigned int __ATTRS_o_ai vec_adds(vector bool int __a,
496                                                 vector unsigned int __b) {
497  return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
498}
499
500static vector unsigned int __ATTRS_o_ai vec_adds(vector unsigned int __a,
501                                                 vector bool int __b) {
502  return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
503}
504
505/* vec_vaddsbs */
506
507static vector signed char __ATTRS_o_ai vec_vaddsbs(vector signed char __a,
508                                                   vector signed char __b) {
509  return __builtin_altivec_vaddsbs(__a, __b);
510}
511
512static vector signed char __ATTRS_o_ai vec_vaddsbs(vector bool char __a,
513                                                   vector signed char __b) {
514  return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
515}
516
517static vector signed char __ATTRS_o_ai vec_vaddsbs(vector signed char __a,
518                                                   vector bool char __b) {
519  return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
520}
521
522/* vec_vaddubs */
523
524static vector unsigned char __ATTRS_o_ai vec_vaddubs(vector unsigned char __a,
525                                                     vector unsigned char __b) {
526  return __builtin_altivec_vaddubs(__a, __b);
527}
528
529static vector unsigned char __ATTRS_o_ai vec_vaddubs(vector bool char __a,
530                                                     vector unsigned char __b) {
531  return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
532}
533
534static vector unsigned char __ATTRS_o_ai vec_vaddubs(vector unsigned char __a,
535                                                     vector bool char __b) {
536  return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
537}
538
539/* vec_vaddshs */
540
541static vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
542                                             vector short __b) {
543  return __builtin_altivec_vaddshs(__a, __b);
544}
545
546static vector short __ATTRS_o_ai vec_vaddshs(vector bool short __a,
547                                             vector short __b) {
548  return __builtin_altivec_vaddshs((vector short)__a, __b);
549}
550
551static vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
552                                             vector bool short __b) {
553  return __builtin_altivec_vaddshs(__a, (vector short)__b);
554}
555
556/* vec_vadduhs */
557
558static vector unsigned short __ATTRS_o_ai
559vec_vadduhs(vector unsigned short __a, vector unsigned short __b) {
560  return __builtin_altivec_vadduhs(__a, __b);
561}
562
563static vector unsigned short __ATTRS_o_ai
564vec_vadduhs(vector bool short __a, vector unsigned short __b) {
565  return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
566}
567
568static vector unsigned short __ATTRS_o_ai vec_vadduhs(vector unsigned short __a,
569                                                      vector bool short __b) {
570  return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
571}
572
573/* vec_vaddsws */
574
575static vector int __ATTRS_o_ai vec_vaddsws(vector int __a, vector int __b) {
576  return __builtin_altivec_vaddsws(__a, __b);
577}
578
579static vector int __ATTRS_o_ai vec_vaddsws(vector bool int __a,
580                                           vector int __b) {
581  return __builtin_altivec_vaddsws((vector int)__a, __b);
582}
583
584static vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
585                                           vector bool int __b) {
586  return __builtin_altivec_vaddsws(__a, (vector int)__b);
587}
588
589/* vec_vadduws */
590
591static vector unsigned int __ATTRS_o_ai vec_vadduws(vector unsigned int __a,
592                                                    vector unsigned int __b) {
593  return __builtin_altivec_vadduws(__a, __b);
594}
595
596static vector unsigned int __ATTRS_o_ai vec_vadduws(vector bool int __a,
597                                                    vector unsigned int __b) {
598  return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
599}
600
601static vector unsigned int __ATTRS_o_ai vec_vadduws(vector unsigned int __a,
602                                                    vector bool int __b) {
603  return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
604}
605
606#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
607/* vec_vadduqm */
608
609static vector signed __int128 __ATTRS_o_ai
610vec_vadduqm(vector signed __int128 __a, vector signed __int128 __b) {
611  return __a + __b;
612}
613
614static vector unsigned __int128 __ATTRS_o_ai
615vec_vadduqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
616  return __a + __b;
617}
618
619/* vec_vaddeuqm */
620
621static vector signed __int128 __ATTRS_o_ai
622vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b,
623             vector signed __int128 __c) {
624  return __builtin_altivec_vaddeuqm(__a, __b, __c);
625}
626
627static vector unsigned __int128 __ATTRS_o_ai
628vec_vaddeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
629             vector unsigned __int128 __c) {
630  return __builtin_altivec_vaddeuqm(__a, __b, __c);
631}
632
633/* vec_vaddcuq */
634
635static vector signed __int128 __ATTRS_o_ai
636vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) {
637  return __builtin_altivec_vaddcuq(__a, __b);
638}
639
640static vector unsigned __int128 __ATTRS_o_ai
641vec_vaddcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
642  return __builtin_altivec_vaddcuq(__a, __b);
643}
644
645/* vec_vaddecuq */
646
647static vector signed __int128 __ATTRS_o_ai
648vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b,
649             vector signed __int128 __c) {
650  return __builtin_altivec_vaddecuq(__a, __b, __c);
651}
652
653static vector unsigned __int128 __ATTRS_o_ai
654vec_vaddecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
655             vector unsigned __int128 __c) {
656  return __builtin_altivec_vaddecuq(__a, __b, __c);
657}
658#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
659
660/* vec_and */
661
662#define __builtin_altivec_vand vec_and
663
664static vector signed char __ATTRS_o_ai vec_and(vector signed char __a,
665                                               vector signed char __b) {
666  return __a & __b;
667}
668
669static vector signed char __ATTRS_o_ai vec_and(vector bool char __a,
670                                               vector signed char __b) {
671  return (vector signed char)__a & __b;
672}
673
674static vector signed char __ATTRS_o_ai vec_and(vector signed char __a,
675                                               vector bool char __b) {
676  return __a & (vector signed char)__b;
677}
678
679static vector unsigned char __ATTRS_o_ai vec_and(vector unsigned char __a,
680                                                 vector unsigned char __b) {
681  return __a & __b;
682}
683
684static vector unsigned char __ATTRS_o_ai vec_and(vector bool char __a,
685                                                 vector unsigned char __b) {
686  return (vector unsigned char)__a & __b;
687}
688
689static vector unsigned char __ATTRS_o_ai vec_and(vector unsigned char __a,
690                                                 vector bool char __b) {
691  return __a & (vector unsigned char)__b;
692}
693
694static vector bool char __ATTRS_o_ai vec_and(vector bool char __a,
695                                             vector bool char __b) {
696  return __a & __b;
697}
698
699static vector short __ATTRS_o_ai vec_and(vector short __a, vector short __b) {
700  return __a & __b;
701}
702
703static vector short __ATTRS_o_ai vec_and(vector bool short __a,
704                                         vector short __b) {
705  return (vector short)__a & __b;
706}
707
708static vector short __ATTRS_o_ai vec_and(vector short __a,
709                                         vector bool short __b) {
710  return __a & (vector short)__b;
711}
712
713static vector unsigned short __ATTRS_o_ai vec_and(vector unsigned short __a,
714                                                  vector unsigned short __b) {
715  return __a & __b;
716}
717
718static vector unsigned short __ATTRS_o_ai vec_and(vector bool short __a,
719                                                  vector unsigned short __b) {
720  return (vector unsigned short)__a & __b;
721}
722
723static vector unsigned short __ATTRS_o_ai vec_and(vector unsigned short __a,
724                                                  vector bool short __b) {
725  return __a & (vector unsigned short)__b;
726}
727
728static vector bool short __ATTRS_o_ai vec_and(vector bool short __a,
729                                              vector bool short __b) {
730  return __a & __b;
731}
732
733static vector int __ATTRS_o_ai vec_and(vector int __a, vector int __b) {
734  return __a & __b;
735}
736
737static vector int __ATTRS_o_ai vec_and(vector bool int __a, vector int __b) {
738  return (vector int)__a & __b;
739}
740
741static vector int __ATTRS_o_ai vec_and(vector int __a, vector bool int __b) {
742  return __a & (vector int)__b;
743}
744
745static vector unsigned int __ATTRS_o_ai vec_and(vector unsigned int __a,
746                                                vector unsigned int __b) {
747  return __a & __b;
748}
749
750static vector unsigned int __ATTRS_o_ai vec_and(vector bool int __a,
751                                                vector unsigned int __b) {
752  return (vector unsigned int)__a & __b;
753}
754
755static vector unsigned int __ATTRS_o_ai vec_and(vector unsigned int __a,
756                                                vector bool int __b) {
757  return __a & (vector unsigned int)__b;
758}
759
760static vector bool int __ATTRS_o_ai vec_and(vector bool int __a,
761                                            vector bool int __b) {
762  return __a & __b;
763}
764
765static vector float __ATTRS_o_ai vec_and(vector float __a, vector float __b) {
766  vector unsigned int __res =
767      (vector unsigned int)__a & (vector unsigned int)__b;
768  return (vector float)__res;
769}
770
771static vector float __ATTRS_o_ai vec_and(vector bool int __a,
772                                         vector float __b) {
773  vector unsigned int __res =
774      (vector unsigned int)__a & (vector unsigned int)__b;
775  return (vector float)__res;
776}
777
778static vector float __ATTRS_o_ai vec_and(vector float __a,
779                                         vector bool int __b) {
780  vector unsigned int __res =
781      (vector unsigned int)__a & (vector unsigned int)__b;
782  return (vector float)__res;
783}
784
785#ifdef __VSX__
786static vector double __ATTRS_o_ai vec_and(vector bool long long __a, vector double __b) {
787  vector unsigned long long __res =
788      (vector unsigned long long)__a & (vector unsigned long long)__b;
789  return (vector double)__res;
790}
791
792static vector double __ATTRS_o_ai vec_and(vector double __a, vector bool long long __b) {
793  vector unsigned long long __res =
794      (vector unsigned long long)__a & (vector unsigned long long)__b;
795  return (vector double)__res;
796}
797
798static vector double __ATTRS_o_ai vec_and(vector double __a, vector double __b) {
799  vector unsigned long long __res =
800      (vector unsigned long long)__a & (vector unsigned long long)__b;
801  return (vector double)__res;
802}
803
804static vector signed long long __ATTRS_o_ai
805vec_and(vector signed long long __a, vector signed long long __b) {
806  return __a & __b;
807}
808
809static vector signed long long __ATTRS_o_ai
810vec_and(vector bool long long __a, vector signed long long __b) {
811  return (vector signed long long)__a & __b;
812}
813
814static vector signed long long __ATTRS_o_ai vec_and(vector signed long long __a,
815                                                    vector bool long long __b) {
816  return __a & (vector signed long long)__b;
817}
818
819static vector unsigned long long __ATTRS_o_ai
820vec_and(vector unsigned long long __a, vector unsigned long long __b) {
821  return __a & __b;
822}
823
824static vector unsigned long long __ATTRS_o_ai
825vec_and(vector bool long long __a, vector unsigned long long __b) {
826  return (vector unsigned long long)__a & __b;
827}
828
829static vector unsigned long long __ATTRS_o_ai
830vec_and(vector unsigned long long __a, vector bool long long __b) {
831  return __a & (vector unsigned long long)__b;
832}
833
834static vector bool long long __ATTRS_o_ai vec_and(vector bool long long __a,
835                                                  vector bool long long __b) {
836  return __a & __b;
837}
838#endif
839
840/* vec_vand */
841
842static vector signed char __ATTRS_o_ai vec_vand(vector signed char __a,
843                                                vector signed char __b) {
844  return __a & __b;
845}
846
847static vector signed char __ATTRS_o_ai vec_vand(vector bool char __a,
848                                                vector signed char __b) {
849  return (vector signed char)__a & __b;
850}
851
852static vector signed char __ATTRS_o_ai vec_vand(vector signed char __a,
853                                                vector bool char __b) {
854  return __a & (vector signed char)__b;
855}
856
857static vector unsigned char __ATTRS_o_ai vec_vand(vector unsigned char __a,
858                                                  vector unsigned char __b) {
859  return __a & __b;
860}
861
862static vector unsigned char __ATTRS_o_ai vec_vand(vector bool char __a,
863                                                  vector unsigned char __b) {
864  return (vector unsigned char)__a & __b;
865}
866
867static vector unsigned char __ATTRS_o_ai vec_vand(vector unsigned char __a,
868                                                  vector bool char __b) {
869  return __a & (vector unsigned char)__b;
870}
871
872static vector bool char __ATTRS_o_ai vec_vand(vector bool char __a,
873                                              vector bool char __b) {
874  return __a & __b;
875}
876
877static vector short __ATTRS_o_ai vec_vand(vector short __a, vector short __b) {
878  return __a & __b;
879}
880
881static vector short __ATTRS_o_ai vec_vand(vector bool short __a,
882                                          vector short __b) {
883  return (vector short)__a & __b;
884}
885
886static vector short __ATTRS_o_ai vec_vand(vector short __a,
887                                          vector bool short __b) {
888  return __a & (vector short)__b;
889}
890
891static vector unsigned short __ATTRS_o_ai vec_vand(vector unsigned short __a,
892                                                   vector unsigned short __b) {
893  return __a & __b;
894}
895
896static vector unsigned short __ATTRS_o_ai vec_vand(vector bool short __a,
897                                                   vector unsigned short __b) {
898  return (vector unsigned short)__a & __b;
899}
900
901static vector unsigned short __ATTRS_o_ai vec_vand(vector unsigned short __a,
902                                                   vector bool short __b) {
903  return __a & (vector unsigned short)__b;
904}
905
906static vector bool short __ATTRS_o_ai vec_vand(vector bool short __a,
907                                               vector bool short __b) {
908  return __a & __b;
909}
910
911static vector int __ATTRS_o_ai vec_vand(vector int __a, vector int __b) {
912  return __a & __b;
913}
914
915static vector int __ATTRS_o_ai vec_vand(vector bool int __a, vector int __b) {
916  return (vector int)__a & __b;
917}
918
919static vector int __ATTRS_o_ai vec_vand(vector int __a, vector bool int __b) {
920  return __a & (vector int)__b;
921}
922
923static vector unsigned int __ATTRS_o_ai vec_vand(vector unsigned int __a,
924                                                 vector unsigned int __b) {
925  return __a & __b;
926}
927
928static vector unsigned int __ATTRS_o_ai vec_vand(vector bool int __a,
929                                                 vector unsigned int __b) {
930  return (vector unsigned int)__a & __b;
931}
932
933static vector unsigned int __ATTRS_o_ai vec_vand(vector unsigned int __a,
934                                                 vector bool int __b) {
935  return __a & (vector unsigned int)__b;
936}
937
938static vector bool int __ATTRS_o_ai vec_vand(vector bool int __a,
939                                             vector bool int __b) {
940  return __a & __b;
941}
942
943static vector float __ATTRS_o_ai vec_vand(vector float __a, vector float __b) {
944  vector unsigned int __res =
945      (vector unsigned int)__a & (vector unsigned int)__b;
946  return (vector float)__res;
947}
948
949static vector float __ATTRS_o_ai vec_vand(vector bool int __a,
950                                          vector float __b) {
951  vector unsigned int __res =
952      (vector unsigned int)__a & (vector unsigned int)__b;
953  return (vector float)__res;
954}
955
956static vector float __ATTRS_o_ai vec_vand(vector float __a,
957                                          vector bool int __b) {
958  vector unsigned int __res =
959      (vector unsigned int)__a & (vector unsigned int)__b;
960  return (vector float)__res;
961}
962
963#ifdef __VSX__
964static vector signed long long __ATTRS_o_ai
965vec_vand(vector signed long long __a, vector signed long long __b) {
966  return __a & __b;
967}
968
969static vector signed long long __ATTRS_o_ai
970vec_vand(vector bool long long __a, vector signed long long __b) {
971  return (vector signed long long)__a & __b;
972}
973
974static vector signed long long __ATTRS_o_ai
975vec_vand(vector signed long long __a, vector bool long long __b) {
976  return __a & (vector signed long long)__b;
977}
978
979static vector unsigned long long __ATTRS_o_ai
980vec_vand(vector unsigned long long __a, vector unsigned long long __b) {
981  return __a & __b;
982}
983
984static vector unsigned long long __ATTRS_o_ai
985vec_vand(vector bool long long __a, vector unsigned long long __b) {
986  return (vector unsigned long long)__a & __b;
987}
988
989static vector unsigned long long __ATTRS_o_ai
990vec_vand(vector unsigned long long __a, vector bool long long __b) {
991  return __a & (vector unsigned long long)__b;
992}
993
994static vector bool long long __ATTRS_o_ai vec_vand(vector bool long long __a,
995                                                   vector bool long long __b) {
996  return __a & __b;
997}
998#endif
999
1000/* vec_andc */
1001
1002#define __builtin_altivec_vandc vec_andc
1003
1004static vector signed char __ATTRS_o_ai vec_andc(vector signed char __a,
1005                                                vector signed char __b) {
1006  return __a & ~__b;
1007}
1008
1009static vector signed char __ATTRS_o_ai vec_andc(vector bool char __a,
1010                                                vector signed char __b) {
1011  return (vector signed char)__a & ~__b;
1012}
1013
1014static vector signed char __ATTRS_o_ai vec_andc(vector signed char __a,
1015                                                vector bool char __b) {
1016  return __a & ~(vector signed char)__b;
1017}
1018
1019static vector unsigned char __ATTRS_o_ai vec_andc(vector unsigned char __a,
1020                                                  vector unsigned char __b) {
1021  return __a & ~__b;
1022}
1023
1024static vector unsigned char __ATTRS_o_ai vec_andc(vector bool char __a,
1025                                                  vector unsigned char __b) {
1026  return (vector unsigned char)__a & ~__b;
1027}
1028
1029static vector unsigned char __ATTRS_o_ai vec_andc(vector unsigned char __a,
1030                                                  vector bool char __b) {
1031  return __a & ~(vector unsigned char)__b;
1032}
1033
1034static vector bool char __ATTRS_o_ai vec_andc(vector bool char __a,
1035                                              vector bool char __b) {
1036  return __a & ~__b;
1037}
1038
1039static vector short __ATTRS_o_ai vec_andc(vector short __a, vector short __b) {
1040  return __a & ~__b;
1041}
1042
1043static vector short __ATTRS_o_ai vec_andc(vector bool short __a,
1044                                          vector short __b) {
1045  return (vector short)__a & ~__b;
1046}
1047
1048static vector short __ATTRS_o_ai vec_andc(vector short __a,
1049                                          vector bool short __b) {
1050  return __a & ~(vector short)__b;
1051}
1052
1053static vector unsigned short __ATTRS_o_ai vec_andc(vector unsigned short __a,
1054                                                   vector unsigned short __b) {
1055  return __a & ~__b;
1056}
1057
1058static vector unsigned short __ATTRS_o_ai vec_andc(vector bool short __a,
1059                                                   vector unsigned short __b) {
1060  return (vector unsigned short)__a & ~__b;
1061}
1062
1063static vector unsigned short __ATTRS_o_ai vec_andc(vector unsigned short __a,
1064                                                   vector bool short __b) {
1065  return __a & ~(vector unsigned short)__b;
1066}
1067
1068static vector bool short __ATTRS_o_ai vec_andc(vector bool short __a,
1069                                               vector bool short __b) {
1070  return __a & ~__b;
1071}
1072
1073static vector int __ATTRS_o_ai vec_andc(vector int __a, vector int __b) {
1074  return __a & ~__b;
1075}
1076
1077static vector int __ATTRS_o_ai vec_andc(vector bool int __a, vector int __b) {
1078  return (vector int)__a & ~__b;
1079}
1080
1081static vector int __ATTRS_o_ai vec_andc(vector int __a, vector bool int __b) {
1082  return __a & ~(vector int)__b;
1083}
1084
1085static vector unsigned int __ATTRS_o_ai vec_andc(vector unsigned int __a,
1086                                                 vector unsigned int __b) {
1087  return __a & ~__b;
1088}
1089
1090static vector unsigned int __ATTRS_o_ai vec_andc(vector bool int __a,
1091                                                 vector unsigned int __b) {
1092  return (vector unsigned int)__a & ~__b;
1093}
1094
1095static vector unsigned int __ATTRS_o_ai vec_andc(vector unsigned int __a,
1096                                                 vector bool int __b) {
1097  return __a & ~(vector unsigned int)__b;
1098}
1099
1100static vector bool int __ATTRS_o_ai vec_andc(vector bool int __a,
1101                                             vector bool int __b) {
1102  return __a & ~__b;
1103}
1104
1105static vector float __ATTRS_o_ai vec_andc(vector float __a, vector float __b) {
1106  vector unsigned int __res =
1107      (vector unsigned int)__a & ~(vector unsigned int)__b;
1108  return (vector float)__res;
1109}
1110
1111static vector float __ATTRS_o_ai vec_andc(vector bool int __a,
1112                                          vector float __b) {
1113  vector unsigned int __res =
1114      (vector unsigned int)__a & ~(vector unsigned int)__b;
1115  return (vector float)__res;
1116}
1117
1118static vector float __ATTRS_o_ai vec_andc(vector float __a,
1119                                          vector bool int __b) {
1120  vector unsigned int __res =
1121      (vector unsigned int)__a & ~(vector unsigned int)__b;
1122  return (vector float)__res;
1123}
1124
1125#ifdef __VSX__
1126static vector double __ATTRS_o_ai
1127vec_andc(vector bool long long __a, vector double __b) {
1128  vector unsigned long long __res =
1129      (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1130  return (vector double)__res;
1131}
1132
1133static vector double __ATTRS_o_ai
1134vec_andc(vector double __a, vector bool long long __b) {
1135  vector unsigned long long __res =
1136      (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1137  return (vector double)__res;
1138}
1139
1140static vector double __ATTRS_o_ai vec_andc(vector double __a, vector double __b) {
1141  vector unsigned long long __res =
1142      (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1143  return (vector double)__res;
1144}
1145
1146static vector signed long long __ATTRS_o_ai
1147vec_andc(vector signed long long __a, vector signed long long __b) {
1148  return __a & ~__b;
1149}
1150
1151static vector signed long long __ATTRS_o_ai
1152vec_andc(vector bool long long __a, vector signed long long __b) {
1153  return (vector signed long long)__a & ~__b;
1154}
1155
1156static vector signed long long __ATTRS_o_ai
1157vec_andc(vector signed long long __a, vector bool long long __b) {
1158  return __a & ~(vector signed long long)__b;
1159}
1160
1161static vector unsigned long long __ATTRS_o_ai
1162vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
1163  return __a & ~__b;
1164}
1165
1166static vector unsigned long long __ATTRS_o_ai
1167vec_andc(vector bool long long __a, vector unsigned long long __b) {
1168  return (vector unsigned long long)__a & ~__b;
1169}
1170
1171static vector unsigned long long __ATTRS_o_ai
1172vec_andc(vector unsigned long long __a, vector bool long long __b) {
1173  return __a & ~(vector unsigned long long)__b;
1174}
1175
1176static vector bool long long __ATTRS_o_ai vec_andc(vector bool long long __a,
1177                                                   vector bool long long __b) {
1178  return __a & ~__b;
1179}
1180#endif
1181
1182/* vec_vandc */
1183
1184static vector signed char __ATTRS_o_ai vec_vandc(vector signed char __a,
1185                                                 vector signed char __b) {
1186  return __a & ~__b;
1187}
1188
1189static vector signed char __ATTRS_o_ai vec_vandc(vector bool char __a,
1190                                                 vector signed char __b) {
1191  return (vector signed char)__a & ~__b;
1192}
1193
1194static vector signed char __ATTRS_o_ai vec_vandc(vector signed char __a,
1195                                                 vector bool char __b) {
1196  return __a & ~(vector signed char)__b;
1197}
1198
1199static vector unsigned char __ATTRS_o_ai vec_vandc(vector unsigned char __a,
1200                                                   vector unsigned char __b) {
1201  return __a & ~__b;
1202}
1203
1204static vector unsigned char __ATTRS_o_ai vec_vandc(vector bool char __a,
1205                                                   vector unsigned char __b) {
1206  return (vector unsigned char)__a & ~__b;
1207}
1208
1209static vector unsigned char __ATTRS_o_ai vec_vandc(vector unsigned char __a,
1210                                                   vector bool char __b) {
1211  return __a & ~(vector unsigned char)__b;
1212}
1213
1214static vector bool char __ATTRS_o_ai vec_vandc(vector bool char __a,
1215                                               vector bool char __b) {
1216  return __a & ~__b;
1217}
1218
1219static vector short __ATTRS_o_ai vec_vandc(vector short __a, vector short __b) {
1220  return __a & ~__b;
1221}
1222
1223static vector short __ATTRS_o_ai vec_vandc(vector bool short __a,
1224                                           vector short __b) {
1225  return (vector short)__a & ~__b;
1226}
1227
1228static vector short __ATTRS_o_ai vec_vandc(vector short __a,
1229                                           vector bool short __b) {
1230  return __a & ~(vector short)__b;
1231}
1232
1233static vector unsigned short __ATTRS_o_ai vec_vandc(vector unsigned short __a,
1234                                                    vector unsigned short __b) {
1235  return __a & ~__b;
1236}
1237
1238static vector unsigned short __ATTRS_o_ai vec_vandc(vector bool short __a,
1239                                                    vector unsigned short __b) {
1240  return (vector unsigned short)__a & ~__b;
1241}
1242
1243static vector unsigned short __ATTRS_o_ai vec_vandc(vector unsigned short __a,
1244                                                    vector bool short __b) {
1245  return __a & ~(vector unsigned short)__b;
1246}
1247
1248static vector bool short __ATTRS_o_ai vec_vandc(vector bool short __a,
1249                                                vector bool short __b) {
1250  return __a & ~__b;
1251}
1252
1253static vector int __ATTRS_o_ai vec_vandc(vector int __a, vector int __b) {
1254  return __a & ~__b;
1255}
1256
1257static vector int __ATTRS_o_ai vec_vandc(vector bool int __a, vector int __b) {
1258  return (vector int)__a & ~__b;
1259}
1260
1261static vector int __ATTRS_o_ai vec_vandc(vector int __a, vector bool int __b) {
1262  return __a & ~(vector int)__b;
1263}
1264
1265static vector unsigned int __ATTRS_o_ai vec_vandc(vector unsigned int __a,
1266                                                  vector unsigned int __b) {
1267  return __a & ~__b;
1268}
1269
1270static vector unsigned int __ATTRS_o_ai vec_vandc(vector bool int __a,
1271                                                  vector unsigned int __b) {
1272  return (vector unsigned int)__a & ~__b;
1273}
1274
1275static vector unsigned int __ATTRS_o_ai vec_vandc(vector unsigned int __a,
1276                                                  vector bool int __b) {
1277  return __a & ~(vector unsigned int)__b;
1278}
1279
1280static vector bool int __ATTRS_o_ai vec_vandc(vector bool int __a,
1281                                              vector bool int __b) {
1282  return __a & ~__b;
1283}
1284
1285static vector float __ATTRS_o_ai vec_vandc(vector float __a, vector float __b) {
1286  vector unsigned int __res =
1287      (vector unsigned int)__a & ~(vector unsigned int)__b;
1288  return (vector float)__res;
1289}
1290
1291static vector float __ATTRS_o_ai vec_vandc(vector bool int __a,
1292                                           vector float __b) {
1293  vector unsigned int __res =
1294      (vector unsigned int)__a & ~(vector unsigned int)__b;
1295  return (vector float)__res;
1296}
1297
1298static vector float __ATTRS_o_ai vec_vandc(vector float __a,
1299                                           vector bool int __b) {
1300  vector unsigned int __res =
1301      (vector unsigned int)__a & ~(vector unsigned int)__b;
1302  return (vector float)__res;
1303}
1304
1305#ifdef __VSX__
1306static vector signed long long __ATTRS_o_ai
1307vec_vandc(vector signed long long __a, vector signed long long __b) {
1308  return __a & ~__b;
1309}
1310
1311static vector signed long long __ATTRS_o_ai
1312vec_vandc(vector bool long long __a, vector signed long long __b) {
1313  return (vector signed long long)__a & ~__b;
1314}
1315
1316static vector signed long long __ATTRS_o_ai
1317vec_vandc(vector signed long long __a, vector bool long long __b) {
1318  return __a & ~(vector signed long long)__b;
1319}
1320
1321static vector unsigned long long __ATTRS_o_ai
1322vec_vandc(vector unsigned long long __a, vector unsigned long long __b) {
1323  return __a & ~__b;
1324}
1325
1326static vector unsigned long long __ATTRS_o_ai
1327vec_vandc(vector bool long long __a, vector unsigned long long __b) {
1328  return (vector unsigned long long)__a & ~__b;
1329}
1330
1331static vector unsigned long long __ATTRS_o_ai
1332vec_vandc(vector unsigned long long __a, vector bool long long __b) {
1333  return __a & ~(vector unsigned long long)__b;
1334}
1335
1336static vector bool long long __ATTRS_o_ai vec_vandc(vector bool long long __a,
1337                                                    vector bool long long __b) {
1338  return __a & ~__b;
1339}
1340#endif
1341
1342/* vec_avg */
1343
1344static vector signed char __ATTRS_o_ai vec_avg(vector signed char __a,
1345                                               vector signed char __b) {
1346  return __builtin_altivec_vavgsb(__a, __b);
1347}
1348
1349static vector unsigned char __ATTRS_o_ai vec_avg(vector unsigned char __a,
1350                                                 vector unsigned char __b) {
1351  return __builtin_altivec_vavgub(__a, __b);
1352}
1353
1354static vector short __ATTRS_o_ai vec_avg(vector short __a, vector short __b) {
1355  return __builtin_altivec_vavgsh(__a, __b);
1356}
1357
1358static vector unsigned short __ATTRS_o_ai vec_avg(vector unsigned short __a,
1359                                                  vector unsigned short __b) {
1360  return __builtin_altivec_vavguh(__a, __b);
1361}
1362
1363static vector int __ATTRS_o_ai vec_avg(vector int __a, vector int __b) {
1364  return __builtin_altivec_vavgsw(__a, __b);
1365}
1366
1367static vector unsigned int __ATTRS_o_ai vec_avg(vector unsigned int __a,
1368                                                vector unsigned int __b) {
1369  return __builtin_altivec_vavguw(__a, __b);
1370}
1371
1372/* vec_vavgsb */
1373
1374static vector signed char __attribute__((__always_inline__))
1375vec_vavgsb(vector signed char __a, vector signed char __b) {
1376  return __builtin_altivec_vavgsb(__a, __b);
1377}
1378
1379/* vec_vavgub */
1380
1381static vector unsigned char __attribute__((__always_inline__))
1382vec_vavgub(vector unsigned char __a, vector unsigned char __b) {
1383  return __builtin_altivec_vavgub(__a, __b);
1384}
1385
1386/* vec_vavgsh */
1387
1388static vector short __attribute__((__always_inline__))
1389vec_vavgsh(vector short __a, vector short __b) {
1390  return __builtin_altivec_vavgsh(__a, __b);
1391}
1392
1393/* vec_vavguh */
1394
1395static vector unsigned short __attribute__((__always_inline__))
1396vec_vavguh(vector unsigned short __a, vector unsigned short __b) {
1397  return __builtin_altivec_vavguh(__a, __b);
1398}
1399
1400/* vec_vavgsw */
1401
1402static vector int __attribute__((__always_inline__))
1403vec_vavgsw(vector int __a, vector int __b) {
1404  return __builtin_altivec_vavgsw(__a, __b);
1405}
1406
1407/* vec_vavguw */
1408
1409static vector unsigned int __attribute__((__always_inline__))
1410vec_vavguw(vector unsigned int __a, vector unsigned int __b) {
1411  return __builtin_altivec_vavguw(__a, __b);
1412}
1413
1414/* vec_ceil */
1415
1416static vector float __ATTRS_o_ai vec_ceil(vector float __a) {
1417#ifdef __VSX__
1418  return __builtin_vsx_xvrspip(__a);
1419#else
1420  return __builtin_altivec_vrfip(__a);
1421#endif
1422}
1423
1424#ifdef __VSX__
1425static vector double __ATTRS_o_ai vec_ceil(vector double __a) {
1426  return __builtin_vsx_xvrdpip(__a);
1427}
1428#endif
1429
1430/* vec_vrfip */
1431
1432static vector float __attribute__((__always_inline__))
1433vec_vrfip(vector float __a) {
1434  return __builtin_altivec_vrfip(__a);
1435}
1436
1437/* vec_cmpb */
1438
1439static vector int __attribute__((__always_inline__))
1440vec_cmpb(vector float __a, vector float __b) {
1441  return __builtin_altivec_vcmpbfp(__a, __b);
1442}
1443
1444/* vec_vcmpbfp */
1445
1446static vector int __attribute__((__always_inline__))
1447vec_vcmpbfp(vector float __a, vector float __b) {
1448  return __builtin_altivec_vcmpbfp(__a, __b);
1449}
1450
1451/* vec_cmpeq */
1452
1453static vector bool char __ATTRS_o_ai vec_cmpeq(vector signed char __a,
1454                                               vector signed char __b) {
1455  return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1456                                                      (vector char)__b);
1457}
1458
1459static vector bool char __ATTRS_o_ai vec_cmpeq(vector unsigned char __a,
1460                                               vector unsigned char __b) {
1461  return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1462                                                      (vector char)__b);
1463}
1464
1465static vector bool short __ATTRS_o_ai vec_cmpeq(vector short __a,
1466                                                vector short __b) {
1467  return (vector bool short)__builtin_altivec_vcmpequh(__a, __b);
1468}
1469
1470static vector bool short __ATTRS_o_ai vec_cmpeq(vector unsigned short __a,
1471                                                vector unsigned short __b) {
1472  return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
1473                                                       (vector short)__b);
1474}
1475
1476static vector bool int __ATTRS_o_ai vec_cmpeq(vector int __a, vector int __b) {
1477  return (vector bool int)__builtin_altivec_vcmpequw(__a, __b);
1478}
1479
1480static vector bool int __ATTRS_o_ai vec_cmpeq(vector unsigned int __a,
1481                                              vector unsigned int __b) {
1482  return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
1483                                                     (vector int)__b);
1484}
1485
1486#ifdef __POWER8_VECTOR__
1487static vector bool long long __ATTRS_o_ai
1488vec_cmpeq(vector signed long long __a, vector signed long long __b) {
1489  return (vector bool long long)__builtin_altivec_vcmpequd(__a, __b);
1490}
1491
1492static vector bool long long __ATTRS_o_ai
1493vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
1494  return (vector bool long long)__builtin_altivec_vcmpequd(
1495      (vector long long)__a, (vector long long)__b);
1496}
1497#endif
1498
1499static vector bool int __ATTRS_o_ai vec_cmpeq(vector float __a,
1500                                              vector float __b) {
1501#ifdef __VSX__
1502  return (vector bool int)__builtin_vsx_xvcmpeqsp(__a, __b);
1503#else
1504  return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b);
1505#endif
1506}
1507
1508#ifdef __VSX__
1509static vector bool long long __ATTRS_o_ai
1510vec_cmpeq(vector double __a, vector double __b) {
1511  return (vector bool long long)__builtin_vsx_xvcmpeqdp(__a, __b);
1512}
1513#endif
1514
1515/* vec_cmpge */
1516
1517static vector bool int __ATTRS_o_ai
1518vec_cmpge(vector float __a, vector float __b) {
1519#ifdef __VSX__
1520  return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b);
1521#else
1522  return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
1523#endif
1524}
1525
1526#ifdef __VSX__
1527static vector bool long long __ATTRS_o_ai
1528vec_cmpge(vector double __a, vector double __b) {
1529  return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b);
1530}
1531#endif
1532
1533#ifdef __POWER8_VECTOR__
1534/*  Forwrad declarations as the functions are used here */
1535static vector bool long long __ATTRS_o_ai
1536vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b);
1537static vector bool long long __ATTRS_o_ai
1538vec_cmpgt(vector signed long long __a, vector signed long long __b);
1539
1540static vector bool long long __ATTRS_o_ai
1541vec_cmpge(vector signed long long __a, vector signed long long __b) {
1542  return ~(vec_cmpgt(__b, __a));
1543}
1544
1545static vector bool long long __ATTRS_o_ai
1546vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
1547  return ~(vec_cmpgt(__b, __a));
1548}
1549#endif
1550
1551/* vec_vcmpgefp */
1552
1553static vector bool int __attribute__((__always_inline__))
1554vec_vcmpgefp(vector float __a, vector float __b) {
1555  return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
1556}
1557
1558/* vec_cmpgt */
1559
1560static vector bool char __ATTRS_o_ai vec_cmpgt(vector signed char __a,
1561                                               vector signed char __b) {
1562  return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1563}
1564
1565static vector bool char __ATTRS_o_ai vec_cmpgt(vector unsigned char __a,
1566                                               vector unsigned char __b) {
1567  return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1568}
1569
1570static vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a,
1571                                                vector short __b) {
1572  return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1573}
1574
1575static vector bool short __ATTRS_o_ai vec_cmpgt(vector unsigned short __a,
1576                                                vector unsigned short __b) {
1577  return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1578}
1579
1580static vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a, vector int __b) {
1581  return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1582}
1583
1584static vector bool int __ATTRS_o_ai vec_cmpgt(vector unsigned int __a,
1585                                              vector unsigned int __b) {
1586  return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1587}
1588
1589#ifdef __POWER8_VECTOR__
1590static vector bool long long __ATTRS_o_ai
1591vec_cmpgt(vector signed long long __a, vector signed long long __b) {
1592  return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b);
1593}
1594
1595static vector bool long long __ATTRS_o_ai
1596vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
1597  return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b);
1598}
1599#endif
1600
1601static vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a,
1602                                              vector float __b) {
1603#ifdef __VSX__
1604  return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b);
1605#else
1606  return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1607#endif
1608}
1609
1610#ifdef __VSX__
1611static vector bool long long __ATTRS_o_ai
1612vec_cmpgt(vector double __a, vector double __b) {
1613  return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b);
1614}
1615#endif
1616/* vec_vcmpgtsb */
1617
1618static vector bool char __attribute__((__always_inline__))
1619vec_vcmpgtsb(vector signed char __a, vector signed char __b) {
1620  return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1621}
1622
1623/* vec_vcmpgtub */
1624
1625static vector bool char __attribute__((__always_inline__))
1626vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) {
1627  return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1628}
1629
1630/* vec_vcmpgtsh */
1631
1632static vector bool short __attribute__((__always_inline__))
1633vec_vcmpgtsh(vector short __a, vector short __b) {
1634  return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1635}
1636
1637/* vec_vcmpgtuh */
1638
1639static vector bool short __attribute__((__always_inline__))
1640vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) {
1641  return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1642}
1643
1644/* vec_vcmpgtsw */
1645
1646static vector bool int __attribute__((__always_inline__))
1647vec_vcmpgtsw(vector int __a, vector int __b) {
1648  return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1649}
1650
1651/* vec_vcmpgtuw */
1652
1653static vector bool int __attribute__((__always_inline__))
1654vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) {
1655  return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1656}
1657
1658/* vec_vcmpgtfp */
1659
1660static vector bool int __attribute__((__always_inline__))
1661vec_vcmpgtfp(vector float __a, vector float __b) {
1662  return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1663}
1664
1665/* vec_cmple */
1666
1667static vector bool int __ATTRS_o_ai
1668vec_cmple(vector float __a, vector float __b) {
1669  return vec_cmpge(__b, __a);
1670}
1671
1672#ifdef __VSX__
1673static vector bool long long __ATTRS_o_ai
1674vec_cmple(vector double __a, vector double __b) {
1675  return vec_cmpge(__b, __a);
1676}
1677#endif
1678
1679#ifdef __POWER8_VECTOR__
1680static vector bool long long __ATTRS_o_ai
1681vec_cmple(vector signed long long __a, vector signed long long __b) {
1682  return vec_cmpge(__b, __a);
1683}
1684
1685static vector bool long long __ATTRS_o_ai
1686vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
1687  return vec_cmpge(__b, __a);
1688}
1689#endif
1690
1691/* vec_cmplt */
1692
1693static vector bool char __ATTRS_o_ai vec_cmplt(vector signed char __a,
1694                                               vector signed char __b) {
1695  return vec_cmpgt(__b, __a);
1696}
1697
1698static vector bool char __ATTRS_o_ai vec_cmplt(vector unsigned char __a,
1699                                               vector unsigned char __b) {
1700  return vec_cmpgt(__b, __a);
1701}
1702
1703static vector bool short __ATTRS_o_ai vec_cmplt(vector short __a,
1704                                                vector short __b) {
1705  return vec_cmpgt(__b, __a);
1706}
1707
1708static vector bool short __ATTRS_o_ai vec_cmplt(vector unsigned short __a,
1709                                                vector unsigned short __b) {
1710  return vec_cmpgt(__b, __a);
1711}
1712
1713static vector bool int __ATTRS_o_ai vec_cmplt(vector int __a, vector int __b) {
1714  return vec_cmpgt(__b, __a);
1715}
1716
1717static vector bool int __ATTRS_o_ai vec_cmplt(vector unsigned int __a,
1718                                              vector unsigned int __b) {
1719  return vec_cmpgt(__b, __a);
1720}
1721
1722static vector bool int __ATTRS_o_ai vec_cmplt(vector float __a,
1723                                              vector float __b) {
1724  return vec_cmpgt(__b, __a);
1725}
1726
1727#ifdef __VSX__
1728static vector bool long long __ATTRS_o_ai
1729vec_cmplt(vector double __a, vector double __b) {
1730  return vec_cmpgt(__b, __a);
1731}
1732#endif
1733
1734#ifdef __POWER8_VECTOR__
1735static vector bool long long __ATTRS_o_ai
1736vec_cmplt(vector signed long long __a, vector signed long long __b) {
1737  return vec_cmpgt(__b, __a);
1738}
1739
1740static vector bool long long __ATTRS_o_ai
1741vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
1742  return vec_cmpgt(__b, __a);
1743}
1744
1745/* vec_cntlz */
1746
1747static vector signed char __ATTRS_o_ai vec_cntlz(vector signed char __a) {
1748  return __builtin_altivec_vclzb(__a);
1749}
1750static vector unsigned char __ATTRS_o_ai vec_cntlz(vector unsigned char __a) {
1751  return __builtin_altivec_vclzb(__a);
1752}
1753static vector signed short __ATTRS_o_ai vec_cntlz(vector signed short __a) {
1754  return __builtin_altivec_vclzh(__a);
1755}
1756static vector unsigned short __ATTRS_o_ai vec_cntlz(vector unsigned short __a) {
1757  return __builtin_altivec_vclzh(__a);
1758}
1759static vector signed int __ATTRS_o_ai vec_cntlz(vector signed int __a) {
1760  return __builtin_altivec_vclzw(__a);
1761}
1762static vector unsigned int __ATTRS_o_ai vec_cntlz(vector unsigned int __a) {
1763  return __builtin_altivec_vclzw(__a);
1764}
1765static vector signed long long __ATTRS_o_ai
1766vec_cntlz(vector signed long long __a) {
1767  return __builtin_altivec_vclzd(__a);
1768}
1769static vector unsigned long long __ATTRS_o_ai
1770vec_cntlz(vector unsigned long long __a) {
1771  return __builtin_altivec_vclzd(__a);
1772}
1773#endif
1774
1775/* vec_cpsgn */
1776
1777#ifdef __VSX__
1778static vector float __ATTRS_o_ai vec_cpsgn(vector float __a, vector float __b) {
1779  return __builtin_vsx_xvcpsgnsp(__a, __b);
1780}
1781
1782static vector double __ATTRS_o_ai vec_cpsgn(vector double __a,
1783                                            vector double __b) {
1784  return __builtin_vsx_xvcpsgndp(__a, __b);
1785}
1786#endif
1787
1788/* vec_ctf */
1789
1790static vector float __ATTRS_o_ai vec_ctf(vector int __a, int __b) {
1791  return __builtin_altivec_vcfsx(__a, __b);
1792}
1793
1794static vector float __ATTRS_o_ai vec_ctf(vector unsigned int __a, int __b) {
1795  return __builtin_altivec_vcfux((vector int)__a, __b);
1796}
1797
1798/* vec_vcfsx */
1799
1800static vector float __attribute__((__always_inline__))
1801vec_vcfsx(vector int __a, int __b) {
1802  return __builtin_altivec_vcfsx(__a, __b);
1803}
1804
1805/* vec_vcfux */
1806
1807static vector float __attribute__((__always_inline__))
1808vec_vcfux(vector unsigned int __a, int __b) {
1809  return __builtin_altivec_vcfux((vector int)__a, __b);
1810}
1811
1812/* vec_cts */
1813
1814static vector int __attribute__((__always_inline__))
1815vec_cts(vector float __a, int __b) {
1816  return __builtin_altivec_vctsxs(__a, __b);
1817}
1818
1819/* vec_vctsxs */
1820
1821static vector int __attribute__((__always_inline__))
1822vec_vctsxs(vector float __a, int __b) {
1823  return __builtin_altivec_vctsxs(__a, __b);
1824}
1825
1826/* vec_ctu */
1827
1828static vector unsigned int __attribute__((__always_inline__))
1829vec_ctu(vector float __a, int __b) {
1830  return __builtin_altivec_vctuxs(__a, __b);
1831}
1832
1833/* vec_vctuxs */
1834
1835static vector unsigned int __attribute__((__always_inline__))
1836vec_vctuxs(vector float __a, int __b) {
1837  return __builtin_altivec_vctuxs(__a, __b);
1838}
1839
1840/* vec_div */
1841
1842/* Integer vector divides (vectors are scalarized, elements divided
1843   and the vectors reassembled).
1844*/
1845static vector signed char __ATTRS_o_ai vec_div(vector signed char __a,
1846                                               vector signed char __b) {
1847  return __a / __b;
1848}
1849
1850static vector unsigned char __ATTRS_o_ai vec_div(vector unsigned char __a,
1851                                                 vector unsigned char __b) {
1852  return __a / __b;
1853}
1854
1855static vector signed short __ATTRS_o_ai vec_div(vector signed short __a,
1856                                                vector signed short __b) {
1857  return __a / __b;
1858}
1859
1860static vector unsigned short __ATTRS_o_ai vec_div(vector unsigned short __a,
1861                                                  vector unsigned short __b) {
1862  return __a / __b;
1863}
1864
1865static vector signed int __ATTRS_o_ai vec_div(vector signed int __a,
1866                                              vector signed int __b) {
1867  return __a / __b;
1868}
1869
1870static vector unsigned int __ATTRS_o_ai vec_div(vector unsigned int __a,
1871                                                vector unsigned int __b) {
1872  return __a / __b;
1873}
1874
1875#ifdef __VSX__
1876static vector signed long long __ATTRS_o_ai
1877vec_div(vector signed long long __a, vector signed long long __b) {
1878  return __a / __b;
1879}
1880
1881static vector unsigned long long __ATTRS_o_ai
1882vec_div(vector unsigned long long __a, vector unsigned long long __b) {
1883  return __a / __b;
1884}
1885
1886static vector float __ATTRS_o_ai vec_div(vector float __a, vector float __b) {
1887  return __a / __b;
1888}
1889
1890static vector double __ATTRS_o_ai vec_div(vector double __a,
1891                                          vector double __b) {
1892  return __a / __b;
1893}
1894#endif
1895
1896/* vec_dss */
1897
1898static void __attribute__((__always_inline__)) vec_dss(int __a) {
1899  __builtin_altivec_dss(__a);
1900}
1901
1902/* vec_dssall */
1903
1904static void __attribute__((__always_inline__)) vec_dssall(void) {
1905  __builtin_altivec_dssall();
1906}
1907
1908/* vec_dst */
1909
1910static void __attribute__((__always_inline__))
1911vec_dst(const void *__a, int __b, int __c) {
1912  __builtin_altivec_dst(__a, __b, __c);
1913}
1914
1915/* vec_dstst */
1916
1917static void __attribute__((__always_inline__))
1918vec_dstst(const void *__a, int __b, int __c) {
1919  __builtin_altivec_dstst(__a, __b, __c);
1920}
1921
1922/* vec_dststt */
1923
1924static void __attribute__((__always_inline__))
1925vec_dststt(const void *__a, int __b, int __c) {
1926  __builtin_altivec_dststt(__a, __b, __c);
1927}
1928
1929/* vec_dstt */
1930
1931static void __attribute__((__always_inline__))
1932vec_dstt(const void *__a, int __b, int __c) {
1933  __builtin_altivec_dstt(__a, __b, __c);
1934}
1935
1936/* vec_eqv */
1937
1938#ifdef __POWER8_VECTOR__
1939static vector signed char __ATTRS_o_ai vec_eqv(vector signed char __a,
1940                                               vector signed char __b) {
1941  return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
1942                                                  (vector unsigned int)__b);
1943}
1944
1945static vector signed char __ATTRS_o_ai vec_eqv(vector bool char __a,
1946                                               vector signed char __b) {
1947  return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
1948                                                  (vector unsigned int)__b);
1949}
1950
1951static vector signed char __ATTRS_o_ai vec_eqv(vector signed char __a,
1952                                               vector bool char __b) {
1953  return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
1954                                                  (vector unsigned int)__b);
1955}
1956
1957static vector unsigned char __ATTRS_o_ai vec_eqv(vector unsigned char __a,
1958                                                 vector unsigned char __b) {
1959  return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
1960                                                    (vector unsigned int)__b);
1961}
1962
1963static vector unsigned char __ATTRS_o_ai vec_eqv(vector bool char __a,
1964                                                 vector unsigned char __b) {
1965  return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
1966                                                    (vector unsigned int)__b);
1967}
1968
1969static vector unsigned char __ATTRS_o_ai vec_eqv(vector unsigned char __a,
1970                                                 vector bool char __b) {
1971  return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
1972                                                    (vector unsigned int)__b);
1973}
1974
1975static vector signed short __ATTRS_o_ai vec_eqv(vector signed short __a,
1976                                                vector signed short __b) {
1977  return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
1978                                                   (vector unsigned int)__b);
1979}
1980
1981static vector signed short __ATTRS_o_ai vec_eqv(vector bool short __a,
1982                                                vector signed short __b) {
1983  return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
1984                                                   (vector unsigned int)__b);
1985}
1986
1987static vector signed short __ATTRS_o_ai vec_eqv(vector signed short __a,
1988                                                vector bool short __b) {
1989  return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
1990                                                   (vector unsigned int)__b);
1991}
1992
1993static vector unsigned short __ATTRS_o_ai vec_eqv(vector unsigned short __a,
1994                                                  vector unsigned short __b) {
1995  return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
1996                                                     (vector unsigned int)__b);
1997}
1998
1999static vector unsigned short __ATTRS_o_ai vec_eqv(vector bool short __a,
2000                                                  vector unsigned short __b) {
2001  return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2002                                                     (vector unsigned int)__b);
2003}
2004
2005static vector unsigned short __ATTRS_o_ai vec_eqv(vector unsigned short __a,
2006                                                  vector bool short __b) {
2007  return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2008                                                     (vector unsigned int)__b);
2009}
2010
2011static vector signed int __ATTRS_o_ai vec_eqv(vector signed int __a,
2012                                              vector signed int __b) {
2013  return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
2014                                                 (vector unsigned int)__b);
2015}
2016
2017static vector signed int __ATTRS_o_ai vec_eqv(vector bool int __a,
2018                                              vector signed int __b) {
2019  return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
2020                                                 (vector unsigned int)__b);
2021}
2022
2023static vector signed int __ATTRS_o_ai vec_eqv(vector signed int __a,
2024                                              vector bool int __b) {
2025  return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
2026                                                 (vector unsigned int)__b);
2027}
2028
2029static vector unsigned int __ATTRS_o_ai vec_eqv(vector unsigned int __a,
2030                                                vector unsigned int __b) {
2031  return __builtin_vsx_xxleqv((vector unsigned int)__a,
2032                              (vector unsigned int)__b);
2033}
2034
2035static vector unsigned int __ATTRS_o_ai vec_eqv(vector bool int __a,
2036                                                vector unsigned int __b) {
2037  return __builtin_vsx_xxleqv((vector unsigned int)__a,
2038                              (vector unsigned int)__b);
2039}
2040
2041static vector unsigned int __ATTRS_o_ai vec_eqv(vector unsigned int __a,
2042                                                vector bool int __b) {
2043  return __builtin_vsx_xxleqv((vector unsigned int)__a,
2044                              (vector unsigned int)__b);
2045}
2046
2047static vector signed long long __ATTRS_o_ai
2048vec_eqv(vector signed long long __a, vector signed long long __b) {
2049  return (vector signed long long)
2050    __builtin_vsx_xxleqv((vector unsigned int)__a, (vector unsigned int)__b);
2051}
2052
2053static vector signed long long __ATTRS_o_ai
2054vec_eqv(vector bool long long __a, vector signed long long __b) {
2055  return (vector signed long long)
2056    __builtin_vsx_xxleqv((vector unsigned int)__a, (vector unsigned int)__b);
2057}
2058
2059static vector signed long long __ATTRS_o_ai
2060vec_eqv(vector signed long long __a, vector bool long long __b) {
2061  return (vector signed long long)
2062    __builtin_vsx_xxleqv((vector unsigned int)__a, (vector unsigned int)__b);
2063}
2064
2065static vector unsigned long long __ATTRS_o_ai
2066vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
2067  return (vector unsigned long long)
2068    __builtin_vsx_xxleqv((vector unsigned int)__a, (vector unsigned int)__b);
2069}
2070
2071static vector unsigned long long __ATTRS_o_ai
2072vec_eqv(vector bool long long __a, vector unsigned long long __b) {
2073  return (vector unsigned long long)
2074    __builtin_vsx_xxleqv((vector unsigned int)__a, (vector unsigned int)__b);
2075}
2076
2077static vector unsigned long long __ATTRS_o_ai
2078vec_eqv(vector unsigned long long __a, vector bool long long __b) {
2079  return (vector unsigned long long)
2080    __builtin_vsx_xxleqv((vector unsigned int)__a, (vector unsigned int)__b);
2081}
2082
2083static vector float __ATTRS_o_ai vec_eqv(vector float __a, vector float __b) {
2084  return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
2085                                            (vector unsigned int)__b);
2086}
2087
2088static vector float __ATTRS_o_ai vec_eqv(vector bool int __a,
2089                                         vector float __b) {
2090  return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
2091                                            (vector unsigned int)__b);
2092}
2093
2094static vector float __ATTRS_o_ai vec_eqv(vector float __a,
2095                                         vector bool int __b) {
2096  return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
2097                                            (vector unsigned int)__b);
2098}
2099
2100static vector double __ATTRS_o_ai vec_eqv(vector double __a,
2101                                          vector double __b) {
2102  return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
2103                                             (vector unsigned int)__b);
2104}
2105
2106static vector double __ATTRS_o_ai vec_eqv(vector bool long long __a,
2107                                          vector double __b) {
2108  return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
2109                                             (vector unsigned int)__b);
2110}
2111
2112static vector double __ATTRS_o_ai vec_eqv(vector double __a,
2113                                          vector bool long long __b) {
2114  return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
2115                                             (vector unsigned int)__b);
2116}
2117#endif
2118
2119/* vec_expte */
2120
2121static vector float __attribute__((__always_inline__))
2122vec_expte(vector float __a) {
2123  return __builtin_altivec_vexptefp(__a);
2124}
2125
2126/* vec_vexptefp */
2127
2128static vector float __attribute__((__always_inline__))
2129vec_vexptefp(vector float __a) {
2130  return __builtin_altivec_vexptefp(__a);
2131}
2132
2133/* vec_floor */
2134
2135static vector float __ATTRS_o_ai vec_floor(vector float __a) {
2136#ifdef __VSX__
2137  return __builtin_vsx_xvrspim(__a);
2138#else
2139  return __builtin_altivec_vrfim(__a);
2140#endif
2141}
2142
2143#ifdef __VSX__
2144static vector double __ATTRS_o_ai vec_floor(vector double __a) {
2145  return __builtin_vsx_xvrdpim(__a);
2146}
2147#endif
2148
2149/* vec_vrfim */
2150
2151static vector float __attribute__((__always_inline__))
2152vec_vrfim(vector float __a) {
2153  return __builtin_altivec_vrfim(__a);
2154}
2155
2156/* vec_ld */
2157
2158static vector signed char __ATTRS_o_ai vec_ld(int __a,
2159                                              const vector signed char *__b) {
2160  return (vector signed char)__builtin_altivec_lvx(__a, __b);
2161}
2162
2163static vector signed char __ATTRS_o_ai vec_ld(int __a, const signed char *__b) {
2164  return (vector signed char)__builtin_altivec_lvx(__a, __b);
2165}
2166
2167static vector unsigned char __ATTRS_o_ai
2168vec_ld(int __a, const vector unsigned char *__b) {
2169  return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2170}
2171
2172static vector unsigned char __ATTRS_o_ai vec_ld(int __a,
2173                                                const unsigned char *__b) {
2174  return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2175}
2176
2177static vector bool char __ATTRS_o_ai vec_ld(int __a,
2178                                            const vector bool char *__b) {
2179  return (vector bool char)__builtin_altivec_lvx(__a, __b);
2180}
2181
2182static vector short __ATTRS_o_ai vec_ld(int __a, const vector short *__b) {
2183  return (vector short)__builtin_altivec_lvx(__a, __b);
2184}
2185
2186static vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) {
2187  return (vector short)__builtin_altivec_lvx(__a, __b);
2188}
2189
2190static vector unsigned short __ATTRS_o_ai
2191vec_ld(int __a, const vector unsigned short *__b) {
2192  return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2193}
2194
2195static vector unsigned short __ATTRS_o_ai vec_ld(int __a,
2196                                                 const unsigned short *__b) {
2197  return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2198}
2199
2200static vector bool short __ATTRS_o_ai vec_ld(int __a,
2201                                             const vector bool short *__b) {
2202  return (vector bool short)__builtin_altivec_lvx(__a, __b);
2203}
2204
2205static vector pixel __ATTRS_o_ai vec_ld(int __a, const vector pixel *__b) {
2206  return (vector pixel)__builtin_altivec_lvx(__a, __b);
2207}
2208
2209static vector int __ATTRS_o_ai vec_ld(int __a, const vector int *__b) {
2210  return (vector int)__builtin_altivec_lvx(__a, __b);
2211}
2212
2213static vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) {
2214  return (vector int)__builtin_altivec_lvx(__a, __b);
2215}
2216
2217static vector unsigned int __ATTRS_o_ai vec_ld(int __a,
2218                                               const vector unsigned int *__b) {
2219  return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2220}
2221
2222static vector unsigned int __ATTRS_o_ai vec_ld(int __a,
2223                                               const unsigned int *__b) {
2224  return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2225}
2226
2227static vector bool int __ATTRS_o_ai vec_ld(int __a,
2228                                           const vector bool int *__b) {
2229  return (vector bool int)__builtin_altivec_lvx(__a, __b);
2230}
2231
2232static vector float __ATTRS_o_ai vec_ld(int __a, const vector float *__b) {
2233  return (vector float)__builtin_altivec_lvx(__a, __b);
2234}
2235
2236static vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) {
2237  return (vector float)__builtin_altivec_lvx(__a, __b);
2238}
2239
2240/* vec_lvx */
2241
2242static vector signed char __ATTRS_o_ai vec_lvx(int __a,
2243                                               const vector signed char *__b) {
2244  return (vector signed char)__builtin_altivec_lvx(__a, __b);
2245}
2246
2247static vector signed char __ATTRS_o_ai vec_lvx(int __a,
2248                                               const signed char *__b) {
2249  return (vector signed char)__builtin_altivec_lvx(__a, __b);
2250}
2251
2252static vector unsigned char __ATTRS_o_ai
2253vec_lvx(int __a, const vector unsigned char *__b) {
2254  return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2255}
2256
2257static vector unsigned char __ATTRS_o_ai vec_lvx(int __a,
2258                                                 const unsigned char *__b) {
2259  return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2260}
2261
2262static vector bool char __ATTRS_o_ai vec_lvx(int __a,
2263                                             const vector bool char *__b) {
2264  return (vector bool char)__builtin_altivec_lvx(__a, __b);
2265}
2266
2267static vector short __ATTRS_o_ai vec_lvx(int __a, const vector short *__b) {
2268  return (vector short)__builtin_altivec_lvx(__a, __b);
2269}
2270
2271static vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) {
2272  return (vector short)__builtin_altivec_lvx(__a, __b);
2273}
2274
2275static vector unsigned short __ATTRS_o_ai
2276vec_lvx(int __a, const vector unsigned short *__b) {
2277  return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2278}
2279
2280static vector unsigned short __ATTRS_o_ai vec_lvx(int __a,
2281                                                  const unsigned short *__b) {
2282  return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2283}
2284
2285static vector bool short __ATTRS_o_ai vec_lvx(int __a,
2286                                              const vector bool short *__b) {
2287  return (vector bool short)__builtin_altivec_lvx(__a, __b);
2288}
2289
2290static vector pixel __ATTRS_o_ai vec_lvx(int __a, const vector pixel *__b) {
2291  return (vector pixel)__builtin_altivec_lvx(__a, __b);
2292}
2293
2294static vector int __ATTRS_o_ai vec_lvx(int __a, const vector int *__b) {
2295  return (vector int)__builtin_altivec_lvx(__a, __b);
2296}
2297
2298static vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) {
2299  return (vector int)__builtin_altivec_lvx(__a, __b);
2300}
2301
2302static vector unsigned int __ATTRS_o_ai
2303vec_lvx(int __a, const vector unsigned int *__b) {
2304  return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2305}
2306
2307static vector unsigned int __ATTRS_o_ai vec_lvx(int __a,
2308                                                const unsigned int *__b) {
2309  return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2310}
2311
2312static vector bool int __ATTRS_o_ai vec_lvx(int __a,
2313                                            const vector bool int *__b) {
2314  return (vector bool int)__builtin_altivec_lvx(__a, __b);
2315}
2316
2317static vector float __ATTRS_o_ai vec_lvx(int __a, const vector float *__b) {
2318  return (vector float)__builtin_altivec_lvx(__a, __b);
2319}
2320
2321static vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) {
2322  return (vector float)__builtin_altivec_lvx(__a, __b);
2323}
2324
2325/* vec_lde */
2326
2327static vector signed char __ATTRS_o_ai vec_lde(int __a,
2328                                               const signed char *__b) {
2329  return (vector signed char)__builtin_altivec_lvebx(__a, __b);
2330}
2331
2332static vector unsigned char __ATTRS_o_ai vec_lde(int __a,
2333                                                 const unsigned char *__b) {
2334  return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
2335}
2336
2337static vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) {
2338  return (vector short)__builtin_altivec_lvehx(__a, __b);
2339}
2340
2341static vector unsigned short __ATTRS_o_ai vec_lde(int __a,
2342                                                  const unsigned short *__b) {
2343  return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
2344}
2345
2346static vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) {
2347  return (vector int)__builtin_altivec_lvewx(__a, __b);
2348}
2349
2350static vector unsigned int __ATTRS_o_ai vec_lde(int __a,
2351                                                const unsigned int *__b) {
2352  return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
2353}
2354
2355static vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) {
2356  return (vector float)__builtin_altivec_lvewx(__a, __b);
2357}
2358
2359/* vec_lvebx */
2360
2361static vector signed char __ATTRS_o_ai vec_lvebx(int __a,
2362                                                 const signed char *__b) {
2363  return (vector signed char)__builtin_altivec_lvebx(__a, __b);
2364}
2365
2366static vector unsigned char __ATTRS_o_ai vec_lvebx(int __a,
2367                                                   const unsigned char *__b) {
2368  return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
2369}
2370
2371/* vec_lvehx */
2372
2373static vector short __ATTRS_o_ai vec_lvehx(int __a, const short *__b) {
2374  return (vector short)__builtin_altivec_lvehx(__a, __b);
2375}
2376
2377static vector unsigned short __ATTRS_o_ai vec_lvehx(int __a,
2378                                                    const unsigned short *__b) {
2379  return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
2380}
2381
2382/* vec_lvewx */
2383
2384static vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) {
2385  return (vector int)__builtin_altivec_lvewx(__a, __b);
2386}
2387
2388static vector unsigned int __ATTRS_o_ai vec_lvewx(int __a,
2389                                                  const unsigned int *__b) {
2390  return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
2391}
2392
2393static vector float __ATTRS_o_ai vec_lvewx(int __a, const float *__b) {
2394  return (vector float)__builtin_altivec_lvewx(__a, __b);
2395}
2396
2397/* vec_ldl */
2398
2399static vector signed char __ATTRS_o_ai vec_ldl(int __a,
2400                                               const vector signed char *__b) {
2401  return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2402}
2403
2404static vector signed char __ATTRS_o_ai vec_ldl(int __a,
2405                                               const signed char *__b) {
2406  return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2407}
2408
2409static vector unsigned char __ATTRS_o_ai
2410vec_ldl(int __a, const vector unsigned char *__b) {
2411  return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2412}
2413
2414static vector unsigned char __ATTRS_o_ai vec_ldl(int __a,
2415                                                 const unsigned char *__b) {
2416  return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2417}
2418
2419static vector bool char __ATTRS_o_ai vec_ldl(int __a,
2420                                             const vector bool char *__b) {
2421  return (vector bool char)__builtin_altivec_lvxl(__a, __b);
2422}
2423
2424static vector short __ATTRS_o_ai vec_ldl(int __a, const vector short *__b) {
2425  return (vector short)__builtin_altivec_lvxl(__a, __b);
2426}
2427
2428static vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) {
2429  return (vector short)__builtin_altivec_lvxl(__a, __b);
2430}
2431
2432static vector unsigned short __ATTRS_o_ai
2433vec_ldl(int __a, const vector unsigned short *__b) {
2434  return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2435}
2436
2437static vector unsigned short __ATTRS_o_ai vec_ldl(int __a,
2438                                                  const unsigned short *__b) {
2439  return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2440}
2441
2442static vector bool short __ATTRS_o_ai vec_ldl(int __a,
2443                                              const vector bool short *__b) {
2444  return (vector bool short)__builtin_altivec_lvxl(__a, __b);
2445}
2446
2447static vector pixel __ATTRS_o_ai vec_ldl(int __a, const vector pixel *__b) {
2448  return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
2449}
2450
2451static vector int __ATTRS_o_ai vec_ldl(int __a, const vector int *__b) {
2452  return (vector int)__builtin_altivec_lvxl(__a, __b);
2453}
2454
2455static vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) {
2456  return (vector int)__builtin_altivec_lvxl(__a, __b);
2457}
2458
2459static vector unsigned int __ATTRS_o_ai
2460vec_ldl(int __a, const vector unsigned int *__b) {
2461  return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2462}
2463
2464static vector unsigned int __ATTRS_o_ai vec_ldl(int __a,
2465                                                const unsigned int *__b) {
2466  return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2467}
2468
2469static vector bool int __ATTRS_o_ai vec_ldl(int __a,
2470                                            const vector bool int *__b) {
2471  return (vector bool int)__builtin_altivec_lvxl(__a, __b);
2472}
2473
2474static vector float __ATTRS_o_ai vec_ldl(int __a, const vector float *__b) {
2475  return (vector float)__builtin_altivec_lvxl(__a, __b);
2476}
2477
2478static vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) {
2479  return (vector float)__builtin_altivec_lvxl(__a, __b);
2480}
2481
2482/* vec_lvxl */
2483
2484static vector signed char __ATTRS_o_ai vec_lvxl(int __a,
2485                                                const vector signed char *__b) {
2486  return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2487}
2488
2489static vector signed char __ATTRS_o_ai vec_lvxl(int __a,
2490                                                const signed char *__b) {
2491  return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2492}
2493
2494static vector unsigned char __ATTRS_o_ai
2495vec_lvxl(int __a, const vector unsigned char *__b) {
2496  return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2497}
2498
2499static vector unsigned char __ATTRS_o_ai vec_lvxl(int __a,
2500                                                  const unsigned char *__b) {
2501  return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2502}
2503
2504static vector bool char __ATTRS_o_ai vec_lvxl(int __a,
2505                                              const vector bool char *__b) {
2506  return (vector bool char)__builtin_altivec_lvxl(__a, __b);
2507}
2508
2509static vector short __ATTRS_o_ai vec_lvxl(int __a, const vector short *__b) {
2510  return (vector short)__builtin_altivec_lvxl(__a, __b);
2511}
2512
2513static vector short __ATTRS_o_ai vec_lvxl(int __a, const short *__b) {
2514  return (vector short)__builtin_altivec_lvxl(__a, __b);
2515}
2516
2517static vector unsigned short __ATTRS_o_ai
2518vec_lvxl(int __a, const vector unsigned short *__b) {
2519  return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2520}
2521
2522static vector unsigned short __ATTRS_o_ai vec_lvxl(int __a,
2523                                                   const unsigned short *__b) {
2524  return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2525}
2526
2527static vector bool short __ATTRS_o_ai vec_lvxl(int __a,
2528                                               const vector bool short *__b) {
2529  return (vector bool short)__builtin_altivec_lvxl(__a, __b);
2530}
2531
2532static vector pixel __ATTRS_o_ai vec_lvxl(int __a, const vector pixel *__b) {
2533  return (vector pixel)__builtin_altivec_lvxl(__a, __b);
2534}
2535
2536static vector int __ATTRS_o_ai vec_lvxl(int __a, const vector int *__b) {
2537  return (vector int)__builtin_altivec_lvxl(__a, __b);
2538}
2539
2540static vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) {
2541  return (vector int)__builtin_altivec_lvxl(__a, __b);
2542}
2543
2544static vector unsigned int __ATTRS_o_ai
2545vec_lvxl(int __a, const vector unsigned int *__b) {
2546  return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2547}
2548
2549static vector unsigned int __ATTRS_o_ai vec_lvxl(int __a,
2550                                                 const unsigned int *__b) {
2551  return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2552}
2553
2554static vector bool int __ATTRS_o_ai vec_lvxl(int __a,
2555                                             const vector bool int *__b) {
2556  return (vector bool int)__builtin_altivec_lvxl(__a, __b);
2557}
2558
2559static vector float __ATTRS_o_ai vec_lvxl(int __a, const vector float *__b) {
2560  return (vector float)__builtin_altivec_lvxl(__a, __b);
2561}
2562
2563static vector float __ATTRS_o_ai vec_lvxl(int __a, const float *__b) {
2564  return (vector float)__builtin_altivec_lvxl(__a, __b);
2565}
2566
2567/* vec_loge */
2568
2569static vector float __attribute__((__always_inline__))
2570vec_loge(vector float __a) {
2571  return __builtin_altivec_vlogefp(__a);
2572}
2573
2574/* vec_vlogefp */
2575
2576static vector float __attribute__((__always_inline__))
2577vec_vlogefp(vector float __a) {
2578  return __builtin_altivec_vlogefp(__a);
2579}
2580
2581/* vec_lvsl */
2582
2583#ifdef __LITTLE_ENDIAN__
2584static vector unsigned char __ATTRS_o_ai
2585    __attribute__((__deprecated__("use assignment for unaligned little endian \
2586loads/stores"))) vec_lvsl(int __a, const signed char *__b) {
2587  vector unsigned char mask =
2588      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2589  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2590                                  7,  6,  5,  4,  3,  2,  1, 0};
2591  return vec_perm(mask, mask, reverse);
2592}
2593#else
2594static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2595                                                  const signed char *__b) {
2596  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2597}
2598#endif
2599
2600#ifdef __LITTLE_ENDIAN__
2601static vector unsigned char __ATTRS_o_ai
2602    __attribute__((__deprecated__("use assignment for unaligned little endian \
2603loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) {
2604  vector unsigned char mask =
2605      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2606  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2607                                  7,  6,  5,  4,  3,  2,  1, 0};
2608  return vec_perm(mask, mask, reverse);
2609}
2610#else
2611static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2612                                                  const unsigned char *__b) {
2613  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2614}
2615#endif
2616
2617#ifdef __LITTLE_ENDIAN__
2618static vector unsigned char __ATTRS_o_ai
2619    __attribute__((__deprecated__("use assignment for unaligned little endian \
2620loads/stores"))) vec_lvsl(int __a, const short *__b) {
2621  vector unsigned char mask =
2622      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2623  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2624                                  7,  6,  5,  4,  3,  2,  1, 0};
2625  return vec_perm(mask, mask, reverse);
2626}
2627#else
2628static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, const short *__b) {
2629  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2630}
2631#endif
2632
2633#ifdef __LITTLE_ENDIAN__
2634static vector unsigned char __ATTRS_o_ai
2635    __attribute__((__deprecated__("use assignment for unaligned little endian \
2636loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) {
2637  vector unsigned char mask =
2638      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2639  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2640                                  7,  6,  5,  4,  3,  2,  1, 0};
2641  return vec_perm(mask, mask, reverse);
2642}
2643#else
2644static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2645                                                  const unsigned short *__b) {
2646  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2647}
2648#endif
2649
2650#ifdef __LITTLE_ENDIAN__
2651static vector unsigned char __ATTRS_o_ai
2652    __attribute__((__deprecated__("use assignment for unaligned little endian \
2653loads/stores"))) vec_lvsl(int __a, const int *__b) {
2654  vector unsigned char mask =
2655      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2656  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2657                                  7,  6,  5,  4,  3,  2,  1, 0};
2658  return vec_perm(mask, mask, reverse);
2659}
2660#else
2661static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, const int *__b) {
2662  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2663}
2664#endif
2665
2666#ifdef __LITTLE_ENDIAN__
2667static vector unsigned char __ATTRS_o_ai
2668    __attribute__((__deprecated__("use assignment for unaligned little endian \
2669loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) {
2670  vector unsigned char mask =
2671      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2672  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2673                                  7,  6,  5,  4,  3,  2,  1, 0};
2674  return vec_perm(mask, mask, reverse);
2675}
2676#else
2677static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2678                                                  const unsigned int *__b) {
2679  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2680}
2681#endif
2682
2683#ifdef __LITTLE_ENDIAN__
2684static vector unsigned char __ATTRS_o_ai
2685    __attribute__((__deprecated__("use assignment for unaligned little endian \
2686loads/stores"))) vec_lvsl(int __a, const float *__b) {
2687  vector unsigned char mask =
2688      (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2689  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2690                                  7,  6,  5,  4,  3,  2,  1, 0};
2691  return vec_perm(mask, mask, reverse);
2692}
2693#else
2694static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, const float *__b) {
2695  return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2696}
2697#endif
2698
2699/* vec_lvsr */
2700
2701#ifdef __LITTLE_ENDIAN__
2702static vector unsigned char __ATTRS_o_ai
2703    __attribute__((__deprecated__("use assignment for unaligned little endian \
2704loads/stores"))) vec_lvsr(int __a, const signed char *__b) {
2705  vector unsigned char mask =
2706      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2707  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2708                                  7,  6,  5,  4,  3,  2,  1, 0};
2709  return vec_perm(mask, mask, reverse);
2710}
2711#else
2712static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2713                                                  const signed char *__b) {
2714  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2715}
2716#endif
2717
2718#ifdef __LITTLE_ENDIAN__
2719static vector unsigned char __ATTRS_o_ai
2720    __attribute__((__deprecated__("use assignment for unaligned little endian \
2721loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) {
2722  vector unsigned char mask =
2723      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2724  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2725                                  7,  6,  5,  4,  3,  2,  1, 0};
2726  return vec_perm(mask, mask, reverse);
2727}
2728#else
2729static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2730                                                  const unsigned char *__b) {
2731  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2732}
2733#endif
2734
2735#ifdef __LITTLE_ENDIAN__
2736static vector unsigned char __ATTRS_o_ai
2737    __attribute__((__deprecated__("use assignment for unaligned little endian \
2738loads/stores"))) vec_lvsr(int __a, const short *__b) {
2739  vector unsigned char mask =
2740      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2741  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2742                                  7,  6,  5,  4,  3,  2,  1, 0};
2743  return vec_perm(mask, mask, reverse);
2744}
2745#else
2746static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, const short *__b) {
2747  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2748}
2749#endif
2750
2751#ifdef __LITTLE_ENDIAN__
2752static vector unsigned char __ATTRS_o_ai
2753    __attribute__((__deprecated__("use assignment for unaligned little endian \
2754loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) {
2755  vector unsigned char mask =
2756      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2757  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2758                                  7,  6,  5,  4,  3,  2,  1, 0};
2759  return vec_perm(mask, mask, reverse);
2760}
2761#else
2762static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2763                                                  const unsigned short *__b) {
2764  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2765}
2766#endif
2767
2768#ifdef __LITTLE_ENDIAN__
2769static vector unsigned char __ATTRS_o_ai
2770    __attribute__((__deprecated__("use assignment for unaligned little endian \
2771loads/stores"))) vec_lvsr(int __a, const int *__b) {
2772  vector unsigned char mask =
2773      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2774  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2775                                  7,  6,  5,  4,  3,  2,  1, 0};
2776  return vec_perm(mask, mask, reverse);
2777}
2778#else
2779static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, const int *__b) {
2780  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2781}
2782#endif
2783
2784#ifdef __LITTLE_ENDIAN__
2785static vector unsigned char __ATTRS_o_ai
2786    __attribute__((__deprecated__("use assignment for unaligned little endian \
2787loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) {
2788  vector unsigned char mask =
2789      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2790  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2791                                  7,  6,  5,  4,  3,  2,  1, 0};
2792  return vec_perm(mask, mask, reverse);
2793}
2794#else
2795static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2796                                                  const unsigned int *__b) {
2797  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2798}
2799#endif
2800
2801#ifdef __LITTLE_ENDIAN__
2802static vector unsigned char __ATTRS_o_ai
2803    __attribute__((__deprecated__("use assignment for unaligned little endian \
2804loads/stores"))) vec_lvsr(int __a, const float *__b) {
2805  vector unsigned char mask =
2806      (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2807  vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2808                                  7,  6,  5,  4,  3,  2,  1, 0};
2809  return vec_perm(mask, mask, reverse);
2810}
2811#else
2812static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, const float *__b) {
2813  return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2814}
2815#endif
2816
2817/* vec_madd */
2818
2819static vector float __ATTRS_o_ai
2820vec_madd(vector float __a, vector float __b, vector float __c) {
2821#ifdef __VSX__
2822  return __builtin_vsx_xvmaddasp(__a, __b, __c);
2823#else
2824  return __builtin_altivec_vmaddfp(__a, __b, __c);
2825#endif
2826}
2827
2828#ifdef __VSX__
2829static vector double __ATTRS_o_ai
2830vec_madd(vector double __a, vector double __b, vector double __c) {
2831  return __builtin_vsx_xvmaddadp(__a, __b, __c);
2832}
2833#endif
2834
2835/* vec_vmaddfp */
2836
2837static vector float __attribute__((__always_inline__))
2838vec_vmaddfp(vector float __a, vector float __b, vector float __c) {
2839  return __builtin_altivec_vmaddfp(__a, __b, __c);
2840}
2841
2842/* vec_madds */
2843
2844static vector signed short __attribute__((__always_inline__))
2845vec_madds(vector signed short __a, vector signed short __b,
2846          vector signed short __c) {
2847  return __builtin_altivec_vmhaddshs(__a, __b, __c);
2848}
2849
2850/* vec_vmhaddshs */
2851static vector signed short __attribute__((__always_inline__))
2852vec_vmhaddshs(vector signed short __a, vector signed short __b,
2853              vector signed short __c) {
2854  return __builtin_altivec_vmhaddshs(__a, __b, __c);
2855}
2856
2857/* vec_msub */
2858
2859#ifdef __VSX__
2860static vector float __ATTRS_o_ai
2861vec_msub(vector float __a, vector float __b, vector float __c) {
2862  return __builtin_vsx_xvmsubasp(__a, __b, __c);
2863}
2864
2865static vector double __ATTRS_o_ai
2866vec_msub(vector double __a, vector double __b, vector double __c) {
2867  return __builtin_vsx_xvmsubadp(__a, __b, __c);
2868}
2869#endif
2870
2871/* vec_max */
2872
2873static vector signed char __ATTRS_o_ai vec_max(vector signed char __a,
2874                                               vector signed char __b) {
2875  return __builtin_altivec_vmaxsb(__a, __b);
2876}
2877
2878static vector signed char __ATTRS_o_ai vec_max(vector bool char __a,
2879                                               vector signed char __b) {
2880  return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
2881}
2882
2883static vector signed char __ATTRS_o_ai vec_max(vector signed char __a,
2884                                               vector bool char __b) {
2885  return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
2886}
2887
2888static vector unsigned char __ATTRS_o_ai vec_max(vector unsigned char __a,
2889                                                 vector unsigned char __b) {
2890  return __builtin_altivec_vmaxub(__a, __b);
2891}
2892
2893static vector unsigned char __ATTRS_o_ai vec_max(vector bool char __a,
2894                                                 vector unsigned char __b) {
2895  return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
2896}
2897
2898static vector unsigned char __ATTRS_o_ai vec_max(vector unsigned char __a,
2899                                                 vector bool char __b) {
2900  return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
2901}
2902
2903static vector short __ATTRS_o_ai vec_max(vector short __a, vector short __b) {
2904  return __builtin_altivec_vmaxsh(__a, __b);
2905}
2906
2907static vector short __ATTRS_o_ai vec_max(vector bool short __a,
2908                                         vector short __b) {
2909  return __builtin_altivec_vmaxsh((vector short)__a, __b);
2910}
2911
2912static vector short __ATTRS_o_ai vec_max(vector short __a,
2913                                         vector bool short __b) {
2914  return __builtin_altivec_vmaxsh(__a, (vector short)__b);
2915}
2916
2917static vector unsigned short __ATTRS_o_ai vec_max(vector unsigned short __a,
2918                                                  vector unsigned short __b) {
2919  return __builtin_altivec_vmaxuh(__a, __b);
2920}
2921
2922static vector unsigned short __ATTRS_o_ai vec_max(vector bool short __a,
2923                                                  vector unsigned short __b) {
2924  return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
2925}
2926
2927static vector unsigned short __ATTRS_o_ai vec_max(vector unsigned short __a,
2928                                                  vector bool short __b) {
2929  return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
2930}
2931
2932static vector int __ATTRS_o_ai vec_max(vector int __a, vector int __b) {
2933  return __builtin_altivec_vmaxsw(__a, __b);
2934}
2935
2936static vector int __ATTRS_o_ai vec_max(vector bool int __a, vector int __b) {
2937  return __builtin_altivec_vmaxsw((vector int)__a, __b);
2938}
2939
2940static vector int __ATTRS_o_ai vec_max(vector int __a, vector bool int __b) {
2941  return __builtin_altivec_vmaxsw(__a, (vector int)__b);
2942}
2943
2944static vector unsigned int __ATTRS_o_ai vec_max(vector unsigned int __a,
2945                                                vector unsigned int __b) {
2946  return __builtin_altivec_vmaxuw(__a, __b);
2947}
2948
2949static vector unsigned int __ATTRS_o_ai vec_max(vector bool int __a,
2950                                                vector unsigned int __b) {
2951  return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
2952}
2953
2954static vector unsigned int __ATTRS_o_ai vec_max(vector unsigned int __a,
2955                                                vector bool int __b) {
2956  return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
2957}
2958
2959#ifdef __POWER8_VECTOR__
2960static vector signed long long __ATTRS_o_ai
2961vec_max(vector signed long long __a, vector signed long long __b) {
2962  return __builtin_altivec_vmaxsd(__a, __b);
2963}
2964
2965static vector signed long long __ATTRS_o_ai
2966vec_max(vector bool long long __a, vector signed long long __b) {
2967  return __builtin_altivec_vmaxsd((vector signed long long)__a, __b);
2968}
2969
2970static vector signed long long __ATTRS_o_ai vec_max(vector signed long long __a,
2971                                                    vector bool long long __b) {
2972  return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b);
2973}
2974
2975static vector unsigned long long __ATTRS_o_ai
2976vec_max(vector unsigned long long __a, vector unsigned long long __b) {
2977  return __builtin_altivec_vmaxud(__a, __b);
2978}
2979
2980static vector unsigned long long __ATTRS_o_ai
2981vec_max(vector bool long long __a, vector unsigned long long __b) {
2982  return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b);
2983}
2984
2985static vector unsigned long long __ATTRS_o_ai
2986vec_max(vector unsigned long long __a, vector bool long long __b) {
2987  return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b);
2988}
2989#endif
2990
2991static vector float __ATTRS_o_ai vec_max(vector float __a, vector float __b) {
2992#ifdef __VSX__
2993  return __builtin_vsx_xvmaxsp(__a, __b);
2994#else
2995  return __builtin_altivec_vmaxfp(__a, __b);
2996#endif
2997}
2998
2999#ifdef __VSX__
3000static vector double __ATTRS_o_ai vec_max(vector double __a,
3001                                          vector double __b) {
3002  return __builtin_vsx_xvmaxdp(__a, __b);
3003}
3004#endif
3005
3006/* vec_vmaxsb */
3007
3008static vector signed char __ATTRS_o_ai vec_vmaxsb(vector signed char __a,
3009                                                  vector signed char __b) {
3010  return __builtin_altivec_vmaxsb(__a, __b);
3011}
3012
3013static vector signed char __ATTRS_o_ai vec_vmaxsb(vector bool char __a,
3014                                                  vector signed char __b) {
3015  return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
3016}
3017
3018static vector signed char __ATTRS_o_ai vec_vmaxsb(vector signed char __a,
3019                                                  vector bool char __b) {
3020  return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
3021}
3022
3023/* vec_vmaxub */
3024
3025static vector unsigned char __ATTRS_o_ai vec_vmaxub(vector unsigned char __a,
3026                                                    vector unsigned char __b) {
3027  return __builtin_altivec_vmaxub(__a, __b);
3028}
3029
3030static vector unsigned char __ATTRS_o_ai vec_vmaxub(vector bool char __a,
3031                                                    vector unsigned char __b) {
3032  return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
3033}
3034
3035static vector unsigned char __ATTRS_o_ai vec_vmaxub(vector unsigned char __a,
3036                                                    vector bool char __b) {
3037  return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
3038}
3039
3040/* vec_vmaxsh */
3041
3042static vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
3043                                            vector short __b) {
3044  return __builtin_altivec_vmaxsh(__a, __b);
3045}
3046
3047static vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a,
3048                                            vector short __b) {
3049  return __builtin_altivec_vmaxsh((vector short)__a, __b);
3050}
3051
3052static vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
3053                                            vector bool short __b) {
3054  return __builtin_altivec_vmaxsh(__a, (vector short)__b);
3055}
3056
3057/* vec_vmaxuh */
3058
3059static vector unsigned short __ATTRS_o_ai
3060vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) {
3061  return __builtin_altivec_vmaxuh(__a, __b);
3062}
3063
3064static vector unsigned short __ATTRS_o_ai
3065vec_vmaxuh(vector bool short __a, vector unsigned short __b) {
3066  return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
3067}
3068
3069static vector unsigned short __ATTRS_o_ai vec_vmaxuh(vector unsigned short __a,
3070                                                     vector bool short __b) {
3071  return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
3072}
3073
3074/* vec_vmaxsw */
3075
3076static vector int __ATTRS_o_ai vec_vmaxsw(vector int __a, vector int __b) {
3077  return __builtin_altivec_vmaxsw(__a, __b);
3078}
3079
3080static vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a, vector int __b) {
3081  return __builtin_altivec_vmaxsw((vector int)__a, __b);
3082}
3083
3084static vector int __ATTRS_o_ai vec_vmaxsw(vector int __a, vector bool int __b) {
3085  return __builtin_altivec_vmaxsw(__a, (vector int)__b);
3086}
3087
3088/* vec_vmaxuw */
3089
3090static vector unsigned int __ATTRS_o_ai vec_vmaxuw(vector unsigned int __a,
3091                                                   vector unsigned int __b) {
3092  return __builtin_altivec_vmaxuw(__a, __b);
3093}
3094
3095static vector unsigned int __ATTRS_o_ai vec_vmaxuw(vector bool int __a,
3096                                                   vector unsigned int __b) {
3097  return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
3098}
3099
3100static vector unsigned int __ATTRS_o_ai vec_vmaxuw(vector unsigned int __a,
3101                                                   vector bool int __b) {
3102  return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
3103}
3104
3105/* vec_vmaxfp */
3106
3107static vector float __attribute__((__always_inline__))
3108vec_vmaxfp(vector float __a, vector float __b) {
3109#ifdef __VSX__
3110  return __builtin_vsx_xvmaxsp(__a, __b);
3111#else
3112  return __builtin_altivec_vmaxfp(__a, __b);
3113#endif
3114}
3115
3116/* vec_mergeh */
3117
3118static vector signed char __ATTRS_o_ai vec_mergeh(vector signed char __a,
3119                                                  vector signed char __b) {
3120  return vec_perm(__a, __b,
3121                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3122                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3123                                         0x06, 0x16, 0x07, 0x17));
3124}
3125
3126static vector unsigned char __ATTRS_o_ai vec_mergeh(vector unsigned char __a,
3127                                                    vector unsigned char __b) {
3128  return vec_perm(__a, __b,
3129                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3130                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3131                                         0x06, 0x16, 0x07, 0x17));
3132}
3133
3134static vector bool char __ATTRS_o_ai vec_mergeh(vector bool char __a,
3135                                                vector bool char __b) {
3136  return vec_perm(__a, __b,
3137                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3138                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3139                                         0x06, 0x16, 0x07, 0x17));
3140}
3141
3142static vector short __ATTRS_o_ai vec_mergeh(vector short __a,
3143                                            vector short __b) {
3144  return vec_perm(__a, __b,
3145                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3146                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3147                                         0x06, 0x07, 0x16, 0x17));
3148}
3149
3150static vector unsigned short __ATTRS_o_ai
3151vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
3152  return vec_perm(__a, __b,
3153                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3154                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3155                                         0x06, 0x07, 0x16, 0x17));
3156}
3157
3158static vector bool short __ATTRS_o_ai vec_mergeh(vector bool short __a,
3159                                                 vector bool short __b) {
3160  return vec_perm(__a, __b,
3161                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3162                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3163                                         0x06, 0x07, 0x16, 0x17));
3164}
3165
3166static vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a,
3167                                            vector pixel __b) {
3168  return vec_perm(__a, __b,
3169                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3170                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3171                                         0x06, 0x07, 0x16, 0x17));
3172}
3173
3174static vector int __ATTRS_o_ai vec_mergeh(vector int __a, vector int __b) {
3175  return vec_perm(__a, __b,
3176                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3177                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3178                                         0x14, 0x15, 0x16, 0x17));
3179}
3180
3181static vector unsigned int __ATTRS_o_ai vec_mergeh(vector unsigned int __a,
3182                                                   vector unsigned int __b) {
3183  return vec_perm(__a, __b,
3184                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3185                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3186                                         0x14, 0x15, 0x16, 0x17));
3187}
3188
3189static vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a,
3190                                               vector bool int __b) {
3191  return vec_perm(__a, __b,
3192                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3193                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3194                                         0x14, 0x15, 0x16, 0x17));
3195}
3196
3197static vector float __ATTRS_o_ai vec_mergeh(vector float __a,
3198                                            vector float __b) {
3199  return vec_perm(__a, __b,
3200                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3201                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3202                                         0x14, 0x15, 0x16, 0x17));
3203}
3204
3205#ifdef __VSX__
3206static vector signed long long __ATTRS_o_ai
3207vec_mergeh(vector signed long long __a, vector signed long long __b) {
3208  return vec_perm(__a, __b,
3209                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03,
3210                                         0x04, 0x05, 0x06, 0x07,
3211                                         0x10, 0x11, 0x12, 0x13,
3212                                         0x14, 0x15, 0x16, 0x17));
3213}
3214
3215static vector signed long long __ATTRS_o_ai
3216vec_mergeh(vector signed long long __a, vector bool long long __b) {
3217  return vec_perm(__a, (vector signed long long)__b,
3218                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03,
3219                                         0x04, 0x05, 0x06, 0x07,
3220                                         0x10, 0x11, 0x12, 0x13,
3221                                         0x14, 0x15, 0x16, 0x17));
3222}
3223
3224static vector signed long long __ATTRS_o_ai
3225vec_mergeh(vector bool long long __a, vector signed long long __b) {
3226  return vec_perm((vector signed long long)__a, __b,
3227                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03,
3228                                         0x04, 0x05, 0x06, 0x07,
3229                                         0x10, 0x11, 0x12, 0x13,
3230                                         0x14, 0x15, 0x16, 0x17));
3231}
3232
3233static vector unsigned long long __ATTRS_o_ai
3234vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
3235  return vec_perm(__a, __b,
3236                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03,
3237                                         0x04, 0x05, 0x06, 0x07,
3238                                         0x10, 0x11, 0x12, 0x13,
3239                                         0x14, 0x15, 0x16, 0x17));
3240}
3241
3242static vector unsigned long long __ATTRS_o_ai
3243vec_mergeh(vector unsigned long long __a, vector bool long long __b) {
3244  return vec_perm(__a, (vector unsigned long long)__b,
3245                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03,
3246                                         0x04, 0x05, 0x06, 0x07,
3247                                         0x10, 0x11, 0x12, 0x13,
3248                                         0x14, 0x15, 0x16, 0x17));
3249}
3250
3251static vector unsigned long long __ATTRS_o_ai
3252vec_mergeh(vector bool long long __a, vector unsigned long long __b) {
3253  return vec_perm((vector unsigned long long)__a, __b,
3254                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03,
3255                                         0x04, 0x05, 0x06, 0x07,
3256                                         0x10, 0x11, 0x12, 0x13,
3257                                         0x14, 0x15, 0x16, 0x17));
3258}
3259static vector double __ATTRS_o_ai vec_mergeh(vector double __a,
3260                                             vector double __b) {
3261  return vec_perm(__a, __b,
3262                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03,
3263                                         0x04, 0x05, 0x06, 0x07,
3264                                         0x10, 0x11, 0x12, 0x13,
3265                                         0x14, 0x15, 0x16, 0x17));
3266}
3267static vector double __ATTRS_o_ai vec_mergeh(vector double __a,
3268                                             vector bool long long __b) {
3269  return vec_perm(__a, (vector double)__b,
3270                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03,
3271                                         0x04, 0x05, 0x06, 0x07,
3272                                         0x10, 0x11, 0x12, 0x13,
3273                                         0x14, 0x15, 0x16, 0x17));
3274}
3275static vector double __ATTRS_o_ai vec_mergeh(vector bool long long __a,
3276                                             vector double __b) {
3277  return vec_perm((vector double)__a, __b,
3278                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03,
3279                                         0x04, 0x05, 0x06, 0x07,
3280                                         0x10, 0x11, 0x12, 0x13,
3281                                         0x14, 0x15, 0x16, 0x17));
3282}
3283#endif
3284
3285/* vec_vmrghb */
3286
3287#define __builtin_altivec_vmrghb vec_vmrghb
3288
3289static vector signed char __ATTRS_o_ai vec_vmrghb(vector signed char __a,
3290                                                  vector signed char __b) {
3291  return vec_perm(__a, __b,
3292                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3293                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3294                                         0x06, 0x16, 0x07, 0x17));
3295}
3296
3297static vector unsigned char __ATTRS_o_ai vec_vmrghb(vector unsigned char __a,
3298                                                    vector unsigned char __b) {
3299  return vec_perm(__a, __b,
3300                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3301                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3302                                         0x06, 0x16, 0x07, 0x17));
3303}
3304
3305static vector bool char __ATTRS_o_ai vec_vmrghb(vector bool char __a,
3306                                                vector bool char __b) {
3307  return vec_perm(__a, __b,
3308                  (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3309                                         0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3310                                         0x06, 0x16, 0x07, 0x17));
3311}
3312
3313/* vec_vmrghh */
3314
3315#define __builtin_altivec_vmrghh vec_vmrghh
3316
3317static vector short __ATTRS_o_ai vec_vmrghh(vector short __a,
3318                                            vector short __b) {
3319  return vec_perm(__a, __b,
3320                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3321                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3322                                         0x06, 0x07, 0x16, 0x17));
3323}
3324
3325static vector unsigned short __ATTRS_o_ai
3326vec_vmrghh(vector unsigned short __a, vector unsigned short __b) {
3327  return vec_perm(__a, __b,
3328                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3329                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3330                                         0x06, 0x07, 0x16, 0x17));
3331}
3332
3333static vector bool short __ATTRS_o_ai vec_vmrghh(vector bool short __a,
3334                                                 vector bool short __b) {
3335  return vec_perm(__a, __b,
3336                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3337                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3338                                         0x06, 0x07, 0x16, 0x17));
3339}
3340
3341static vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a,
3342                                            vector pixel __b) {
3343  return vec_perm(__a, __b,
3344                  (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3345                                         0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3346                                         0x06, 0x07, 0x16, 0x17));
3347}
3348
3349/* vec_vmrghw */
3350
3351#define __builtin_altivec_vmrghw vec_vmrghw
3352
3353static vector int __ATTRS_o_ai vec_vmrghw(vector int __a, vector int __b) {
3354  return vec_perm(__a, __b,
3355                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3356                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3357                                         0x14, 0x15, 0x16, 0x17));
3358}
3359
3360static vector unsigned int __ATTRS_o_ai vec_vmrghw(vector unsigned int __a,
3361                                                   vector unsigned int __b) {
3362  return vec_perm(__a, __b,
3363                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3364                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3365                                         0x14, 0x15, 0x16, 0x17));
3366}
3367
3368static vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a,
3369                                               vector bool int __b) {
3370  return vec_perm(__a, __b,
3371                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3372                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3373                                         0x14, 0x15, 0x16, 0x17));
3374}
3375
3376static vector float __ATTRS_o_ai vec_vmrghw(vector float __a,
3377                                            vector float __b) {
3378  return vec_perm(__a, __b,
3379                  (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3380                                         0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3381                                         0x14, 0x15, 0x16, 0x17));
3382}
3383
3384/* vec_mergel */
3385
3386static vector signed char __ATTRS_o_ai vec_mergel(vector signed char __a,
3387                                                  vector signed char __b) {
3388  return vec_perm(__a, __b,
3389                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3390                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3391                                         0x0E, 0x1E, 0x0F, 0x1F));
3392}
3393
3394static vector unsigned char __ATTRS_o_ai vec_mergel(vector unsigned char __a,
3395                                                    vector unsigned char __b) {
3396  return vec_perm(__a, __b,
3397                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3398                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3399                                         0x0E, 0x1E, 0x0F, 0x1F));
3400}
3401
3402static vector bool char __ATTRS_o_ai vec_mergel(vector bool char __a,
3403                                                vector bool char __b) {
3404  return vec_perm(__a, __b,
3405                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3406                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3407                                         0x0E, 0x1E, 0x0F, 0x1F));
3408}
3409
3410static vector short __ATTRS_o_ai vec_mergel(vector short __a,
3411                                            vector short __b) {
3412  return vec_perm(__a, __b,
3413                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3414                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3415                                         0x0E, 0x0F, 0x1E, 0x1F));
3416}
3417
3418static vector unsigned short __ATTRS_o_ai
3419vec_mergel(vector unsigned short __a, vector unsigned short __b) {
3420  return vec_perm(__a, __b,
3421                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3422                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3423                                         0x0E, 0x0F, 0x1E, 0x1F));
3424}
3425
3426static vector bool short __ATTRS_o_ai vec_mergel(vector bool short __a,
3427                                                 vector bool short __b) {
3428  return vec_perm(__a, __b,
3429                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3430                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3431                                         0x0E, 0x0F, 0x1E, 0x1F));
3432}
3433
3434static vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a,
3435                                            vector pixel __b) {
3436  return vec_perm(__a, __b,
3437                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3438                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3439                                         0x0E, 0x0F, 0x1E, 0x1F));
3440}
3441
3442static vector int __ATTRS_o_ai vec_mergel(vector int __a, vector int __b) {
3443  return vec_perm(__a, __b,
3444                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3445                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3446                                         0x1C, 0x1D, 0x1E, 0x1F));
3447}
3448
3449static vector unsigned int __ATTRS_o_ai vec_mergel(vector unsigned int __a,
3450                                                   vector unsigned int __b) {
3451  return vec_perm(__a, __b,
3452                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3453                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3454                                         0x1C, 0x1D, 0x1E, 0x1F));
3455}
3456
3457static vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a,
3458                                               vector bool int __b) {
3459  return vec_perm(__a, __b,
3460                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3461                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3462                                         0x1C, 0x1D, 0x1E, 0x1F));
3463}
3464
3465static vector float __ATTRS_o_ai vec_mergel(vector float __a,
3466                                            vector float __b) {
3467  return vec_perm(__a, __b,
3468                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3469                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3470                                         0x1C, 0x1D, 0x1E, 0x1F));
3471}
3472
3473#ifdef __VSX__
3474static vector signed long long __ATTRS_o_ai
3475vec_mergel(vector signed long long __a, vector signed long long __b) {
3476  return vec_perm(__a, __b,
3477                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B,
3478                                         0x0C, 0x0D, 0x0E, 0x0F,
3479                                         0x18, 0X19, 0x1A, 0x1B,
3480                                         0x1C, 0x1D, 0x1E, 0x1F));
3481}
3482static vector signed long long __ATTRS_o_ai
3483vec_mergel(vector signed long long __a, vector bool long long __b) {
3484  return vec_perm(__a, (vector signed long long)__b,
3485                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B,
3486                                         0x0C, 0x0D, 0x0E, 0x0F,
3487                                         0x18, 0X19, 0x1A, 0x1B,
3488                                         0x1C, 0x1D, 0x1E, 0x1F));
3489}
3490static vector signed long long __ATTRS_o_ai
3491vec_mergel(vector bool long long __a, vector signed long long __b) {
3492  return vec_perm((vector signed long long)__a, __b,
3493                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B,
3494                                         0x0C, 0x0D, 0x0E, 0x0F,
3495                                         0x18, 0X19, 0x1A, 0x1B,
3496                                         0x1C, 0x1D, 0x1E, 0x1F));
3497}
3498static vector unsigned long long __ATTRS_o_ai
3499vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
3500  return vec_perm(__a, __b,
3501                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B,
3502                                         0x0C, 0x0D, 0x0E, 0x0F,
3503                                         0x18, 0X19, 0x1A, 0x1B,
3504                                         0x1C, 0x1D, 0x1E, 0x1F));
3505}
3506static vector unsigned long long __ATTRS_o_ai
3507vec_mergel(vector unsigned long long __a, vector bool long long __b) {
3508  return vec_perm(__a, (vector unsigned long long)__b,
3509                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B,
3510                                         0x0C, 0x0D, 0x0E, 0x0F,
3511                                         0x18, 0X19, 0x1A, 0x1B,
3512                                         0x1C, 0x1D, 0x1E, 0x1F));
3513}
3514static vector unsigned long long __ATTRS_o_ai
3515vec_mergel(vector bool long long __a, vector unsigned long long __b) {
3516  return vec_perm((vector unsigned long long)__a, __b,
3517                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B,
3518                                         0x0C, 0x0D, 0x0E, 0x0F,
3519                                         0x18, 0X19, 0x1A, 0x1B,
3520                                         0x1C, 0x1D, 0x1E, 0x1F));
3521}
3522static vector double __ATTRS_o_ai
3523vec_mergel(vector double __a, vector double __b) {
3524  return vec_perm(__a, __b,
3525                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B,
3526                                         0x0C, 0x0D, 0x0E, 0x0F,
3527                                         0x18, 0X19, 0x1A, 0x1B,
3528                                         0x1C, 0x1D, 0x1E, 0x1F));
3529}
3530static vector double __ATTRS_o_ai
3531vec_mergel(vector double __a, vector bool long long __b) {
3532  return vec_perm(__a, (vector double)__b,
3533                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B,
3534                                         0x0C, 0x0D, 0x0E, 0x0F,
3535                                         0x18, 0X19, 0x1A, 0x1B,
3536                                         0x1C, 0x1D, 0x1E, 0x1F));
3537}
3538static vector double __ATTRS_o_ai
3539vec_mergel(vector bool long long __a, vector double __b) {
3540  return vec_perm((vector double)__a, __b,
3541                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B,
3542                                         0x0C, 0x0D, 0x0E, 0x0F,
3543                                         0x18, 0X19, 0x1A, 0x1B,
3544                                         0x1C, 0x1D, 0x1E, 0x1F));
3545}
3546#endif
3547
3548/* vec_vmrglb */
3549
3550#define __builtin_altivec_vmrglb vec_vmrglb
3551
3552static vector signed char __ATTRS_o_ai vec_vmrglb(vector signed char __a,
3553                                                  vector signed char __b) {
3554  return vec_perm(__a, __b,
3555                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3556                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3557                                         0x0E, 0x1E, 0x0F, 0x1F));
3558}
3559
3560static vector unsigned char __ATTRS_o_ai vec_vmrglb(vector unsigned char __a,
3561                                                    vector unsigned char __b) {
3562  return vec_perm(__a, __b,
3563                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3564                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3565                                         0x0E, 0x1E, 0x0F, 0x1F));
3566}
3567
3568static vector bool char __ATTRS_o_ai vec_vmrglb(vector bool char __a,
3569                                                vector bool char __b) {
3570  return vec_perm(__a, __b,
3571                  (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3572                                         0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3573                                         0x0E, 0x1E, 0x0F, 0x1F));
3574}
3575
3576/* vec_vmrglh */
3577
3578#define __builtin_altivec_vmrglh vec_vmrglh
3579
3580static vector short __ATTRS_o_ai vec_vmrglh(vector short __a,
3581                                            vector short __b) {
3582  return vec_perm(__a, __b,
3583                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3584                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3585                                         0x0E, 0x0F, 0x1E, 0x1F));
3586}
3587
3588static vector unsigned short __ATTRS_o_ai
3589vec_vmrglh(vector unsigned short __a, vector unsigned short __b) {
3590  return vec_perm(__a, __b,
3591                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3592                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3593                                         0x0E, 0x0F, 0x1E, 0x1F));
3594}
3595
3596static vector bool short __ATTRS_o_ai vec_vmrglh(vector bool short __a,
3597                                                 vector bool short __b) {
3598  return vec_perm(__a, __b,
3599                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3600                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3601                                         0x0E, 0x0F, 0x1E, 0x1F));
3602}
3603
3604static vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a,
3605                                            vector pixel __b) {
3606  return vec_perm(__a, __b,
3607                  (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3608                                         0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3609                                         0x0E, 0x0F, 0x1E, 0x1F));
3610}
3611
3612/* vec_vmrglw */
3613
3614#define __builtin_altivec_vmrglw vec_vmrglw
3615
3616static vector int __ATTRS_o_ai vec_vmrglw(vector int __a, vector int __b) {
3617  return vec_perm(__a, __b,
3618                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3619                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3620                                         0x1C, 0x1D, 0x1E, 0x1F));
3621}
3622
3623static vector unsigned int __ATTRS_o_ai vec_vmrglw(vector unsigned int __a,
3624                                                   vector unsigned int __b) {
3625  return vec_perm(__a, __b,
3626                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3627                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3628                                         0x1C, 0x1D, 0x1E, 0x1F));
3629}
3630
3631static vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a,
3632                                               vector bool int __b) {
3633  return vec_perm(__a, __b,
3634                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3635                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3636                                         0x1C, 0x1D, 0x1E, 0x1F));
3637}
3638
3639static vector float __ATTRS_o_ai vec_vmrglw(vector float __a,
3640                                            vector float __b) {
3641  return vec_perm(__a, __b,
3642                  (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3643                                         0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3644                                         0x1C, 0x1D, 0x1E, 0x1F));
3645}
3646
3647
3648#ifdef __POWER8_VECTOR__
3649/* vec_mergee */
3650
3651static vector bool int __ATTRS_o_ai
3652vec_mergee(vector bool int __a, vector bool int __b) {
3653  return vec_perm(__a, __b, (vector unsigned char)
3654                  (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
3655                   0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B));
3656}
3657
3658static vector signed int __ATTRS_o_ai
3659vec_mergee(vector signed int __a, vector signed int __b) {
3660  return vec_perm(__a, __b, (vector unsigned char)
3661                  (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
3662                   0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B));
3663}
3664
3665static vector unsigned int __ATTRS_o_ai
3666vec_mergee(vector unsigned int __a, vector unsigned int __b) {
3667  return vec_perm(__a, __b, (vector unsigned char)
3668                  (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
3669                   0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B));
3670}
3671
3672/* vec_mergeo */
3673
3674static vector bool int  __ATTRS_o_ai
3675vec_mergeo(vector bool int __a, vector bool int __b) {
3676  return vec_perm(__a, __b, (vector unsigned char)
3677                  (0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17,
3678                   0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
3679}
3680
3681static vector signed int  __ATTRS_o_ai
3682vec_mergeo(vector signed int __a, vector signed int __b) {
3683  return vec_perm(__a, __b, (vector unsigned char)
3684                  (0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17,
3685                   0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
3686}
3687
3688static vector unsigned int  __ATTRS_o_ai
3689vec_mergeo(vector unsigned int __a, vector unsigned int __b) {
3690  return vec_perm(__a, __b, (vector unsigned char)
3691                  (0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17,
3692                   0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
3693}
3694
3695#endif
3696
3697/* vec_mfvscr */
3698
3699static vector unsigned short __attribute__((__always_inline__))
3700vec_mfvscr(void) {
3701  return __builtin_altivec_mfvscr();
3702}
3703
3704/* vec_min */
3705
3706static vector signed char __ATTRS_o_ai vec_min(vector signed char __a,
3707                                               vector signed char __b) {
3708  return __builtin_altivec_vminsb(__a, __b);
3709}
3710
3711static vector signed char __ATTRS_o_ai vec_min(vector bool char __a,
3712                                               vector signed char __b) {
3713  return __builtin_altivec_vminsb((vector signed char)__a, __b);
3714}
3715
3716static vector signed char __ATTRS_o_ai vec_min(vector signed char __a,
3717                                               vector bool char __b) {
3718  return __builtin_altivec_vminsb(__a, (vector signed char)__b);
3719}
3720
3721static vector unsigned char __ATTRS_o_ai vec_min(vector unsigned char __a,
3722                                                 vector unsigned char __b) {
3723  return __builtin_altivec_vminub(__a, __b);
3724}
3725
3726static vector unsigned char __ATTRS_o_ai vec_min(vector bool char __a,
3727                                                 vector unsigned char __b) {
3728  return __builtin_altivec_vminub((vector unsigned char)__a, __b);
3729}
3730
3731static vector unsigned char __ATTRS_o_ai vec_min(vector unsigned char __a,
3732                                                 vector bool char __b) {
3733  return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
3734}
3735
3736static vector short __ATTRS_o_ai vec_min(vector short __a, vector short __b) {
3737  return __builtin_altivec_vminsh(__a, __b);
3738}
3739
3740static vector short __ATTRS_o_ai vec_min(vector bool short __a,
3741                                         vector short __b) {
3742  return __builtin_altivec_vminsh((vector short)__a, __b);
3743}
3744
3745static vector short __ATTRS_o_ai vec_min(vector short __a,
3746                                         vector bool short __b) {
3747  return __builtin_altivec_vminsh(__a, (vector short)__b);
3748}
3749
3750static vector unsigned short __ATTRS_o_ai vec_min(vector unsigned short __a,
3751                                                  vector unsigned short __b) {
3752  return __builtin_altivec_vminuh(__a, __b);
3753}
3754
3755static vector unsigned short __ATTRS_o_ai vec_min(vector bool short __a,
3756                                                  vector unsigned short __b) {
3757  return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
3758}
3759
3760static vector unsigned short __ATTRS_o_ai vec_min(vector unsigned short __a,
3761                                                  vector bool short __b) {
3762  return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
3763}
3764
3765static vector int __ATTRS_o_ai vec_min(vector int __a, vector int __b) {
3766  return __builtin_altivec_vminsw(__a, __b);
3767}
3768
3769static vector int __ATTRS_o_ai vec_min(vector bool int __a, vector int __b) {
3770  return __builtin_altivec_vminsw((vector int)__a, __b);
3771}
3772
3773static vector int __ATTRS_o_ai vec_min(vector int __a, vector bool int __b) {
3774  return __builtin_altivec_vminsw(__a, (vector int)__b);
3775}
3776
3777static vector unsigned int __ATTRS_o_ai vec_min(vector unsigned int __a,
3778                                                vector unsigned int __b) {
3779  return __builtin_altivec_vminuw(__a, __b);
3780}
3781
3782static vector unsigned int __ATTRS_o_ai vec_min(vector bool int __a,
3783                                                vector unsigned int __b) {
3784  return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
3785}
3786
3787static vector unsigned int __ATTRS_o_ai vec_min(vector unsigned int __a,
3788                                                vector bool int __b) {
3789  return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
3790}
3791
3792#ifdef __POWER8_VECTOR__
3793static vector signed long long __ATTRS_o_ai
3794vec_min(vector signed long long __a, vector signed long long __b) {
3795  return __builtin_altivec_vminsd(__a, __b);
3796}
3797
3798static vector signed long long __ATTRS_o_ai
3799vec_min(vector bool long long __a, vector signed long long __b) {
3800  return __builtin_altivec_vminsd((vector signed long long)__a, __b);
3801}
3802
3803static vector signed long long __ATTRS_o_ai vec_min(vector signed long long __a,
3804                                                    vector bool long long __b) {
3805  return __builtin_altivec_vminsd(__a, (vector signed long long)__b);
3806}
3807
3808static vector unsigned long long __ATTRS_o_ai
3809vec_min(vector unsigned long long __a, vector unsigned long long __b) {
3810  return __builtin_altivec_vminud(__a, __b);
3811}
3812
3813static vector unsigned long long __ATTRS_o_ai
3814vec_min(vector bool long long __a, vector unsigned long long __b) {
3815  return __builtin_altivec_vminud((vector unsigned long long)__a, __b);
3816}
3817
3818static vector unsigned long long __ATTRS_o_ai
3819vec_min(vector unsigned long long __a, vector bool long long __b) {
3820  return __builtin_altivec_vminud(__a, (vector unsigned long long)__b);
3821}
3822#endif
3823
3824static vector float __ATTRS_o_ai vec_min(vector float __a, vector float __b) {
3825#ifdef __VSX__
3826  return __builtin_vsx_xvminsp(__a, __b);
3827#else
3828  return __builtin_altivec_vminfp(__a, __b);
3829#endif
3830}
3831
3832#ifdef __VSX__
3833static vector double __ATTRS_o_ai vec_min(vector double __a,
3834                                          vector double __b) {
3835  return __builtin_vsx_xvmindp(__a, __b);
3836}
3837#endif
3838
3839/* vec_vminsb */
3840
3841static vector signed char __ATTRS_o_ai vec_vminsb(vector signed char __a,
3842                                                  vector signed char __b) {
3843  return __builtin_altivec_vminsb(__a, __b);
3844}
3845
3846static vector signed char __ATTRS_o_ai vec_vminsb(vector bool char __a,
3847                                                  vector signed char __b) {
3848  return __builtin_altivec_vminsb((vector signed char)__a, __b);
3849}
3850
3851static vector signed char __ATTRS_o_ai vec_vminsb(vector signed char __a,
3852                                                  vector bool char __b) {
3853  return __builtin_altivec_vminsb(__a, (vector signed char)__b);
3854}
3855
3856/* vec_vminub */
3857
3858static vector unsigned char __ATTRS_o_ai vec_vminub(vector unsigned char __a,
3859                                                    vector unsigned char __b) {
3860  return __builtin_altivec_vminub(__a, __b);
3861}
3862
3863static vector unsigned char __ATTRS_o_ai vec_vminub(vector bool char __a,
3864                                                    vector unsigned char __b) {
3865  return __builtin_altivec_vminub((vector unsigned char)__a, __b);
3866}
3867
3868static vector unsigned char __ATTRS_o_ai vec_vminub(vector unsigned char __a,
3869                                                    vector bool char __b) {
3870  return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
3871}
3872
3873/* vec_vminsh */
3874
3875static vector short __ATTRS_o_ai vec_vminsh(vector short __a,
3876                                            vector short __b) {
3877  return __builtin_altivec_vminsh(__a, __b);
3878}
3879
3880static vector short __ATTRS_o_ai vec_vminsh(vector bool short __a,
3881                                            vector short __b) {
3882  return __builtin_altivec_vminsh((vector short)__a, __b);
3883}
3884
3885static vector short __ATTRS_o_ai vec_vminsh(vector short __a,
3886                                            vector bool short __b) {
3887  return __builtin_altivec_vminsh(__a, (vector short)__b);
3888}
3889
3890/* vec_vminuh */
3891
3892static vector unsigned short __ATTRS_o_ai
3893vec_vminuh(vector unsigned short __a, vector unsigned short __b) {
3894  return __builtin_altivec_vminuh(__a, __b);
3895}
3896
3897static vector unsigned short __ATTRS_o_ai
3898vec_vminuh(vector bool short __a, vector unsigned short __b) {
3899  return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
3900}
3901
3902static vector unsigned short __ATTRS_o_ai vec_vminuh(vector unsigned short __a,
3903                                                     vector bool short __b) {
3904  return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
3905}
3906
3907/* vec_vminsw */
3908
3909static vector int __ATTRS_o_ai vec_vminsw(vector int __a, vector int __b) {
3910  return __builtin_altivec_vminsw(__a, __b);
3911}
3912
3913static vector int __ATTRS_o_ai vec_vminsw(vector bool int __a, vector int __b) {
3914  return __builtin_altivec_vminsw((vector int)__a, __b);
3915}
3916
3917static vector int __ATTRS_o_ai vec_vminsw(vector int __a, vector bool int __b) {
3918  return __builtin_altivec_vminsw(__a, (vector int)__b);
3919}
3920
3921/* vec_vminuw */
3922
3923static vector unsigned int __ATTRS_o_ai vec_vminuw(vector unsigned int __a,
3924                                                   vector unsigned int __b) {
3925  return __builtin_altivec_vminuw(__a, __b);
3926}
3927
3928static vector unsigned int __ATTRS_o_ai vec_vminuw(vector bool int __a,
3929                                                   vector unsigned int __b) {
3930  return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
3931}
3932
3933static vector unsigned int __ATTRS_o_ai vec_vminuw(vector unsigned int __a,
3934                                                   vector bool int __b) {
3935  return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
3936}
3937
3938/* vec_vminfp */
3939
3940static vector float __attribute__((__always_inline__))
3941vec_vminfp(vector float __a, vector float __b) {
3942#ifdef __VSX__
3943  return __builtin_vsx_xvminsp(__a, __b);
3944#else
3945  return __builtin_altivec_vminfp(__a, __b);
3946#endif
3947}
3948
3949/* vec_mladd */
3950
3951#define __builtin_altivec_vmladduhm vec_mladd
3952
3953static vector short __ATTRS_o_ai vec_mladd(vector short __a, vector short __b,
3954                                           vector short __c) {
3955  return __a * __b + __c;
3956}
3957
3958static vector short __ATTRS_o_ai vec_mladd(vector short __a,
3959                                           vector unsigned short __b,
3960                                           vector unsigned short __c) {
3961  return __a * (vector short)__b + (vector short)__c;
3962}
3963
3964static vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
3965                                           vector short __b, vector short __c) {
3966  return (vector short)__a * __b + __c;
3967}
3968
3969static vector unsigned short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
3970                                                    vector unsigned short __b,
3971                                                    vector unsigned short __c) {
3972  return __a * __b + __c;
3973}
3974
3975/* vec_vmladduhm */
3976
3977static vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
3978                                               vector short __b,
3979                                               vector short __c) {
3980  return __a * __b + __c;
3981}
3982
3983static vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
3984                                               vector unsigned short __b,
3985                                               vector unsigned short __c) {
3986  return __a * (vector short)__b + (vector short)__c;
3987}
3988
3989static vector short __ATTRS_o_ai vec_vmladduhm(vector unsigned short __a,
3990                                               vector short __b,
3991                                               vector short __c) {
3992  return (vector short)__a * __b + __c;
3993}
3994
3995static vector unsigned short __ATTRS_o_ai
3996vec_vmladduhm(vector unsigned short __a, vector unsigned short __b,
3997              vector unsigned short __c) {
3998  return __a * __b + __c;
3999}
4000
4001/* vec_mradds */
4002
4003static vector short __attribute__((__always_inline__))
4004vec_mradds(vector short __a, vector short __b, vector short __c) {
4005  return __builtin_altivec_vmhraddshs(__a, __b, __c);
4006}
4007
4008/* vec_vmhraddshs */
4009
4010static vector short __attribute__((__always_inline__))
4011vec_vmhraddshs(vector short __a, vector short __b, vector short __c) {
4012  return __builtin_altivec_vmhraddshs(__a, __b, __c);
4013}
4014
4015/* vec_msum */
4016
4017static vector int __ATTRS_o_ai vec_msum(vector signed char __a,
4018                                        vector unsigned char __b,
4019                                        vector int __c) {
4020  return __builtin_altivec_vmsummbm(__a, __b, __c);
4021}
4022
4023static vector unsigned int __ATTRS_o_ai vec_msum(vector unsigned char __a,
4024                                                 vector unsigned char __b,
4025                                                 vector unsigned int __c) {
4026  return __builtin_altivec_vmsumubm(__a, __b, __c);
4027}
4028
4029static vector int __ATTRS_o_ai vec_msum(vector short __a, vector short __b,
4030                                        vector int __c) {
4031  return __builtin_altivec_vmsumshm(__a, __b, __c);
4032}
4033
4034static vector unsigned int __ATTRS_o_ai vec_msum(vector unsigned short __a,
4035                                                 vector unsigned short __b,
4036                                                 vector unsigned int __c) {
4037  return __builtin_altivec_vmsumuhm(__a, __b, __c);
4038}
4039
4040/* vec_vmsummbm */
4041
4042static vector int __attribute__((__always_inline__))
4043vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) {
4044  return __builtin_altivec_vmsummbm(__a, __b, __c);
4045}
4046
4047/* vec_vmsumubm */
4048
4049static vector unsigned int __attribute__((__always_inline__))
4050vec_vmsumubm(vector unsigned char __a, vector unsigned char __b,
4051             vector unsigned int __c) {
4052  return __builtin_altivec_vmsumubm(__a, __b, __c);
4053}
4054
4055/* vec_vmsumshm */
4056
4057static vector int __attribute__((__always_inline__))
4058vec_vmsumshm(vector short __a, vector short __b, vector int __c) {
4059  return __builtin_altivec_vmsumshm(__a, __b, __c);
4060}
4061
4062/* vec_vmsumuhm */
4063
4064static vector unsigned int __attribute__((__always_inline__))
4065vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b,
4066             vector unsigned int __c) {
4067  return __builtin_altivec_vmsumuhm(__a, __b, __c);
4068}
4069
4070/* vec_msums */
4071
4072static vector int __ATTRS_o_ai vec_msums(vector short __a, vector short __b,
4073                                         vector int __c) {
4074  return __builtin_altivec_vmsumshs(__a, __b, __c);
4075}
4076
4077static vector unsigned int __ATTRS_o_ai vec_msums(vector unsigned short __a,
4078                                                  vector unsigned short __b,
4079                                                  vector unsigned int __c) {
4080  return __builtin_altivec_vmsumuhs(__a, __b, __c);
4081}
4082
4083/* vec_vmsumshs */
4084
4085static vector int __attribute__((__always_inline__))
4086vec_vmsumshs(vector short __a, vector short __b, vector int __c) {
4087  return __builtin_altivec_vmsumshs(__a, __b, __c);
4088}
4089
4090/* vec_vmsumuhs */
4091
4092static vector unsigned int __attribute__((__always_inline__))
4093vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b,
4094             vector unsigned int __c) {
4095  return __builtin_altivec_vmsumuhs(__a, __b, __c);
4096}
4097
4098/* vec_mtvscr */
4099
4100static void __ATTRS_o_ai vec_mtvscr(vector signed char __a) {
4101  __builtin_altivec_mtvscr((vector int)__a);
4102}
4103
4104static void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) {
4105  __builtin_altivec_mtvscr((vector int)__a);
4106}
4107
4108static void __ATTRS_o_ai vec_mtvscr(vector bool char __a) {
4109  __builtin_altivec_mtvscr((vector int)__a);
4110}
4111
4112static void __ATTRS_o_ai vec_mtvscr(vector short __a) {
4113  __builtin_altivec_mtvscr((vector int)__a);
4114}
4115
4116static void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) {
4117  __builtin_altivec_mtvscr((vector int)__a);
4118}
4119
4120static void __ATTRS_o_ai vec_mtvscr(vector bool short __a) {
4121  __builtin_altivec_mtvscr((vector int)__a);
4122}
4123
4124static void __ATTRS_o_ai vec_mtvscr(vector pixel __a) {
4125  __builtin_altivec_mtvscr((vector int)__a);
4126}
4127
4128static void __ATTRS_o_ai vec_mtvscr(vector int __a) {
4129  __builtin_altivec_mtvscr((vector int)__a);
4130}
4131
4132static void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) {
4133  __builtin_altivec_mtvscr((vector int)__a);
4134}
4135
4136static void __ATTRS_o_ai vec_mtvscr(vector bool int __a) {
4137  __builtin_altivec_mtvscr((vector int)__a);
4138}
4139
4140static void __ATTRS_o_ai vec_mtvscr(vector float __a) {
4141  __builtin_altivec_mtvscr((vector int)__a);
4142}
4143
4144/* vec_mul */
4145
4146/* Integer vector multiplication will involve multiplication of the odd/even
4147   elements separately, then truncating the results and moving to the
4148   result vector.
4149*/
4150static vector signed char __ATTRS_o_ai vec_mul(vector signed char __a,
4151                                               vector signed char __b) {
4152  return __a * __b;
4153}
4154
4155static vector unsigned char __ATTRS_o_ai vec_mul(vector unsigned char __a,
4156                                                 vector unsigned char __b) {
4157  return __a * __b;
4158}
4159
4160static vector signed short __ATTRS_o_ai vec_mul(vector signed short __a,
4161                                                vector signed short __b) {
4162  return __a * __b;
4163}
4164
4165static vector unsigned short __ATTRS_o_ai vec_mul(vector unsigned short __a,
4166                                                  vector unsigned short __b) {
4167  return __a * __b;
4168}
4169
4170static vector signed int __ATTRS_o_ai vec_mul(vector signed int __a,
4171                                              vector signed int __b) {
4172  return __a * __b;
4173}
4174
4175static vector unsigned int __ATTRS_o_ai vec_mul(vector unsigned int __a,
4176                                                vector unsigned int __b) {
4177  return __a * __b;
4178}
4179
4180#ifdef __VSX__
4181static vector signed long long __ATTRS_o_ai
4182vec_mul(vector signed long long __a, vector signed long long __b) {
4183  return __a * __b;
4184}
4185
4186static vector unsigned long long __ATTRS_o_ai
4187vec_mul(vector unsigned long long __a, vector unsigned long long __b) {
4188  return __a * __b;
4189}
4190#endif
4191
4192static vector float __ATTRS_o_ai vec_mul(vector float __a, vector float __b) {
4193  return __a * __b;
4194}
4195
4196#ifdef __VSX__
4197static vector double __ATTRS_o_ai
4198vec_mul(vector double __a, vector double __b) {
4199  return __a * __b;
4200}
4201#endif
4202
4203/* The vmulos* and vmules* instructions have a big endian bias, so
4204   we must reverse the meaning of "even" and "odd" for little endian.  */
4205
4206/* vec_mule */
4207
4208static vector short __ATTRS_o_ai vec_mule(vector signed char __a,
4209                                          vector signed char __b) {
4210#ifdef __LITTLE_ENDIAN__
4211  return __builtin_altivec_vmulosb(__a, __b);
4212#else
4213  return __builtin_altivec_vmulesb(__a, __b);
4214#endif
4215}
4216
4217static vector unsigned short __ATTRS_o_ai vec_mule(vector unsigned char __a,
4218                                                   vector unsigned char __b) {
4219#ifdef __LITTLE_ENDIAN__
4220  return __builtin_altivec_vmuloub(__a, __b);
4221#else
4222  return __builtin_altivec_vmuleub(__a, __b);
4223#endif
4224}
4225
4226static vector int __ATTRS_o_ai vec_mule(vector short __a, vector short __b) {
4227#ifdef __LITTLE_ENDIAN__
4228  return __builtin_altivec_vmulosh(__a, __b);
4229#else
4230  return __builtin_altivec_vmulesh(__a, __b);
4231#endif
4232}
4233
4234static vector unsigned int __ATTRS_o_ai vec_mule(vector unsigned short __a,
4235                                                 vector unsigned short __b) {
4236#ifdef __LITTLE_ENDIAN__
4237  return __builtin_altivec_vmulouh(__a, __b);
4238#else
4239  return __builtin_altivec_vmuleuh(__a, __b);
4240#endif
4241}
4242
4243#ifdef __POWER8_VECTOR__
4244static vector signed long long __ATTRS_o_ai vec_mule(vector signed int __a,
4245                                                     vector signed int __b) {
4246#ifdef __LITTLE_ENDIAN__
4247  return __builtin_altivec_vmulosw(__a, __b);
4248#else
4249  return __builtin_altivec_vmulesw(__a, __b);
4250#endif
4251}
4252
4253static vector unsigned long long __ATTRS_o_ai
4254vec_mule(vector unsigned int __a, vector unsigned int __b) {
4255#ifdef __LITTLE_ENDIAN__
4256  return __builtin_altivec_vmulouw(__a, __b);
4257#else
4258  return __builtin_altivec_vmuleuw(__a, __b);
4259#endif
4260}
4261#endif
4262
4263/* vec_vmulesb */
4264
4265static vector short __attribute__((__always_inline__))
4266vec_vmulesb(vector signed char __a, vector signed char __b) {
4267#ifdef __LITTLE_ENDIAN__
4268  return __builtin_altivec_vmulosb(__a, __b);
4269#else
4270  return __builtin_altivec_vmulesb(__a, __b);
4271#endif
4272}
4273
4274/* vec_vmuleub */
4275
4276static vector unsigned short __attribute__((__always_inline__))
4277vec_vmuleub(vector unsigned char __a, vector unsigned char __b) {
4278#ifdef __LITTLE_ENDIAN__
4279  return __builtin_altivec_vmuloub(__a, __b);
4280#else
4281  return __builtin_altivec_vmuleub(__a, __b);
4282#endif
4283}
4284
4285/* vec_vmulesh */
4286
4287static vector int __attribute__((__always_inline__))
4288vec_vmulesh(vector short __a, vector short __b) {
4289#ifdef __LITTLE_ENDIAN__
4290  return __builtin_altivec_vmulosh(__a, __b);
4291#else
4292  return __builtin_altivec_vmulesh(__a, __b);
4293#endif
4294}
4295
4296/* vec_vmuleuh */
4297
4298static vector unsigned int __attribute__((__always_inline__))
4299vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) {
4300#ifdef __LITTLE_ENDIAN__
4301  return __builtin_altivec_vmulouh(__a, __b);
4302#else
4303  return __builtin_altivec_vmuleuh(__a, __b);
4304#endif
4305}
4306
4307/* vec_mulo */
4308
4309static vector short __ATTRS_o_ai vec_mulo(vector signed char __a,
4310                                          vector signed char __b) {
4311#ifdef __LITTLE_ENDIAN__
4312  return __builtin_altivec_vmulesb(__a, __b);
4313#else
4314  return __builtin_altivec_vmulosb(__a, __b);
4315#endif
4316}
4317
4318static vector unsigned short __ATTRS_o_ai vec_mulo(vector unsigned char __a,
4319                                                   vector unsigned char __b) {
4320#ifdef __LITTLE_ENDIAN__
4321  return __builtin_altivec_vmuleub(__a, __b);
4322#else
4323  return __builtin_altivec_vmuloub(__a, __b);
4324#endif
4325}
4326
4327static vector int __ATTRS_o_ai vec_mulo(vector short __a, vector short __b) {
4328#ifdef __LITTLE_ENDIAN__
4329  return __builtin_altivec_vmulesh(__a, __b);
4330#else
4331  return __builtin_altivec_vmulosh(__a, __b);
4332#endif
4333}
4334
4335static vector unsigned int __ATTRS_o_ai vec_mulo(vector unsigned short __a,
4336                                                 vector unsigned short __b) {
4337#ifdef __LITTLE_ENDIAN__
4338  return __builtin_altivec_vmuleuh(__a, __b);
4339#else
4340  return __builtin_altivec_vmulouh(__a, __b);
4341#endif
4342}
4343
4344#ifdef __POWER8_VECTOR__
4345static vector signed long long __ATTRS_o_ai vec_mulo(vector signed int __a,
4346                                                     vector signed int __b) {
4347#ifdef __LITTLE_ENDIAN__
4348  return __builtin_altivec_vmulesw(__a, __b);
4349#else
4350  return __builtin_altivec_vmulosw(__a, __b);
4351#endif
4352}
4353
4354static vector unsigned long long __ATTRS_o_ai
4355vec_mulo(vector unsigned int __a, vector unsigned int __b) {
4356#ifdef __LITTLE_ENDIAN__
4357  return __builtin_altivec_vmuleuw(__a, __b);
4358#else
4359  return __builtin_altivec_vmulouw(__a, __b);
4360#endif
4361}
4362#endif
4363
4364/* vec_vmulosb */
4365
4366static vector short __attribute__((__always_inline__))
4367vec_vmulosb(vector signed char __a, vector signed char __b) {
4368#ifdef __LITTLE_ENDIAN__
4369  return __builtin_altivec_vmulesb(__a, __b);
4370#else
4371  return __builtin_altivec_vmulosb(__a, __b);
4372#endif
4373}
4374
4375/* vec_vmuloub */
4376
4377static vector unsigned short __attribute__((__always_inline__))
4378vec_vmuloub(vector unsigned char __a, vector unsigned char __b) {
4379#ifdef __LITTLE_ENDIAN__
4380  return __builtin_altivec_vmuleub(__a, __b);
4381#else
4382  return __builtin_altivec_vmuloub(__a, __b);
4383#endif
4384}
4385
4386/* vec_vmulosh */
4387
4388static vector int __attribute__((__always_inline__))
4389vec_vmulosh(vector short __a, vector short __b) {
4390#ifdef __LITTLE_ENDIAN__
4391  return __builtin_altivec_vmulesh(__a, __b);
4392#else
4393  return __builtin_altivec_vmulosh(__a, __b);
4394#endif
4395}
4396
4397/* vec_vmulouh */
4398
4399static vector unsigned int __attribute__((__always_inline__))
4400vec_vmulouh(vector unsigned short __a, vector unsigned short __b) {
4401#ifdef __LITTLE_ENDIAN__
4402  return __builtin_altivec_vmuleuh(__a, __b);
4403#else
4404  return __builtin_altivec_vmulouh(__a, __b);
4405#endif
4406}
4407
4408/*  vec_nand */
4409
4410#ifdef __POWER8_VECTOR__
4411static vector signed char __ATTRS_o_ai vec_nand(vector signed char __a,
4412                                                vector signed char __b) {
4413  return ~(__a & __b);
4414}
4415
4416static vector signed char __ATTRS_o_ai vec_nand(vector signed char __a,
4417                                                vector bool char __b) {
4418  return ~(__a & __b);
4419}
4420
4421static vector signed char __ATTRS_o_ai vec_nand(vector bool char __a,
4422                                                vector signed char __b) {
4423  return ~(__a & __b);
4424}
4425
4426static vector unsigned char __ATTRS_o_ai vec_nand(vector unsigned char __a,
4427                                                  vector unsigned char __b) {
4428  return ~(__a & __b);
4429}
4430
4431static vector unsigned char __ATTRS_o_ai vec_nand(vector unsigned char __a,
4432                                                  vector bool char __b) {
4433  return ~(__a & __b);
4434
4435}
4436
4437static vector unsigned char __ATTRS_o_ai vec_nand(vector bool char __a,
4438                                                  vector unsigned char __b) {
4439  return ~(__a & __b);
4440}
4441
4442static vector signed short __ATTRS_o_ai vec_nand(vector signed short __a,
4443                                                 vector signed short __b) {
4444  return ~(__a & __b);
4445}
4446
4447static vector signed short __ATTRS_o_ai vec_nand(vector signed short __a,
4448                                                 vector bool short __b) {
4449  return ~(__a & __b);
4450}
4451
4452static vector signed short __ATTRS_o_ai vec_nand(vector bool short __a,
4453                                                 vector signed short __b) {
4454  return ~(__a & __b);
4455}
4456
4457static vector unsigned short __ATTRS_o_ai vec_nand(vector unsigned short __a,
4458                                                   vector unsigned short __b) {
4459  return ~(__a & __b);
4460}
4461
4462static vector unsigned short __ATTRS_o_ai vec_nand(vector unsigned short __a,
4463                                                   vector bool short __b) {
4464  return ~(__a & __b);
4465
4466}
4467
4468static vector unsigned short __ATTRS_o_ai vec_nand(vector bool short __a,
4469                                                   vector unsigned short __b) {
4470  return ~(__a & __b);
4471
4472}
4473
4474static vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
4475                                               vector signed int __b) {
4476  return ~(__a & __b);
4477}
4478
4479static vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
4480                                               vector bool int __b) {
4481  return ~(__a & __b);
4482}
4483
4484static vector signed int __ATTRS_o_ai vec_nand(vector bool int __a,
4485                                               vector signed int __b) {
4486  return ~(__a & __b);
4487}
4488
4489static vector unsigned int __ATTRS_o_ai vec_nand(vector unsigned int __a,
4490                                                 vector unsigned int __b) {
4491  return ~(__a & __b);
4492}
4493
4494static vector unsigned int __ATTRS_o_ai vec_nand(vector unsigned int __a,
4495                                                 vector bool int __b) {
4496  return ~(__a & __b);
4497}
4498
4499static vector unsigned int __ATTRS_o_ai vec_nand(vector bool int __a,
4500                                                 vector unsigned int __b) {
4501  return ~(__a & __b);
4502}
4503
4504static vector signed long long __ATTRS_o_ai
4505vec_nand(vector signed long long __a, vector signed long long __b) {
4506  return ~(__a & __b);
4507}
4508
4509static vector signed long long __ATTRS_o_ai
4510vec_nand(vector signed long long __a, vector bool long long __b) {
4511  return ~(__a & __b);
4512}
4513
4514static vector signed long long __ATTRS_o_ai
4515vec_nand(vector bool long long __a, vector signed long long __b) {
4516  return ~(__a & __b);
4517}
4518
4519static vector unsigned long long __ATTRS_o_ai
4520vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
4521  return ~(__a & __b);
4522}
4523
4524static vector unsigned long long __ATTRS_o_ai
4525vec_nand(vector unsigned long long __a, vector bool long long __b) {
4526  return ~(__a & __b);
4527}
4528
4529static vector unsigned long long __ATTRS_o_ai
4530vec_nand(vector bool long long __a, vector unsigned long long __b) {
4531  return ~(__a & __b);
4532}
4533
4534#endif
4535
4536/* vec_nmadd */
4537
4538#ifdef __VSX__
4539static vector float __ATTRS_o_ai
4540vec_nmadd(vector float __a, vector float __b, vector float __c) {
4541  return __builtin_vsx_xvnmaddasp(__a, __b, __c);
4542}
4543
4544static vector double __ATTRS_o_ai
4545vec_nmadd(vector double __a, vector double __b, vector double __c) {
4546  return __builtin_vsx_xvnmaddadp(__a, __b, __c);
4547}
4548#endif
4549
4550/* vec_nmsub */
4551
4552static vector float __ATTRS_o_ai
4553vec_nmsub(vector float __a, vector float __b, vector float __c) {
4554#ifdef __VSX__
4555  return __builtin_vsx_xvnmsubasp(__a, __b, __c);
4556#else
4557  return __builtin_altivec_vnmsubfp(__a, __b, __c);
4558#endif
4559}
4560
4561#ifdef __VSX__
4562static vector double __ATTRS_o_ai
4563vec_nmsub(vector double __a, vector double __b, vector double __c) {
4564  return __builtin_vsx_xvnmsubadp(__a, __b, __c);
4565}
4566#endif
4567
4568/* vec_vnmsubfp */
4569
4570static vector float __attribute__((__always_inline__))
4571vec_vnmsubfp(vector float __a, vector float __b, vector float __c) {
4572  return __builtin_altivec_vnmsubfp(__a, __b, __c);
4573}
4574
4575/* vec_nor */
4576
4577#define __builtin_altivec_vnor vec_nor
4578
4579static vector signed char __ATTRS_o_ai vec_nor(vector signed char __a,
4580                                               vector signed char __b) {
4581  return ~(__a | __b);
4582}
4583
4584static vector unsigned char __ATTRS_o_ai vec_nor(vector unsigned char __a,
4585                                                 vector unsigned char __b) {
4586  return ~(__a | __b);
4587}
4588
4589static vector bool char __ATTRS_o_ai vec_nor(vector bool char __a,
4590                                             vector bool char __b) {
4591  return ~(__a | __b);
4592}
4593
4594static vector short __ATTRS_o_ai vec_nor(vector short __a, vector short __b) {
4595  return ~(__a | __b);
4596}
4597
4598static vector unsigned short __ATTRS_o_ai vec_nor(vector unsigned short __a,
4599                                                  vector unsigned short __b) {
4600  return ~(__a | __b);
4601}
4602
4603static vector bool short __ATTRS_o_ai vec_nor(vector bool short __a,
4604                                              vector bool short __b) {
4605  return ~(__a | __b);
4606}
4607
4608static vector int __ATTRS_o_ai vec_nor(vector int __a, vector int __b) {
4609  return ~(__a | __b);
4610}
4611
4612static vector unsigned int __ATTRS_o_ai vec_nor(vector unsigned int __a,
4613                                                vector unsigned int __b) {
4614  return ~(__a | __b);
4615}
4616
4617static vector bool int __ATTRS_o_ai vec_nor(vector bool int __a,
4618                                            vector bool int __b) {
4619  return ~(__a | __b);
4620}
4621
4622static vector float __ATTRS_o_ai vec_nor(vector float __a, vector float __b) {
4623  vector unsigned int __res =
4624      ~((vector unsigned int)__a | (vector unsigned int)__b);
4625  return (vector float)__res;
4626}
4627
4628#ifdef __VSX__
4629static vector double __ATTRS_o_ai
4630vec_nor(vector double __a, vector double __b) {
4631  vector unsigned long long __res =
4632      ~((vector unsigned long long)__a | (vector unsigned long long)__b);
4633  return (vector double)__res;
4634}
4635#endif
4636
4637/* vec_vnor */
4638
4639static vector signed char __ATTRS_o_ai vec_vnor(vector signed char __a,
4640                                                vector signed char __b) {
4641  return ~(__a | __b);
4642}
4643
4644static vector unsigned char __ATTRS_o_ai vec_vnor(vector unsigned char __a,
4645                                                  vector unsigned char __b) {
4646  return ~(__a | __b);
4647}
4648
4649static vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a,
4650                                              vector bool char __b) {
4651  return ~(__a | __b);
4652}
4653
4654static vector short __ATTRS_o_ai vec_vnor(vector short __a, vector short __b) {
4655  return ~(__a | __b);
4656}
4657
4658static vector unsigned short __ATTRS_o_ai vec_vnor(vector unsigned short __a,
4659                                                   vector unsigned short __b) {
4660  return ~(__a | __b);
4661}
4662
4663static vector bool short __ATTRS_o_ai vec_vnor(vector bool short __a,
4664                                               vector bool short __b) {
4665  return ~(__a | __b);
4666}
4667
4668static vector int __ATTRS_o_ai vec_vnor(vector int __a, vector int __b) {
4669  return ~(__a | __b);
4670}
4671
4672static vector unsigned int __ATTRS_o_ai vec_vnor(vector unsigned int __a,
4673                                                 vector unsigned int __b) {
4674  return ~(__a | __b);
4675}
4676
4677static vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a,
4678                                             vector bool int __b) {
4679  return ~(__a | __b);
4680}
4681
4682static vector float __ATTRS_o_ai vec_vnor(vector float __a, vector float __b) {
4683  vector unsigned int __res =
4684      ~((vector unsigned int)__a | (vector unsigned int)__b);
4685  return (vector float)__res;
4686}
4687
4688#ifdef __VSX__
4689static vector signed long long __ATTRS_o_ai
4690vec_nor(vector signed long long __a, vector signed long long __b) {
4691  return ~(__a | __b);
4692}
4693
4694static vector unsigned long long __ATTRS_o_ai
4695vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
4696  return ~(__a | __b);
4697}
4698
4699static vector bool long long __ATTRS_o_ai vec_nor(vector bool long long __a,
4700                                                  vector bool long long __b) {
4701  return ~(__a | __b);
4702}
4703#endif
4704
4705/* vec_or */
4706
4707#define __builtin_altivec_vor vec_or
4708
4709static vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
4710                                              vector signed char __b) {
4711  return __a | __b;
4712}
4713
4714static vector signed char __ATTRS_o_ai vec_or(vector bool char __a,
4715                                              vector signed char __b) {
4716  return (vector signed char)__a | __b;
4717}
4718
4719static vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
4720                                              vector bool char __b) {
4721  return __a | (vector signed char)__b;
4722}
4723
4724static vector unsigned char __ATTRS_o_ai vec_or(vector unsigned char __a,
4725                                                vector unsigned char __b) {
4726  return __a | __b;
4727}
4728
4729static vector unsigned char __ATTRS_o_ai vec_or(vector bool char __a,
4730                                                vector unsigned char __b) {
4731  return (vector unsigned char)__a | __b;
4732}
4733
4734static vector unsigned char __ATTRS_o_ai vec_or(vector unsigned char __a,
4735                                                vector bool char __b) {
4736  return __a | (vector unsigned char)__b;
4737}
4738
4739static vector bool char __ATTRS_o_ai vec_or(vector bool char __a,
4740                                            vector bool char __b) {
4741  return __a | __b;
4742}
4743
4744static vector short __ATTRS_o_ai vec_or(vector short __a, vector short __b) {
4745  return __a | __b;
4746}
4747
4748static vector short __ATTRS_o_ai vec_or(vector bool short __a,
4749                                        vector short __b) {
4750  return (vector short)__a | __b;
4751}
4752
4753static vector short __ATTRS_o_ai vec_or(vector short __a,
4754                                        vector bool short __b) {
4755  return __a | (vector short)__b;
4756}
4757
4758static vector unsigned short __ATTRS_o_ai vec_or(vector unsigned short __a,
4759                                                 vector unsigned short __b) {
4760  return __a | __b;
4761}
4762
4763static vector unsigned short __ATTRS_o_ai vec_or(vector bool short __a,
4764                                                 vector unsigned short __b) {
4765  return (vector unsigned short)__a | __b;
4766}
4767
4768static vector unsigned short __ATTRS_o_ai vec_or(vector unsigned short __a,
4769                                                 vector bool short __b) {
4770  return __a | (vector unsigned short)__b;
4771}
4772
4773static vector bool short __ATTRS_o_ai vec_or(vector bool short __a,
4774                                             vector bool short __b) {
4775  return __a | __b;
4776}
4777
4778static vector int __ATTRS_o_ai vec_or(vector int __a, vector int __b) {
4779  return __a | __b;
4780}
4781
4782static vector int __ATTRS_o_ai vec_or(vector bool int __a, vector int __b) {
4783  return (vector int)__a | __b;
4784}
4785
4786static vector int __ATTRS_o_ai vec_or(vector int __a, vector bool int __b) {
4787  return __a | (vector int)__b;
4788}
4789
4790static vector unsigned int __ATTRS_o_ai vec_or(vector unsigned int __a,
4791                                               vector unsigned int __b) {
4792  return __a | __b;
4793}
4794
4795static vector unsigned int __ATTRS_o_ai vec_or(vector bool int __a,
4796                                               vector unsigned int __b) {
4797  return (vector unsigned int)__a | __b;
4798}
4799
4800static vector unsigned int __ATTRS_o_ai vec_or(vector unsigned int __a,
4801                                               vector bool int __b) {
4802  return __a | (vector unsigned int)__b;
4803}
4804
4805static vector bool int __ATTRS_o_ai vec_or(vector bool int __a,
4806                                           vector bool int __b) {
4807  return __a | __b;
4808}
4809
4810static vector float __ATTRS_o_ai vec_or(vector float __a, vector float __b) {
4811  vector unsigned int __res =
4812      (vector unsigned int)__a | (vector unsigned int)__b;
4813  return (vector float)__res;
4814}
4815
4816static vector float __ATTRS_o_ai vec_or(vector bool int __a, vector float __b) {
4817  vector unsigned int __res =
4818      (vector unsigned int)__a | (vector unsigned int)__b;
4819  return (vector float)__res;
4820}
4821
4822static vector float __ATTRS_o_ai vec_or(vector float __a, vector bool int __b) {
4823  vector unsigned int __res =
4824      (vector unsigned int)__a | (vector unsigned int)__b;
4825  return (vector float)__res;
4826}
4827
4828#ifdef __VSX__
4829static vector double __ATTRS_o_ai vec_or(vector bool long long __a,
4830                                         vector double __b) {
4831  return (vector unsigned long long)__a | (vector unsigned long long)__b;
4832}
4833
4834static vector double __ATTRS_o_ai vec_or(vector double __a,
4835                                         vector bool long long __b) {
4836  return (vector unsigned long long)__a | (vector unsigned long long)__b;
4837}
4838
4839static vector double __ATTRS_o_ai vec_or(vector double __a, vector double __b) {
4840  vector unsigned long long __res =
4841      (vector unsigned long long)__a | (vector unsigned long long)__b;
4842  return (vector double)__res;
4843}
4844
4845static vector signed long long __ATTRS_o_ai
4846vec_or(vector signed long long __a, vector signed long long __b) {
4847  return __a | __b;
4848}
4849
4850static vector signed long long __ATTRS_o_ai
4851vec_or(vector bool long long __a, vector signed long long __b) {
4852  return (vector signed long long)__a | __b;
4853}
4854
4855static vector signed long long __ATTRS_o_ai vec_or(vector signed long long __a,
4856                                                   vector bool long long __b) {
4857  return __a | (vector signed long long)__b;
4858}
4859
4860static vector unsigned long long __ATTRS_o_ai
4861vec_or(vector unsigned long long __a, vector unsigned long long __b) {
4862  return __a | __b;
4863}
4864
4865static vector unsigned long long __ATTRS_o_ai
4866vec_or(vector bool long long __a, vector unsigned long long __b) {
4867  return (vector unsigned long long)__a | __b;
4868}
4869
4870static vector unsigned long long __ATTRS_o_ai
4871vec_or(vector unsigned long long __a, vector bool long long __b) {
4872  return __a | (vector unsigned long long)__b;
4873}
4874
4875static vector bool long long __ATTRS_o_ai vec_or(vector bool long long __a,
4876                                                 vector bool long long __b) {
4877  return __a | __b;
4878}
4879#endif
4880
4881#ifdef __POWER8_VECTOR__
4882static vector signed char __ATTRS_o_ai vec_orc(vector signed char __a,
4883                                               vector signed char __b) {
4884  return __a | ~__b;
4885}
4886
4887static vector signed char __ATTRS_o_ai vec_orc(vector signed char __a,
4888                                               vector bool char __b) {
4889  return __a | ~__b;
4890}
4891
4892static vector signed char __ATTRS_o_ai vec_orc(vector bool char __a,
4893                                               vector signed char __b) {
4894  return __a | ~__b;
4895}
4896
4897static vector unsigned char __ATTRS_o_ai vec_orc(vector unsigned char __a,
4898                                                 vector unsigned char __b) {
4899  return __a | ~__b;
4900}
4901
4902static vector unsigned char __ATTRS_o_ai vec_orc(vector unsigned char __a,
4903                                                 vector bool char __b) {
4904  return __a | ~__b;
4905}
4906
4907static vector unsigned char __ATTRS_o_ai vec_orc(vector bool char __a,
4908                                                 vector unsigned char __b) {
4909  return __a | ~__b;
4910}
4911
4912static vector signed short __ATTRS_o_ai vec_orc(vector signed short __a,
4913                                                vector signed short __b) {
4914  return __a | ~__b;
4915}
4916
4917static vector signed short __ATTRS_o_ai vec_orc(vector signed short __a,
4918                                                vector bool short __b) {
4919  return __a | ~__b;
4920}
4921
4922static vector signed short __ATTRS_o_ai vec_orc(vector bool short __a,
4923                                                vector signed short __b) {
4924  return __a | ~__b;
4925}
4926
4927static vector unsigned short __ATTRS_o_ai vec_orc(vector unsigned short __a,
4928                                                  vector unsigned short __b) {
4929  return __a | ~__b;
4930}
4931
4932static vector unsigned short __ATTRS_o_ai vec_orc(vector unsigned short __a,
4933                                                  vector bool short __b) {
4934  return __a | ~__b;
4935}
4936
4937static vector unsigned short __ATTRS_o_ai
4938vec_orc(vector bool short __a, vector unsigned short __b) {
4939  return __a | ~__b;
4940}
4941
4942static vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
4943                                              vector signed int __b) {
4944  return __a | ~__b;
4945}
4946
4947static vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
4948                                              vector bool int __b) {
4949  return __a | ~__b;
4950}
4951
4952static vector signed int __ATTRS_o_ai vec_orc(vector bool int __a,
4953                                              vector signed int __b) {
4954  return __a | ~__b;
4955}
4956
4957static vector unsigned int __ATTRS_o_ai vec_orc(vector unsigned int __a,
4958                                                vector unsigned int __b) {
4959  return __a | ~__b;
4960}
4961
4962static vector unsigned int __ATTRS_o_ai vec_orc(vector unsigned int __a,
4963                                                vector bool int __b) {
4964  return __a | ~__b;
4965}
4966
4967static vector unsigned int __ATTRS_o_ai vec_orc(vector bool int __a,
4968                                                vector unsigned int __b) {
4969  return __a | ~__b;
4970}
4971
4972static vector signed long long __ATTRS_o_ai
4973vec_orc(vector signed long long __a, vector signed long long __b) {
4974  return __a | ~__b;
4975}
4976
4977static vector signed long long __ATTRS_o_ai vec_orc(vector signed long long __a,
4978                                                    vector bool long long __b) {
4979  return __a | ~__b;
4980}
4981
4982static vector signed long long __ATTRS_o_ai
4983vec_orc(vector bool long long __a, vector signed long long __b) {
4984  return __a | ~__b;
4985}
4986
4987static vector unsigned long long __ATTRS_o_ai
4988vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
4989  return __a | ~__b;
4990}
4991
4992static vector unsigned long long __ATTRS_o_ai
4993vec_orc(vector unsigned long long __a, vector bool long long __b) {
4994  return __a | ~__b;
4995}
4996
4997static vector unsigned long long __ATTRS_o_ai
4998vec_orc(vector bool long long __a, vector unsigned long long __b) {
4999  return __a | ~__b;
5000}
5001#endif
5002
5003/* vec_vor */
5004
5005static vector signed char __ATTRS_o_ai vec_vor(vector signed char __a,
5006                                               vector signed char __b) {
5007  return __a | __b;
5008}
5009
5010static vector signed char __ATTRS_o_ai vec_vor(vector bool char __a,
5011                                               vector signed char __b) {
5012  return (vector signed char)__a | __b;
5013}
5014
5015static vector signed char __ATTRS_o_ai vec_vor(vector signed char __a,
5016                                               vector bool char __b) {
5017  return __a | (vector signed char)__b;
5018}
5019
5020static vector unsigned char __ATTRS_o_ai vec_vor(vector unsigned char __a,
5021                                                 vector unsigned char __b) {
5022  return __a | __b;
5023}
5024
5025static vector unsigned char __ATTRS_o_ai vec_vor(vector bool char __a,
5026                                                 vector unsigned char __b) {
5027  return (vector unsigned char)__a | __b;
5028}
5029
5030static vector unsigned char __ATTRS_o_ai vec_vor(vector unsigned char __a,
5031                                                 vector bool char __b) {
5032  return __a | (vector unsigned char)__b;
5033}
5034
5035static vector bool char __ATTRS_o_ai vec_vor(vector bool char __a,
5036                                             vector bool char __b) {
5037  return __a | __b;
5038}
5039
5040static vector short __ATTRS_o_ai vec_vor(vector short __a, vector short __b) {
5041  return __a | __b;
5042}
5043
5044static vector short __ATTRS_o_ai vec_vor(vector bool short __a,
5045                                         vector short __b) {
5046  return (vector short)__a | __b;
5047}
5048
5049static vector short __ATTRS_o_ai vec_vor(vector short __a,
5050                                         vector bool short __b) {
5051  return __a | (vector short)__b;
5052}
5053
5054static vector unsigned short __ATTRS_o_ai vec_vor(vector unsigned short __a,
5055                                                  vector unsigned short __b) {
5056  return __a | __b;
5057}
5058
5059static vector unsigned short __ATTRS_o_ai vec_vor(vector bool short __a,
5060                                                  vector unsigned short __b) {
5061  return (vector unsigned short)__a | __b;
5062}
5063
5064static vector unsigned short __ATTRS_o_ai vec_vor(vector unsigned short __a,
5065                                                  vector bool short __b) {
5066  return __a | (vector unsigned short)__b;
5067}
5068
5069static vector bool short __ATTRS_o_ai vec_vor(vector bool short __a,
5070                                              vector bool short __b) {
5071  return __a | __b;
5072}
5073
5074static vector int __ATTRS_o_ai vec_vor(vector int __a, vector int __b) {
5075  return __a | __b;
5076}
5077
5078static vector int __ATTRS_o_ai vec_vor(vector bool int __a, vector int __b) {
5079  return (vector int)__a | __b;
5080}
5081
5082static vector int __ATTRS_o_ai vec_vor(vector int __a, vector bool int __b) {
5083  return __a | (vector int)__b;
5084}
5085
5086static vector unsigned int __ATTRS_o_ai vec_vor(vector unsigned int __a,
5087                                                vector unsigned int __b) {
5088  return __a | __b;
5089}
5090
5091static vector unsigned int __ATTRS_o_ai vec_vor(vector bool int __a,
5092                                                vector unsigned int __b) {
5093  return (vector unsigned int)__a | __b;
5094}
5095
5096static vector unsigned int __ATTRS_o_ai vec_vor(vector unsigned int __a,
5097                                                vector bool int __b) {
5098  return __a | (vector unsigned int)__b;
5099}
5100
5101static vector bool int __ATTRS_o_ai vec_vor(vector bool int __a,
5102                                            vector bool int __b) {
5103  return __a | __b;
5104}
5105
5106static vector float __ATTRS_o_ai vec_vor(vector float __a, vector float __b) {
5107  vector unsigned int __res =
5108      (vector unsigned int)__a | (vector unsigned int)__b;
5109  return (vector float)__res;
5110}
5111
5112static vector float __ATTRS_o_ai vec_vor(vector bool int __a,
5113                                         vector float __b) {
5114  vector unsigned int __res =
5115      (vector unsigned int)__a | (vector unsigned int)__b;
5116  return (vector float)__res;
5117}
5118
5119static vector float __ATTRS_o_ai vec_vor(vector float __a,
5120                                         vector bool int __b) {
5121  vector unsigned int __res =
5122      (vector unsigned int)__a | (vector unsigned int)__b;
5123  return (vector float)__res;
5124}
5125
5126#ifdef __VSX__
5127static vector signed long long __ATTRS_o_ai
5128vec_vor(vector signed long long __a, vector signed long long __b) {
5129  return __a | __b;
5130}
5131
5132static vector signed long long __ATTRS_o_ai
5133vec_vor(vector bool long long __a, vector signed long long __b) {
5134  return (vector signed long long)__a | __b;
5135}
5136
5137static vector signed long long __ATTRS_o_ai vec_vor(vector signed long long __a,
5138                                                    vector bool long long __b) {
5139  return __a | (vector signed long long)__b;
5140}
5141
5142static vector unsigned long long __ATTRS_o_ai
5143vec_vor(vector unsigned long long __a, vector unsigned long long __b) {
5144  return __a | __b;
5145}
5146
5147static vector unsigned long long __ATTRS_o_ai
5148vec_vor(vector bool long long __a, vector unsigned long long __b) {
5149  return (vector unsigned long long)__a | __b;
5150}
5151
5152static vector unsigned long long __ATTRS_o_ai
5153vec_vor(vector unsigned long long __a, vector bool long long __b) {
5154  return __a | (vector unsigned long long)__b;
5155}
5156
5157static vector bool long long __ATTRS_o_ai vec_vor(vector bool long long __a,
5158                                                  vector bool long long __b) {
5159  return __a | __b;
5160}
5161#endif
5162
5163/* vec_pack */
5164
5165/* The various vector pack instructions have a big-endian bias, so for
5166   little endian we must handle reversed element numbering.  */
5167
5168static vector signed char __ATTRS_o_ai vec_pack(vector signed short __a,
5169                                                vector signed short __b) {
5170#ifdef __LITTLE_ENDIAN__
5171  return (vector signed char)vec_perm(
5172      __a, __b,
5173      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5174                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5175#else
5176  return (vector signed char)vec_perm(
5177      __a, __b,
5178      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5179                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5180#endif
5181}
5182
5183static vector unsigned char __ATTRS_o_ai vec_pack(vector unsigned short __a,
5184                                                  vector unsigned short __b) {
5185#ifdef __LITTLE_ENDIAN__
5186  return (vector unsigned char)vec_perm(
5187      __a, __b,
5188      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5189                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5190#else
5191  return (vector unsigned char)vec_perm(
5192      __a, __b,
5193      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5194                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5195#endif
5196}
5197
5198static vector bool char __ATTRS_o_ai vec_pack(vector bool short __a,
5199                                              vector bool short __b) {
5200#ifdef __LITTLE_ENDIAN__
5201  return (vector bool char)vec_perm(
5202      __a, __b,
5203      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5204                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5205#else
5206  return (vector bool char)vec_perm(
5207      __a, __b,
5208      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5209                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5210#endif
5211}
5212
5213static vector short __ATTRS_o_ai vec_pack(vector int __a, vector int __b) {
5214#ifdef __LITTLE_ENDIAN__
5215  return (vector short)vec_perm(
5216      __a, __b,
5217      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5218                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5219#else
5220  return (vector short)vec_perm(
5221      __a, __b,
5222      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5223                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5224#endif
5225}
5226
5227static vector unsigned short __ATTRS_o_ai vec_pack(vector unsigned int __a,
5228                                                   vector unsigned int __b) {
5229#ifdef __LITTLE_ENDIAN__
5230  return (vector unsigned short)vec_perm(
5231      __a, __b,
5232      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5233                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5234#else
5235  return (vector unsigned short)vec_perm(
5236      __a, __b,
5237      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5238                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5239#endif
5240}
5241
5242static vector bool short __ATTRS_o_ai vec_pack(vector bool int __a,
5243                                               vector bool int __b) {
5244#ifdef __LITTLE_ENDIAN__
5245  return (vector bool short)vec_perm(
5246      __a, __b,
5247      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5248                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5249#else
5250  return (vector bool short)vec_perm(
5251      __a, __b,
5252      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5253                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5254#endif
5255}
5256
5257#ifdef __VSX__
5258static vector signed int __ATTRS_o_ai vec_pack(vector signed long long __a,
5259                                               vector signed long long __b) {
5260#ifdef __LITTLE_ENDIAN__
5261  return (vector signed int)vec_perm(
5262      __a, __b,
5263      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5264                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5265#else
5266  return (vector signed int)vec_perm(
5267      __a, __b,
5268      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5269                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5270#endif
5271}
5272static vector unsigned int __ATTRS_o_ai
5273vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
5274#ifdef __LITTLE_ENDIAN__
5275  return (vector unsigned int)vec_perm(
5276      __a, __b,
5277      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5278                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5279#else
5280  return (vector unsigned int)vec_perm(
5281      __a, __b,
5282      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5283                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5284#endif
5285}
5286
5287static vector bool int __ATTRS_o_ai vec_pack(vector bool long long __a,
5288                                             vector bool long long __b) {
5289#ifdef __LITTLE_ENDIAN__
5290  return (vector bool int)vec_perm(
5291      __a, __b,
5292      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5293                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5294#else
5295  return (vector bool int)vec_perm(
5296      __a, __b,
5297      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5298                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5299#endif
5300}
5301
5302#endif
5303
5304/* vec_vpkuhum */
5305
5306#define __builtin_altivec_vpkuhum vec_vpkuhum
5307
5308static vector signed char __ATTRS_o_ai vec_vpkuhum(vector signed short __a,
5309                                                   vector signed short __b) {
5310#ifdef __LITTLE_ENDIAN__
5311  return (vector signed char)vec_perm(
5312      __a, __b,
5313      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5314                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5315#else
5316  return (vector signed char)vec_perm(
5317      __a, __b,
5318      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5319                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5320#endif
5321}
5322
5323static vector unsigned char __ATTRS_o_ai
5324vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) {
5325#ifdef __LITTLE_ENDIAN__
5326  return (vector unsigned char)vec_perm(
5327      __a, __b,
5328      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5329                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5330#else
5331  return (vector unsigned char)vec_perm(
5332      __a, __b,
5333      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5334                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5335#endif
5336}
5337
5338static vector bool char __ATTRS_o_ai vec_vpkuhum(vector bool short __a,
5339                                                 vector bool short __b) {
5340#ifdef __LITTLE_ENDIAN__
5341  return (vector bool char)vec_perm(
5342      __a, __b,
5343      (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5344                             0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5345#else
5346  return (vector bool char)vec_perm(
5347      __a, __b,
5348      (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5349                             0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5350#endif
5351}
5352
5353/* vec_vpkuwum */
5354
5355#define __builtin_altivec_vpkuwum vec_vpkuwum
5356
5357static vector short __ATTRS_o_ai vec_vpkuwum(vector int __a, vector int __b) {
5358#ifdef __LITTLE_ENDIAN__
5359  return (vector short)vec_perm(
5360      __a, __b,
5361      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5362                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5363#else
5364  return (vector short)vec_perm(
5365      __a, __b,
5366      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5367                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5368#endif
5369}
5370
5371static vector unsigned short __ATTRS_o_ai vec_vpkuwum(vector unsigned int __a,
5372                                                      vector unsigned int __b) {
5373#ifdef __LITTLE_ENDIAN__
5374  return (vector unsigned short)vec_perm(
5375      __a, __b,
5376      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5377                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5378#else
5379  return (vector unsigned short)vec_perm(
5380      __a, __b,
5381      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5382                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5383#endif
5384}
5385
5386static vector bool short __ATTRS_o_ai vec_vpkuwum(vector bool int __a,
5387                                                  vector bool int __b) {
5388#ifdef __LITTLE_ENDIAN__
5389  return (vector bool short)vec_perm(
5390      __a, __b,
5391      (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5392                             0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5393#else
5394  return (vector bool short)vec_perm(
5395      __a, __b,
5396      (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5397                             0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5398#endif
5399}
5400
5401/* vec_vpkudum */
5402
5403#ifdef __POWER8_VECTOR__
5404#define __builtin_altivec_vpkudum vec_vpkudum
5405
5406static vector int __ATTRS_o_ai vec_vpkudum(vector long long __a,
5407                                           vector long long __b) {
5408#ifdef __LITTLE_ENDIAN__
5409  return (vector int)vec_perm(
5410      __a, __b,
5411      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5412                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5413#else
5414  return (vector int)vec_perm(
5415      __a, __b,
5416      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5417                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5418#endif
5419}
5420
5421static vector unsigned int __ATTRS_o_ai
5422vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) {
5423#ifdef __LITTLE_ENDIAN__
5424  return (vector unsigned int)vec_perm(
5425      __a, __b,
5426      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5427                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5428#else
5429  return (vector unsigned int)vec_perm(
5430      __a, __b,
5431      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5432                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5433#endif
5434}
5435
5436static vector bool int __ATTRS_o_ai vec_vpkudum(vector bool long long __a,
5437                                                vector bool long long __b) {
5438#ifdef __LITTLE_ENDIAN__
5439  return (vector bool int)vec_perm(
5440      (vector long long)__a, (vector long long)__b,
5441      (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5442                             0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5443#else
5444  return (vector bool int)vec_perm(
5445      (vector long long)__a, (vector long long)__b,
5446      (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5447                             0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5448#endif
5449}
5450#endif
5451
5452/* vec_packpx */
5453
5454static vector pixel __attribute__((__always_inline__))
5455vec_packpx(vector unsigned int __a, vector unsigned int __b) {
5456#ifdef __LITTLE_ENDIAN__
5457  return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
5458#else
5459  return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
5460#endif
5461}
5462
5463/* vec_vpkpx */
5464
5465static vector pixel __attribute__((__always_inline__))
5466vec_vpkpx(vector unsigned int __a, vector unsigned int __b) {
5467#ifdef __LITTLE_ENDIAN__
5468  return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
5469#else
5470  return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
5471#endif
5472}
5473
5474/* vec_packs */
5475
5476static vector signed char __ATTRS_o_ai vec_packs(vector short __a,
5477                                                 vector short __b) {
5478#ifdef __LITTLE_ENDIAN__
5479  return __builtin_altivec_vpkshss(__b, __a);
5480#else
5481  return __builtin_altivec_vpkshss(__a, __b);
5482#endif
5483}
5484
5485static vector unsigned char __ATTRS_o_ai vec_packs(vector unsigned short __a,
5486                                                   vector unsigned short __b) {
5487#ifdef __LITTLE_ENDIAN__
5488  return __builtin_altivec_vpkuhus(__b, __a);
5489#else
5490  return __builtin_altivec_vpkuhus(__a, __b);
5491#endif
5492}
5493
5494static vector signed short __ATTRS_o_ai vec_packs(vector int __a,
5495                                                  vector int __b) {
5496#ifdef __LITTLE_ENDIAN__
5497  return __builtin_altivec_vpkswss(__b, __a);
5498#else
5499  return __builtin_altivec_vpkswss(__a, __b);
5500#endif
5501}
5502
5503static vector unsigned short __ATTRS_o_ai vec_packs(vector unsigned int __a,
5504                                                    vector unsigned int __b) {
5505#ifdef __LITTLE_ENDIAN__
5506  return __builtin_altivec_vpkuwus(__b, __a);
5507#else
5508  return __builtin_altivec_vpkuwus(__a, __b);
5509#endif
5510}
5511
5512#ifdef __POWER8_VECTOR__
5513static vector int __ATTRS_o_ai vec_packs(vector long long __a,
5514                                         vector long long __b) {
5515#ifdef __LITTLE_ENDIAN__
5516  return __builtin_altivec_vpksdss(__b, __a);
5517#else
5518  return __builtin_altivec_vpksdss(__a, __b);
5519#endif
5520}
5521
5522static vector unsigned int __ATTRS_o_ai
5523vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
5524#ifdef __LITTLE_ENDIAN__
5525  return __builtin_altivec_vpkudus(__b, __a);
5526#else
5527  return __builtin_altivec_vpkudus(__a, __b);
5528#endif
5529}
5530#endif
5531
5532/* vec_vpkshss */
5533
5534static vector signed char __attribute__((__always_inline__))
5535vec_vpkshss(vector short __a, vector short __b) {
5536#ifdef __LITTLE_ENDIAN__
5537  return __builtin_altivec_vpkshss(__b, __a);
5538#else
5539  return __builtin_altivec_vpkshss(__a, __b);
5540#endif
5541}
5542
5543/* vec_vpksdss */
5544
5545#ifdef __POWER8_VECTOR__
5546static vector int __ATTRS_o_ai vec_vpksdss(vector long long __a,
5547                                           vector long long __b) {
5548#ifdef __LITTLE_ENDIAN__
5549  return __builtin_altivec_vpksdss(__b, __a);
5550#else
5551  return __builtin_altivec_vpksdss(__a, __b);
5552#endif
5553}
5554#endif
5555
5556/* vec_vpkuhus */
5557
5558static vector unsigned char __attribute__((__always_inline__))
5559vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) {
5560#ifdef __LITTLE_ENDIAN__
5561  return __builtin_altivec_vpkuhus(__b, __a);
5562#else
5563  return __builtin_altivec_vpkuhus(__a, __b);
5564#endif
5565}
5566
5567/* vec_vpkudus */
5568
5569#ifdef __POWER8_VECTOR__
5570static vector unsigned int __attribute__((__always_inline__))
5571vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) {
5572#ifdef __LITTLE_ENDIAN__
5573  return __builtin_altivec_vpkudus(__b, __a);
5574#else
5575  return __builtin_altivec_vpkudus(__a, __b);
5576#endif
5577}
5578#endif
5579
5580/* vec_vpkswss */
5581
5582static vector signed short __attribute__((__always_inline__))
5583vec_vpkswss(vector int __a, vector int __b) {
5584#ifdef __LITTLE_ENDIAN__
5585  return __builtin_altivec_vpkswss(__b, __a);
5586#else
5587  return __builtin_altivec_vpkswss(__a, __b);
5588#endif
5589}
5590
5591/* vec_vpkuwus */
5592
5593static vector unsigned short __attribute__((__always_inline__))
5594vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) {
5595#ifdef __LITTLE_ENDIAN__
5596  return __builtin_altivec_vpkuwus(__b, __a);
5597#else
5598  return __builtin_altivec_vpkuwus(__a, __b);
5599#endif
5600}
5601
5602/* vec_packsu */
5603
5604static vector unsigned char __ATTRS_o_ai vec_packsu(vector short __a,
5605                                                    vector short __b) {
5606#ifdef __LITTLE_ENDIAN__
5607  return __builtin_altivec_vpkshus(__b, __a);
5608#else
5609  return __builtin_altivec_vpkshus(__a, __b);
5610#endif
5611}
5612
5613static vector unsigned char __ATTRS_o_ai vec_packsu(vector unsigned short __a,
5614                                                    vector unsigned short __b) {
5615#ifdef __LITTLE_ENDIAN__
5616  return __builtin_altivec_vpkuhus(__b, __a);
5617#else
5618  return __builtin_altivec_vpkuhus(__a, __b);
5619#endif
5620}
5621
5622static vector unsigned short __ATTRS_o_ai vec_packsu(vector int __a,
5623                                                     vector int __b) {
5624#ifdef __LITTLE_ENDIAN__
5625  return __builtin_altivec_vpkswus(__b, __a);
5626#else
5627  return __builtin_altivec_vpkswus(__a, __b);
5628#endif
5629}
5630
5631static vector unsigned short __ATTRS_o_ai vec_packsu(vector unsigned int __a,
5632                                                     vector unsigned int __b) {
5633#ifdef __LITTLE_ENDIAN__
5634  return __builtin_altivec_vpkuwus(__b, __a);
5635#else
5636  return __builtin_altivec_vpkuwus(__a, __b);
5637#endif
5638}
5639
5640#ifdef __POWER8_VECTOR__
5641static vector unsigned int __ATTRS_o_ai vec_packsu(vector long long __a,
5642                                                   vector long long __b) {
5643#ifdef __LITTLE_ENDIAN__
5644  return __builtin_altivec_vpksdus(__b, __a);
5645#else
5646  return __builtin_altivec_vpksdus(__a, __b);
5647#endif
5648}
5649
5650static vector unsigned int __ATTRS_o_ai
5651vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
5652#ifdef __LITTLE_ENDIAN__
5653  return __builtin_altivec_vpkudus(__b, __a);
5654#else
5655  return __builtin_altivec_vpkudus(__a, __b);
5656#endif
5657}
5658#endif
5659
5660/* vec_vpkshus */
5661
5662static vector unsigned char __ATTRS_o_ai vec_vpkshus(vector short __a,
5663                                                     vector short __b) {
5664#ifdef __LITTLE_ENDIAN__
5665  return __builtin_altivec_vpkshus(__b, __a);
5666#else
5667  return __builtin_altivec_vpkshus(__a, __b);
5668#endif
5669}
5670
5671static vector unsigned char __ATTRS_o_ai
5672vec_vpkshus(vector unsigned short __a, vector unsigned short __b) {
5673#ifdef __LITTLE_ENDIAN__
5674  return __builtin_altivec_vpkuhus(__b, __a);
5675#else
5676  return __builtin_altivec_vpkuhus(__a, __b);
5677#endif
5678}
5679
5680/* vec_vpkswus */
5681
5682static vector unsigned short __ATTRS_o_ai vec_vpkswus(vector int __a,
5683                                                      vector int __b) {
5684#ifdef __LITTLE_ENDIAN__
5685  return __builtin_altivec_vpkswus(__b, __a);
5686#else
5687  return __builtin_altivec_vpkswus(__a, __b);
5688#endif
5689}
5690
5691static vector unsigned short __ATTRS_o_ai vec_vpkswus(vector unsigned int __a,
5692                                                      vector unsigned int __b) {
5693#ifdef __LITTLE_ENDIAN__
5694  return __builtin_altivec_vpkuwus(__b, __a);
5695#else
5696  return __builtin_altivec_vpkuwus(__a, __b);
5697#endif
5698}
5699
5700/* vec_vpksdus */
5701
5702#ifdef __POWER8_VECTOR__
5703static vector unsigned int __ATTRS_o_ai vec_vpksdus(vector long long __a,
5704                                                    vector long long __b) {
5705#ifdef __LITTLE_ENDIAN__
5706  return __builtin_altivec_vpksdus(__b, __a);
5707#else
5708  return __builtin_altivec_vpksdus(__a, __b);
5709#endif
5710}
5711#endif
5712
5713/* vec_perm */
5714
5715// The vperm instruction is defined architecturally with a big-endian bias.
5716// For little endian, we swap the input operands and invert the permute
5717// control vector.  Only the rightmost 5 bits matter, so we could use
5718// a vector of all 31s instead of all 255s to perform the inversion.
5719// However, when the PCV is not a constant, using 255 has an advantage
5720// in that the vec_xor can be recognized as a vec_nor (and for P8 and
5721// later, possibly a vec_nand).
5722
5723static vector signed char __ATTRS_o_ai vec_perm(vector signed char __a,
5724                                                vector signed char __b,
5725                                                vector unsigned char __c) {
5726#ifdef __LITTLE_ENDIAN__
5727  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5728                              255, 255, 255, 255, 255, 255, 255, 255};
5729  __d = vec_xor(__c, __d);
5730  return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b,
5731                                                         (vector int)__a, __d);
5732#else
5733  return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a,
5734                                                         (vector int)__b, __c);
5735#endif
5736}
5737
5738static vector unsigned char __ATTRS_o_ai vec_perm(vector unsigned char __a,
5739                                                  vector unsigned char __b,
5740                                                  vector unsigned char __c) {
5741#ifdef __LITTLE_ENDIAN__
5742  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5743                              255, 255, 255, 255, 255, 255, 255, 255};
5744  __d = vec_xor(__c, __d);
5745  return (vector unsigned char)__builtin_altivec_vperm_4si(
5746      (vector int)__b, (vector int)__a, __d);
5747#else
5748  return (vector unsigned char)__builtin_altivec_vperm_4si(
5749      (vector int)__a, (vector int)__b, __c);
5750#endif
5751}
5752
5753static vector bool char __ATTRS_o_ai vec_perm(vector bool char __a,
5754                                              vector bool char __b,
5755                                              vector unsigned char __c) {
5756#ifdef __LITTLE_ENDIAN__
5757  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5758                              255, 255, 255, 255, 255, 255, 255, 255};
5759  __d = vec_xor(__c, __d);
5760  return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b,
5761                                                       (vector int)__a, __d);
5762#else
5763  return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a,
5764                                                       (vector int)__b, __c);
5765#endif
5766}
5767
5768static vector short __ATTRS_o_ai vec_perm(vector signed short __a,
5769                                          vector signed short __b,
5770                                          vector unsigned char __c) {
5771#ifdef __LITTLE_ENDIAN__
5772  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5773                              255, 255, 255, 255, 255, 255, 255, 255};
5774  __d = vec_xor(__c, __d);
5775  return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b,
5776                                                          (vector int)__a, __d);
5777#else
5778  return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a,
5779                                                          (vector int)__b, __c);
5780#endif
5781}
5782
5783static vector unsigned short __ATTRS_o_ai vec_perm(vector unsigned short __a,
5784                                                   vector unsigned short __b,
5785                                                   vector unsigned char __c) {
5786#ifdef __LITTLE_ENDIAN__
5787  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5788                              255, 255, 255, 255, 255, 255, 255, 255};
5789  __d = vec_xor(__c, __d);
5790  return (vector unsigned short)__builtin_altivec_vperm_4si(
5791      (vector int)__b, (vector int)__a, __d);
5792#else
5793  return (vector unsigned short)__builtin_altivec_vperm_4si(
5794      (vector int)__a, (vector int)__b, __c);
5795#endif
5796}
5797
5798static vector bool short __ATTRS_o_ai vec_perm(vector bool short __a,
5799                                               vector bool short __b,
5800                                               vector unsigned char __c) {
5801#ifdef __LITTLE_ENDIAN__
5802  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5803                              255, 255, 255, 255, 255, 255, 255, 255};
5804  __d = vec_xor(__c, __d);
5805  return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b,
5806                                                        (vector int)__a, __d);
5807#else
5808  return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a,
5809                                                        (vector int)__b, __c);
5810#endif
5811}
5812
5813static vector pixel __ATTRS_o_ai vec_perm(vector pixel __a, vector pixel __b,
5814                                          vector unsigned char __c) {
5815#ifdef __LITTLE_ENDIAN__
5816  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5817                              255, 255, 255, 255, 255, 255, 255, 255};
5818  __d = vec_xor(__c, __d);
5819  return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b,
5820                                                   (vector int)__a, __d);
5821#else
5822  return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a,
5823                                                   (vector int)__b, __c);
5824#endif
5825}
5826
5827static vector int __ATTRS_o_ai vec_perm(vector signed int __a,
5828                                        vector signed int __b,
5829                                        vector unsigned char __c) {
5830#ifdef __LITTLE_ENDIAN__
5831  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5832                              255, 255, 255, 255, 255, 255, 255, 255};
5833  __d = vec_xor(__c, __d);
5834  return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d);
5835#else
5836  return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c);
5837#endif
5838}
5839
5840static vector unsigned int __ATTRS_o_ai vec_perm(vector unsigned int __a,
5841                                                 vector unsigned int __b,
5842                                                 vector unsigned char __c) {
5843#ifdef __LITTLE_ENDIAN__
5844  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5845                              255, 255, 255, 255, 255, 255, 255, 255};
5846  __d = vec_xor(__c, __d);
5847  return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b,
5848                                                          (vector int)__a, __d);
5849#else
5850  return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a,
5851                                                          (vector int)__b, __c);
5852#endif
5853}
5854
5855static vector bool int __ATTRS_o_ai vec_perm(vector bool int __a,
5856                                             vector bool int __b,
5857                                             vector unsigned char __c) {
5858#ifdef __LITTLE_ENDIAN__
5859  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5860                              255, 255, 255, 255, 255, 255, 255, 255};
5861  __d = vec_xor(__c, __d);
5862  return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b,
5863                                                      (vector int)__a, __d);
5864#else
5865  return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a,
5866                                                      (vector int)__b, __c);
5867#endif
5868}
5869
5870static vector float __ATTRS_o_ai vec_perm(vector float __a, vector float __b,
5871                                          vector unsigned char __c) {
5872#ifdef __LITTLE_ENDIAN__
5873  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5874                              255, 255, 255, 255, 255, 255, 255, 255};
5875  __d = vec_xor(__c, __d);
5876  return (vector float)__builtin_altivec_vperm_4si((vector int)__b,
5877                                                   (vector int)__a, __d);
5878#else
5879  return (vector float)__builtin_altivec_vperm_4si((vector int)__a,
5880                                                   (vector int)__b, __c);
5881#endif
5882}
5883
5884#ifdef __VSX__
5885static vector long long __ATTRS_o_ai vec_perm(vector signed long long __a,
5886                                              vector signed long long __b,
5887                                              vector unsigned char __c) {
5888#ifdef __LITTLE_ENDIAN__
5889  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5890                              255, 255, 255, 255, 255, 255, 255, 255};
5891  __d = vec_xor(__c, __d);
5892  return (vector signed long long)__builtin_altivec_vperm_4si(
5893      (vector int)__b, (vector int)__a, __d);
5894#else
5895  return (vector signed long long)__builtin_altivec_vperm_4si(
5896      (vector int)__a, (vector int)__b, __c);
5897#endif
5898}
5899
5900static vector unsigned long long __ATTRS_o_ai
5901vec_perm(vector unsigned long long __a, vector unsigned long long __b,
5902         vector unsigned char __c) {
5903#ifdef __LITTLE_ENDIAN__
5904  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5905                              255, 255, 255, 255, 255, 255, 255, 255};
5906  __d = vec_xor(__c, __d);
5907  return (vector unsigned long long)__builtin_altivec_vperm_4si(
5908      (vector int)__b, (vector int)__a, __d);
5909#else
5910  return (vector unsigned long long)__builtin_altivec_vperm_4si(
5911      (vector int)__a, (vector int)__b, __c);
5912#endif
5913}
5914
5915static vector bool long long __ATTRS_o_ai
5916vec_perm(vector bool long long __a, vector bool long long __b,
5917         vector unsigned char __c) {
5918#ifdef __LITTLE_ENDIAN__
5919  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5920                              255, 255, 255, 255, 255, 255, 255, 255};
5921  __d = vec_xor(__c, __d);
5922  return (vector bool long long)__builtin_altivec_vperm_4si(
5923      (vector int)__b, (vector int)__a, __d);
5924#else
5925  return (vector bool long long)__builtin_altivec_vperm_4si(
5926      (vector int)__a, (vector int)__b, __c);
5927#endif
5928}
5929
5930static vector double __ATTRS_o_ai vec_perm(vector double __a, vector double __b,
5931                                           vector unsigned char __c) {
5932#ifdef __LITTLE_ENDIAN__
5933  vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5934                              255, 255, 255, 255, 255, 255, 255, 255};
5935  __d = vec_xor(__c, __d);
5936  return (vector double)__builtin_altivec_vperm_4si((vector int)__b,
5937                                                    (vector int)__a, __d);
5938#else
5939  return (vector double)__builtin_altivec_vperm_4si((vector int)__a,
5940                                                    (vector int)__b, __c);
5941#endif
5942}
5943#endif
5944
5945/* vec_vperm */
5946
5947static vector signed char __ATTRS_o_ai vec_vperm(vector signed char __a,
5948                                                 vector signed char __b,
5949                                                 vector unsigned char __c) {
5950  return vec_perm(__a, __b, __c);
5951}
5952
5953static vector unsigned char __ATTRS_o_ai vec_vperm(vector unsigned char __a,
5954                                                   vector unsigned char __b,
5955                                                   vector unsigned char __c) {
5956  return vec_perm(__a, __b, __c);
5957}
5958
5959static vector bool char __ATTRS_o_ai vec_vperm(vector bool char __a,
5960                                               vector bool char __b,
5961                                               vector unsigned char __c) {
5962  return vec_perm(__a, __b, __c);
5963}
5964
5965static vector short __ATTRS_o_ai vec_vperm(vector short __a, vector short __b,
5966                                           vector unsigned char __c) {
5967  return vec_perm(__a, __b, __c);
5968}
5969
5970static vector unsigned short __ATTRS_o_ai vec_vperm(vector unsigned short __a,
5971                                                    vector unsigned short __b,
5972                                                    vector unsigned char __c) {
5973  return vec_perm(__a, __b, __c);
5974}
5975
5976static vector bool short __ATTRS_o_ai vec_vperm(vector bool short __a,
5977                                                vector bool short __b,
5978                                                vector unsigned char __c) {
5979  return vec_perm(__a, __b, __c);
5980}
5981
5982static vector pixel __ATTRS_o_ai vec_vperm(vector pixel __a, vector pixel __b,
5983                                           vector unsigned char __c) {
5984  return vec_perm(__a, __b, __c);
5985}
5986
5987static vector int __ATTRS_o_ai vec_vperm(vector int __a, vector int __b,
5988                                         vector unsigned char __c) {
5989  return vec_perm(__a, __b, __c);
5990}
5991
5992static vector unsigned int __ATTRS_o_ai vec_vperm(vector unsigned int __a,
5993                                                  vector unsigned int __b,
5994                                                  vector unsigned char __c) {
5995  return vec_perm(__a, __b, __c);
5996}
5997
5998static vector bool int __ATTRS_o_ai vec_vperm(vector bool int __a,
5999                                              vector bool int __b,
6000                                              vector unsigned char __c) {
6001  return vec_perm(__a, __b, __c);
6002}
6003
6004static vector float __ATTRS_o_ai vec_vperm(vector float __a, vector float __b,
6005                                           vector unsigned char __c) {
6006  return vec_perm(__a, __b, __c);
6007}
6008
6009#ifdef __VSX__
6010static vector long long __ATTRS_o_ai vec_vperm(vector long long __a,
6011                                               vector long long __b,
6012                                               vector unsigned char __c) {
6013  return vec_perm(__a, __b, __c);
6014}
6015
6016static vector unsigned long long __ATTRS_o_ai
6017vec_vperm(vector unsigned long long __a, vector unsigned long long __b,
6018          vector unsigned char __c) {
6019  return vec_perm(__a, __b, __c);
6020}
6021
6022static vector double __ATTRS_o_ai vec_vperm(vector double __a,
6023                                            vector double __b,
6024                                            vector unsigned char __c) {
6025  return vec_perm(__a, __b, __c);
6026}
6027#endif
6028
6029/* vec_re */
6030
6031static vector float __ATTRS_o_ai
6032vec_re(vector float __a) {
6033#ifdef __VSX__
6034  return __builtin_vsx_xvresp(__a);
6035#else
6036  return __builtin_altivec_vrefp(__a);
6037#endif
6038}
6039
6040#ifdef __VSX__
6041static vector double __ATTRS_o_ai vec_re(vector double __a) {
6042  return __builtin_vsx_xvredp(__a);
6043}
6044#endif
6045
6046/* vec_vrefp */
6047
6048static vector float __attribute__((__always_inline__))
6049vec_vrefp(vector float __a) {
6050  return __builtin_altivec_vrefp(__a);
6051}
6052
6053/* vec_rl */
6054
6055static vector signed char __ATTRS_o_ai vec_rl(vector signed char __a,
6056                                              vector unsigned char __b) {
6057  return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
6058}
6059
6060static vector unsigned char __ATTRS_o_ai vec_rl(vector unsigned char __a,
6061                                                vector unsigned char __b) {
6062  return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
6063}
6064
6065static vector short __ATTRS_o_ai vec_rl(vector short __a,
6066                                        vector unsigned short __b) {
6067  return __builtin_altivec_vrlh(__a, __b);
6068}
6069
6070static vector unsigned short __ATTRS_o_ai vec_rl(vector unsigned short __a,
6071                                                 vector unsigned short __b) {
6072  return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
6073}
6074
6075static vector int __ATTRS_o_ai vec_rl(vector int __a, vector unsigned int __b) {
6076  return __builtin_altivec_vrlw(__a, __b);
6077}
6078
6079static vector unsigned int __ATTRS_o_ai vec_rl(vector unsigned int __a,
6080                                               vector unsigned int __b) {
6081  return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
6082}
6083
6084#ifdef __POWER8_VECTOR__
6085static vector signed long long __ATTRS_o_ai
6086vec_rl(vector signed long long __a, vector unsigned long long __b) {
6087  return __builtin_altivec_vrld(__a, __b);
6088}
6089
6090static vector unsigned long long __ATTRS_o_ai
6091vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
6092  return __builtin_altivec_vrld(__a, __b);
6093}
6094#endif
6095
6096/* vec_vrlb */
6097
6098static vector signed char __ATTRS_o_ai vec_vrlb(vector signed char __a,
6099                                                vector unsigned char __b) {
6100  return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
6101}
6102
6103static vector unsigned char __ATTRS_o_ai vec_vrlb(vector unsigned char __a,
6104                                                  vector unsigned char __b) {
6105  return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
6106}
6107
6108/* vec_vrlh */
6109
6110static vector short __ATTRS_o_ai vec_vrlh(vector short __a,
6111                                          vector unsigned short __b) {
6112  return __builtin_altivec_vrlh(__a, __b);
6113}
6114
6115static vector unsigned short __ATTRS_o_ai vec_vrlh(vector unsigned short __a,
6116                                                   vector unsigned short __b) {
6117  return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
6118}
6119
6120/* vec_vrlw */
6121
6122static vector int __ATTRS_o_ai vec_vrlw(vector int __a,
6123                                        vector unsigned int __b) {
6124  return __builtin_altivec_vrlw(__a, __b);
6125}
6126
6127static vector unsigned int __ATTRS_o_ai vec_vrlw(vector unsigned int __a,
6128                                                 vector unsigned int __b) {
6129  return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
6130}
6131
6132/* vec_round */
6133
6134static vector float __ATTRS_o_ai vec_round(vector float __a) {
6135#ifdef __VSX__
6136  return __builtin_vsx_xvrspi(__a);
6137#else
6138  return __builtin_altivec_vrfin(__a);
6139#endif
6140}
6141
6142#ifdef __VSX__
6143static vector double __ATTRS_o_ai vec_round(vector double __a) {
6144  return __builtin_vsx_xvrdpi(__a);
6145}
6146
6147/* vec_rint */
6148
6149static vector float __ATTRS_o_ai
6150vec_rint(vector float __a) {
6151  return __builtin_vsx_xvrspic(__a);
6152}
6153
6154static vector double __ATTRS_o_ai
6155vec_rint(vector double __a) {
6156  return __builtin_vsx_xvrdpic(__a);
6157}
6158
6159/* vec_nearbyint */
6160
6161static vector float __ATTRS_o_ai vec_nearbyint(vector float __a) {
6162  return __builtin_vsx_xvrspi(__a);
6163}
6164
6165static vector double __ATTRS_o_ai vec_nearbyint(vector double __a) {
6166  return __builtin_vsx_xvrdpi(__a);
6167}
6168#endif
6169
6170/* vec_vrfin */
6171
6172static vector float __attribute__((__always_inline__))
6173vec_vrfin(vector float __a) {
6174  return __builtin_altivec_vrfin(__a);
6175}
6176
6177/* vec_sqrt */
6178
6179#ifdef __VSX__
6180static vector float __ATTRS_o_ai vec_sqrt(vector float __a) {
6181  return __builtin_vsx_xvsqrtsp(__a);
6182}
6183
6184static vector double __ATTRS_o_ai vec_sqrt(vector double __a) {
6185  return __builtin_vsx_xvsqrtdp(__a);
6186}
6187#endif
6188
6189/* vec_rsqrte */
6190
6191static vector float __ATTRS_o_ai
6192vec_rsqrte(vector float __a) {
6193#ifdef __VSX__
6194  return __builtin_vsx_xvrsqrtesp(__a);
6195#else
6196  return __builtin_altivec_vrsqrtefp(__a);
6197#endif
6198}
6199
6200#ifdef __VSX__
6201static vector double __ATTRS_o_ai vec_rsqrte(vector double __a) {
6202  return __builtin_vsx_xvrsqrtedp(__a);
6203}
6204#endif
6205
6206/* vec_vrsqrtefp */
6207
6208static __vector float __attribute__((__always_inline__))
6209vec_vrsqrtefp(vector float __a) {
6210  return __builtin_altivec_vrsqrtefp(__a);
6211}
6212
6213/* vec_sel */
6214
6215#define __builtin_altivec_vsel_4si vec_sel
6216
6217static vector signed char __ATTRS_o_ai vec_sel(vector signed char __a,
6218                                               vector signed char __b,
6219                                               vector unsigned char __c) {
6220  return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6221}
6222
6223static vector signed char __ATTRS_o_ai vec_sel(vector signed char __a,
6224                                               vector signed char __b,
6225                                               vector bool char __c) {
6226  return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6227}
6228
6229static vector unsigned char __ATTRS_o_ai vec_sel(vector unsigned char __a,
6230                                                 vector unsigned char __b,
6231                                                 vector unsigned char __c) {
6232  return (__a & ~__c) | (__b & __c);
6233}
6234
6235static vector unsigned char __ATTRS_o_ai vec_sel(vector unsigned char __a,
6236                                                 vector unsigned char __b,
6237                                                 vector bool char __c) {
6238  return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
6239}
6240
6241static vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
6242                                             vector bool char __b,
6243                                             vector unsigned char __c) {
6244  return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
6245}
6246
6247static vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
6248                                             vector bool char __b,
6249                                             vector bool char __c) {
6250  return (__a & ~__c) | (__b & __c);
6251}
6252
6253static vector short __ATTRS_o_ai vec_sel(vector short __a, vector short __b,
6254                                         vector unsigned short __c) {
6255  return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6256}
6257
6258static vector short __ATTRS_o_ai vec_sel(vector short __a, vector short __b,
6259                                         vector bool short __c) {
6260  return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6261}
6262
6263static vector unsigned short __ATTRS_o_ai vec_sel(vector unsigned short __a,
6264                                                  vector unsigned short __b,
6265                                                  vector unsigned short __c) {
6266  return (__a & ~__c) | (__b & __c);
6267}
6268
6269static vector unsigned short __ATTRS_o_ai vec_sel(vector unsigned short __a,
6270                                                  vector unsigned short __b,
6271                                                  vector bool short __c) {
6272  return (__a & ~(vector unsigned short)__c) |
6273         (__b & (vector unsigned short)__c);
6274}
6275
6276static vector bool short __ATTRS_o_ai vec_sel(vector bool short __a,
6277                                              vector bool short __b,
6278                                              vector unsigned short __c) {
6279  return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
6280}
6281
6282static vector bool short __ATTRS_o_ai vec_sel(vector bool short __a,
6283                                              vector bool short __b,
6284                                              vector bool short __c) {
6285  return (__a & ~__c) | (__b & __c);
6286}
6287
6288static vector int __ATTRS_o_ai vec_sel(vector int __a, vector int __b,
6289                                       vector unsigned int __c) {
6290  return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6291}
6292
6293static vector int __ATTRS_o_ai vec_sel(vector int __a, vector int __b,
6294                                       vector bool int __c) {
6295  return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6296}
6297
6298static vector unsigned int __ATTRS_o_ai vec_sel(vector unsigned int __a,
6299                                                vector unsigned int __b,
6300                                                vector unsigned int __c) {
6301  return (__a & ~__c) | (__b & __c);
6302}
6303
6304static vector unsigned int __ATTRS_o_ai vec_sel(vector unsigned int __a,
6305                                                vector unsigned int __b,
6306                                                vector bool int __c) {
6307  return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
6308}
6309
6310static vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
6311                                            vector bool int __b,
6312                                            vector unsigned int __c) {
6313  return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
6314}
6315
6316static vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
6317                                            vector bool int __b,
6318                                            vector bool int __c) {
6319  return (__a & ~__c) | (__b & __c);
6320}
6321
6322static vector float __ATTRS_o_ai vec_sel(vector float __a, vector float __b,
6323                                         vector unsigned int __c) {
6324  vector int __res = ((vector int)__a & ~(vector int)__c) |
6325                     ((vector int)__b & (vector int)__c);
6326  return (vector float)__res;
6327}
6328
6329static vector float __ATTRS_o_ai vec_sel(vector float __a, vector float __b,
6330                                         vector bool int __c) {
6331  vector int __res = ((vector int)__a & ~(vector int)__c) |
6332                     ((vector int)__b & (vector int)__c);
6333  return (vector float)__res;
6334}
6335
6336#ifdef __VSX__
6337static vector double __ATTRS_o_ai vec_sel(vector double __a, vector double __b,
6338                                          vector bool long long __c) {
6339  vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
6340                     ((vector long long)__b & (vector long long)__c);
6341  return (vector double)__res;
6342}
6343
6344static vector double __ATTRS_o_ai vec_sel(vector double __a, vector double __b,
6345                                          vector unsigned long long __c) {
6346  vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
6347                     ((vector long long)__b & (vector long long)__c);
6348  return (vector double)__res;
6349}
6350#endif
6351
6352/* vec_vsel */
6353
6354static vector signed char __ATTRS_o_ai vec_vsel(vector signed char __a,
6355                                                vector signed char __b,
6356                                                vector unsigned char __c) {
6357  return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6358}
6359
6360static vector signed char __ATTRS_o_ai vec_vsel(vector signed char __a,
6361                                                vector signed char __b,
6362                                                vector bool char __c) {
6363  return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6364}
6365
6366static vector unsigned char __ATTRS_o_ai vec_vsel(vector unsigned char __a,
6367                                                  vector unsigned char __b,
6368                                                  vector unsigned char __c) {
6369  return (__a & ~__c) | (__b & __c);
6370}
6371
6372static vector unsigned char __ATTRS_o_ai vec_vsel(vector unsigned char __a,
6373                                                  vector unsigned char __b,
6374                                                  vector bool char __c) {
6375  return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
6376}
6377
6378static vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
6379                                              vector bool char __b,
6380                                              vector unsigned char __c) {
6381  return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
6382}
6383
6384static vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
6385                                              vector bool char __b,
6386                                              vector bool char __c) {
6387  return (__a & ~__c) | (__b & __c);
6388}
6389
6390static vector short __ATTRS_o_ai vec_vsel(vector short __a, vector short __b,
6391                                          vector unsigned short __c) {
6392  return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6393}
6394
6395static vector short __ATTRS_o_ai vec_vsel(vector short __a, vector short __b,
6396                                          vector bool short __c) {
6397  return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6398}
6399
6400static vector unsigned short __ATTRS_o_ai vec_vsel(vector unsigned short __a,
6401                                                   vector unsigned short __b,
6402                                                   vector unsigned short __c) {
6403  return (__a & ~__c) | (__b & __c);
6404}
6405
6406static vector unsigned short __ATTRS_o_ai vec_vsel(vector unsigned short __a,
6407                                                   vector unsigned short __b,
6408                                                   vector bool short __c) {
6409  return (__a & ~(vector unsigned short)__c) |
6410         (__b & (vector unsigned short)__c);
6411}
6412
6413static vector bool short __ATTRS_o_ai vec_vsel(vector bool short __a,
6414                                               vector bool short __b,
6415                                               vector unsigned short __c) {
6416  return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
6417}
6418
6419static vector bool short __ATTRS_o_ai vec_vsel(vector bool short __a,
6420                                               vector bool short __b,
6421                                               vector bool short __c) {
6422  return (__a & ~__c) | (__b & __c);
6423}
6424
6425static vector int __ATTRS_o_ai vec_vsel(vector int __a, vector int __b,
6426                                        vector unsigned int __c) {
6427  return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6428}
6429
6430static vector int __ATTRS_o_ai vec_vsel(vector int __a, vector int __b,
6431                                        vector bool int __c) {
6432  return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6433}
6434
6435static vector unsigned int __ATTRS_o_ai vec_vsel(vector unsigned int __a,
6436                                                 vector unsigned int __b,
6437                                                 vector unsigned int __c) {
6438  return (__a & ~__c) | (__b & __c);
6439}
6440
6441static vector unsigned int __ATTRS_o_ai vec_vsel(vector unsigned int __a,
6442                                                 vector unsigned int __b,
6443                                                 vector bool int __c) {
6444  return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
6445}
6446
6447static vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
6448                                             vector bool int __b,
6449                                             vector unsigned int __c) {
6450  return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
6451}
6452
6453static vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
6454                                             vector bool int __b,
6455                                             vector bool int __c) {
6456  return (__a & ~__c) | (__b & __c);
6457}
6458
6459static vector float __ATTRS_o_ai vec_vsel(vector float __a, vector float __b,
6460                                          vector unsigned int __c) {
6461  vector int __res = ((vector int)__a & ~(vector int)__c) |
6462                     ((vector int)__b & (vector int)__c);
6463  return (vector float)__res;
6464}
6465
6466static vector float __ATTRS_o_ai vec_vsel(vector float __a, vector float __b,
6467                                          vector bool int __c) {
6468  vector int __res = ((vector int)__a & ~(vector int)__c) |
6469                     ((vector int)__b & (vector int)__c);
6470  return (vector float)__res;
6471}
6472
6473/* vec_sl */
6474
6475static vector signed char __ATTRS_o_ai vec_sl(vector signed char __a,
6476                                              vector unsigned char __b) {
6477  return __a << (vector signed char)__b;
6478}
6479
6480static vector unsigned char __ATTRS_o_ai vec_sl(vector unsigned char __a,
6481                                                vector unsigned char __b) {
6482  return __a << __b;
6483}
6484
6485static vector short __ATTRS_o_ai vec_sl(vector short __a,
6486                                        vector unsigned short __b) {
6487  return __a << (vector short)__b;
6488}
6489
6490static vector unsigned short __ATTRS_o_ai vec_sl(vector unsigned short __a,
6491                                                 vector unsigned short __b) {
6492  return __a << __b;
6493}
6494
6495static vector int __ATTRS_o_ai vec_sl(vector int __a, vector unsigned int __b) {
6496  return __a << (vector int)__b;
6497}
6498
6499static vector unsigned int __ATTRS_o_ai vec_sl(vector unsigned int __a,
6500                                               vector unsigned int __b) {
6501  return __a << __b;
6502}
6503
6504#ifdef __POWER8_VECTOR__
6505static vector signed long long __ATTRS_o_ai
6506vec_sl(vector signed long long __a, vector unsigned long long __b) {
6507  return __a << (vector long long)__b;
6508}
6509
6510static vector unsigned long long __ATTRS_o_ai
6511vec_sl(vector unsigned long long __a, vector unsigned long long __b) {
6512  return __a << __b;
6513}
6514#endif
6515
6516/* vec_vslb */
6517
6518#define __builtin_altivec_vslb vec_vslb
6519
6520static vector signed char __ATTRS_o_ai vec_vslb(vector signed char __a,
6521                                                vector unsigned char __b) {
6522  return vec_sl(__a, __b);
6523}
6524
6525static vector unsigned char __ATTRS_o_ai vec_vslb(vector unsigned char __a,
6526                                                  vector unsigned char __b) {
6527  return vec_sl(__a, __b);
6528}
6529
6530/* vec_vslh */
6531
6532#define __builtin_altivec_vslh vec_vslh
6533
6534static vector short __ATTRS_o_ai vec_vslh(vector short __a,
6535                                          vector unsigned short __b) {
6536  return vec_sl(__a, __b);
6537}
6538
6539static vector unsigned short __ATTRS_o_ai vec_vslh(vector unsigned short __a,
6540                                                   vector unsigned short __b) {
6541  return vec_sl(__a, __b);
6542}
6543
6544/* vec_vslw */
6545
6546#define __builtin_altivec_vslw vec_vslw
6547
6548static vector int __ATTRS_o_ai vec_vslw(vector int __a,
6549                                        vector unsigned int __b) {
6550  return vec_sl(__a, __b);
6551}
6552
6553static vector unsigned int __ATTRS_o_ai vec_vslw(vector unsigned int __a,
6554                                                 vector unsigned int __b) {
6555  return vec_sl(__a, __b);
6556}
6557
6558/* vec_sld */
6559
6560#define __builtin_altivec_vsldoi_4si vec_sld
6561
6562static vector signed char __ATTRS_o_ai vec_sld(vector signed char __a,
6563                                               vector signed char __b,
6564                                               unsigned const int __c) {
6565  unsigned char __d = __c & 0x0F;
6566#ifdef __LITTLE_ENDIAN__
6567  return vec_perm(
6568      __b, __a,
6569      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6570                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6571                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6572                             31 - __d));
6573#else
6574  return vec_perm(
6575      __a, __b,
6576      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6577                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6578                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6579#endif
6580}
6581
6582static vector unsigned char __ATTRS_o_ai vec_sld(vector unsigned char __a,
6583                                                 vector unsigned char __b,
6584                                                 unsigned const int __c) {
6585  unsigned char __d = __c & 0x0F;
6586#ifdef __LITTLE_ENDIAN__
6587  return vec_perm(
6588      __b, __a,
6589      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6590                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6591                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6592                             31 - __d));
6593#else
6594  return vec_perm(
6595      __a, __b,
6596      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6597                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6598                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6599#endif
6600}
6601
6602static vector bool char __ATTRS_o_ai vec_sld(vector bool char __a,
6603                                             vector bool char __b,
6604                                             unsigned const int __c) {
6605  unsigned char __d = __c & 0x0F;
6606#ifdef __LITTLE_ENDIAN__
6607  return vec_perm(
6608      __b, __a,
6609      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6610                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6611                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6612                             31 - __d));
6613#else
6614  return vec_perm(
6615      __a, __b,
6616      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6617                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6618                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6619#endif
6620}
6621
6622static vector signed short __ATTRS_o_ai vec_sld(vector signed short __a,
6623                                                vector signed short __b,
6624                                                unsigned const int __c) {
6625  unsigned char __d = __c & 0x0F;
6626#ifdef __LITTLE_ENDIAN__
6627  return vec_perm(
6628      __b, __a,
6629      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6630                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6631                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6632                             31 - __d));
6633#else
6634  return vec_perm(
6635      __a, __b,
6636      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6637                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6638                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6639#endif
6640}
6641
6642static vector unsigned short __ATTRS_o_ai vec_sld(vector unsigned short __a,
6643                                                  vector unsigned short __b,
6644                                                  unsigned const int __c) {
6645  unsigned char __d = __c & 0x0F;
6646#ifdef __LITTLE_ENDIAN__
6647  return vec_perm(
6648      __b, __a,
6649      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6650                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6651                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6652                             31 - __d));
6653#else
6654  return vec_perm(
6655      __a, __b,
6656      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6657                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6658                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6659#endif
6660}
6661
6662static vector bool short __ATTRS_o_ai vec_sld(vector bool short __a,
6663                                              vector bool short __b,
6664                                              unsigned const int __c) {
6665  unsigned char __d = __c & 0x0F;
6666#ifdef __LITTLE_ENDIAN__
6667  return vec_perm(
6668      __b, __a,
6669      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6670                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6671                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6672                             31 - __d));
6673#else
6674  return vec_perm(
6675      __a, __b,
6676      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6677                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6678                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6679#endif
6680}
6681
6682static vector pixel __ATTRS_o_ai vec_sld(vector pixel __a, vector pixel __b,
6683                                         unsigned const int __c) {
6684  unsigned char __d = __c & 0x0F;
6685#ifdef __LITTLE_ENDIAN__
6686  return vec_perm(
6687      __b, __a,
6688      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6689                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6690                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6691                             31 - __d));
6692#else
6693  return vec_perm(
6694      __a, __b,
6695      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6696                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6697                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6698#endif
6699}
6700
6701static vector signed int __ATTRS_o_ai vec_sld(vector signed int __a,
6702                                              vector signed int __b,
6703                                              unsigned const int __c) {
6704  unsigned char __d = __c & 0x0F;
6705#ifdef __LITTLE_ENDIAN__
6706  return vec_perm(
6707      __b, __a,
6708      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6709                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6710                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6711                             31 - __d));
6712#else
6713  return vec_perm(
6714      __a, __b,
6715      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6716                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6717                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6718#endif
6719}
6720
6721static vector unsigned int __ATTRS_o_ai vec_sld(vector unsigned int __a,
6722                                                vector unsigned int __b,
6723                                                unsigned const int __c) {
6724  unsigned char __d = __c & 0x0F;
6725#ifdef __LITTLE_ENDIAN__
6726  return vec_perm(
6727      __b, __a,
6728      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6729                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6730                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6731                             31 - __d));
6732#else
6733  return vec_perm(
6734      __a, __b,
6735      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6736                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6737                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6738#endif
6739}
6740
6741static vector bool int __ATTRS_o_ai vec_sld(vector bool int __a,
6742                                            vector bool int __b,
6743                                            unsigned const int __c) {
6744  unsigned char __d = __c & 0x0F;
6745#ifdef __LITTLE_ENDIAN__
6746  return vec_perm(
6747      __b, __a,
6748      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6749                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6750                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6751                             31 - __d));
6752#else
6753  return vec_perm(
6754      __a, __b,
6755      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6756                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6757                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6758#endif
6759}
6760
6761static vector float __ATTRS_o_ai vec_sld(vector float __a, vector float __b,
6762                                         unsigned const int __c) {
6763  unsigned char __d = __c & 0x0F;
6764#ifdef __LITTLE_ENDIAN__
6765  return vec_perm(
6766      __b, __a,
6767      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6768                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6769                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6770                             31 - __d));
6771#else
6772  return vec_perm(
6773      __a, __b,
6774      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6775                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6776                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6777#endif
6778}
6779
6780/* vec_vsldoi */
6781
6782static vector signed char __ATTRS_o_ai vec_vsldoi(vector signed char __a,
6783                                                  vector signed char __b,
6784                                                  unsigned char __c) {
6785  unsigned char __d = __c & 0x0F;
6786#ifdef __LITTLE_ENDIAN__
6787  return vec_perm(
6788      __b, __a,
6789      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6790                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6791                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6792                             31 - __d));
6793#else
6794  return vec_perm(
6795      __a, __b,
6796      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6797                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6798                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6799#endif
6800}
6801
6802static vector unsigned char __ATTRS_o_ai vec_vsldoi(vector unsigned char __a,
6803                                                    vector unsigned char __b,
6804                                                    unsigned char __c) {
6805  unsigned char __d = __c & 0x0F;
6806#ifdef __LITTLE_ENDIAN__
6807  return vec_perm(
6808      __b, __a,
6809      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6810                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6811                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6812                             31 - __d));
6813#else
6814  return vec_perm(
6815      __a, __b,
6816      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6817                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6818                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6819#endif
6820}
6821
6822static vector short __ATTRS_o_ai vec_vsldoi(vector short __a, vector short __b,
6823                                            unsigned char __c) {
6824  unsigned char __d = __c & 0x0F;
6825#ifdef __LITTLE_ENDIAN__
6826  return vec_perm(
6827      __b, __a,
6828      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6829                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6830                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6831                             31 - __d));
6832#else
6833  return vec_perm(
6834      __a, __b,
6835      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6836                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6837                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6838#endif
6839}
6840
6841static vector unsigned short __ATTRS_o_ai vec_vsldoi(vector unsigned short __a,
6842                                                     vector unsigned short __b,
6843                                                     unsigned char __c) {
6844  unsigned char __d = __c & 0x0F;
6845#ifdef __LITTLE_ENDIAN__
6846  return vec_perm(
6847      __b, __a,
6848      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6849                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6850                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6851                             31 - __d));
6852#else
6853  return vec_perm(
6854      __a, __b,
6855      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6856                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6857                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6858#endif
6859}
6860
6861static vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a, vector pixel __b,
6862                                            unsigned char __c) {
6863  unsigned char __d = __c & 0x0F;
6864#ifdef __LITTLE_ENDIAN__
6865  return vec_perm(
6866      __b, __a,
6867      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6868                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6869                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6870                             31 - __d));
6871#else
6872  return vec_perm(
6873      __a, __b,
6874      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6875                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6876                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6877#endif
6878}
6879
6880static vector int __ATTRS_o_ai vec_vsldoi(vector int __a, vector int __b,
6881                                          unsigned char __c) {
6882  unsigned char __d = __c & 0x0F;
6883#ifdef __LITTLE_ENDIAN__
6884  return vec_perm(
6885      __b, __a,
6886      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6887                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6888                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6889                             31 - __d));
6890#else
6891  return vec_perm(
6892      __a, __b,
6893      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6894                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6895                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6896#endif
6897}
6898
6899static vector unsigned int __ATTRS_o_ai vec_vsldoi(vector unsigned int __a,
6900                                                   vector unsigned int __b,
6901                                                   unsigned char __c) {
6902  unsigned char __d = __c & 0x0F;
6903#ifdef __LITTLE_ENDIAN__
6904  return vec_perm(
6905      __b, __a,
6906      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6907                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6908                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6909                             31 - __d));
6910#else
6911  return vec_perm(
6912      __a, __b,
6913      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6914                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6915                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6916#endif
6917}
6918
6919static vector float __ATTRS_o_ai vec_vsldoi(vector float __a, vector float __b,
6920                                            unsigned char __c) {
6921  unsigned char __d = __c & 0x0F;
6922#ifdef __LITTLE_ENDIAN__
6923  return vec_perm(
6924      __b, __a,
6925      (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d,
6926                             21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d,
6927                             26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d,
6928                             31 - __d));
6929#else
6930  return vec_perm(
6931      __a, __b,
6932      (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6933                             __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6934                             __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6935#endif
6936}
6937
6938/* vec_sll */
6939
6940static vector signed char __ATTRS_o_ai vec_sll(vector signed char __a,
6941                                               vector unsigned char __b) {
6942  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
6943                                                   (vector int)__b);
6944}
6945
6946static vector signed char __ATTRS_o_ai vec_sll(vector signed char __a,
6947                                               vector unsigned short __b) {
6948  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
6949                                                   (vector int)__b);
6950}
6951
6952static vector signed char __ATTRS_o_ai vec_sll(vector signed char __a,
6953                                               vector unsigned int __b) {
6954  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
6955                                                   (vector int)__b);
6956}
6957
6958static vector unsigned char __ATTRS_o_ai vec_sll(vector unsigned char __a,
6959                                                 vector unsigned char __b) {
6960  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
6961                                                     (vector int)__b);
6962}
6963
6964static vector unsigned char __ATTRS_o_ai vec_sll(vector unsigned char __a,
6965                                                 vector unsigned short __b) {
6966  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
6967                                                     (vector int)__b);
6968}
6969
6970static vector unsigned char __ATTRS_o_ai vec_sll(vector unsigned char __a,
6971                                                 vector unsigned int __b) {
6972  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
6973                                                     (vector int)__b);
6974}
6975
6976static vector bool char __ATTRS_o_ai vec_sll(vector bool char __a,
6977                                             vector unsigned char __b) {
6978  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
6979                                                 (vector int)__b);
6980}
6981
6982static vector bool char __ATTRS_o_ai vec_sll(vector bool char __a,
6983                                             vector unsigned short __b) {
6984  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
6985                                                 (vector int)__b);
6986}
6987
6988static vector bool char __ATTRS_o_ai vec_sll(vector bool char __a,
6989                                             vector unsigned int __b) {
6990  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
6991                                                 (vector int)__b);
6992}
6993
6994static vector short __ATTRS_o_ai vec_sll(vector short __a,
6995                                         vector unsigned char __b) {
6996  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
6997}
6998
6999static vector short __ATTRS_o_ai vec_sll(vector short __a,
7000                                         vector unsigned short __b) {
7001  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7002}
7003
7004static vector short __ATTRS_o_ai vec_sll(vector short __a,
7005                                         vector unsigned int __b) {
7006  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7007}
7008
7009static vector unsigned short __ATTRS_o_ai vec_sll(vector unsigned short __a,
7010                                                  vector unsigned char __b) {
7011  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7012                                                      (vector int)__b);
7013}
7014
7015static vector unsigned short __ATTRS_o_ai vec_sll(vector unsigned short __a,
7016                                                  vector unsigned short __b) {
7017  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7018                                                      (vector int)__b);
7019}
7020
7021static vector unsigned short __ATTRS_o_ai vec_sll(vector unsigned short __a,
7022                                                  vector unsigned int __b) {
7023  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7024                                                      (vector int)__b);
7025}
7026
7027static vector bool short __ATTRS_o_ai vec_sll(vector bool short __a,
7028                                              vector unsigned char __b) {
7029  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7030                                                  (vector int)__b);
7031}
7032
7033static vector bool short __ATTRS_o_ai vec_sll(vector bool short __a,
7034                                              vector unsigned short __b) {
7035  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7036                                                  (vector int)__b);
7037}
7038
7039static vector bool short __ATTRS_o_ai vec_sll(vector bool short __a,
7040                                              vector unsigned int __b) {
7041  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7042                                                  (vector int)__b);
7043}
7044
7045static vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7046                                         vector unsigned char __b) {
7047  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7048}
7049
7050static vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7051                                         vector unsigned short __b) {
7052  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7053}
7054
7055static vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7056                                         vector unsigned int __b) {
7057  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7058}
7059
7060static vector int __ATTRS_o_ai vec_sll(vector int __a,
7061                                       vector unsigned char __b) {
7062  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7063}
7064
7065static vector int __ATTRS_o_ai vec_sll(vector int __a,
7066                                       vector unsigned short __b) {
7067  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7068}
7069
7070static vector int __ATTRS_o_ai vec_sll(vector int __a,
7071                                       vector unsigned int __b) {
7072  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7073}
7074
7075static vector unsigned int __ATTRS_o_ai vec_sll(vector unsigned int __a,
7076                                                vector unsigned char __b) {
7077  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7078                                                    (vector int)__b);
7079}
7080
7081static vector unsigned int __ATTRS_o_ai vec_sll(vector unsigned int __a,
7082                                                vector unsigned short __b) {
7083  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7084                                                    (vector int)__b);
7085}
7086
7087static vector unsigned int __ATTRS_o_ai vec_sll(vector unsigned int __a,
7088                                                vector unsigned int __b) {
7089  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7090                                                    (vector int)__b);
7091}
7092
7093static vector bool int __ATTRS_o_ai vec_sll(vector bool int __a,
7094                                            vector unsigned char __b) {
7095  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7096                                                (vector int)__b);
7097}
7098
7099static vector bool int __ATTRS_o_ai vec_sll(vector bool int __a,
7100                                            vector unsigned short __b) {
7101  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7102                                                (vector int)__b);
7103}
7104
7105static vector bool int __ATTRS_o_ai vec_sll(vector bool int __a,
7106                                            vector unsigned int __b) {
7107  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7108                                                (vector int)__b);
7109}
7110
7111/* vec_vsl */
7112
7113static vector signed char __ATTRS_o_ai vec_vsl(vector signed char __a,
7114                                               vector unsigned char __b) {
7115  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7116                                                   (vector int)__b);
7117}
7118
7119static vector signed char __ATTRS_o_ai vec_vsl(vector signed char __a,
7120                                               vector unsigned short __b) {
7121  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7122                                                   (vector int)__b);
7123}
7124
7125static vector signed char __ATTRS_o_ai vec_vsl(vector signed char __a,
7126                                               vector unsigned int __b) {
7127  return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7128                                                   (vector int)__b);
7129}
7130
7131static vector unsigned char __ATTRS_o_ai vec_vsl(vector unsigned char __a,
7132                                                 vector unsigned char __b) {
7133  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7134                                                     (vector int)__b);
7135}
7136
7137static vector unsigned char __ATTRS_o_ai vec_vsl(vector unsigned char __a,
7138                                                 vector unsigned short __b) {
7139  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7140                                                     (vector int)__b);
7141}
7142
7143static vector unsigned char __ATTRS_o_ai vec_vsl(vector unsigned char __a,
7144                                                 vector unsigned int __b) {
7145  return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7146                                                     (vector int)__b);
7147}
7148
7149static vector bool char __ATTRS_o_ai vec_vsl(vector bool char __a,
7150                                             vector unsigned char __b) {
7151  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7152                                                 (vector int)__b);
7153}
7154
7155static vector bool char __ATTRS_o_ai vec_vsl(vector bool char __a,
7156                                             vector unsigned short __b) {
7157  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7158                                                 (vector int)__b);
7159}
7160
7161static vector bool char __ATTRS_o_ai vec_vsl(vector bool char __a,
7162                                             vector unsigned int __b) {
7163  return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7164                                                 (vector int)__b);
7165}
7166
7167static vector short __ATTRS_o_ai vec_vsl(vector short __a,
7168                                         vector unsigned char __b) {
7169  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7170}
7171
7172static vector short __ATTRS_o_ai vec_vsl(vector short __a,
7173                                         vector unsigned short __b) {
7174  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7175}
7176
7177static vector short __ATTRS_o_ai vec_vsl(vector short __a,
7178                                         vector unsigned int __b) {
7179  return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7180}
7181
7182static vector unsigned short __ATTRS_o_ai vec_vsl(vector unsigned short __a,
7183                                                  vector unsigned char __b) {
7184  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7185                                                      (vector int)__b);
7186}
7187
7188static vector unsigned short __ATTRS_o_ai vec_vsl(vector unsigned short __a,
7189                                                  vector unsigned short __b) {
7190  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7191                                                      (vector int)__b);
7192}
7193
7194static vector unsigned short __ATTRS_o_ai vec_vsl(vector unsigned short __a,
7195                                                  vector unsigned int __b) {
7196  return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7197                                                      (vector int)__b);
7198}
7199
7200static vector bool short __ATTRS_o_ai vec_vsl(vector bool short __a,
7201                                              vector unsigned char __b) {
7202  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7203                                                  (vector int)__b);
7204}
7205
7206static vector bool short __ATTRS_o_ai vec_vsl(vector bool short __a,
7207                                              vector unsigned short __b) {
7208  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7209                                                  (vector int)__b);
7210}
7211
7212static vector bool short __ATTRS_o_ai vec_vsl(vector bool short __a,
7213                                              vector unsigned int __b) {
7214  return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7215                                                  (vector int)__b);
7216}
7217
7218static vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7219                                         vector unsigned char __b) {
7220  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7221}
7222
7223static vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7224                                         vector unsigned short __b) {
7225  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7226}
7227
7228static vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7229                                         vector unsigned int __b) {
7230  return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7231}
7232
7233static vector int __ATTRS_o_ai vec_vsl(vector int __a,
7234                                       vector unsigned char __b) {
7235  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7236}
7237
7238static vector int __ATTRS_o_ai vec_vsl(vector int __a,
7239                                       vector unsigned short __b) {
7240  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7241}
7242
7243static vector int __ATTRS_o_ai vec_vsl(vector int __a,
7244                                       vector unsigned int __b) {
7245  return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7246}
7247
7248static vector unsigned int __ATTRS_o_ai vec_vsl(vector unsigned int __a,
7249                                                vector unsigned char __b) {
7250  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7251                                                    (vector int)__b);
7252}
7253
7254static vector unsigned int __ATTRS_o_ai vec_vsl(vector unsigned int __a,
7255                                                vector unsigned short __b) {
7256  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7257                                                    (vector int)__b);
7258}
7259
7260static vector unsigned int __ATTRS_o_ai vec_vsl(vector unsigned int __a,
7261                                                vector unsigned int __b) {
7262  return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7263                                                    (vector int)__b);
7264}
7265
7266static vector bool int __ATTRS_o_ai vec_vsl(vector bool int __a,
7267                                            vector unsigned char __b) {
7268  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7269                                                (vector int)__b);
7270}
7271
7272static vector bool int __ATTRS_o_ai vec_vsl(vector bool int __a,
7273                                            vector unsigned short __b) {
7274  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7275                                                (vector int)__b);
7276}
7277
7278static vector bool int __ATTRS_o_ai vec_vsl(vector bool int __a,
7279                                            vector unsigned int __b) {
7280  return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7281                                                (vector int)__b);
7282}
7283
7284/* vec_slo */
7285
7286static vector signed char __ATTRS_o_ai vec_slo(vector signed char __a,
7287                                               vector signed char __b) {
7288  return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7289                                                    (vector int)__b);
7290}
7291
7292static vector signed char __ATTRS_o_ai vec_slo(vector signed char __a,
7293                                               vector unsigned char __b) {
7294  return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7295                                                    (vector int)__b);
7296}
7297
7298static vector unsigned char __ATTRS_o_ai vec_slo(vector unsigned char __a,
7299                                                 vector signed char __b) {
7300  return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7301                                                      (vector int)__b);
7302}
7303
7304static vector unsigned char __ATTRS_o_ai vec_slo(vector unsigned char __a,
7305                                                 vector unsigned char __b) {
7306  return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7307                                                      (vector int)__b);
7308}
7309
7310static vector short __ATTRS_o_ai vec_slo(vector short __a,
7311                                         vector signed char __b) {
7312  return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7313}
7314
7315static vector short __ATTRS_o_ai vec_slo(vector short __a,
7316                                         vector unsigned char __b) {
7317  return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7318}
7319
7320static vector unsigned short __ATTRS_o_ai vec_slo(vector unsigned short __a,
7321                                                  vector signed char __b) {
7322  return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7323                                                       (vector int)__b);
7324}
7325
7326static vector unsigned short __ATTRS_o_ai vec_slo(vector unsigned short __a,
7327                                                  vector unsigned char __b) {
7328  return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7329                                                       (vector int)__b);
7330}
7331
7332static vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
7333                                         vector signed char __b) {
7334  return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7335}
7336
7337static vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
7338                                         vector unsigned char __b) {
7339  return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7340}
7341
7342static vector int __ATTRS_o_ai vec_slo(vector int __a, vector signed char __b) {
7343  return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7344}
7345
7346static vector int __ATTRS_o_ai vec_slo(vector int __a,
7347                                       vector unsigned char __b) {
7348  return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7349}
7350
7351static vector unsigned int __ATTRS_o_ai vec_slo(vector unsigned int __a,
7352                                                vector signed char __b) {
7353  return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7354                                                     (vector int)__b);
7355}
7356
7357static vector unsigned int __ATTRS_o_ai vec_slo(vector unsigned int __a,
7358                                                vector unsigned char __b) {
7359  return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7360                                                     (vector int)__b);
7361}
7362
7363static vector float __ATTRS_o_ai vec_slo(vector float __a,
7364                                         vector signed char __b) {
7365  return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7366}
7367
7368static vector float __ATTRS_o_ai vec_slo(vector float __a,
7369                                         vector unsigned char __b) {
7370  return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7371}
7372
7373/* vec_vslo */
7374
7375static vector signed char __ATTRS_o_ai vec_vslo(vector signed char __a,
7376                                                vector signed char __b) {
7377  return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7378                                                    (vector int)__b);
7379}
7380
7381static vector signed char __ATTRS_o_ai vec_vslo(vector signed char __a,
7382                                                vector unsigned char __b) {
7383  return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7384                                                    (vector int)__b);
7385}
7386
7387static vector unsigned char __ATTRS_o_ai vec_vslo(vector unsigned char __a,
7388                                                  vector signed char __b) {
7389  return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7390                                                      (vector int)__b);
7391}
7392
7393static vector unsigned char __ATTRS_o_ai vec_vslo(vector unsigned char __a,
7394                                                  vector unsigned char __b) {
7395  return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7396                                                      (vector int)__b);
7397}
7398
7399static vector short __ATTRS_o_ai vec_vslo(vector short __a,
7400                                          vector signed char __b) {
7401  return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7402}
7403
7404static vector short __ATTRS_o_ai vec_vslo(vector short __a,
7405                                          vector unsigned char __b) {
7406  return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7407}
7408
7409static vector unsigned short __ATTRS_o_ai vec_vslo(vector unsigned short __a,
7410                                                   vector signed char __b) {
7411  return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7412                                                       (vector int)__b);
7413}
7414
7415static vector unsigned short __ATTRS_o_ai vec_vslo(vector unsigned short __a,
7416                                                   vector unsigned char __b) {
7417  return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7418                                                       (vector int)__b);
7419}
7420
7421static vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
7422                                          vector signed char __b) {
7423  return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7424}
7425
7426static vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
7427                                          vector unsigned char __b) {
7428  return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7429}
7430
7431static vector int __ATTRS_o_ai vec_vslo(vector int __a,
7432                                        vector signed char __b) {
7433  return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7434}
7435
7436static vector int __ATTRS_o_ai vec_vslo(vector int __a,
7437                                        vector unsigned char __b) {
7438  return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7439}
7440
7441static vector unsigned int __ATTRS_o_ai vec_vslo(vector unsigned int __a,
7442                                                 vector signed char __b) {
7443  return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7444                                                     (vector int)__b);
7445}
7446
7447static vector unsigned int __ATTRS_o_ai vec_vslo(vector unsigned int __a,
7448                                                 vector unsigned char __b) {
7449  return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7450                                                     (vector int)__b);
7451}
7452
7453static vector float __ATTRS_o_ai vec_vslo(vector float __a,
7454                                          vector signed char __b) {
7455  return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7456}
7457
7458static vector float __ATTRS_o_ai vec_vslo(vector float __a,
7459                                          vector unsigned char __b) {
7460  return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7461}
7462
7463/* vec_splat */
7464
7465static vector signed char __ATTRS_o_ai vec_splat(vector signed char __a,
7466                                                 unsigned const int __b) {
7467  return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7468}
7469
7470static vector unsigned char __ATTRS_o_ai vec_splat(vector unsigned char __a,
7471                                                   unsigned const int __b) {
7472  return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7473}
7474
7475static vector bool char __ATTRS_o_ai vec_splat(vector bool char __a,
7476                                               unsigned const int __b) {
7477  return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7478}
7479
7480static vector signed short __ATTRS_o_ai vec_splat(vector signed short __a,
7481                                                  unsigned const int __b) {
7482  unsigned char b0 = (__b & 0x07) * 2;
7483  unsigned char b1 = b0 + 1;
7484  return vec_perm(__a, __a,
7485                  (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1,
7486                                         b0, b1, b0, b1, b0, b1, b0, b1));
7487}
7488
7489static vector unsigned short __ATTRS_o_ai vec_splat(vector unsigned short __a,
7490                                                    unsigned const int __b) {
7491  unsigned char b0 = (__b & 0x07) * 2;
7492  unsigned char b1 = b0 + 1;
7493  return vec_perm(__a, __a,
7494                  (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1,
7495                                         b0, b1, b0, b1, b0, b1, b0, b1));
7496}
7497
7498static vector bool short __ATTRS_o_ai vec_splat(vector bool short __a,
7499                                                unsigned const int __b) {
7500  unsigned char b0 = (__b & 0x07) * 2;
7501  unsigned char b1 = b0 + 1;
7502  return vec_perm(__a, __a,
7503                  (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1,
7504                                         b0, b1, b0, b1, b0, b1, b0, b1));
7505}
7506
7507static vector pixel __ATTRS_o_ai vec_splat(vector pixel __a,
7508                                           unsigned const int __b) {
7509  unsigned char b0 = (__b & 0x07) * 2;
7510  unsigned char b1 = b0 + 1;
7511  return vec_perm(__a, __a,
7512                  (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1,
7513                                         b0, b1, b0, b1, b0, b1, b0, b1));
7514}
7515
7516static vector signed int __ATTRS_o_ai vec_splat(vector signed int __a,
7517                                                unsigned const int __b) {
7518  unsigned char b0 = (__b & 0x03) * 4;
7519  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7520  return vec_perm(__a, __a,
7521                  (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0,
7522                                         b1, b2, b3, b0, b1, b2, b3));
7523}
7524
7525static vector unsigned int __ATTRS_o_ai vec_splat(vector unsigned int __a,
7526                                                  unsigned const int __b) {
7527  unsigned char b0 = (__b & 0x03) * 4;
7528  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7529  return vec_perm(__a, __a,
7530                  (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0,
7531                                         b1, b2, b3, b0, b1, b2, b3));
7532}
7533
7534static vector bool int __ATTRS_o_ai vec_splat(vector bool int __a,
7535                                              unsigned const int __b) {
7536  unsigned char b0 = (__b & 0x03) * 4;
7537  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7538  return vec_perm(__a, __a,
7539                  (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0,
7540                                         b1, b2, b3, b0, b1, b2, b3));
7541}
7542
7543static vector float __ATTRS_o_ai vec_splat(vector float __a,
7544                                           unsigned const int __b) {
7545  unsigned char b0 = (__b & 0x03) * 4;
7546  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7547  return vec_perm(__a, __a,
7548                  (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0,
7549                                         b1, b2, b3, b0, b1, b2, b3));
7550}
7551
7552#ifdef __VSX__
7553static vector double __ATTRS_o_ai vec_splat(vector double __a,
7554                                            unsigned const int __b) {
7555  unsigned char b0 = (__b & 0x01) * 8;
7556  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4,
7557                b5 = b0 + 5, b6 = b0 + 6, b7 = b0 + 7;
7558  return vec_perm(__a, __a,
7559                  (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7,
7560                                         b0, b1, b2, b3, b4, b5, b6, b7));
7561}
7562static vector bool long long __ATTRS_o_ai vec_splat(vector bool long long __a,
7563                                                    unsigned const int __b) {
7564  unsigned char b0 = (__b & 0x01) * 8;
7565  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4,
7566                b5 = b0 + 5, b6 = b0 + 6, b7 = b0 + 7;
7567  return vec_perm(__a, __a,
7568                  (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7,
7569                                         b0, b1, b2, b3, b4, b5, b6, b7));
7570}
7571static vector signed long long __ATTRS_o_ai
7572vec_splat(vector signed long long __a, unsigned const int __b) {
7573  unsigned char b0 = (__b & 0x01) * 8;
7574  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4,
7575                b5 = b0 + 5, b6 = b0 + 6, b7 = b0 + 7;
7576  return vec_perm(__a, __a,
7577                  (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7,
7578                                         b0, b1, b2, b3, b4, b5, b6, b7));
7579}
7580static vector unsigned long long __ATTRS_o_ai
7581vec_splat(vector unsigned long long __a, unsigned const int __b) {
7582  unsigned char b0 = (__b & 0x01) * 8;
7583  unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4,
7584                b5 = b0 + 5, b6 = b0 + 6, b7 = b0 + 7;
7585  return vec_perm(__a, __a,
7586                  (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7,
7587                                         b0, b1, b2, b3, b4, b5, b6, b7));
7588}
7589#endif
7590
7591/* vec_vspltb */
7592
7593#define __builtin_altivec_vspltb vec_vspltb
7594
7595static vector signed char __ATTRS_o_ai vec_vspltb(vector signed char __a,
7596                                                  unsigned char __b) {
7597  return vec_perm(__a, __a, (vector unsigned char)(__b));
7598}
7599
7600static vector unsigned char __ATTRS_o_ai vec_vspltb(vector unsigned char __a,
7601                                                    unsigned char __b) {
7602  return vec_perm(__a, __a, (vector unsigned char)(__b));
7603}
7604
7605static vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a,
7606                                                unsigned char __b) {
7607  return vec_perm(__a, __a, (vector unsigned char)(__b));
7608}
7609
7610/* vec_vsplth */
7611
7612#define __builtin_altivec_vsplth vec_vsplth
7613
7614static vector short __ATTRS_o_ai vec_vsplth(vector short __a,
7615                                            unsigned char __b) {
7616  __b *= 2;
7617  unsigned char b1 = __b + 1;
7618  return vec_perm(__a, __a,
7619                  (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7620                                         __b, b1, __b, b1, __b, b1, __b, b1));
7621}
7622
7623static vector unsigned short __ATTRS_o_ai vec_vsplth(vector unsigned short __a,
7624                                                     unsigned char __b) {
7625  __b *= 2;
7626  unsigned char b1 = __b + 1;
7627  return vec_perm(__a, __a,
7628                  (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7629                                         __b, b1, __b, b1, __b, b1, __b, b1));
7630}
7631
7632static vector bool short __ATTRS_o_ai vec_vsplth(vector bool short __a,
7633                                                 unsigned char __b) {
7634  __b *= 2;
7635  unsigned char b1 = __b + 1;
7636  return vec_perm(__a, __a,
7637                  (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7638                                         __b, b1, __b, b1, __b, b1, __b, b1));
7639}
7640
7641static vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a,
7642                                            unsigned char __b) {
7643  __b *= 2;
7644  unsigned char b1 = __b + 1;
7645  return vec_perm(__a, __a,
7646                  (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7647                                         __b, b1, __b, b1, __b, b1, __b, b1));
7648}
7649
7650/* vec_vspltw */
7651
7652#define __builtin_altivec_vspltw vec_vspltw
7653
7654static vector int __ATTRS_o_ai vec_vspltw(vector int __a, unsigned char __b) {
7655  __b *= 4;
7656  unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7657  return vec_perm(__a, __a,
7658                  (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7659                                         b1, b2, b3, __b, b1, b2, b3));
7660}
7661
7662static vector unsigned int __ATTRS_o_ai vec_vspltw(vector unsigned int __a,
7663                                                   unsigned char __b) {
7664  __b *= 4;
7665  unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7666  return vec_perm(__a, __a,
7667                  (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7668                                         b1, b2, b3, __b, b1, b2, b3));
7669}
7670
7671static vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a,
7672                                               unsigned char __b) {
7673  __b *= 4;
7674  unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7675  return vec_perm(__a, __a,
7676                  (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7677                                         b1, b2, b3, __b, b1, b2, b3));
7678}
7679
7680static vector float __ATTRS_o_ai vec_vspltw(vector float __a,
7681                                            unsigned char __b) {
7682  __b *= 4;
7683  unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7684  return vec_perm(__a, __a,
7685                  (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7686                                         b1, b2, b3, __b, b1, b2, b3));
7687}
7688
7689/* vec_splat_s8 */
7690
7691#define __builtin_altivec_vspltisb vec_splat_s8
7692
7693// FIXME: parameter should be treated as 5-bit signed literal
7694static vector signed char __ATTRS_o_ai vec_splat_s8(signed char __a) {
7695  return (vector signed char)(__a);
7696}
7697
7698/* vec_vspltisb */
7699
7700// FIXME: parameter should be treated as 5-bit signed literal
7701static vector signed char __ATTRS_o_ai vec_vspltisb(signed char __a) {
7702  return (vector signed char)(__a);
7703}
7704
7705/* vec_splat_s16 */
7706
7707#define __builtin_altivec_vspltish vec_splat_s16
7708
7709// FIXME: parameter should be treated as 5-bit signed literal
7710static vector short __ATTRS_o_ai vec_splat_s16(signed char __a) {
7711  return (vector short)(__a);
7712}
7713
7714/* vec_vspltish */
7715
7716// FIXME: parameter should be treated as 5-bit signed literal
7717static vector short __ATTRS_o_ai vec_vspltish(signed char __a) {
7718  return (vector short)(__a);
7719}
7720
7721/* vec_splat_s32 */
7722
7723#define __builtin_altivec_vspltisw vec_splat_s32
7724
7725// FIXME: parameter should be treated as 5-bit signed literal
7726static vector int __ATTRS_o_ai vec_splat_s32(signed char __a) {
7727  return (vector int)(__a);
7728}
7729
7730/* vec_vspltisw */
7731
7732// FIXME: parameter should be treated as 5-bit signed literal
7733static vector int __ATTRS_o_ai vec_vspltisw(signed char __a) {
7734  return (vector int)(__a);
7735}
7736
7737/* vec_splat_u8 */
7738
7739// FIXME: parameter should be treated as 5-bit signed literal
7740static vector unsigned char __ATTRS_o_ai vec_splat_u8(unsigned char __a) {
7741  return (vector unsigned char)(__a);
7742}
7743
7744/* vec_splat_u16 */
7745
7746// FIXME: parameter should be treated as 5-bit signed literal
7747static vector unsigned short __ATTRS_o_ai vec_splat_u16(signed char __a) {
7748  return (vector unsigned short)(__a);
7749}
7750
7751/* vec_splat_u32 */
7752
7753// FIXME: parameter should be treated as 5-bit signed literal
7754static vector unsigned int __ATTRS_o_ai vec_splat_u32(signed char __a) {
7755  return (vector unsigned int)(__a);
7756}
7757
7758/* vec_sr */
7759
7760static vector signed char __ATTRS_o_ai vec_sr(vector signed char __a,
7761                                              vector unsigned char __b) {
7762  vector unsigned char __res = (vector unsigned char)__a >> __b;
7763  return (vector signed char)__res;
7764}
7765
7766static vector unsigned char __ATTRS_o_ai vec_sr(vector unsigned char __a,
7767                                                vector unsigned char __b) {
7768  return __a >> __b;
7769}
7770
7771static vector signed short __ATTRS_o_ai vec_sr(vector signed short __a,
7772                                        vector unsigned short __b) {
7773  vector unsigned short __res = (vector unsigned short)__a >> __b;
7774  return (vector signed short)__res;
7775}
7776
7777static vector unsigned short __ATTRS_o_ai vec_sr(vector unsigned short __a,
7778                                                 vector unsigned short __b) {
7779  return __a >> __b;
7780}
7781
7782static vector signed int __ATTRS_o_ai vec_sr(vector signed int __a,
7783                                             vector unsigned int __b) {
7784  vector unsigned int __res = (vector unsigned int)__a >> __b;
7785  return (vector signed int)__res;
7786}
7787
7788static vector unsigned int __ATTRS_o_ai vec_sr(vector unsigned int __a,
7789                                               vector unsigned int __b) {
7790  return __a >> __b;
7791}
7792
7793#ifdef __POWER8_VECTOR__
7794static vector signed long long __ATTRS_o_ai
7795vec_sr(vector signed long long __a, vector unsigned long long __b) {
7796  vector unsigned long long __res = (vector unsigned long long)__a >> __b;
7797  return (vector signed long long)__res;
7798}
7799
7800static vector unsigned long long __ATTRS_o_ai
7801vec_sr(vector unsigned long long __a, vector unsigned long long __b) {
7802  return __a >> __b;
7803}
7804#endif
7805
7806/* vec_vsrb */
7807
7808#define __builtin_altivec_vsrb vec_vsrb
7809
7810static vector signed char __ATTRS_o_ai vec_vsrb(vector signed char __a,
7811                                                vector unsigned char __b) {
7812  return __a >> (vector signed char)__b;
7813}
7814
7815static vector unsigned char __ATTRS_o_ai vec_vsrb(vector unsigned char __a,
7816                                                  vector unsigned char __b) {
7817  return __a >> __b;
7818}
7819
7820/* vec_vsrh */
7821
7822#define __builtin_altivec_vsrh vec_vsrh
7823
7824static vector short __ATTRS_o_ai vec_vsrh(vector short __a,
7825                                          vector unsigned short __b) {
7826  return __a >> (vector short)__b;
7827}
7828
7829static vector unsigned short __ATTRS_o_ai vec_vsrh(vector unsigned short __a,
7830                                                   vector unsigned short __b) {
7831  return __a >> __b;
7832}
7833
7834/* vec_vsrw */
7835
7836#define __builtin_altivec_vsrw vec_vsrw
7837
7838static vector int __ATTRS_o_ai vec_vsrw(vector int __a,
7839                                        vector unsigned int __b) {
7840  return __a >> (vector int)__b;
7841}
7842
7843static vector unsigned int __ATTRS_o_ai vec_vsrw(vector unsigned int __a,
7844                                                 vector unsigned int __b) {
7845  return __a >> __b;
7846}
7847
7848/* vec_sra */
7849
7850static vector signed char __ATTRS_o_ai vec_sra(vector signed char __a,
7851                                               vector unsigned char __b) {
7852  return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
7853}
7854
7855static vector unsigned char __ATTRS_o_ai vec_sra(vector unsigned char __a,
7856                                                 vector unsigned char __b) {
7857  return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
7858}
7859
7860static vector short __ATTRS_o_ai vec_sra(vector short __a,
7861                                         vector unsigned short __b) {
7862  return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
7863}
7864
7865static vector unsigned short __ATTRS_o_ai vec_sra(vector unsigned short __a,
7866                                                  vector unsigned short __b) {
7867  return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
7868}
7869
7870static vector int __ATTRS_o_ai vec_sra(vector int __a,
7871                                       vector unsigned int __b) {
7872  return __builtin_altivec_vsraw(__a, __b);
7873}
7874
7875static vector unsigned int __ATTRS_o_ai vec_sra(vector unsigned int __a,
7876                                                vector unsigned int __b) {
7877  return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
7878}
7879
7880#ifdef __POWER8_VECTOR__
7881static vector signed long long __ATTRS_o_ai
7882vec_sra(vector signed long long __a, vector unsigned long long __b) {
7883  return __a >> __b;
7884}
7885
7886static vector unsigned long long __ATTRS_o_ai
7887vec_sra(vector unsigned long long __a, vector unsigned long long __b) {
7888  return (vector unsigned long long)((vector signed long long)__a >> __b);
7889}
7890#endif
7891
7892/* vec_vsrab */
7893
7894static vector signed char __ATTRS_o_ai vec_vsrab(vector signed char __a,
7895                                                 vector unsigned char __b) {
7896  return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
7897}
7898
7899static vector unsigned char __ATTRS_o_ai vec_vsrab(vector unsigned char __a,
7900                                                   vector unsigned char __b) {
7901  return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
7902}
7903
7904/* vec_vsrah */
7905
7906static vector short __ATTRS_o_ai vec_vsrah(vector short __a,
7907                                           vector unsigned short __b) {
7908  return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
7909}
7910
7911static vector unsigned short __ATTRS_o_ai vec_vsrah(vector unsigned short __a,
7912                                                    vector unsigned short __b) {
7913  return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
7914}
7915
7916/* vec_vsraw */
7917
7918static vector int __ATTRS_o_ai vec_vsraw(vector int __a,
7919                                         vector unsigned int __b) {
7920  return __builtin_altivec_vsraw(__a, __b);
7921}
7922
7923static vector unsigned int __ATTRS_o_ai vec_vsraw(vector unsigned int __a,
7924                                                  vector unsigned int __b) {
7925  return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
7926}
7927
7928/* vec_srl */
7929
7930static vector signed char __ATTRS_o_ai vec_srl(vector signed char __a,
7931                                               vector unsigned char __b) {
7932  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
7933                                                   (vector int)__b);
7934}
7935
7936static vector signed char __ATTRS_o_ai vec_srl(vector signed char __a,
7937                                               vector unsigned short __b) {
7938  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
7939                                                   (vector int)__b);
7940}
7941
7942static vector signed char __ATTRS_o_ai vec_srl(vector signed char __a,
7943                                               vector unsigned int __b) {
7944  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
7945                                                   (vector int)__b);
7946}
7947
7948static vector unsigned char __ATTRS_o_ai vec_srl(vector unsigned char __a,
7949                                                 vector unsigned char __b) {
7950  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
7951                                                     (vector int)__b);
7952}
7953
7954static vector unsigned char __ATTRS_o_ai vec_srl(vector unsigned char __a,
7955                                                 vector unsigned short __b) {
7956  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
7957                                                     (vector int)__b);
7958}
7959
7960static vector unsigned char __ATTRS_o_ai vec_srl(vector unsigned char __a,
7961                                                 vector unsigned int __b) {
7962  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
7963                                                     (vector int)__b);
7964}
7965
7966static vector bool char __ATTRS_o_ai vec_srl(vector bool char __a,
7967                                             vector unsigned char __b) {
7968  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
7969                                                 (vector int)__b);
7970}
7971
7972static vector bool char __ATTRS_o_ai vec_srl(vector bool char __a,
7973                                             vector unsigned short __b) {
7974  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
7975                                                 (vector int)__b);
7976}
7977
7978static vector bool char __ATTRS_o_ai vec_srl(vector bool char __a,
7979                                             vector unsigned int __b) {
7980  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
7981                                                 (vector int)__b);
7982}
7983
7984static vector short __ATTRS_o_ai vec_srl(vector short __a,
7985                                         vector unsigned char __b) {
7986  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
7987}
7988
7989static vector short __ATTRS_o_ai vec_srl(vector short __a,
7990                                         vector unsigned short __b) {
7991  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
7992}
7993
7994static vector short __ATTRS_o_ai vec_srl(vector short __a,
7995                                         vector unsigned int __b) {
7996  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
7997}
7998
7999static vector unsigned short __ATTRS_o_ai vec_srl(vector unsigned short __a,
8000                                                  vector unsigned char __b) {
8001  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8002                                                      (vector int)__b);
8003}
8004
8005static vector unsigned short __ATTRS_o_ai vec_srl(vector unsigned short __a,
8006                                                  vector unsigned short __b) {
8007  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8008                                                      (vector int)__b);
8009}
8010
8011static vector unsigned short __ATTRS_o_ai vec_srl(vector unsigned short __a,
8012                                                  vector unsigned int __b) {
8013  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8014                                                      (vector int)__b);
8015}
8016
8017static vector bool short __ATTRS_o_ai vec_srl(vector bool short __a,
8018                                              vector unsigned char __b) {
8019  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8020                                                  (vector int)__b);
8021}
8022
8023static vector bool short __ATTRS_o_ai vec_srl(vector bool short __a,
8024                                              vector unsigned short __b) {
8025  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8026                                                  (vector int)__b);
8027}
8028
8029static vector bool short __ATTRS_o_ai vec_srl(vector bool short __a,
8030                                              vector unsigned int __b) {
8031  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8032                                                  (vector int)__b);
8033}
8034
8035static vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8036                                         vector unsigned char __b) {
8037  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8038}
8039
8040static vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8041                                         vector unsigned short __b) {
8042  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8043}
8044
8045static vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8046                                         vector unsigned int __b) {
8047  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8048}
8049
8050static vector int __ATTRS_o_ai vec_srl(vector int __a,
8051                                       vector unsigned char __b) {
8052  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8053}
8054
8055static vector int __ATTRS_o_ai vec_srl(vector int __a,
8056                                       vector unsigned short __b) {
8057  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8058}
8059
8060static vector int __ATTRS_o_ai vec_srl(vector int __a,
8061                                       vector unsigned int __b) {
8062  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8063}
8064
8065static vector unsigned int __ATTRS_o_ai vec_srl(vector unsigned int __a,
8066                                                vector unsigned char __b) {
8067  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8068                                                    (vector int)__b);
8069}
8070
8071static vector unsigned int __ATTRS_o_ai vec_srl(vector unsigned int __a,
8072                                                vector unsigned short __b) {
8073  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8074                                                    (vector int)__b);
8075}
8076
8077static vector unsigned int __ATTRS_o_ai vec_srl(vector unsigned int __a,
8078                                                vector unsigned int __b) {
8079  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8080                                                    (vector int)__b);
8081}
8082
8083static vector bool int __ATTRS_o_ai vec_srl(vector bool int __a,
8084                                            vector unsigned char __b) {
8085  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8086                                                (vector int)__b);
8087}
8088
8089static vector bool int __ATTRS_o_ai vec_srl(vector bool int __a,
8090                                            vector unsigned short __b) {
8091  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8092                                                (vector int)__b);
8093}
8094
8095static vector bool int __ATTRS_o_ai vec_srl(vector bool int __a,
8096                                            vector unsigned int __b) {
8097  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8098                                                (vector int)__b);
8099}
8100
8101/* vec_vsr */
8102
8103static vector signed char __ATTRS_o_ai vec_vsr(vector signed char __a,
8104                                               vector unsigned char __b) {
8105  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8106                                                   (vector int)__b);
8107}
8108
8109static vector signed char __ATTRS_o_ai vec_vsr(vector signed char __a,
8110                                               vector unsigned short __b) {
8111  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8112                                                   (vector int)__b);
8113}
8114
8115static vector signed char __ATTRS_o_ai vec_vsr(vector signed char __a,
8116                                               vector unsigned int __b) {
8117  return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8118                                                   (vector int)__b);
8119}
8120
8121static vector unsigned char __ATTRS_o_ai vec_vsr(vector unsigned char __a,
8122                                                 vector unsigned char __b) {
8123  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8124                                                     (vector int)__b);
8125}
8126
8127static vector unsigned char __ATTRS_o_ai vec_vsr(vector unsigned char __a,
8128                                                 vector unsigned short __b) {
8129  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8130                                                     (vector int)__b);
8131}
8132
8133static vector unsigned char __ATTRS_o_ai vec_vsr(vector unsigned char __a,
8134                                                 vector unsigned int __b) {
8135  return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8136                                                     (vector int)__b);
8137}
8138
8139static vector bool char __ATTRS_o_ai vec_vsr(vector bool char __a,
8140                                             vector unsigned char __b) {
8141  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8142                                                 (vector int)__b);
8143}
8144
8145static vector bool char __ATTRS_o_ai vec_vsr(vector bool char __a,
8146                                             vector unsigned short __b) {
8147  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8148                                                 (vector int)__b);
8149}
8150
8151static vector bool char __ATTRS_o_ai vec_vsr(vector bool char __a,
8152                                             vector unsigned int __b) {
8153  return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8154                                                 (vector int)__b);
8155}
8156
8157static vector short __ATTRS_o_ai vec_vsr(vector short __a,
8158                                         vector unsigned char __b) {
8159  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8160}
8161
8162static vector short __ATTRS_o_ai vec_vsr(vector short __a,
8163                                         vector unsigned short __b) {
8164  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8165}
8166
8167static vector short __ATTRS_o_ai vec_vsr(vector short __a,
8168                                         vector unsigned int __b) {
8169  return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8170}
8171
8172static vector unsigned short __ATTRS_o_ai vec_vsr(vector unsigned short __a,
8173                                                  vector unsigned char __b) {
8174  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8175                                                      (vector int)__b);
8176}
8177
8178static vector unsigned short __ATTRS_o_ai vec_vsr(vector unsigned short __a,
8179                                                  vector unsigned short __b) {
8180  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8181                                                      (vector int)__b);
8182}
8183
8184static vector unsigned short __ATTRS_o_ai vec_vsr(vector unsigned short __a,
8185                                                  vector unsigned int __b) {
8186  return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8187                                                      (vector int)__b);
8188}
8189
8190static vector bool short __ATTRS_o_ai vec_vsr(vector bool short __a,
8191                                              vector unsigned char __b) {
8192  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8193                                                  (vector int)__b);
8194}
8195
8196static vector bool short __ATTRS_o_ai vec_vsr(vector bool short __a,
8197                                              vector unsigned short __b) {
8198  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8199                                                  (vector int)__b);
8200}
8201
8202static vector bool short __ATTRS_o_ai vec_vsr(vector bool short __a,
8203                                              vector unsigned int __b) {
8204  return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8205                                                  (vector int)__b);
8206}
8207
8208static vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8209                                         vector unsigned char __b) {
8210  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8211}
8212
8213static vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8214                                         vector unsigned short __b) {
8215  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8216}
8217
8218static vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8219                                         vector unsigned int __b) {
8220  return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8221}
8222
8223static vector int __ATTRS_o_ai vec_vsr(vector int __a,
8224                                       vector unsigned char __b) {
8225  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8226}
8227
8228static vector int __ATTRS_o_ai vec_vsr(vector int __a,
8229                                       vector unsigned short __b) {
8230  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8231}
8232
8233static vector int __ATTRS_o_ai vec_vsr(vector int __a,
8234                                       vector unsigned int __b) {
8235  return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8236}
8237
8238static vector unsigned int __ATTRS_o_ai vec_vsr(vector unsigned int __a,
8239                                                vector unsigned char __b) {
8240  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8241                                                    (vector int)__b);
8242}
8243
8244static vector unsigned int __ATTRS_o_ai vec_vsr(vector unsigned int __a,
8245                                                vector unsigned short __b) {
8246  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8247                                                    (vector int)__b);
8248}
8249
8250static vector unsigned int __ATTRS_o_ai vec_vsr(vector unsigned int __a,
8251                                                vector unsigned int __b) {
8252  return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8253                                                    (vector int)__b);
8254}
8255
8256static vector bool int __ATTRS_o_ai vec_vsr(vector bool int __a,
8257                                            vector unsigned char __b) {
8258  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8259                                                (vector int)__b);
8260}
8261
8262static vector bool int __ATTRS_o_ai vec_vsr(vector bool int __a,
8263                                            vector unsigned short __b) {
8264  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8265                                                (vector int)__b);
8266}
8267
8268static vector bool int __ATTRS_o_ai vec_vsr(vector bool int __a,
8269                                            vector unsigned int __b) {
8270  return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8271                                                (vector int)__b);
8272}
8273
8274/* vec_sro */
8275
8276static vector signed char __ATTRS_o_ai vec_sro(vector signed char __a,
8277                                               vector signed char __b) {
8278  return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8279                                                    (vector int)__b);
8280}
8281
8282static vector signed char __ATTRS_o_ai vec_sro(vector signed char __a,
8283                                               vector unsigned char __b) {
8284  return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8285                                                    (vector int)__b);
8286}
8287
8288static vector unsigned char __ATTRS_o_ai vec_sro(vector unsigned char __a,
8289                                                 vector signed char __b) {
8290  return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8291                                                      (vector int)__b);
8292}
8293
8294static vector unsigned char __ATTRS_o_ai vec_sro(vector unsigned char __a,
8295                                                 vector unsigned char __b) {
8296  return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8297                                                      (vector int)__b);
8298}
8299
8300static vector short __ATTRS_o_ai vec_sro(vector short __a,
8301                                         vector signed char __b) {
8302  return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8303}
8304
8305static vector short __ATTRS_o_ai vec_sro(vector short __a,
8306                                         vector unsigned char __b) {
8307  return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8308}
8309
8310static vector unsigned short __ATTRS_o_ai vec_sro(vector unsigned short __a,
8311                                                  vector signed char __b) {
8312  return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8313                                                       (vector int)__b);
8314}
8315
8316static vector unsigned short __ATTRS_o_ai vec_sro(vector unsigned short __a,
8317                                                  vector unsigned char __b) {
8318  return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8319                                                       (vector int)__b);
8320}
8321
8322static vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
8323                                         vector signed char __b) {
8324  return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8325}
8326
8327static vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
8328                                         vector unsigned char __b) {
8329  return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8330}
8331
8332static vector int __ATTRS_o_ai vec_sro(vector int __a, vector signed char __b) {
8333  return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8334}
8335
8336static vector int __ATTRS_o_ai vec_sro(vector int __a,
8337                                       vector unsigned char __b) {
8338  return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8339}
8340
8341static vector unsigned int __ATTRS_o_ai vec_sro(vector unsigned int __a,
8342                                                vector signed char __b) {
8343  return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8344                                                     (vector int)__b);
8345}
8346
8347static vector unsigned int __ATTRS_o_ai vec_sro(vector unsigned int __a,
8348                                                vector unsigned char __b) {
8349  return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8350                                                     (vector int)__b);
8351}
8352
8353static vector float __ATTRS_o_ai vec_sro(vector float __a,
8354                                         vector signed char __b) {
8355  return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8356}
8357
8358static vector float __ATTRS_o_ai vec_sro(vector float __a,
8359                                         vector unsigned char __b) {
8360  return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8361}
8362
8363/* vec_vsro */
8364
8365static vector signed char __ATTRS_o_ai vec_vsro(vector signed char __a,
8366                                                vector signed char __b) {
8367  return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8368                                                    (vector int)__b);
8369}
8370
8371static vector signed char __ATTRS_o_ai vec_vsro(vector signed char __a,
8372                                                vector unsigned char __b) {
8373  return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8374                                                    (vector int)__b);
8375}
8376
8377static vector unsigned char __ATTRS_o_ai vec_vsro(vector unsigned char __a,
8378                                                  vector signed char __b) {
8379  return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8380                                                      (vector int)__b);
8381}
8382
8383static vector unsigned char __ATTRS_o_ai vec_vsro(vector unsigned char __a,
8384                                                  vector unsigned char __b) {
8385  return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8386                                                      (vector int)__b);
8387}
8388
8389static vector short __ATTRS_o_ai vec_vsro(vector short __a,
8390                                          vector signed char __b) {
8391  return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8392}
8393
8394static vector short __ATTRS_o_ai vec_vsro(vector short __a,
8395                                          vector unsigned char __b) {
8396  return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8397}
8398
8399static vector unsigned short __ATTRS_o_ai vec_vsro(vector unsigned short __a,
8400                                                   vector signed char __b) {
8401  return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8402                                                       (vector int)__b);
8403}
8404
8405static vector unsigned short __ATTRS_o_ai vec_vsro(vector unsigned short __a,
8406                                                   vector unsigned char __b) {
8407  return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8408                                                       (vector int)__b);
8409}
8410
8411static vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
8412                                          vector signed char __b) {
8413  return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8414}
8415
8416static vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
8417                                          vector unsigned char __b) {
8418  return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8419}
8420
8421static vector int __ATTRS_o_ai vec_vsro(vector int __a,
8422                                        vector signed char __b) {
8423  return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8424}
8425
8426static vector int __ATTRS_o_ai vec_vsro(vector int __a,
8427                                        vector unsigned char __b) {
8428  return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8429}
8430
8431static vector unsigned int __ATTRS_o_ai vec_vsro(vector unsigned int __a,
8432                                                 vector signed char __b) {
8433  return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8434                                                     (vector int)__b);
8435}
8436
8437static vector unsigned int __ATTRS_o_ai vec_vsro(vector unsigned int __a,
8438                                                 vector unsigned char __b) {
8439  return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8440                                                     (vector int)__b);
8441}
8442
8443static vector float __ATTRS_o_ai vec_vsro(vector float __a,
8444                                          vector signed char __b) {
8445  return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8446}
8447
8448static vector float __ATTRS_o_ai vec_vsro(vector float __a,
8449                                          vector unsigned char __b) {
8450  return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8451}
8452
8453/* vec_st */
8454
8455static void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
8456                                vector signed char *__c) {
8457  __builtin_altivec_stvx((vector int)__a, __b, __c);
8458}
8459
8460static void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
8461                                signed char *__c) {
8462  __builtin_altivec_stvx((vector int)__a, __b, __c);
8463}
8464
8465static void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
8466                                vector unsigned char *__c) {
8467  __builtin_altivec_stvx((vector int)__a, __b, __c);
8468}
8469
8470static void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
8471                                unsigned char *__c) {
8472  __builtin_altivec_stvx((vector int)__a, __b, __c);
8473}
8474
8475static void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8476                                signed char *__c) {
8477  __builtin_altivec_stvx((vector int)__a, __b, __c);
8478}
8479
8480static void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8481                                unsigned char *__c) {
8482  __builtin_altivec_stvx((vector int)__a, __b, __c);
8483}
8484
8485static void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8486                                vector bool char *__c) {
8487  __builtin_altivec_stvx((vector int)__a, __b, __c);
8488}
8489
8490static void __ATTRS_o_ai vec_st(vector short __a, int __b, vector short *__c) {
8491  __builtin_altivec_stvx((vector int)__a, __b, __c);
8492}
8493
8494static void __ATTRS_o_ai vec_st(vector short __a, int __b, short *__c) {
8495  __builtin_altivec_stvx((vector int)__a, __b, __c);
8496}
8497
8498static void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
8499                                vector unsigned short *__c) {
8500  __builtin_altivec_stvx((vector int)__a, __b, __c);
8501}
8502
8503static void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
8504                                unsigned short *__c) {
8505  __builtin_altivec_stvx((vector int)__a, __b, __c);
8506}
8507
8508static void __ATTRS_o_ai vec_st(vector bool short __a, int __b, short *__c) {
8509  __builtin_altivec_stvx((vector int)__a, __b, __c);
8510}
8511
8512static void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8513                                unsigned short *__c) {
8514  __builtin_altivec_stvx((vector int)__a, __b, __c);
8515}
8516
8517static void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8518                                vector bool short *__c) {
8519  __builtin_altivec_stvx((vector int)__a, __b, __c);
8520}
8521
8522static void __ATTRS_o_ai vec_st(vector pixel __a, int __b, short *__c) {
8523  __builtin_altivec_stvx((vector int)__a, __b, __c);
8524}
8525
8526static void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8527                                unsigned short *__c) {
8528  __builtin_altivec_stvx((vector int)__a, __b, __c);
8529}
8530
8531static void __ATTRS_o_ai vec_st(vector pixel __a, int __b, vector pixel *__c) {
8532  __builtin_altivec_stvx((vector int)__a, __b, __c);
8533}
8534
8535static void __ATTRS_o_ai vec_st(vector int __a, int __b, vector int *__c) {
8536  __builtin_altivec_stvx(__a, __b, __c);
8537}
8538
8539static void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) {
8540  __builtin_altivec_stvx(__a, __b, __c);
8541}
8542
8543static void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
8544                                vector unsigned int *__c) {
8545  __builtin_altivec_stvx((vector int)__a, __b, __c);
8546}
8547
8548static void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
8549                                unsigned int *__c) {
8550  __builtin_altivec_stvx((vector int)__a, __b, __c);
8551}
8552
8553static void __ATTRS_o_ai vec_st(vector bool int __a, int __b, int *__c) {
8554  __builtin_altivec_stvx((vector int)__a, __b, __c);
8555}
8556
8557static void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8558                                unsigned int *__c) {
8559  __builtin_altivec_stvx((vector int)__a, __b, __c);
8560}
8561
8562static void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8563                                vector bool int *__c) {
8564  __builtin_altivec_stvx((vector int)__a, __b, __c);
8565}
8566
8567static void __ATTRS_o_ai vec_st(vector float __a, int __b, vector float *__c) {
8568  __builtin_altivec_stvx((vector int)__a, __b, __c);
8569}
8570
8571static void __ATTRS_o_ai vec_st(vector float __a, int __b, float *__c) {
8572  __builtin_altivec_stvx((vector int)__a, __b, __c);
8573}
8574
8575/* vec_stvx */
8576
8577static void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
8578                                  vector signed char *__c) {
8579  __builtin_altivec_stvx((vector int)__a, __b, __c);
8580}
8581
8582static void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
8583                                  signed char *__c) {
8584  __builtin_altivec_stvx((vector int)__a, __b, __c);
8585}
8586
8587static void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
8588                                  vector unsigned char *__c) {
8589  __builtin_altivec_stvx((vector int)__a, __b, __c);
8590}
8591
8592static void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
8593                                  unsigned char *__c) {
8594  __builtin_altivec_stvx((vector int)__a, __b, __c);
8595}
8596
8597static void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8598                                  signed char *__c) {
8599  __builtin_altivec_stvx((vector int)__a, __b, __c);
8600}
8601
8602static void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8603                                  unsigned char *__c) {
8604  __builtin_altivec_stvx((vector int)__a, __b, __c);
8605}
8606
8607static void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8608                                  vector bool char *__c) {
8609  __builtin_altivec_stvx((vector int)__a, __b, __c);
8610}
8611
8612static void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
8613                                  vector short *__c) {
8614  __builtin_altivec_stvx((vector int)__a, __b, __c);
8615}
8616
8617static void __ATTRS_o_ai vec_stvx(vector short __a, int __b, short *__c) {
8618  __builtin_altivec_stvx((vector int)__a, __b, __c);
8619}
8620
8621static void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
8622                                  vector unsigned short *__c) {
8623  __builtin_altivec_stvx((vector int)__a, __b, __c);
8624}
8625
8626static void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
8627                                  unsigned short *__c) {
8628  __builtin_altivec_stvx((vector int)__a, __b, __c);
8629}
8630
8631static void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b, short *__c) {
8632  __builtin_altivec_stvx((vector int)__a, __b, __c);
8633}
8634
8635static void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8636                                  unsigned short *__c) {
8637  __builtin_altivec_stvx((vector int)__a, __b, __c);
8638}
8639
8640static void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8641                                  vector bool short *__c) {
8642  __builtin_altivec_stvx((vector int)__a, __b, __c);
8643}
8644
8645static void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b, short *__c) {
8646  __builtin_altivec_stvx((vector int)__a, __b, __c);
8647}
8648
8649static void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8650                                  unsigned short *__c) {
8651  __builtin_altivec_stvx((vector int)__a, __b, __c);
8652}
8653
8654static void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8655                                  vector pixel *__c) {
8656  __builtin_altivec_stvx((vector int)__a, __b, __c);
8657}
8658
8659static void __ATTRS_o_ai vec_stvx(vector int __a, int __b, vector int *__c) {
8660  __builtin_altivec_stvx(__a, __b, __c);
8661}
8662
8663static void __ATTRS_o_ai vec_stvx(vector int __a, int __b, int *__c) {
8664  __builtin_altivec_stvx(__a, __b, __c);
8665}
8666
8667static void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
8668                                  vector unsigned int *__c) {
8669  __builtin_altivec_stvx((vector int)__a, __b, __c);
8670}
8671
8672static void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
8673                                  unsigned int *__c) {
8674  __builtin_altivec_stvx((vector int)__a, __b, __c);
8675}
8676
8677static void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b, int *__c) {
8678  __builtin_altivec_stvx((vector int)__a, __b, __c);
8679}
8680
8681static void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8682                                  unsigned int *__c) {
8683  __builtin_altivec_stvx((vector int)__a, __b, __c);
8684}
8685
8686static void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8687                                  vector bool int *__c) {
8688  __builtin_altivec_stvx((vector int)__a, __b, __c);
8689}
8690
8691static void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
8692                                  vector float *__c) {
8693  __builtin_altivec_stvx((vector int)__a, __b, __c);
8694}
8695
8696static void __ATTRS_o_ai vec_stvx(vector float __a, int __b, float *__c) {
8697  __builtin_altivec_stvx((vector int)__a, __b, __c);
8698}
8699
8700/* vec_ste */
8701
8702static void __ATTRS_o_ai vec_ste(vector signed char __a, int __b,
8703                                 signed char *__c) {
8704  __builtin_altivec_stvebx((vector char)__a, __b, __c);
8705}
8706
8707static void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b,
8708                                 unsigned char *__c) {
8709  __builtin_altivec_stvebx((vector char)__a, __b, __c);
8710}
8711
8712static void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
8713                                 signed char *__c) {
8714  __builtin_altivec_stvebx((vector char)__a, __b, __c);
8715}
8716
8717static void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
8718                                 unsigned char *__c) {
8719  __builtin_altivec_stvebx((vector char)__a, __b, __c);
8720}
8721
8722static void __ATTRS_o_ai vec_ste(vector short __a, int __b, short *__c) {
8723  __builtin_altivec_stvehx(__a, __b, __c);
8724}
8725
8726static void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b,
8727                                 unsigned short *__c) {
8728  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8729}
8730
8731static void __ATTRS_o_ai vec_ste(vector bool short __a, int __b, short *__c) {
8732  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8733}
8734
8735static void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
8736                                 unsigned short *__c) {
8737  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8738}
8739
8740static void __ATTRS_o_ai vec_ste(vector pixel __a, int __b, short *__c) {
8741  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8742}
8743
8744static void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
8745                                 unsigned short *__c) {
8746  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8747}
8748
8749static void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) {
8750  __builtin_altivec_stvewx(__a, __b, __c);
8751}
8752
8753static void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b,
8754                                 unsigned int *__c) {
8755  __builtin_altivec_stvewx((vector int)__a, __b, __c);
8756}
8757
8758static void __ATTRS_o_ai vec_ste(vector bool int __a, int __b, int *__c) {
8759  __builtin_altivec_stvewx((vector int)__a, __b, __c);
8760}
8761
8762static void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
8763                                 unsigned int *__c) {
8764  __builtin_altivec_stvewx((vector int)__a, __b, __c);
8765}
8766
8767static void __ATTRS_o_ai vec_ste(vector float __a, int __b, float *__c) {
8768  __builtin_altivec_stvewx((vector int)__a, __b, __c);
8769}
8770
8771/* vec_stvebx */
8772
8773static void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b,
8774                                    signed char *__c) {
8775  __builtin_altivec_stvebx((vector char)__a, __b, __c);
8776}
8777
8778static void __ATTRS_o_ai vec_stvebx(vector unsigned char __a, int __b,
8779                                    unsigned char *__c) {
8780  __builtin_altivec_stvebx((vector char)__a, __b, __c);
8781}
8782
8783static void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
8784                                    signed char *__c) {
8785  __builtin_altivec_stvebx((vector char)__a, __b, __c);
8786}
8787
8788static void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
8789                                    unsigned char *__c) {
8790  __builtin_altivec_stvebx((vector char)__a, __b, __c);
8791}
8792
8793/* vec_stvehx */
8794
8795static void __ATTRS_o_ai vec_stvehx(vector short __a, int __b, short *__c) {
8796  __builtin_altivec_stvehx(__a, __b, __c);
8797}
8798
8799static void __ATTRS_o_ai vec_stvehx(vector unsigned short __a, int __b,
8800                                    unsigned short *__c) {
8801  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8802}
8803
8804static void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
8805                                    short *__c) {
8806  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8807}
8808
8809static void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
8810                                    unsigned short *__c) {
8811  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8812}
8813
8814static void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b, short *__c) {
8815  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8816}
8817
8818static void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
8819                                    unsigned short *__c) {
8820  __builtin_altivec_stvehx((vector short)__a, __b, __c);
8821}
8822
8823/* vec_stvewx */
8824
8825static void __ATTRS_o_ai vec_stvewx(vector int __a, int __b, int *__c) {
8826  __builtin_altivec_stvewx(__a, __b, __c);
8827}
8828
8829static void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b,
8830                                    unsigned int *__c) {
8831  __builtin_altivec_stvewx((vector int)__a, __b, __c);
8832}
8833
8834static void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b, int *__c) {
8835  __builtin_altivec_stvewx((vector int)__a, __b, __c);
8836}
8837
8838static void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
8839                                    unsigned int *__c) {
8840  __builtin_altivec_stvewx((vector int)__a, __b, __c);
8841}
8842
8843static void __ATTRS_o_ai vec_stvewx(vector float __a, int __b, float *__c) {
8844  __builtin_altivec_stvewx((vector int)__a, __b, __c);
8845}
8846
8847/* vec_stl */
8848
8849static void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
8850                                 vector signed char *__c) {
8851  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8852}
8853
8854static void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
8855                                 signed char *__c) {
8856  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8857}
8858
8859static void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
8860                                 vector unsigned char *__c) {
8861  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8862}
8863
8864static void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
8865                                 unsigned char *__c) {
8866  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8867}
8868
8869static void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
8870                                 signed char *__c) {
8871  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8872}
8873
8874static void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
8875                                 unsigned char *__c) {
8876  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8877}
8878
8879static void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
8880                                 vector bool char *__c) {
8881  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8882}
8883
8884static void __ATTRS_o_ai vec_stl(vector short __a, int __b, vector short *__c) {
8885  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8886}
8887
8888static void __ATTRS_o_ai vec_stl(vector short __a, int __b, short *__c) {
8889  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8890}
8891
8892static void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
8893                                 vector unsigned short *__c) {
8894  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8895}
8896
8897static void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
8898                                 unsigned short *__c) {
8899  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8900}
8901
8902static void __ATTRS_o_ai vec_stl(vector bool short __a, int __b, short *__c) {
8903  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8904}
8905
8906static void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
8907                                 unsigned short *__c) {
8908  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8909}
8910
8911static void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
8912                                 vector bool short *__c) {
8913  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8914}
8915
8916static void __ATTRS_o_ai vec_stl(vector pixel __a, int __b, short *__c) {
8917  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8918}
8919
8920static void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
8921                                 unsigned short *__c) {
8922  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8923}
8924
8925static void __ATTRS_o_ai vec_stl(vector pixel __a, int __b, vector pixel *__c) {
8926  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8927}
8928
8929static void __ATTRS_o_ai vec_stl(vector int __a, int __b, vector int *__c) {
8930  __builtin_altivec_stvxl(__a, __b, __c);
8931}
8932
8933static void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) {
8934  __builtin_altivec_stvxl(__a, __b, __c);
8935}
8936
8937static void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
8938                                 vector unsigned int *__c) {
8939  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8940}
8941
8942static void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
8943                                 unsigned int *__c) {
8944  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8945}
8946
8947static void __ATTRS_o_ai vec_stl(vector bool int __a, int __b, int *__c) {
8948  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8949}
8950
8951static void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
8952                                 unsigned int *__c) {
8953  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8954}
8955
8956static void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
8957                                 vector bool int *__c) {
8958  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8959}
8960
8961static void __ATTRS_o_ai vec_stl(vector float __a, int __b, vector float *__c) {
8962  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8963}
8964
8965static void __ATTRS_o_ai vec_stl(vector float __a, int __b, float *__c) {
8966  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8967}
8968
8969/* vec_stvxl */
8970
8971static void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
8972                                   vector signed char *__c) {
8973  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8974}
8975
8976static void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
8977                                   signed char *__c) {
8978  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8979}
8980
8981static void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
8982                                   vector unsigned char *__c) {
8983  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8984}
8985
8986static void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
8987                                   unsigned char *__c) {
8988  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8989}
8990
8991static void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
8992                                   signed char *__c) {
8993  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8994}
8995
8996static void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
8997                                   unsigned char *__c) {
8998  __builtin_altivec_stvxl((vector int)__a, __b, __c);
8999}
9000
9001static void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9002                                   vector bool char *__c) {
9003  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9004}
9005
9006static void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
9007                                   vector short *__c) {
9008  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9009}
9010
9011static void __ATTRS_o_ai vec_stvxl(vector short __a, int __b, short *__c) {
9012  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9013}
9014
9015static void __ATTRS_o_ai vec_stvxl(vector unsigned short __a, int __b,
9016                                   vector unsigned short *__c) {
9017  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9018}
9019
9020static void __ATTRS_o_ai vec_stvxl(vector unsigned short __a, int __b,
9021                                   unsigned short *__c) {
9022  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9023}
9024
9025static void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b, short *__c) {
9026  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9027}
9028
9029static void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9030                                   unsigned short *__c) {
9031  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9032}
9033
9034static void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9035                                   vector bool short *__c) {
9036  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9037}
9038
9039static void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b, short *__c) {
9040  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9041}
9042
9043static void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9044                                   unsigned short *__c) {
9045  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9046}
9047
9048static void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9049                                   vector pixel *__c) {
9050  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9051}
9052
9053static void __ATTRS_o_ai vec_stvxl(vector int __a, int __b, vector int *__c) {
9054  __builtin_altivec_stvxl(__a, __b, __c);
9055}
9056
9057static void __ATTRS_o_ai vec_stvxl(vector int __a, int __b, int *__c) {
9058  __builtin_altivec_stvxl(__a, __b, __c);
9059}
9060
9061static void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
9062                                   vector unsigned int *__c) {
9063  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9064}
9065
9066static void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
9067                                   unsigned int *__c) {
9068  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9069}
9070
9071static void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b, int *__c) {
9072  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9073}
9074
9075static void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9076                                   unsigned int *__c) {
9077  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9078}
9079
9080static void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9081                                   vector bool int *__c) {
9082  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9083}
9084
9085static void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
9086                                   vector float *__c) {
9087  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9088}
9089
9090static void __ATTRS_o_ai vec_stvxl(vector float __a, int __b, float *__c) {
9091  __builtin_altivec_stvxl((vector int)__a, __b, __c);
9092}
9093
9094/* vec_sub */
9095
9096static vector signed char __ATTRS_o_ai vec_sub(vector signed char __a,
9097                                               vector signed char __b) {
9098  return __a - __b;
9099}
9100
9101static vector signed char __ATTRS_o_ai vec_sub(vector bool char __a,
9102                                               vector signed char __b) {
9103  return (vector signed char)__a - __b;
9104}
9105
9106static vector signed char __ATTRS_o_ai vec_sub(vector signed char __a,
9107                                               vector bool char __b) {
9108  return __a - (vector signed char)__b;
9109}
9110
9111static vector unsigned char __ATTRS_o_ai vec_sub(vector unsigned char __a,
9112                                                 vector unsigned char __b) {
9113  return __a - __b;
9114}
9115
9116static vector unsigned char __ATTRS_o_ai vec_sub(vector bool char __a,
9117                                                 vector unsigned char __b) {
9118  return (vector unsigned char)__a - __b;
9119}
9120
9121static vector unsigned char __ATTRS_o_ai vec_sub(vector unsigned char __a,
9122                                                 vector bool char __b) {
9123  return __a - (vector unsigned char)__b;
9124}
9125
9126static vector short __ATTRS_o_ai vec_sub(vector short __a, vector short __b) {
9127  return __a - __b;
9128}
9129
9130static vector short __ATTRS_o_ai vec_sub(vector bool short __a,
9131                                         vector short __b) {
9132  return (vector short)__a - __b;
9133}
9134
9135static vector short __ATTRS_o_ai vec_sub(vector short __a,
9136                                         vector bool short __b) {
9137  return __a - (vector short)__b;
9138}
9139
9140static vector unsigned short __ATTRS_o_ai vec_sub(vector unsigned short __a,
9141                                                  vector unsigned short __b) {
9142  return __a - __b;
9143}
9144
9145static vector unsigned short __ATTRS_o_ai vec_sub(vector bool short __a,
9146                                                  vector unsigned short __b) {
9147  return (vector unsigned short)__a - __b;
9148}
9149
9150static vector unsigned short __ATTRS_o_ai vec_sub(vector unsigned short __a,
9151                                                  vector bool short __b) {
9152  return __a - (vector unsigned short)__b;
9153}
9154
9155static vector int __ATTRS_o_ai vec_sub(vector int __a, vector int __b) {
9156  return __a - __b;
9157}
9158
9159static vector int __ATTRS_o_ai vec_sub(vector bool int __a, vector int __b) {
9160  return (vector int)__a - __b;
9161}
9162
9163static vector int __ATTRS_o_ai vec_sub(vector int __a, vector bool int __b) {
9164  return __a - (vector int)__b;
9165}
9166
9167static vector unsigned int __ATTRS_o_ai vec_sub(vector unsigned int __a,
9168                                                vector unsigned int __b) {
9169  return __a - __b;
9170}
9171
9172static vector unsigned int __ATTRS_o_ai vec_sub(vector bool int __a,
9173                                                vector unsigned int __b) {
9174  return (vector unsigned int)__a - __b;
9175}
9176
9177static vector unsigned int __ATTRS_o_ai vec_sub(vector unsigned int __a,
9178                                                vector bool int __b) {
9179  return __a - (vector unsigned int)__b;
9180}
9181
9182#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9183static vector signed __int128 __ATTRS_o_ai vec_sub(vector signed __int128 __a,
9184                                                   vector signed __int128 __b) {
9185  return __a - __b;
9186}
9187
9188static vector unsigned __int128 __ATTRS_o_ai
9189vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9190  return __a - __b;
9191}
9192#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9193
9194static vector float __ATTRS_o_ai vec_sub(vector float __a, vector float __b) {
9195  return __a - __b;
9196}
9197
9198#ifdef __VSX__
9199static vector double __ATTRS_o_ai
9200vec_sub(vector double __a, vector double __b) {
9201  return __a - __b;
9202}
9203#endif
9204
9205/* vec_vsububm */
9206
9207#define __builtin_altivec_vsububm vec_vsububm
9208
9209static vector signed char __ATTRS_o_ai vec_vsububm(vector signed char __a,
9210                                                   vector signed char __b) {
9211  return __a - __b;
9212}
9213
9214static vector signed char __ATTRS_o_ai vec_vsububm(vector bool char __a,
9215                                                   vector signed char __b) {
9216  return (vector signed char)__a - __b;
9217}
9218
9219static vector signed char __ATTRS_o_ai vec_vsububm(vector signed char __a,
9220                                                   vector bool char __b) {
9221  return __a - (vector signed char)__b;
9222}
9223
9224static vector unsigned char __ATTRS_o_ai vec_vsububm(vector unsigned char __a,
9225                                                     vector unsigned char __b) {
9226  return __a - __b;
9227}
9228
9229static vector unsigned char __ATTRS_o_ai vec_vsububm(vector bool char __a,
9230                                                     vector unsigned char __b) {
9231  return (vector unsigned char)__a - __b;
9232}
9233
9234static vector unsigned char __ATTRS_o_ai vec_vsububm(vector unsigned char __a,
9235                                                     vector bool char __b) {
9236  return __a - (vector unsigned char)__b;
9237}
9238
9239/* vec_vsubuhm */
9240
9241#define __builtin_altivec_vsubuhm vec_vsubuhm
9242
9243static vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
9244                                             vector short __b) {
9245  return __a - __b;
9246}
9247
9248static vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a,
9249                                             vector short __b) {
9250  return (vector short)__a - __b;
9251}
9252
9253static vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
9254                                             vector bool short __b) {
9255  return __a - (vector short)__b;
9256}
9257
9258static vector unsigned short __ATTRS_o_ai
9259vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) {
9260  return __a - __b;
9261}
9262
9263static vector unsigned short __ATTRS_o_ai
9264vec_vsubuhm(vector bool short __a, vector unsigned short __b) {
9265  return (vector unsigned short)__a - __b;
9266}
9267
9268static vector unsigned short __ATTRS_o_ai vec_vsubuhm(vector unsigned short __a,
9269                                                      vector bool short __b) {
9270  return __a - (vector unsigned short)__b;
9271}
9272
9273/* vec_vsubuwm */
9274
9275#define __builtin_altivec_vsubuwm vec_vsubuwm
9276
9277static vector int __ATTRS_o_ai vec_vsubuwm(vector int __a, vector int __b) {
9278  return __a - __b;
9279}
9280
9281static vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
9282                                           vector int __b) {
9283  return (vector int)__a - __b;
9284}
9285
9286static vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
9287                                           vector bool int __b) {
9288  return __a - (vector int)__b;
9289}
9290
9291static vector unsigned int __ATTRS_o_ai vec_vsubuwm(vector unsigned int __a,
9292                                                    vector unsigned int __b) {
9293  return __a - __b;
9294}
9295
9296static vector unsigned int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
9297                                                    vector unsigned int __b) {
9298  return (vector unsigned int)__a - __b;
9299}
9300
9301static vector unsigned int __ATTRS_o_ai vec_vsubuwm(vector unsigned int __a,
9302                                                    vector bool int __b) {
9303  return __a - (vector unsigned int)__b;
9304}
9305
9306/* vec_vsubfp */
9307
9308#define __builtin_altivec_vsubfp vec_vsubfp
9309
9310static vector float __attribute__((__always_inline__))
9311vec_vsubfp(vector float __a, vector float __b) {
9312  return __a - __b;
9313}
9314
9315/* vec_subc */
9316
9317static vector unsigned int __ATTRS_o_ai vec_subc(vector unsigned int __a,
9318                                                 vector unsigned int __b) {
9319  return __builtin_altivec_vsubcuw(__a, __b);
9320}
9321
9322#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9323static vector unsigned __int128 __ATTRS_o_ai
9324vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9325  return __builtin_altivec_vsubcuq(__a, __b);
9326}
9327
9328static vector signed __int128 __ATTRS_o_ai
9329vec_subc(vector signed __int128 __a, vector signed __int128 __b) {
9330  return __builtin_altivec_vsubcuq(__a, __b);
9331}
9332#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9333
9334/* vec_vsubcuw */
9335
9336static vector unsigned int __attribute__((__always_inline__))
9337vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) {
9338  return __builtin_altivec_vsubcuw(__a, __b);
9339}
9340
9341/* vec_subs */
9342
9343static vector signed char __ATTRS_o_ai vec_subs(vector signed char __a,
9344                                                vector signed char __b) {
9345  return __builtin_altivec_vsubsbs(__a, __b);
9346}
9347
9348static vector signed char __ATTRS_o_ai vec_subs(vector bool char __a,
9349                                                vector signed char __b) {
9350  return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
9351}
9352
9353static vector signed char __ATTRS_o_ai vec_subs(vector signed char __a,
9354                                                vector bool char __b) {
9355  return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
9356}
9357
9358static vector unsigned char __ATTRS_o_ai vec_subs(vector unsigned char __a,
9359                                                  vector unsigned char __b) {
9360  return __builtin_altivec_vsububs(__a, __b);
9361}
9362
9363static vector unsigned char __ATTRS_o_ai vec_subs(vector bool char __a,
9364                                                  vector unsigned char __b) {
9365  return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
9366}
9367
9368static vector unsigned char __ATTRS_o_ai vec_subs(vector unsigned char __a,
9369                                                  vector bool char __b) {
9370  return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
9371}
9372
9373static vector short __ATTRS_o_ai vec_subs(vector short __a, vector short __b) {
9374  return __builtin_altivec_vsubshs(__a, __b);
9375}
9376
9377static vector short __ATTRS_o_ai vec_subs(vector bool short __a,
9378                                          vector short __b) {
9379  return __builtin_altivec_vsubshs((vector short)__a, __b);
9380}
9381
9382static vector short __ATTRS_o_ai vec_subs(vector short __a,
9383                                          vector bool short __b) {
9384  return __builtin_altivec_vsubshs(__a, (vector short)__b);
9385}
9386
9387static vector unsigned short __ATTRS_o_ai vec_subs(vector unsigned short __a,
9388                                                   vector unsigned short __b) {
9389  return __builtin_altivec_vsubuhs(__a, __b);
9390}
9391
9392static vector unsigned short __ATTRS_o_ai vec_subs(vector bool short __a,
9393                                                   vector unsigned short __b) {
9394  return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
9395}
9396
9397static vector unsigned short __ATTRS_o_ai vec_subs(vector unsigned short __a,
9398                                                   vector bool short __b) {
9399  return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
9400}
9401
9402static vector int __ATTRS_o_ai vec_subs(vector int __a, vector int __b) {
9403  return __builtin_altivec_vsubsws(__a, __b);
9404}
9405
9406static vector int __ATTRS_o_ai vec_subs(vector bool int __a, vector int __b) {
9407  return __builtin_altivec_vsubsws((vector int)__a, __b);
9408}
9409
9410static vector int __ATTRS_o_ai vec_subs(vector int __a, vector bool int __b) {
9411  return __builtin_altivec_vsubsws(__a, (vector int)__b);
9412}
9413
9414static vector unsigned int __ATTRS_o_ai vec_subs(vector unsigned int __a,
9415                                                 vector unsigned int __b) {
9416  return __builtin_altivec_vsubuws(__a, __b);
9417}
9418
9419static vector unsigned int __ATTRS_o_ai vec_subs(vector bool int __a,
9420                                                 vector unsigned int __b) {
9421  return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
9422}
9423
9424static vector unsigned int __ATTRS_o_ai vec_subs(vector unsigned int __a,
9425                                                 vector bool int __b) {
9426  return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
9427}
9428
9429/* vec_vsubsbs */
9430
9431static vector signed char __ATTRS_o_ai vec_vsubsbs(vector signed char __a,
9432                                                   vector signed char __b) {
9433  return __builtin_altivec_vsubsbs(__a, __b);
9434}
9435
9436static vector signed char __ATTRS_o_ai vec_vsubsbs(vector bool char __a,
9437                                                   vector signed char __b) {
9438  return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
9439}
9440
9441static vector signed char __ATTRS_o_ai vec_vsubsbs(vector signed char __a,
9442                                                   vector bool char __b) {
9443  return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
9444}
9445
9446/* vec_vsububs */
9447
9448static vector unsigned char __ATTRS_o_ai vec_vsububs(vector unsigned char __a,
9449                                                     vector unsigned char __b) {
9450  return __builtin_altivec_vsububs(__a, __b);
9451}
9452
9453static vector unsigned char __ATTRS_o_ai vec_vsububs(vector bool char __a,
9454                                                     vector unsigned char __b) {
9455  return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
9456}
9457
9458static vector unsigned char __ATTRS_o_ai vec_vsububs(vector unsigned char __a,
9459                                                     vector bool char __b) {
9460  return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
9461}
9462
9463/* vec_vsubshs */
9464
9465static vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
9466                                             vector short __b) {
9467  return __builtin_altivec_vsubshs(__a, __b);
9468}
9469
9470static vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a,
9471                                             vector short __b) {
9472  return __builtin_altivec_vsubshs((vector short)__a, __b);
9473}
9474
9475static vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
9476                                             vector bool short __b) {
9477  return __builtin_altivec_vsubshs(__a, (vector short)__b);
9478}
9479
9480/* vec_vsubuhs */
9481
9482static vector unsigned short __ATTRS_o_ai
9483vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) {
9484  return __builtin_altivec_vsubuhs(__a, __b);
9485}
9486
9487static vector unsigned short __ATTRS_o_ai
9488vec_vsubuhs(vector bool short __a, vector unsigned short __b) {
9489  return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
9490}
9491
9492static vector unsigned short __ATTRS_o_ai vec_vsubuhs(vector unsigned short __a,
9493                                                      vector bool short __b) {
9494  return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
9495}
9496
9497/* vec_vsubsws */
9498
9499static vector int __ATTRS_o_ai vec_vsubsws(vector int __a, vector int __b) {
9500  return __builtin_altivec_vsubsws(__a, __b);
9501}
9502
9503static vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a,
9504                                           vector int __b) {
9505  return __builtin_altivec_vsubsws((vector int)__a, __b);
9506}
9507
9508static vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
9509                                           vector bool int __b) {
9510  return __builtin_altivec_vsubsws(__a, (vector int)__b);
9511}
9512
9513/* vec_vsubuws */
9514
9515static vector unsigned int __ATTRS_o_ai vec_vsubuws(vector unsigned int __a,
9516                                                    vector unsigned int __b) {
9517  return __builtin_altivec_vsubuws(__a, __b);
9518}
9519
9520static vector unsigned int __ATTRS_o_ai vec_vsubuws(vector bool int __a,
9521                                                    vector unsigned int __b) {
9522  return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
9523}
9524
9525static vector unsigned int __ATTRS_o_ai vec_vsubuws(vector unsigned int __a,
9526                                                    vector bool int __b) {
9527  return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
9528}
9529
9530#if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9531/* vec_vsubuqm */
9532
9533static vector signed __int128 __ATTRS_o_ai
9534vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) {
9535  return __a - __b;
9536}
9537
9538static vector unsigned __int128 __ATTRS_o_ai
9539vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9540  return __a - __b;
9541}
9542
9543/* vec_vsubeuqm */
9544
9545static vector signed __int128 __ATTRS_o_ai
9546vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b,
9547             vector signed __int128 __c) {
9548  return __builtin_altivec_vsubeuqm(__a, __b, __c);
9549}
9550
9551static vector unsigned __int128 __ATTRS_o_ai
9552vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
9553             vector unsigned __int128 __c) {
9554  return __builtin_altivec_vsubeuqm(__a, __b, __c);
9555}
9556
9557/* vec_vsubcuq */
9558
9559static vector signed __int128 __ATTRS_o_ai
9560vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) {
9561  return __builtin_altivec_vsubcuq(__a, __b);
9562}
9563
9564static vector unsigned __int128 __ATTRS_o_ai
9565vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9566  return __builtin_altivec_vsubcuq(__a, __b);
9567}
9568
9569/* vec_vsubecuq */
9570
9571static vector signed __int128 __ATTRS_o_ai
9572vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b,
9573             vector signed __int128 __c) {
9574  return __builtin_altivec_vsubecuq(__a, __b, __c);
9575}
9576
9577static vector unsigned __int128 __ATTRS_o_ai
9578vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
9579             vector unsigned __int128 __c) {
9580  return __builtin_altivec_vsubecuq(__a, __b, __c);
9581}
9582#endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9583
9584/* vec_sum4s */
9585
9586static vector int __ATTRS_o_ai vec_sum4s(vector signed char __a,
9587                                         vector int __b) {
9588  return __builtin_altivec_vsum4sbs(__a, __b);
9589}
9590
9591static vector unsigned int __ATTRS_o_ai vec_sum4s(vector unsigned char __a,
9592                                                  vector unsigned int __b) {
9593  return __builtin_altivec_vsum4ubs(__a, __b);
9594}
9595
9596static vector int __ATTRS_o_ai vec_sum4s(vector signed short __a,
9597                                         vector int __b) {
9598  return __builtin_altivec_vsum4shs(__a, __b);
9599}
9600
9601/* vec_vsum4sbs */
9602
9603static vector int __attribute__((__always_inline__))
9604vec_vsum4sbs(vector signed char __a, vector int __b) {
9605  return __builtin_altivec_vsum4sbs(__a, __b);
9606}
9607
9608/* vec_vsum4ubs */
9609
9610static vector unsigned int __attribute__((__always_inline__))
9611vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) {
9612  return __builtin_altivec_vsum4ubs(__a, __b);
9613}
9614
9615/* vec_vsum4shs */
9616
9617static vector int __attribute__((__always_inline__))
9618vec_vsum4shs(vector signed short __a, vector int __b) {
9619  return __builtin_altivec_vsum4shs(__a, __b);
9620}
9621
9622/* vec_sum2s */
9623
9624/* The vsum2sws instruction has a big-endian bias, so that the second
9625   input vector and the result always reference big-endian elements
9626   1 and 3 (little-endian element 0 and 2).  For ease of porting the
9627   programmer wants elements 1 and 3 in both cases, so for little
9628   endian we must perform some permutes.  */
9629
9630static vector signed int __attribute__((__always_inline__))
9631vec_sum2s(vector int __a, vector int __b) {
9632#ifdef __LITTLE_ENDIAN__
9633  vector int __c = (vector signed int)vec_perm(
9634      __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9635                                       8, 9, 10, 11));
9636  __c = __builtin_altivec_vsum2sws(__a, __c);
9637  return (vector signed int)vec_perm(
9638      __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9639                                       8, 9, 10, 11));
9640#else
9641  return __builtin_altivec_vsum2sws(__a, __b);
9642#endif
9643}
9644
9645/* vec_vsum2sws */
9646
9647static vector signed int __attribute__((__always_inline__))
9648vec_vsum2sws(vector int __a, vector int __b) {
9649#ifdef __LITTLE_ENDIAN__
9650  vector int __c = (vector signed int)vec_perm(
9651      __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9652                                       8, 9, 10, 11));
9653  __c = __builtin_altivec_vsum2sws(__a, __c);
9654  return (vector signed int)vec_perm(
9655      __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9656                                       8, 9, 10, 11));
9657#else
9658  return __builtin_altivec_vsum2sws(__a, __b);
9659#endif
9660}
9661
9662/* vec_sums */
9663
9664/* The vsumsws instruction has a big-endian bias, so that the second
9665   input vector and the result always reference big-endian element 3
9666   (little-endian element 0).  For ease of porting the programmer
9667   wants element 3 in both cases, so for little endian we must perform
9668   some permutes.  */
9669
9670static vector signed int __attribute__((__always_inline__))
9671vec_sums(vector signed int __a, vector signed int __b) {
9672#ifdef __LITTLE_ENDIAN__
9673  __b = (vector signed int)vec_splat(__b, 3);
9674  __b = __builtin_altivec_vsumsws(__a, __b);
9675  return (vector signed int)(0, 0, 0, __b[0]);
9676#else
9677  return __builtin_altivec_vsumsws(__a, __b);
9678#endif
9679}
9680
9681/* vec_vsumsws */
9682
9683static vector signed int __attribute__((__always_inline__))
9684vec_vsumsws(vector signed int __a, vector signed int __b) {
9685#ifdef __LITTLE_ENDIAN__
9686  __b = (vector signed int)vec_splat(__b, 3);
9687  __b = __builtin_altivec_vsumsws(__a, __b);
9688  return (vector signed int)(0, 0, 0, __b[0]);
9689#else
9690  return __builtin_altivec_vsumsws(__a, __b);
9691#endif
9692}
9693
9694/* vec_trunc */
9695
9696static vector float __ATTRS_o_ai
9697vec_trunc(vector float __a) {
9698#ifdef __VSX__
9699  return __builtin_vsx_xvrspiz(__a);
9700#else
9701  return __builtin_altivec_vrfiz(__a);
9702#endif
9703}
9704
9705#ifdef __VSX__
9706static vector double __ATTRS_o_ai vec_trunc(vector double __a) {
9707  return __builtin_vsx_xvrdpiz(__a);
9708}
9709#endif
9710
9711/* vec_vrfiz */
9712
9713static vector float __attribute__((__always_inline__))
9714vec_vrfiz(vector float __a) {
9715  return __builtin_altivec_vrfiz(__a);
9716}
9717
9718/* vec_unpackh */
9719
9720/* The vector unpack instructions all have a big-endian bias, so for
9721   little endian we must reverse the meanings of "high" and "low."  */
9722
9723static vector short __ATTRS_o_ai vec_unpackh(vector signed char __a) {
9724#ifdef __LITTLE_ENDIAN__
9725  return __builtin_altivec_vupklsb((vector char)__a);
9726#else
9727  return __builtin_altivec_vupkhsb((vector char)__a);
9728#endif
9729}
9730
9731static vector bool short __ATTRS_o_ai vec_unpackh(vector bool char __a) {
9732#ifdef __LITTLE_ENDIAN__
9733  return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
9734#else
9735  return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
9736#endif
9737}
9738
9739static vector int __ATTRS_o_ai vec_unpackh(vector short __a) {
9740#ifdef __LITTLE_ENDIAN__
9741  return __builtin_altivec_vupklsh(__a);
9742#else
9743  return __builtin_altivec_vupkhsh(__a);
9744#endif
9745}
9746
9747static vector bool int __ATTRS_o_ai vec_unpackh(vector bool short __a) {
9748#ifdef __LITTLE_ENDIAN__
9749  return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
9750#else
9751  return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
9752#endif
9753}
9754
9755static vector unsigned int __ATTRS_o_ai vec_unpackh(vector pixel __a) {
9756#ifdef __LITTLE_ENDIAN__
9757  return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
9758#else
9759  return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
9760#endif
9761}
9762
9763#ifdef __POWER8_VECTOR__
9764static vector long long __ATTRS_o_ai vec_unpackh(vector int __a) {
9765#ifdef __LITTLE_ENDIAN__
9766  return __builtin_altivec_vupklsw(__a);
9767#else
9768  return __builtin_altivec_vupkhsw(__a);
9769#endif
9770}
9771
9772static vector bool long long __ATTRS_o_ai vec_unpackh(vector bool int __a) {
9773#ifdef __LITTLE_ENDIAN__
9774  return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
9775#else
9776  return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
9777#endif
9778}
9779#endif
9780
9781/* vec_vupkhsb */
9782
9783static vector short __ATTRS_o_ai vec_vupkhsb(vector signed char __a) {
9784#ifdef __LITTLE_ENDIAN__
9785  return __builtin_altivec_vupklsb((vector char)__a);
9786#else
9787  return __builtin_altivec_vupkhsb((vector char)__a);
9788#endif
9789}
9790
9791static vector bool short __ATTRS_o_ai vec_vupkhsb(vector bool char __a) {
9792#ifdef __LITTLE_ENDIAN__
9793  return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
9794#else
9795  return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
9796#endif
9797}
9798
9799/* vec_vupkhsh */
9800
9801static vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) {
9802#ifdef __LITTLE_ENDIAN__
9803  return __builtin_altivec_vupklsh(__a);
9804#else
9805  return __builtin_altivec_vupkhsh(__a);
9806#endif
9807}
9808
9809static vector bool int __ATTRS_o_ai vec_vupkhsh(vector bool short __a) {
9810#ifdef __LITTLE_ENDIAN__
9811  return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
9812#else
9813  return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
9814#endif
9815}
9816
9817static vector unsigned int __ATTRS_o_ai vec_vupkhsh(vector pixel __a) {
9818#ifdef __LITTLE_ENDIAN__
9819  return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
9820#else
9821  return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
9822#endif
9823}
9824
9825/* vec_vupkhsw */
9826
9827#ifdef __POWER8_VECTOR__
9828static vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) {
9829#ifdef __LITTLE_ENDIAN__
9830  return __builtin_altivec_vupklsw(__a);
9831#else
9832  return __builtin_altivec_vupkhsw(__a);
9833#endif
9834}
9835
9836static vector bool long long __ATTRS_o_ai vec_vupkhsw(vector bool int __a) {
9837#ifdef __LITTLE_ENDIAN__
9838  return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
9839#else
9840  return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
9841#endif
9842}
9843#endif
9844
9845/* vec_unpackl */
9846
9847static vector short __ATTRS_o_ai vec_unpackl(vector signed char __a) {
9848#ifdef __LITTLE_ENDIAN__
9849  return __builtin_altivec_vupkhsb((vector char)__a);
9850#else
9851  return __builtin_altivec_vupklsb((vector char)__a);
9852#endif
9853}
9854
9855static vector bool short __ATTRS_o_ai vec_unpackl(vector bool char __a) {
9856#ifdef __LITTLE_ENDIAN__
9857  return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
9858#else
9859  return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
9860#endif
9861}
9862
9863static vector int __ATTRS_o_ai vec_unpackl(vector short __a) {
9864#ifdef __LITTLE_ENDIAN__
9865  return __builtin_altivec_vupkhsh(__a);
9866#else
9867  return __builtin_altivec_vupklsh(__a);
9868#endif
9869}
9870
9871static vector bool int __ATTRS_o_ai vec_unpackl(vector bool short __a) {
9872#ifdef __LITTLE_ENDIAN__
9873  return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
9874#else
9875  return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
9876#endif
9877}
9878
9879static vector unsigned int __ATTRS_o_ai vec_unpackl(vector pixel __a) {
9880#ifdef __LITTLE_ENDIAN__
9881  return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
9882#else
9883  return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
9884#endif
9885}
9886
9887#ifdef __POWER8_VECTOR__
9888static vector long long __ATTRS_o_ai vec_unpackl(vector int __a) {
9889#ifdef __LITTLE_ENDIAN__
9890  return __builtin_altivec_vupkhsw(__a);
9891#else
9892  return __builtin_altivec_vupklsw(__a);
9893#endif
9894}
9895
9896static vector bool long long __ATTRS_o_ai vec_unpackl(vector bool int __a) {
9897#ifdef __LITTLE_ENDIAN__
9898  return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
9899#else
9900  return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
9901#endif
9902}
9903#endif
9904
9905/* vec_vupklsb */
9906
9907static vector short __ATTRS_o_ai vec_vupklsb(vector signed char __a) {
9908#ifdef __LITTLE_ENDIAN__
9909  return __builtin_altivec_vupkhsb((vector char)__a);
9910#else
9911  return __builtin_altivec_vupklsb((vector char)__a);
9912#endif
9913}
9914
9915static vector bool short __ATTRS_o_ai vec_vupklsb(vector bool char __a) {
9916#ifdef __LITTLE_ENDIAN__
9917  return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
9918#else
9919  return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
9920#endif
9921}
9922
9923/* vec_vupklsh */
9924
9925static vector int __ATTRS_o_ai vec_vupklsh(vector short __a) {
9926#ifdef __LITTLE_ENDIAN__
9927  return __builtin_altivec_vupkhsh(__a);
9928#else
9929  return __builtin_altivec_vupklsh(__a);
9930#endif
9931}
9932
9933static vector bool int __ATTRS_o_ai vec_vupklsh(vector bool short __a) {
9934#ifdef __LITTLE_ENDIAN__
9935  return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
9936#else
9937  return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
9938#endif
9939}
9940
9941static vector unsigned int __ATTRS_o_ai vec_vupklsh(vector pixel __a) {
9942#ifdef __LITTLE_ENDIAN__
9943  return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
9944#else
9945  return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
9946#endif
9947}
9948
9949/* vec_vupklsw */
9950
9951#ifdef __POWER8_VECTOR__
9952static vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) {
9953#ifdef __LITTLE_ENDIAN__
9954  return __builtin_altivec_vupkhsw(__a);
9955#else
9956  return __builtin_altivec_vupklsw(__a);
9957#endif
9958}
9959
9960static vector bool long long __ATTRS_o_ai vec_vupklsw(vector bool int __a) {
9961#ifdef __LITTLE_ENDIAN__
9962  return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
9963#else
9964  return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
9965#endif
9966}
9967#endif
9968
9969/* vec_vsx_ld */
9970
9971#ifdef __VSX__
9972
9973static vector signed int __ATTRS_o_ai vec_vsx_ld(int __a,
9974                                                 const vector signed int *__b) {
9975  return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
9976}
9977
9978static vector unsigned int __ATTRS_o_ai
9979vec_vsx_ld(int __a, const vector unsigned int *__b) {
9980  return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
9981}
9982
9983static vector float __ATTRS_o_ai vec_vsx_ld(int __a, const vector float *__b) {
9984  return (vector float)__builtin_vsx_lxvw4x(__a, __b);
9985}
9986
9987static vector signed long long __ATTRS_o_ai
9988vec_vsx_ld(int __a, const vector signed long long *__b) {
9989  return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b);
9990}
9991
9992static vector unsigned long long __ATTRS_o_ai
9993vec_vsx_ld(int __a, const vector unsigned long long *__b) {
9994  return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b);
9995}
9996
9997static vector double __ATTRS_o_ai vec_vsx_ld(int __a,
9998                                             const vector double *__b) {
9999  return (vector double)__builtin_vsx_lxvd2x(__a, __b);
10000}
10001
10002#endif
10003
10004/* vec_vsx_st */
10005
10006#ifdef __VSX__
10007
10008static void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
10009                                    vector signed int *__c) {
10010  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10011}
10012
10013static void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
10014                                    vector unsigned int *__c) {
10015  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10016}
10017
10018static void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
10019                                    vector float *__c) {
10020  __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10021}
10022
10023static void __ATTRS_o_ai vec_vsx_st(vector signed long long __a, int __b,
10024                                    vector signed long long *__c) {
10025  __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10026}
10027
10028static void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a, int __b,
10029                                    vector unsigned long long *__c) {
10030  __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10031}
10032
10033static void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
10034                                    vector double *__c) {
10035  __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10036}
10037
10038#endif
10039
10040/* vec_xor */
10041
10042#define __builtin_altivec_vxor vec_xor
10043
10044static vector signed char __ATTRS_o_ai vec_xor(vector signed char __a,
10045                                               vector signed char __b) {
10046  return __a ^ __b;
10047}
10048
10049static vector signed char __ATTRS_o_ai vec_xor(vector bool char __a,
10050                                               vector signed char __b) {
10051  return (vector signed char)__a ^ __b;
10052}
10053
10054static vector signed char __ATTRS_o_ai vec_xor(vector signed char __a,
10055                                               vector bool char __b) {
10056  return __a ^ (vector signed char)__b;
10057}
10058
10059static vector unsigned char __ATTRS_o_ai vec_xor(vector unsigned char __a,
10060                                                 vector unsigned char __b) {
10061  return __a ^ __b;
10062}
10063
10064static vector unsigned char __ATTRS_o_ai vec_xor(vector bool char __a,
10065                                                 vector unsigned char __b) {
10066  return (vector unsigned char)__a ^ __b;
10067}
10068
10069static vector unsigned char __ATTRS_o_ai vec_xor(vector unsigned char __a,
10070                                                 vector bool char __b) {
10071  return __a ^ (vector unsigned char)__b;
10072}
10073
10074static vector bool char __ATTRS_o_ai vec_xor(vector bool char __a,
10075                                             vector bool char __b) {
10076  return __a ^ __b;
10077}
10078
10079static vector short __ATTRS_o_ai vec_xor(vector short __a, vector short __b) {
10080  return __a ^ __b;
10081}
10082
10083static vector short __ATTRS_o_ai vec_xor(vector bool short __a,
10084                                         vector short __b) {
10085  return (vector short)__a ^ __b;
10086}
10087
10088static vector short __ATTRS_o_ai vec_xor(vector short __a,
10089                                         vector bool short __b) {
10090  return __a ^ (vector short)__b;
10091}
10092
10093static vector unsigned short __ATTRS_o_ai vec_xor(vector unsigned short __a,
10094                                                  vector unsigned short __b) {
10095  return __a ^ __b;
10096}
10097
10098static vector unsigned short __ATTRS_o_ai vec_xor(vector bool short __a,
10099                                                  vector unsigned short __b) {
10100  return (vector unsigned short)__a ^ __b;
10101}
10102
10103static vector unsigned short __ATTRS_o_ai vec_xor(vector unsigned short __a,
10104                                                  vector bool short __b) {
10105  return __a ^ (vector unsigned short)__b;
10106}
10107
10108static vector bool short __ATTRS_o_ai vec_xor(vector bool short __a,
10109                                              vector bool short __b) {
10110  return __a ^ __b;
10111}
10112
10113static vector int __ATTRS_o_ai vec_xor(vector int __a, vector int __b) {
10114  return __a ^ __b;
10115}
10116
10117static vector int __ATTRS_o_ai vec_xor(vector bool int __a, vector int __b) {
10118  return (vector int)__a ^ __b;
10119}
10120
10121static vector int __ATTRS_o_ai vec_xor(vector int __a, vector bool int __b) {
10122  return __a ^ (vector int)__b;
10123}
10124
10125static vector unsigned int __ATTRS_o_ai vec_xor(vector unsigned int __a,
10126                                                vector unsigned int __b) {
10127  return __a ^ __b;
10128}
10129
10130static vector unsigned int __ATTRS_o_ai vec_xor(vector bool int __a,
10131                                                vector unsigned int __b) {
10132  return (vector unsigned int)__a ^ __b;
10133}
10134
10135static vector unsigned int __ATTRS_o_ai vec_xor(vector unsigned int __a,
10136                                                vector bool int __b) {
10137  return __a ^ (vector unsigned int)__b;
10138}
10139
10140static vector bool int __ATTRS_o_ai vec_xor(vector bool int __a,
10141                                            vector bool int __b) {
10142  return __a ^ __b;
10143}
10144
10145static vector float __ATTRS_o_ai vec_xor(vector float __a, vector float __b) {
10146  vector unsigned int __res =
10147      (vector unsigned int)__a ^ (vector unsigned int)__b;
10148  return (vector float)__res;
10149}
10150
10151static vector float __ATTRS_o_ai vec_xor(vector bool int __a,
10152                                         vector float __b) {
10153  vector unsigned int __res =
10154      (vector unsigned int)__a ^ (vector unsigned int)__b;
10155  return (vector float)__res;
10156}
10157
10158static vector float __ATTRS_o_ai vec_xor(vector float __a,
10159                                         vector bool int __b) {
10160  vector unsigned int __res =
10161      (vector unsigned int)__a ^ (vector unsigned int)__b;
10162  return (vector float)__res;
10163}
10164
10165#ifdef __VSX__
10166static vector signed long long __ATTRS_o_ai
10167vec_xor(vector signed long long __a, vector signed long long __b) {
10168  return __a ^ __b;
10169}
10170
10171static vector signed long long __ATTRS_o_ai
10172vec_xor(vector bool long long __a, vector signed long long __b) {
10173  return (vector signed long long)__a ^ __b;
10174}
10175
10176static vector signed long long __ATTRS_o_ai vec_xor(vector signed long long __a,
10177                                                    vector bool long long __b) {
10178  return __a ^ (vector signed long long)__b;
10179}
10180
10181static vector unsigned long long __ATTRS_o_ai
10182vec_xor(vector unsigned long long __a, vector unsigned long long __b) {
10183  return __a ^ __b;
10184}
10185
10186static vector unsigned long long __ATTRS_o_ai
10187vec_xor(vector bool long long __a, vector unsigned long long __b) {
10188  return (vector unsigned long long)__a ^ __b;
10189}
10190
10191static vector unsigned long long __ATTRS_o_ai
10192vec_xor(vector unsigned long long __a, vector bool long long __b) {
10193  return __a ^ (vector unsigned long long)__b;
10194}
10195
10196static vector bool long long __ATTRS_o_ai vec_xor(vector bool long long __a,
10197                                                  vector bool long long __b) {
10198  return __a ^ __b;
10199}
10200
10201static vector double __ATTRS_o_ai
10202vec_xor(vector double __a, vector double __b) {
10203  return (vector double)((vector unsigned long long)__a ^
10204                          (vector unsigned long long)__b);
10205}
10206
10207static vector double __ATTRS_o_ai
10208vec_xor(vector double __a, vector bool long long __b) {
10209  return (vector double)((vector unsigned long long)__a ^
10210                         (vector unsigned long long) __b);
10211}
10212
10213static vector double __ATTRS_o_ai
10214vec_xor(vector bool long long __a, vector double __b) {
10215  return (vector double)((vector unsigned long long)__a ^
10216                         (vector unsigned long long)__b);
10217}
10218#endif
10219
10220/* vec_vxor */
10221
10222static vector signed char __ATTRS_o_ai vec_vxor(vector signed char __a,
10223                                                vector signed char __b) {
10224  return __a ^ __b;
10225}
10226
10227static vector signed char __ATTRS_o_ai vec_vxor(vector bool char __a,
10228                                                vector signed char __b) {
10229  return (vector signed char)__a ^ __b;
10230}
10231
10232static vector signed char __ATTRS_o_ai vec_vxor(vector signed char __a,
10233                                                vector bool char __b) {
10234  return __a ^ (vector signed char)__b;
10235}
10236
10237static vector unsigned char __ATTRS_o_ai vec_vxor(vector unsigned char __a,
10238                                                  vector unsigned char __b) {
10239  return __a ^ __b;
10240}
10241
10242static vector unsigned char __ATTRS_o_ai vec_vxor(vector bool char __a,
10243                                                  vector unsigned char __b) {
10244  return (vector unsigned char)__a ^ __b;
10245}
10246
10247static vector unsigned char __ATTRS_o_ai vec_vxor(vector unsigned char __a,
10248                                                  vector bool char __b) {
10249  return __a ^ (vector unsigned char)__b;
10250}
10251
10252static vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a,
10253                                              vector bool char __b) {
10254  return __a ^ __b;
10255}
10256
10257static vector short __ATTRS_o_ai vec_vxor(vector short __a, vector short __b) {
10258  return __a ^ __b;
10259}
10260
10261static vector short __ATTRS_o_ai vec_vxor(vector bool short __a,
10262                                          vector short __b) {
10263  return (vector short)__a ^ __b;
10264}
10265
10266static vector short __ATTRS_o_ai vec_vxor(vector short __a,
10267                                          vector bool short __b) {
10268  return __a ^ (vector short)__b;
10269}
10270
10271static vector unsigned short __ATTRS_o_ai vec_vxor(vector unsigned short __a,
10272                                                   vector unsigned short __b) {
10273  return __a ^ __b;
10274}
10275
10276static vector unsigned short __ATTRS_o_ai vec_vxor(vector bool short __a,
10277                                                   vector unsigned short __b) {
10278  return (vector unsigned short)__a ^ __b;
10279}
10280
10281static vector unsigned short __ATTRS_o_ai vec_vxor(vector unsigned short __a,
10282                                                   vector bool short __b) {
10283  return __a ^ (vector unsigned short)__b;
10284}
10285
10286static vector bool short __ATTRS_o_ai vec_vxor(vector bool short __a,
10287                                               vector bool short __b) {
10288  return __a ^ __b;
10289}
10290
10291static vector int __ATTRS_o_ai vec_vxor(vector int __a, vector int __b) {
10292  return __a ^ __b;
10293}
10294
10295static vector int __ATTRS_o_ai vec_vxor(vector bool int __a, vector int __b) {
10296  return (vector int)__a ^ __b;
10297}
10298
10299static vector int __ATTRS_o_ai vec_vxor(vector int __a, vector bool int __b) {
10300  return __a ^ (vector int)__b;
10301}
10302
10303static vector unsigned int __ATTRS_o_ai vec_vxor(vector unsigned int __a,
10304                                                 vector unsigned int __b) {
10305  return __a ^ __b;
10306}
10307
10308static vector unsigned int __ATTRS_o_ai vec_vxor(vector bool int __a,
10309                                                 vector unsigned int __b) {
10310  return (vector unsigned int)__a ^ __b;
10311}
10312
10313static vector unsigned int __ATTRS_o_ai vec_vxor(vector unsigned int __a,
10314                                                 vector bool int __b) {
10315  return __a ^ (vector unsigned int)__b;
10316}
10317
10318static vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a,
10319                                             vector bool int __b) {
10320  return __a ^ __b;
10321}
10322
10323static vector float __ATTRS_o_ai vec_vxor(vector float __a, vector float __b) {
10324  vector unsigned int __res =
10325      (vector unsigned int)__a ^ (vector unsigned int)__b;
10326  return (vector float)__res;
10327}
10328
10329static vector float __ATTRS_o_ai vec_vxor(vector bool int __a,
10330                                          vector float __b) {
10331  vector unsigned int __res =
10332      (vector unsigned int)__a ^ (vector unsigned int)__b;
10333  return (vector float)__res;
10334}
10335
10336static vector float __ATTRS_o_ai vec_vxor(vector float __a,
10337                                          vector bool int __b) {
10338  vector unsigned int __res =
10339      (vector unsigned int)__a ^ (vector unsigned int)__b;
10340  return (vector float)__res;
10341}
10342
10343#ifdef __VSX__
10344static vector signed long long __ATTRS_o_ai
10345vec_vxor(vector signed long long __a, vector signed long long __b) {
10346  return __a ^ __b;
10347}
10348
10349static vector signed long long __ATTRS_o_ai
10350vec_vxor(vector bool long long __a, vector signed long long __b) {
10351  return (vector signed long long)__a ^ __b;
10352}
10353
10354static vector signed long long __ATTRS_o_ai
10355vec_vxor(vector signed long long __a, vector bool long long __b) {
10356  return __a ^ (vector signed long long)__b;
10357}
10358
10359static vector unsigned long long __ATTRS_o_ai
10360vec_vxor(vector unsigned long long __a, vector unsigned long long __b) {
10361  return __a ^ __b;
10362}
10363
10364static vector unsigned long long __ATTRS_o_ai
10365vec_vxor(vector bool long long __a, vector unsigned long long __b) {
10366  return (vector unsigned long long)__a ^ __b;
10367}
10368
10369static vector unsigned long long __ATTRS_o_ai
10370vec_vxor(vector unsigned long long __a, vector bool long long __b) {
10371  return __a ^ (vector unsigned long long)__b;
10372}
10373
10374static vector bool long long __ATTRS_o_ai vec_vxor(vector bool long long __a,
10375                                                   vector bool long long __b) {
10376  return __a ^ __b;
10377}
10378#endif
10379
10380/* ------------------------ extensions for CBEA ----------------------------- */
10381
10382/* vec_extract */
10383
10384static signed char __ATTRS_o_ai vec_extract(vector signed char __a, int __b) {
10385  return __a[__b];
10386}
10387
10388static unsigned char __ATTRS_o_ai vec_extract(vector unsigned char __a,
10389                                              int __b) {
10390  return __a[__b];
10391}
10392
10393static short __ATTRS_o_ai vec_extract(vector short __a, int __b) {
10394  return __a[__b];
10395}
10396
10397static unsigned short __ATTRS_o_ai vec_extract(vector unsigned short __a,
10398                                               int __b) {
10399  return __a[__b];
10400}
10401
10402static int __ATTRS_o_ai vec_extract(vector int __a, int __b) {
10403  return __a[__b];
10404}
10405
10406static unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a, int __b) {
10407  return __a[__b];
10408}
10409
10410static float __ATTRS_o_ai vec_extract(vector float __a, int __b) {
10411  return __a[__b];
10412}
10413
10414/* vec_insert */
10415
10416static vector signed char __ATTRS_o_ai vec_insert(signed char __a,
10417                                                  vector signed char __b,
10418                                                  int __c) {
10419  __b[__c] = __a;
10420  return __b;
10421}
10422
10423static vector unsigned char __ATTRS_o_ai vec_insert(unsigned char __a,
10424                                                    vector unsigned char __b,
10425                                                    int __c) {
10426  __b[__c] = __a;
10427  return __b;
10428}
10429
10430static vector short __ATTRS_o_ai vec_insert(short __a, vector short __b,
10431                                            int __c) {
10432  __b[__c] = __a;
10433  return __b;
10434}
10435
10436static vector unsigned short __ATTRS_o_ai vec_insert(unsigned short __a,
10437                                                     vector unsigned short __b,
10438                                                     int __c) {
10439  __b[__c] = __a;
10440  return __b;
10441}
10442
10443static vector int __ATTRS_o_ai vec_insert(int __a, vector int __b, int __c) {
10444  __b[__c] = __a;
10445  return __b;
10446}
10447
10448static vector unsigned int __ATTRS_o_ai vec_insert(unsigned int __a,
10449                                                   vector unsigned int __b,
10450                                                   int __c) {
10451  __b[__c] = __a;
10452  return __b;
10453}
10454
10455static vector float __ATTRS_o_ai vec_insert(float __a, vector float __b,
10456                                            int __c) {
10457  __b[__c] = __a;
10458  return __b;
10459}
10460
10461/* vec_lvlx */
10462
10463static vector signed char __ATTRS_o_ai vec_lvlx(int __a,
10464                                                const signed char *__b) {
10465  return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
10466                  vec_lvsl(__a, __b));
10467}
10468
10469static vector signed char __ATTRS_o_ai vec_lvlx(int __a,
10470                                                const vector signed char *__b) {
10471  return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
10472                  vec_lvsl(__a, (unsigned char *)__b));
10473}
10474
10475static vector unsigned char __ATTRS_o_ai vec_lvlx(int __a,
10476                                                  const unsigned char *__b) {
10477  return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
10478                  vec_lvsl(__a, __b));
10479}
10480
10481static vector unsigned char __ATTRS_o_ai
10482vec_lvlx(int __a, const vector unsigned char *__b) {
10483  return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
10484                  vec_lvsl(__a, (unsigned char *)__b));
10485}
10486
10487static vector bool char __ATTRS_o_ai vec_lvlx(int __a,
10488                                              const vector bool char *__b) {
10489  return vec_perm(vec_ld(__a, __b), (vector bool char)(0),
10490                  vec_lvsl(__a, (unsigned char *)__b));
10491}
10492
10493static vector short __ATTRS_o_ai vec_lvlx(int __a, const short *__b) {
10494  return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
10495}
10496
10497static vector short __ATTRS_o_ai vec_lvlx(int __a, const vector short *__b) {
10498  return vec_perm(vec_ld(__a, __b), (vector short)(0),
10499                  vec_lvsl(__a, (unsigned char *)__b));
10500}
10501
10502static vector unsigned short __ATTRS_o_ai vec_lvlx(int __a,
10503                                                   const unsigned short *__b) {
10504  return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
10505                  vec_lvsl(__a, __b));
10506}
10507
10508static vector unsigned short __ATTRS_o_ai
10509vec_lvlx(int __a, const vector unsigned short *__b) {
10510  return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
10511                  vec_lvsl(__a, (unsigned char *)__b));
10512}
10513
10514static vector bool short __ATTRS_o_ai vec_lvlx(int __a,
10515                                               const vector bool short *__b) {
10516  return vec_perm(vec_ld(__a, __b), (vector bool short)(0),
10517                  vec_lvsl(__a, (unsigned char *)__b));
10518}
10519
10520static vector pixel __ATTRS_o_ai vec_lvlx(int __a, const vector pixel *__b) {
10521  return vec_perm(vec_ld(__a, __b), (vector pixel)(0),
10522                  vec_lvsl(__a, (unsigned char *)__b));
10523}
10524
10525static vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) {
10526  return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
10527}
10528
10529static vector int __ATTRS_o_ai vec_lvlx(int __a, const vector int *__b) {
10530  return vec_perm(vec_ld(__a, __b), (vector int)(0),
10531                  vec_lvsl(__a, (unsigned char *)__b));
10532}
10533
10534static vector unsigned int __ATTRS_o_ai vec_lvlx(int __a,
10535                                                 const unsigned int *__b) {
10536  return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
10537                  vec_lvsl(__a, __b));
10538}
10539
10540static vector unsigned int __ATTRS_o_ai
10541vec_lvlx(int __a, const vector unsigned int *__b) {
10542  return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
10543                  vec_lvsl(__a, (unsigned char *)__b));
10544}
10545
10546static vector bool int __ATTRS_o_ai vec_lvlx(int __a,
10547                                             const vector bool int *__b) {
10548  return vec_perm(vec_ld(__a, __b), (vector bool int)(0),
10549                  vec_lvsl(__a, (unsigned char *)__b));
10550}
10551
10552static vector float __ATTRS_o_ai vec_lvlx(int __a, const float *__b) {
10553  return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
10554}
10555
10556static vector float __ATTRS_o_ai vec_lvlx(int __a, const vector float *__b) {
10557  return vec_perm(vec_ld(__a, __b), (vector float)(0),
10558                  vec_lvsl(__a, (unsigned char *)__b));
10559}
10560
10561/* vec_lvlxl */
10562
10563static vector signed char __ATTRS_o_ai vec_lvlxl(int __a,
10564                                                 const signed char *__b) {
10565  return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
10566                  vec_lvsl(__a, __b));
10567}
10568
10569static vector signed char __ATTRS_o_ai
10570vec_lvlxl(int __a, const vector signed char *__b) {
10571  return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
10572                  vec_lvsl(__a, (unsigned char *)__b));
10573}
10574
10575static vector unsigned char __ATTRS_o_ai vec_lvlxl(int __a,
10576                                                   const unsigned char *__b) {
10577  return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
10578                  vec_lvsl(__a, __b));
10579}
10580
10581static vector unsigned char __ATTRS_o_ai
10582vec_lvlxl(int __a, const vector unsigned char *__b) {
10583  return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
10584                  vec_lvsl(__a, (unsigned char *)__b));
10585}
10586
10587static vector bool char __ATTRS_o_ai vec_lvlxl(int __a,
10588                                               const vector bool char *__b) {
10589  return vec_perm(vec_ldl(__a, __b), (vector bool char)(0),
10590                  vec_lvsl(__a, (unsigned char *)__b));
10591}
10592
10593static vector short __ATTRS_o_ai vec_lvlxl(int __a, const short *__b) {
10594  return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
10595}
10596
10597static vector short __ATTRS_o_ai vec_lvlxl(int __a, const vector short *__b) {
10598  return vec_perm(vec_ldl(__a, __b), (vector short)(0),
10599                  vec_lvsl(__a, (unsigned char *)__b));
10600}
10601
10602static vector unsigned short __ATTRS_o_ai vec_lvlxl(int __a,
10603                                                    const unsigned short *__b) {
10604  return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
10605                  vec_lvsl(__a, __b));
10606}
10607
10608static vector unsigned short __ATTRS_o_ai
10609vec_lvlxl(int __a, const vector unsigned short *__b) {
10610  return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
10611                  vec_lvsl(__a, (unsigned char *)__b));
10612}
10613
10614static vector bool short __ATTRS_o_ai vec_lvlxl(int __a,
10615                                                const vector bool short *__b) {
10616  return vec_perm(vec_ldl(__a, __b), (vector bool short)(0),
10617                  vec_lvsl(__a, (unsigned char *)__b));
10618}
10619
10620static vector pixel __ATTRS_o_ai vec_lvlxl(int __a, const vector pixel *__b) {
10621  return vec_perm(vec_ldl(__a, __b), (vector pixel)(0),
10622                  vec_lvsl(__a, (unsigned char *)__b));
10623}
10624
10625static vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) {
10626  return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
10627}
10628
10629static vector int __ATTRS_o_ai vec_lvlxl(int __a, const vector int *__b) {
10630  return vec_perm(vec_ldl(__a, __b), (vector int)(0),
10631                  vec_lvsl(__a, (unsigned char *)__b));
10632}
10633
10634static vector unsigned int __ATTRS_o_ai vec_lvlxl(int __a,
10635                                                  const unsigned int *__b) {
10636  return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
10637                  vec_lvsl(__a, __b));
10638}
10639
10640static vector unsigned int __ATTRS_o_ai
10641vec_lvlxl(int __a, const vector unsigned int *__b) {
10642  return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
10643                  vec_lvsl(__a, (unsigned char *)__b));
10644}
10645
10646static vector bool int __ATTRS_o_ai vec_lvlxl(int __a,
10647                                              const vector bool int *__b) {
10648  return vec_perm(vec_ldl(__a, __b), (vector bool int)(0),
10649                  vec_lvsl(__a, (unsigned char *)__b));
10650}
10651
10652static vector float __ATTRS_o_ai vec_lvlxl(int __a, const float *__b) {
10653  return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
10654}
10655
10656static vector float __ATTRS_o_ai vec_lvlxl(int __a, vector float *__b) {
10657  return vec_perm(vec_ldl(__a, __b), (vector float)(0),
10658                  vec_lvsl(__a, (unsigned char *)__b));
10659}
10660
10661/* vec_lvrx */
10662
10663static vector signed char __ATTRS_o_ai vec_lvrx(int __a,
10664                                                const signed char *__b) {
10665  return vec_perm((vector signed char)(0), vec_ld(__a, __b),
10666                  vec_lvsl(__a, __b));
10667}
10668
10669static vector signed char __ATTRS_o_ai vec_lvrx(int __a,
10670                                                const vector signed char *__b) {
10671  return vec_perm((vector signed char)(0), vec_ld(__a, __b),
10672                  vec_lvsl(__a, (unsigned char *)__b));
10673}
10674
10675static vector unsigned char __ATTRS_o_ai vec_lvrx(int __a,
10676                                                  const unsigned char *__b) {
10677  return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
10678                  vec_lvsl(__a, __b));
10679}
10680
10681static vector unsigned char __ATTRS_o_ai
10682vec_lvrx(int __a, const vector unsigned char *__b) {
10683  return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
10684                  vec_lvsl(__a, (unsigned char *)__b));
10685}
10686
10687static vector bool char __ATTRS_o_ai vec_lvrx(int __a,
10688                                              const vector bool char *__b) {
10689  return vec_perm((vector bool char)(0), vec_ld(__a, __b),
10690                  vec_lvsl(__a, (unsigned char *)__b));
10691}
10692
10693static vector short __ATTRS_o_ai vec_lvrx(int __a, const short *__b) {
10694  return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
10695}
10696
10697static vector short __ATTRS_o_ai vec_lvrx(int __a, const vector short *__b) {
10698  return vec_perm((vector short)(0), vec_ld(__a, __b),
10699                  vec_lvsl(__a, (unsigned char *)__b));
10700}
10701
10702static vector unsigned short __ATTRS_o_ai vec_lvrx(int __a,
10703                                                   const unsigned short *__b) {
10704  return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
10705                  vec_lvsl(__a, __b));
10706}
10707
10708static vector unsigned short __ATTRS_o_ai
10709vec_lvrx(int __a, const vector unsigned short *__b) {
10710  return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
10711                  vec_lvsl(__a, (unsigned char *)__b));
10712}
10713
10714static vector bool short __ATTRS_o_ai vec_lvrx(int __a,
10715                                               const vector bool short *__b) {
10716  return vec_perm((vector bool short)(0), vec_ld(__a, __b),
10717                  vec_lvsl(__a, (unsigned char *)__b));
10718}
10719
10720static vector pixel __ATTRS_o_ai vec_lvrx(int __a, const vector pixel *__b) {
10721  return vec_perm((vector pixel)(0), vec_ld(__a, __b),
10722                  vec_lvsl(__a, (unsigned char *)__b));
10723}
10724
10725static vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) {
10726  return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
10727}
10728
10729static vector int __ATTRS_o_ai vec_lvrx(int __a, const vector int *__b) {
10730  return vec_perm((vector int)(0), vec_ld(__a, __b),
10731                  vec_lvsl(__a, (unsigned char *)__b));
10732}
10733
10734static vector unsigned int __ATTRS_o_ai vec_lvrx(int __a,
10735                                                 const unsigned int *__b) {
10736  return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
10737                  vec_lvsl(__a, __b));
10738}
10739
10740static vector unsigned int __ATTRS_o_ai
10741vec_lvrx(int __a, const vector unsigned int *__b) {
10742  return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
10743                  vec_lvsl(__a, (unsigned char *)__b));
10744}
10745
10746static vector bool int __ATTRS_o_ai vec_lvrx(int __a,
10747                                             const vector bool int *__b) {
10748  return vec_perm((vector bool int)(0), vec_ld(__a, __b),
10749                  vec_lvsl(__a, (unsigned char *)__b));
10750}
10751
10752static vector float __ATTRS_o_ai vec_lvrx(int __a, const float *__b) {
10753  return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
10754}
10755
10756static vector float __ATTRS_o_ai vec_lvrx(int __a, const vector float *__b) {
10757  return vec_perm((vector float)(0), vec_ld(__a, __b),
10758                  vec_lvsl(__a, (unsigned char *)__b));
10759}
10760
10761/* vec_lvrxl */
10762
10763static vector signed char __ATTRS_o_ai vec_lvrxl(int __a,
10764                                                 const signed char *__b) {
10765  return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
10766                  vec_lvsl(__a, __b));
10767}
10768
10769static vector signed char __ATTRS_o_ai
10770vec_lvrxl(int __a, const vector signed char *__b) {
10771  return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
10772                  vec_lvsl(__a, (unsigned char *)__b));
10773}
10774
10775static vector unsigned char __ATTRS_o_ai vec_lvrxl(int __a,
10776                                                   const unsigned char *__b) {
10777  return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
10778                  vec_lvsl(__a, __b));
10779}
10780
10781static vector unsigned char __ATTRS_o_ai
10782vec_lvrxl(int __a, const vector unsigned char *__b) {
10783  return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
10784                  vec_lvsl(__a, (unsigned char *)__b));
10785}
10786
10787static vector bool char __ATTRS_o_ai vec_lvrxl(int __a,
10788                                               const vector bool char *__b) {
10789  return vec_perm((vector bool char)(0), vec_ldl(__a, __b),
10790                  vec_lvsl(__a, (unsigned char *)__b));
10791}
10792
10793static vector short __ATTRS_o_ai vec_lvrxl(int __a, const short *__b) {
10794  return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
10795}
10796
10797static vector short __ATTRS_o_ai vec_lvrxl(int __a, const vector short *__b) {
10798  return vec_perm((vector short)(0), vec_ldl(__a, __b),
10799                  vec_lvsl(__a, (unsigned char *)__b));
10800}
10801
10802static vector unsigned short __ATTRS_o_ai vec_lvrxl(int __a,
10803                                                    const unsigned short *__b) {
10804  return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
10805                  vec_lvsl(__a, __b));
10806}
10807
10808static vector unsigned short __ATTRS_o_ai
10809vec_lvrxl(int __a, const vector unsigned short *__b) {
10810  return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
10811                  vec_lvsl(__a, (unsigned char *)__b));
10812}
10813
10814static vector bool short __ATTRS_o_ai vec_lvrxl(int __a,
10815                                                const vector bool short *__b) {
10816  return vec_perm((vector bool short)(0), vec_ldl(__a, __b),
10817                  vec_lvsl(__a, (unsigned char *)__b));
10818}
10819
10820static vector pixel __ATTRS_o_ai vec_lvrxl(int __a, const vector pixel *__b) {
10821  return vec_perm((vector pixel)(0), vec_ldl(__a, __b),
10822                  vec_lvsl(__a, (unsigned char *)__b));
10823}
10824
10825static vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) {
10826  return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
10827}
10828
10829static vector int __ATTRS_o_ai vec_lvrxl(int __a, const vector int *__b) {
10830  return vec_perm((vector int)(0), vec_ldl(__a, __b),
10831                  vec_lvsl(__a, (unsigned char *)__b));
10832}
10833
10834static vector unsigned int __ATTRS_o_ai vec_lvrxl(int __a,
10835                                                  const unsigned int *__b) {
10836  return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
10837                  vec_lvsl(__a, __b));
10838}
10839
10840static vector unsigned int __ATTRS_o_ai
10841vec_lvrxl(int __a, const vector unsigned int *__b) {
10842  return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
10843                  vec_lvsl(__a, (unsigned char *)__b));
10844}
10845
10846static vector bool int __ATTRS_o_ai vec_lvrxl(int __a,
10847                                              const vector bool int *__b) {
10848  return vec_perm((vector bool int)(0), vec_ldl(__a, __b),
10849                  vec_lvsl(__a, (unsigned char *)__b));
10850}
10851
10852static vector float __ATTRS_o_ai vec_lvrxl(int __a, const float *__b) {
10853  return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
10854}
10855
10856static vector float __ATTRS_o_ai vec_lvrxl(int __a, const vector float *__b) {
10857  return vec_perm((vector float)(0), vec_ldl(__a, __b),
10858                  vec_lvsl(__a, (unsigned char *)__b));
10859}
10860
10861/* vec_stvlx */
10862
10863static void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
10864                                   signed char *__c) {
10865  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
10866                __c);
10867}
10868
10869static void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
10870                                   vector signed char *__c) {
10871  return vec_st(
10872      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10873      __b, __c);
10874}
10875
10876static void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
10877                                   unsigned char *__c) {
10878  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
10879                __c);
10880}
10881
10882static void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
10883                                   vector unsigned char *__c) {
10884  return vec_st(
10885      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10886      __b, __c);
10887}
10888
10889static void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b,
10890                                   vector bool char *__c) {
10891  return vec_st(
10892      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10893      __b, __c);
10894}
10895
10896static void __ATTRS_o_ai vec_stvlx(vector short __a, int __b, short *__c) {
10897  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
10898                __c);
10899}
10900
10901static void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
10902                                   vector short *__c) {
10903  return vec_st(
10904      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10905      __b, __c);
10906}
10907
10908static void __ATTRS_o_ai vec_stvlx(vector unsigned short __a, int __b,
10909                                   unsigned short *__c) {
10910  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
10911                __c);
10912}
10913
10914static void __ATTRS_o_ai vec_stvlx(vector unsigned short __a, int __b,
10915                                   vector unsigned short *__c) {
10916  return vec_st(
10917      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10918      __b, __c);
10919}
10920
10921static void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b,
10922                                   vector bool short *__c) {
10923  return vec_st(
10924      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10925      __b, __c);
10926}
10927
10928static void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b,
10929                                   vector pixel *__c) {
10930  return vec_st(
10931      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10932      __b, __c);
10933}
10934
10935static void __ATTRS_o_ai vec_stvlx(vector int __a, int __b, int *__c) {
10936  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
10937                __c);
10938}
10939
10940static void __ATTRS_o_ai vec_stvlx(vector int __a, int __b, vector int *__c) {
10941  return vec_st(
10942      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10943      __b, __c);
10944}
10945
10946static void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
10947                                   unsigned int *__c) {
10948  return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
10949                __c);
10950}
10951
10952static void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
10953                                   vector unsigned int *__c) {
10954  return vec_st(
10955      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10956      __b, __c);
10957}
10958
10959static void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b,
10960                                   vector bool int *__c) {
10961  return vec_st(
10962      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10963      __b, __c);
10964}
10965
10966static void __ATTRS_o_ai vec_stvlx(vector float __a, int __b,
10967                                   vector float *__c) {
10968  return vec_st(
10969      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10970      __b, __c);
10971}
10972
10973/* vec_stvlxl */
10974
10975static void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
10976                                    signed char *__c) {
10977  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
10978                 __c);
10979}
10980
10981static void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
10982                                    vector signed char *__c) {
10983  return vec_stl(
10984      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10985      __b, __c);
10986}
10987
10988static void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a, int __b,
10989                                    unsigned char *__c) {
10990  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
10991                 __c);
10992}
10993
10994static void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a, int __b,
10995                                    vector unsigned char *__c) {
10996  return vec_stl(
10997      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
10998      __b, __c);
10999}
11000
11001static void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b,
11002                                    vector bool char *__c) {
11003  return vec_stl(
11004      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11005      __b, __c);
11006}
11007
11008static void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b, short *__c) {
11009  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11010                 __c);
11011}
11012
11013static void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
11014                                    vector short *__c) {
11015  return vec_stl(
11016      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11017      __b, __c);
11018}
11019
11020static void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a, int __b,
11021                                    unsigned short *__c) {
11022  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11023                 __c);
11024}
11025
11026static void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a, int __b,
11027                                    vector unsigned short *__c) {
11028  return vec_stl(
11029      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11030      __b, __c);
11031}
11032
11033static void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b,
11034                                    vector bool short *__c) {
11035  return vec_stl(
11036      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11037      __b, __c);
11038}
11039
11040static void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b,
11041                                    vector pixel *__c) {
11042  return vec_stl(
11043      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11044      __b, __c);
11045}
11046
11047static void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b, int *__c) {
11048  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11049                 __c);
11050}
11051
11052static void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b, vector int *__c) {
11053  return vec_stl(
11054      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11055      __b, __c);
11056}
11057
11058static void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
11059                                    unsigned int *__c) {
11060  return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11061                 __c);
11062}
11063
11064static void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
11065                                    vector unsigned int *__c) {
11066  return vec_stl(
11067      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11068      __b, __c);
11069}
11070
11071static void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b,
11072                                    vector bool int *__c) {
11073  return vec_stl(
11074      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11075      __b, __c);
11076}
11077
11078static void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b,
11079                                    vector float *__c) {
11080  return vec_stl(
11081      vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11082      __b, __c);
11083}
11084
11085/* vec_stvrx */
11086
11087static void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
11088                                   signed char *__c) {
11089  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11090                __c);
11091}
11092
11093static void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
11094                                   vector signed char *__c) {
11095  return vec_st(
11096      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11097      __b, __c);
11098}
11099
11100static void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
11101                                   unsigned char *__c) {
11102  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11103                __c);
11104}
11105
11106static void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
11107                                   vector unsigned char *__c) {
11108  return vec_st(
11109      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11110      __b, __c);
11111}
11112
11113static void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b,
11114                                   vector bool char *__c) {
11115  return vec_st(
11116      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11117      __b, __c);
11118}
11119
11120static void __ATTRS_o_ai vec_stvrx(vector short __a, int __b, short *__c) {
11121  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11122                __c);
11123}
11124
11125static void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
11126                                   vector short *__c) {
11127  return vec_st(
11128      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11129      __b, __c);
11130}
11131
11132static void __ATTRS_o_ai vec_stvrx(vector unsigned short __a, int __b,
11133                                   unsigned short *__c) {
11134  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11135                __c);
11136}
11137
11138static void __ATTRS_o_ai vec_stvrx(vector unsigned short __a, int __b,
11139                                   vector unsigned short *__c) {
11140  return vec_st(
11141      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11142      __b, __c);
11143}
11144
11145static void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b,
11146                                   vector bool short *__c) {
11147  return vec_st(
11148      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11149      __b, __c);
11150}
11151
11152static void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b,
11153                                   vector pixel *__c) {
11154  return vec_st(
11155      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11156      __b, __c);
11157}
11158
11159static void __ATTRS_o_ai vec_stvrx(vector int __a, int __b, int *__c) {
11160  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11161                __c);
11162}
11163
11164static void __ATTRS_o_ai vec_stvrx(vector int __a, int __b, vector int *__c) {
11165  return vec_st(
11166      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11167      __b, __c);
11168}
11169
11170static void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
11171                                   unsigned int *__c) {
11172  return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11173                __c);
11174}
11175
11176static void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
11177                                   vector unsigned int *__c) {
11178  return vec_st(
11179      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11180      __b, __c);
11181}
11182
11183static void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b,
11184                                   vector bool int *__c) {
11185  return vec_st(
11186      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11187      __b, __c);
11188}
11189
11190static void __ATTRS_o_ai vec_stvrx(vector float __a, int __b,
11191                                   vector float *__c) {
11192  return vec_st(
11193      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11194      __b, __c);
11195}
11196
11197/* vec_stvrxl */
11198
11199static void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
11200                                    signed char *__c) {
11201  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11202                 __c);
11203}
11204
11205static void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
11206                                    vector signed char *__c) {
11207  return vec_stl(
11208      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11209      __b, __c);
11210}
11211
11212static void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a, int __b,
11213                                    unsigned char *__c) {
11214  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11215                 __c);
11216}
11217
11218static void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a, int __b,
11219                                    vector unsigned char *__c) {
11220  return vec_stl(
11221      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11222      __b, __c);
11223}
11224
11225static void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b,
11226                                    vector bool char *__c) {
11227  return vec_stl(
11228      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11229      __b, __c);
11230}
11231
11232static void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b, short *__c) {
11233  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11234                 __c);
11235}
11236
11237static void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
11238                                    vector short *__c) {
11239  return vec_stl(
11240      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11241      __b, __c);
11242}
11243
11244static void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a, int __b,
11245                                    unsigned short *__c) {
11246  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11247                 __c);
11248}
11249
11250static void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a, int __b,
11251                                    vector unsigned short *__c) {
11252  return vec_stl(
11253      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11254      __b, __c);
11255}
11256
11257static void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b,
11258                                    vector bool short *__c) {
11259  return vec_stl(
11260      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11261      __b, __c);
11262}
11263
11264static void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b,
11265                                    vector pixel *__c) {
11266  return vec_stl(
11267      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11268      __b, __c);
11269}
11270
11271static void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b, int *__c) {
11272  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11273                 __c);
11274}
11275
11276static void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b, vector int *__c) {
11277  return vec_stl(
11278      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11279      __b, __c);
11280}
11281
11282static void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
11283                                    unsigned int *__c) {
11284  return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11285                 __c);
11286}
11287
11288static void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
11289                                    vector unsigned int *__c) {
11290  return vec_stl(
11291      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11292      __b, __c);
11293}
11294
11295static void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b,
11296                                    vector bool int *__c) {
11297  return vec_stl(
11298      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11299      __b, __c);
11300}
11301
11302static void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
11303                                    vector float *__c) {
11304  return vec_stl(
11305      vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11306      __b, __c);
11307}
11308
11309/* vec_promote */
11310
11311static vector signed char __ATTRS_o_ai vec_promote(signed char __a, int __b) {
11312  vector signed char __res = (vector signed char)(0);
11313  __res[__b] = __a;
11314  return __res;
11315}
11316
11317static vector unsigned char __ATTRS_o_ai vec_promote(unsigned char __a,
11318                                                     int __b) {
11319  vector unsigned char __res = (vector unsigned char)(0);
11320  __res[__b] = __a;
11321  return __res;
11322}
11323
11324static vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
11325  vector short __res = (vector short)(0);
11326  __res[__b] = __a;
11327  return __res;
11328}
11329
11330static vector unsigned short __ATTRS_o_ai vec_promote(unsigned short __a,
11331                                                      int __b) {
11332  vector unsigned short __res = (vector unsigned short)(0);
11333  __res[__b] = __a;
11334  return __res;
11335}
11336
11337static vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
11338  vector int __res = (vector int)(0);
11339  __res[__b] = __a;
11340  return __res;
11341}
11342
11343static vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a, int __b) {
11344  vector unsigned int __res = (vector unsigned int)(0);
11345  __res[__b] = __a;
11346  return __res;
11347}
11348
11349static vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
11350  vector float __res = (vector float)(0);
11351  __res[__b] = __a;
11352  return __res;
11353}
11354
11355/* vec_splats */
11356
11357static vector signed char __ATTRS_o_ai vec_splats(signed char __a) {
11358  return (vector signed char)(__a);
11359}
11360
11361static vector unsigned char __ATTRS_o_ai vec_splats(unsigned char __a) {
11362  return (vector unsigned char)(__a);
11363}
11364
11365static vector short __ATTRS_o_ai vec_splats(short __a) {
11366  return (vector short)(__a);
11367}
11368
11369static vector unsigned short __ATTRS_o_ai vec_splats(unsigned short __a) {
11370  return (vector unsigned short)(__a);
11371}
11372
11373static vector int __ATTRS_o_ai vec_splats(int __a) { return (vector int)(__a); }
11374
11375static vector unsigned int __ATTRS_o_ai vec_splats(unsigned int __a) {
11376  return (vector unsigned int)(__a);
11377}
11378
11379static vector float __ATTRS_o_ai vec_splats(float __a) {
11380  return (vector float)(__a);
11381}
11382
11383/* ----------------------------- predicates --------------------------------- */
11384
11385/* vec_all_eq */
11386
11387static int __ATTRS_o_ai vec_all_eq(vector signed char __a,
11388                                   vector signed char __b) {
11389  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
11390                                      (vector char)__b);
11391}
11392
11393static int __ATTRS_o_ai vec_all_eq(vector signed char __a,
11394                                   vector bool char __b) {
11395  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
11396                                      (vector char)__b);
11397}
11398
11399static int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
11400                                   vector unsigned char __b) {
11401  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
11402                                      (vector char)__b);
11403}
11404
11405static int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
11406                                   vector bool char __b) {
11407  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
11408                                      (vector char)__b);
11409}
11410
11411static int __ATTRS_o_ai vec_all_eq(vector bool char __a,
11412                                   vector signed char __b) {
11413  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
11414                                      (vector char)__b);
11415}
11416
11417static int __ATTRS_o_ai vec_all_eq(vector bool char __a,
11418                                   vector unsigned char __b) {
11419  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
11420                                      (vector char)__b);
11421}
11422
11423static int __ATTRS_o_ai vec_all_eq(vector bool char __a, vector bool char __b) {
11424  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
11425                                      (vector char)__b);
11426}
11427
11428static int __ATTRS_o_ai vec_all_eq(vector short __a, vector short __b) {
11429  return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
11430}
11431
11432static int __ATTRS_o_ai vec_all_eq(vector short __a, vector bool short __b) {
11433  return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
11434}
11435
11436static int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
11437                                   vector unsigned short __b) {
11438  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
11439                                      (vector short)__b);
11440}
11441
11442static int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
11443                                   vector bool short __b) {
11444  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
11445                                      (vector short)__b);
11446}
11447
11448static int __ATTRS_o_ai vec_all_eq(vector bool short __a, vector short __b) {
11449  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
11450                                      (vector short)__b);
11451}
11452
11453static int __ATTRS_o_ai vec_all_eq(vector bool short __a,
11454                                   vector unsigned short __b) {
11455  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
11456                                      (vector short)__b);
11457}
11458
11459static int __ATTRS_o_ai vec_all_eq(vector bool short __a,
11460                                   vector bool short __b) {
11461  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
11462                                      (vector short)__b);
11463}
11464
11465static int __ATTRS_o_ai vec_all_eq(vector pixel __a, vector pixel __b) {
11466  return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
11467                                      (vector short)__b);
11468}
11469
11470static int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) {
11471  return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
11472}
11473
11474static int __ATTRS_o_ai vec_all_eq(vector int __a, vector bool int __b) {
11475  return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
11476}
11477
11478static int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
11479                                   vector unsigned int __b) {
11480  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
11481                                      (vector int)__b);
11482}
11483
11484static int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
11485                                   vector bool int __b) {
11486  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
11487                                      (vector int)__b);
11488}
11489
11490static int __ATTRS_o_ai vec_all_eq(vector bool int __a, vector int __b) {
11491  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
11492                                      (vector int)__b);
11493}
11494
11495static int __ATTRS_o_ai vec_all_eq(vector bool int __a,
11496                                   vector unsigned int __b) {
11497  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
11498                                      (vector int)__b);
11499}
11500
11501static int __ATTRS_o_ai vec_all_eq(vector bool int __a, vector bool int __b) {
11502  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
11503                                      (vector int)__b);
11504}
11505
11506#ifdef __POWER8_VECTOR__
11507static int __ATTRS_o_ai vec_all_eq(vector signed long long __a,
11508                                   vector signed long long __b) {
11509  return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b);
11510}
11511
11512static int __ATTRS_o_ai vec_all_eq(vector long long __a,
11513                                   vector bool long long __b) {
11514  return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b);
11515}
11516
11517static int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
11518                                   vector unsigned long long __b) {
11519  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
11520                                      (vector long long)__b);
11521}
11522
11523static int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
11524                                   vector bool long long __b) {
11525  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
11526                                      (vector long long)__b);
11527}
11528
11529static int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
11530                                   vector long long __b) {
11531  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
11532                                      (vector long long)__b);
11533}
11534
11535static int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
11536                                   vector unsigned long long __b) {
11537  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
11538                                      (vector long long)__b);
11539}
11540
11541static int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
11542                                   vector bool long long __b) {
11543  return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
11544                                      (vector long long)__b);
11545}
11546#endif
11547
11548static int __ATTRS_o_ai vec_all_eq(vector float __a, vector float __b) {
11549  return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
11550}
11551
11552/* vec_all_ge */
11553
11554static int __ATTRS_o_ai vec_all_ge(vector signed char __a,
11555                                   vector signed char __b) {
11556  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
11557}
11558
11559static int __ATTRS_o_ai vec_all_ge(vector signed char __a,
11560                                   vector bool char __b) {
11561  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
11562}
11563
11564static int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
11565                                   vector unsigned char __b) {
11566  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
11567}
11568
11569static int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
11570                                   vector bool char __b) {
11571  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
11572}
11573
11574static int __ATTRS_o_ai vec_all_ge(vector bool char __a,
11575                                   vector signed char __b) {
11576  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
11577                                      (vector unsigned char)__a);
11578}
11579
11580static int __ATTRS_o_ai vec_all_ge(vector bool char __a,
11581                                   vector unsigned char __b) {
11582  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
11583}
11584
11585static int __ATTRS_o_ai vec_all_ge(vector bool char __a, vector bool char __b) {
11586  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
11587                                      (vector unsigned char)__a);
11588}
11589
11590static int __ATTRS_o_ai vec_all_ge(vector short __a, vector short __b) {
11591  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
11592}
11593
11594static int __ATTRS_o_ai vec_all_ge(vector short __a, vector bool short __b) {
11595  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
11596}
11597
11598static int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
11599                                   vector unsigned short __b) {
11600  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
11601}
11602
11603static int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
11604                                   vector bool short __b) {
11605  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
11606                                      __a);
11607}
11608
11609static int __ATTRS_o_ai vec_all_ge(vector bool short __a, vector short __b) {
11610  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
11611                                      (vector unsigned short)__a);
11612}
11613
11614static int __ATTRS_o_ai vec_all_ge(vector bool short __a,
11615                                   vector unsigned short __b) {
11616  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b,
11617                                      (vector unsigned short)__a);
11618}
11619
11620static int __ATTRS_o_ai vec_all_ge(vector bool short __a,
11621                                   vector bool short __b) {
11622  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
11623                                      (vector unsigned short)__a);
11624}
11625
11626static int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) {
11627  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
11628}
11629
11630static int __ATTRS_o_ai vec_all_ge(vector int __a, vector bool int __b) {
11631  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
11632}
11633
11634static int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
11635                                   vector unsigned int __b) {
11636  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
11637}
11638
11639static int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
11640                                   vector bool int __b) {
11641  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
11642}
11643
11644static int __ATTRS_o_ai vec_all_ge(vector bool int __a, vector int __b) {
11645  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
11646                                      (vector unsigned int)__a);
11647}
11648
11649static int __ATTRS_o_ai vec_all_ge(vector bool int __a,
11650                                   vector unsigned int __b) {
11651  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
11652}
11653
11654static int __ATTRS_o_ai vec_all_ge(vector bool int __a, vector bool int __b) {
11655  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
11656                                      (vector unsigned int)__a);
11657}
11658
11659#ifdef __POWER8_VECTOR__
11660static int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
11661                                   vector signed long long __b) {
11662  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a);
11663}
11664static int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
11665                                   vector bool long long __b) {
11666  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b,
11667                                      __a);
11668}
11669
11670static int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
11671                                   vector unsigned long long __b) {
11672  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a);
11673}
11674
11675static int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
11676                                   vector bool long long __b) {
11677  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
11678                                      __a);
11679}
11680
11681static int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
11682                                   vector signed long long __b) {
11683  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
11684                                      (vector unsigned long long)__a);
11685}
11686
11687static int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
11688                                   vector unsigned long long __b) {
11689  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b,
11690                                      (vector unsigned long long)__a);
11691}
11692
11693static int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
11694                                   vector bool long long __b) {
11695  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
11696                                      (vector unsigned long long)__a);
11697}
11698#endif
11699
11700static int __ATTRS_o_ai vec_all_ge(vector float __a, vector float __b) {
11701  return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
11702}
11703
11704/* vec_all_gt */
11705
11706static int __ATTRS_o_ai vec_all_gt(vector signed char __a,
11707                                   vector signed char __b) {
11708  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
11709}
11710
11711static int __ATTRS_o_ai vec_all_gt(vector signed char __a,
11712                                   vector bool char __b) {
11713  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
11714}
11715
11716static int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
11717                                   vector unsigned char __b) {
11718  return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
11719}
11720
11721static int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
11722                                   vector bool char __b) {
11723  return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
11724}
11725
11726static int __ATTRS_o_ai vec_all_gt(vector bool char __a,
11727                                   vector signed char __b) {
11728  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
11729                                      (vector unsigned char)__b);
11730}
11731
11732static int __ATTRS_o_ai vec_all_gt(vector bool char __a,
11733                                   vector unsigned char __b) {
11734  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
11735}
11736
11737static int __ATTRS_o_ai vec_all_gt(vector bool char __a, vector bool char __b) {
11738  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
11739                                      (vector unsigned char)__b);
11740}
11741
11742static int __ATTRS_o_ai vec_all_gt(vector short __a, vector short __b) {
11743  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
11744}
11745
11746static int __ATTRS_o_ai vec_all_gt(vector short __a, vector bool short __b) {
11747  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
11748}
11749
11750static int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
11751                                   vector unsigned short __b) {
11752  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
11753}
11754
11755static int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
11756                                   vector bool short __b) {
11757  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a,
11758                                      (vector unsigned short)__b);
11759}
11760
11761static int __ATTRS_o_ai vec_all_gt(vector bool short __a, vector short __b) {
11762  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
11763                                      (vector unsigned short)__b);
11764}
11765
11766static int __ATTRS_o_ai vec_all_gt(vector bool short __a,
11767                                   vector unsigned short __b) {
11768  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
11769                                      __b);
11770}
11771
11772static int __ATTRS_o_ai vec_all_gt(vector bool short __a,
11773                                   vector bool short __b) {
11774  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
11775                                      (vector unsigned short)__b);
11776}
11777
11778static int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) {
11779  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
11780}
11781
11782static int __ATTRS_o_ai vec_all_gt(vector int __a, vector bool int __b) {
11783  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
11784}
11785
11786static int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
11787                                   vector unsigned int __b) {
11788  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
11789}
11790
11791static int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
11792                                   vector bool int __b) {
11793  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
11794}
11795
11796static int __ATTRS_o_ai vec_all_gt(vector bool int __a, vector int __b) {
11797  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
11798                                      (vector unsigned int)__b);
11799}
11800
11801static int __ATTRS_o_ai vec_all_gt(vector bool int __a,
11802                                   vector unsigned int __b) {
11803  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
11804}
11805
11806static int __ATTRS_o_ai vec_all_gt(vector bool int __a, vector bool int __b) {
11807  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
11808                                      (vector unsigned int)__b);
11809}
11810
11811#ifdef __POWER8_VECTOR__
11812static int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
11813                                   vector signed long long __b) {
11814  return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b);
11815}
11816static int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
11817                                   vector bool long long __b) {
11818  return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a,
11819                                      (vector signed long long)__b);
11820}
11821
11822static int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
11823                                   vector unsigned long long __b) {
11824  return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b);
11825}
11826
11827static int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
11828                                   vector bool long long __b) {
11829  return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a,
11830                                      (vector unsigned long long)__b);
11831}
11832
11833static int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
11834                                   vector signed long long __b) {
11835  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
11836                                      (vector unsigned long long)__b);
11837}
11838
11839static int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
11840                                   vector unsigned long long __b) {
11841  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
11842                                      __b);
11843}
11844
11845static int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
11846                                   vector bool long long __b) {
11847  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
11848                                      (vector unsigned long long)__b);
11849}
11850#endif
11851
11852static int __ATTRS_o_ai vec_all_gt(vector float __a, vector float __b) {
11853  return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
11854}
11855
11856/* vec_all_in */
11857
11858static int __attribute__((__always_inline__))
11859vec_all_in(vector float __a, vector float __b) {
11860  return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
11861}
11862
11863/* vec_all_le */
11864
11865static int __ATTRS_o_ai vec_all_le(vector signed char __a,
11866                                   vector signed char __b) {
11867  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
11868}
11869
11870static int __ATTRS_o_ai vec_all_le(vector signed char __a,
11871                                   vector bool char __b) {
11872  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
11873}
11874
11875static int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
11876                                   vector unsigned char __b) {
11877  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
11878}
11879
11880static int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
11881                                   vector bool char __b) {
11882  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
11883}
11884
11885static int __ATTRS_o_ai vec_all_le(vector bool char __a,
11886                                   vector signed char __b) {
11887  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
11888                                      (vector unsigned char)__b);
11889}
11890
11891static int __ATTRS_o_ai vec_all_le(vector bool char __a,
11892                                   vector unsigned char __b) {
11893  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
11894}
11895
11896static int __ATTRS_o_ai vec_all_le(vector bool char __a, vector bool char __b) {
11897  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
11898                                      (vector unsigned char)__b);
11899}
11900
11901static int __ATTRS_o_ai vec_all_le(vector short __a, vector short __b) {
11902  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
11903}
11904
11905static int __ATTRS_o_ai vec_all_le(vector short __a, vector bool short __b) {
11906  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
11907}
11908
11909static int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
11910                                   vector unsigned short __b) {
11911  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
11912}
11913
11914static int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
11915                                   vector bool short __b) {
11916  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a,
11917                                      (vector unsigned short)__b);
11918}
11919
11920static int __ATTRS_o_ai vec_all_le(vector bool short __a, vector short __b) {
11921  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
11922                                      (vector unsigned short)__b);
11923}
11924
11925static int __ATTRS_o_ai vec_all_le(vector bool short __a,
11926                                   vector unsigned short __b) {
11927  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
11928                                      __b);
11929}
11930
11931static int __ATTRS_o_ai vec_all_le(vector bool short __a,
11932                                   vector bool short __b) {
11933  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
11934                                      (vector unsigned short)__b);
11935}
11936
11937static int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) {
11938  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
11939}
11940
11941static int __ATTRS_o_ai vec_all_le(vector int __a, vector bool int __b) {
11942  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
11943}
11944
11945static int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
11946                                   vector unsigned int __b) {
11947  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
11948}
11949
11950static int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
11951                                   vector bool int __b) {
11952  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
11953}
11954
11955static int __ATTRS_o_ai vec_all_le(vector bool int __a, vector int __b) {
11956  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
11957                                      (vector unsigned int)__b);
11958}
11959
11960static int __ATTRS_o_ai vec_all_le(vector bool int __a,
11961                                   vector unsigned int __b) {
11962  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
11963}
11964
11965static int __ATTRS_o_ai vec_all_le(vector bool int __a, vector bool int __b) {
11966  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
11967                                      (vector unsigned int)__b);
11968}
11969
11970#ifdef __POWER8_VECTOR__
11971static int __ATTRS_o_ai vec_all_le(vector signed long long __a,
11972                                   vector signed long long __b) {
11973  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b);
11974}
11975
11976static int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
11977                                   vector unsigned long long __b) {
11978  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b);
11979}
11980
11981static int __ATTRS_o_ai vec_all_le(vector signed long long __a,
11982                                   vector bool long long __b) {
11983  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a,
11984                                      (vector signed long long)__b);
11985}
11986
11987static int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
11988                                   vector bool long long __b) {
11989  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a,
11990                                      (vector unsigned long long)__b);
11991}
11992
11993static int __ATTRS_o_ai vec_all_le(vector bool long long __a,
11994                                   vector signed long long __b) {
11995  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
11996                                      (vector unsigned long long)__b);
11997}
11998
11999static int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12000                                   vector unsigned long long __b) {
12001  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12002                                      __b);
12003}
12004
12005static int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12006                                   vector bool long long __b) {
12007  return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12008                                      (vector unsigned long long)__b);
12009}
12010#endif
12011
12012static int __ATTRS_o_ai vec_all_le(vector float __a, vector float __b) {
12013  return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
12014}
12015
12016/* vec_all_lt */
12017
12018static int __ATTRS_o_ai vec_all_lt(vector signed char __a,
12019                                   vector signed char __b) {
12020  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
12021}
12022
12023static int __ATTRS_o_ai vec_all_lt(vector signed char __a,
12024                                   vector bool char __b) {
12025  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
12026}
12027
12028static int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
12029                                   vector unsigned char __b) {
12030  return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
12031}
12032
12033static int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
12034                                   vector bool char __b) {
12035  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
12036}
12037
12038static int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12039                                   vector signed char __b) {
12040  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
12041                                      (vector unsigned char)__a);
12042}
12043
12044static int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12045                                   vector unsigned char __b) {
12046  return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
12047}
12048
12049static int __ATTRS_o_ai vec_all_lt(vector bool char __a, vector bool char __b) {
12050  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
12051                                      (vector unsigned char)__a);
12052}
12053
12054static int __ATTRS_o_ai vec_all_lt(vector short __a, vector short __b) {
12055  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
12056}
12057
12058static int __ATTRS_o_ai vec_all_lt(vector short __a, vector bool short __b) {
12059  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
12060}
12061
12062static int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
12063                                   vector unsigned short __b) {
12064  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
12065}
12066
12067static int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
12068                                   vector bool short __b) {
12069  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12070                                      __a);
12071}
12072
12073static int __ATTRS_o_ai vec_all_lt(vector bool short __a, vector short __b) {
12074  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12075                                      (vector unsigned short)__a);
12076}
12077
12078static int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12079                                   vector unsigned short __b) {
12080  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b,
12081                                      (vector unsigned short)__a);
12082}
12083
12084static int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12085                                   vector bool short __b) {
12086  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12087                                      (vector unsigned short)__a);
12088}
12089
12090static int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) {
12091  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
12092}
12093
12094static int __ATTRS_o_ai vec_all_lt(vector int __a, vector bool int __b) {
12095  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
12096}
12097
12098static int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
12099                                   vector unsigned int __b) {
12100  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
12101}
12102
12103static int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
12104                                   vector bool int __b) {
12105  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
12106}
12107
12108static int __ATTRS_o_ai vec_all_lt(vector bool int __a, vector int __b) {
12109  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
12110                                      (vector unsigned int)__a);
12111}
12112
12113static int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12114                                   vector unsigned int __b) {
12115  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
12116}
12117
12118static int __ATTRS_o_ai vec_all_lt(vector bool int __a, vector bool int __b) {
12119  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
12120                                      (vector unsigned int)__a);
12121}
12122
12123#ifdef __POWER8_VECTOR__
12124static int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
12125                                   vector signed long long __b) {
12126  return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a);
12127}
12128
12129static int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
12130                                   vector unsigned long long __b) {
12131  return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a);
12132}
12133
12134static int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
12135                                   vector bool long long __b) {
12136  return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b,
12137                                      __a);
12138}
12139
12140static int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
12141                                   vector bool long long __b) {
12142  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12143                                      __a);
12144}
12145
12146static int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12147                                   vector signed long long __b) {
12148  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12149                                      (vector unsigned long long)__a);
12150}
12151
12152static int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12153                                   vector unsigned long long __b) {
12154  return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b,
12155                                      (vector unsigned long long)__a);
12156}
12157
12158static int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12159                                   vector bool long long __b) {
12160  return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12161                                      (vector unsigned long long)__a);
12162}
12163#endif
12164
12165static int __ATTRS_o_ai vec_all_lt(vector float __a, vector float __b) {
12166  return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
12167}
12168
12169/* vec_all_nan */
12170
12171static int __attribute__((__always_inline__)) vec_all_nan(vector float __a) {
12172  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
12173}
12174
12175/* vec_all_ne */
12176
12177static int __ATTRS_o_ai vec_all_ne(vector signed char __a,
12178                                   vector signed char __b) {
12179  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12180                                      (vector char)__b);
12181}
12182
12183static int __ATTRS_o_ai vec_all_ne(vector signed char __a,
12184                                   vector bool char __b) {
12185  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12186                                      (vector char)__b);
12187}
12188
12189static int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
12190                                   vector unsigned char __b) {
12191  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12192                                      (vector char)__b);
12193}
12194
12195static int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
12196                                   vector bool char __b) {
12197  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12198                                      (vector char)__b);
12199}
12200
12201static int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12202                                   vector signed char __b) {
12203  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12204                                      (vector char)__b);
12205}
12206
12207static int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12208                                   vector unsigned char __b) {
12209  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12210                                      (vector char)__b);
12211}
12212
12213static int __ATTRS_o_ai vec_all_ne(vector bool char __a, vector bool char __b) {
12214  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12215                                      (vector char)__b);
12216}
12217
12218static int __ATTRS_o_ai vec_all_ne(vector short __a, vector short __b) {
12219  return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
12220}
12221
12222static int __ATTRS_o_ai vec_all_ne(vector short __a, vector bool short __b) {
12223  return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
12224}
12225
12226static int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
12227                                   vector unsigned short __b) {
12228  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12229                                      (vector short)__b);
12230}
12231
12232static int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
12233                                   vector bool short __b) {
12234  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12235                                      (vector short)__b);
12236}
12237
12238static int __ATTRS_o_ai vec_all_ne(vector bool short __a, vector short __b) {
12239  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12240                                      (vector short)__b);
12241}
12242
12243static int __ATTRS_o_ai vec_all_ne(vector bool short __a,
12244                                   vector unsigned short __b) {
12245  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12246                                      (vector short)__b);
12247}
12248
12249static int __ATTRS_o_ai vec_all_ne(vector bool short __a,
12250                                   vector bool short __b) {
12251  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12252                                      (vector short)__b);
12253}
12254
12255static int __ATTRS_o_ai vec_all_ne(vector pixel __a, vector pixel __b) {
12256  return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12257                                      (vector short)__b);
12258}
12259
12260static int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) {
12261  return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
12262}
12263
12264static int __ATTRS_o_ai vec_all_ne(vector int __a, vector bool int __b) {
12265  return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
12266}
12267
12268static int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
12269                                   vector unsigned int __b) {
12270  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
12271                                      (vector int)__b);
12272}
12273
12274static int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
12275                                   vector bool int __b) {
12276  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
12277                                      (vector int)__b);
12278}
12279
12280static int __ATTRS_o_ai vec_all_ne(vector bool int __a, vector int __b) {
12281  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
12282                                      (vector int)__b);
12283}
12284
12285static int __ATTRS_o_ai vec_all_ne(vector bool int __a,
12286                                   vector unsigned int __b) {
12287  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
12288                                      (vector int)__b);
12289}
12290
12291static int __ATTRS_o_ai vec_all_ne(vector bool int __a, vector bool int __b) {
12292  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
12293                                      (vector int)__b);
12294}
12295
12296#ifdef __POWER8_VECTOR__
12297static int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
12298                                   vector signed long long __b) {
12299  return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b);
12300}
12301
12302static int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
12303                                   vector unsigned long long __b) {
12304  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a,
12305                                      (vector long long)__b);
12306}
12307
12308static int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
12309                                   vector bool long long __b) {
12310  return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a,
12311                                      (vector signed long long)__b);
12312}
12313
12314static int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
12315                                   vector bool long long __b) {
12316  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
12317                                      (vector signed long long)__b);
12318}
12319
12320static int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
12321                                   vector signed long long __b) {
12322  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
12323                                      (vector signed long long)__b);
12324}
12325
12326static int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
12327                                   vector unsigned long long __b) {
12328  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
12329                                      (vector signed long long)__b);
12330}
12331
12332static int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
12333                                   vector bool long long __b) {
12334  return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
12335                                      (vector signed long long)__b);
12336}
12337#endif
12338
12339static int __ATTRS_o_ai vec_all_ne(vector float __a, vector float __b) {
12340  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
12341}
12342
12343/* vec_all_nge */
12344
12345static int __attribute__((__always_inline__))
12346vec_all_nge(vector float __a, vector float __b) {
12347  return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
12348}
12349
12350/* vec_all_ngt */
12351
12352static int __attribute__((__always_inline__))
12353vec_all_ngt(vector float __a, vector float __b) {
12354  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
12355}
12356
12357/* vec_all_nle */
12358
12359static int __attribute__((__always_inline__))
12360vec_all_nle(vector float __a, vector float __b) {
12361  return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
12362}
12363
12364/* vec_all_nlt */
12365
12366static int __attribute__((__always_inline__))
12367vec_all_nlt(vector float __a, vector float __b) {
12368  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
12369}
12370
12371/* vec_all_numeric */
12372
12373static int __attribute__((__always_inline__))
12374vec_all_numeric(vector float __a) {
12375  return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
12376}
12377
12378/* vec_any_eq */
12379
12380static int __ATTRS_o_ai vec_any_eq(vector signed char __a,
12381                                   vector signed char __b) {
12382  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
12383                                      (vector char)__b);
12384}
12385
12386static int __ATTRS_o_ai vec_any_eq(vector signed char __a,
12387                                   vector bool char __b) {
12388  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
12389                                      (vector char)__b);
12390}
12391
12392static int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
12393                                   vector unsigned char __b) {
12394  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
12395                                      (vector char)__b);
12396}
12397
12398static int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
12399                                   vector bool char __b) {
12400  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
12401                                      (vector char)__b);
12402}
12403
12404static int __ATTRS_o_ai vec_any_eq(vector bool char __a,
12405                                   vector signed char __b) {
12406  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
12407                                      (vector char)__b);
12408}
12409
12410static int __ATTRS_o_ai vec_any_eq(vector bool char __a,
12411                                   vector unsigned char __b) {
12412  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
12413                                      (vector char)__b);
12414}
12415
12416static int __ATTRS_o_ai vec_any_eq(vector bool char __a, vector bool char __b) {
12417  return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
12418                                      (vector char)__b);
12419}
12420
12421static int __ATTRS_o_ai vec_any_eq(vector short __a, vector short __b) {
12422  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
12423}
12424
12425static int __ATTRS_o_ai vec_any_eq(vector short __a, vector bool short __b) {
12426  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
12427}
12428
12429static int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
12430                                   vector unsigned short __b) {
12431  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
12432                                      (vector short)__b);
12433}
12434
12435static int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
12436                                   vector bool short __b) {
12437  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
12438                                      (vector short)__b);
12439}
12440
12441static int __ATTRS_o_ai vec_any_eq(vector bool short __a, vector short __b) {
12442  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
12443                                      (vector short)__b);
12444}
12445
12446static int __ATTRS_o_ai vec_any_eq(vector bool short __a,
12447                                   vector unsigned short __b) {
12448  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
12449                                      (vector short)__b);
12450}
12451
12452static int __ATTRS_o_ai vec_any_eq(vector bool short __a,
12453                                   vector bool short __b) {
12454  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
12455                                      (vector short)__b);
12456}
12457
12458static int __ATTRS_o_ai vec_any_eq(vector pixel __a, vector pixel __b) {
12459  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
12460                                      (vector short)__b);
12461}
12462
12463static int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) {
12464  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
12465}
12466
12467static int __ATTRS_o_ai vec_any_eq(vector int __a, vector bool int __b) {
12468  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
12469}
12470
12471static int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
12472                                   vector unsigned int __b) {
12473  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
12474                                      (vector int)__b);
12475}
12476
12477static int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
12478                                   vector bool int __b) {
12479  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
12480                                      (vector int)__b);
12481}
12482
12483static int __ATTRS_o_ai vec_any_eq(vector bool int __a, vector int __b) {
12484  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
12485                                      (vector int)__b);
12486}
12487
12488static int __ATTRS_o_ai vec_any_eq(vector bool int __a,
12489                                   vector unsigned int __b) {
12490  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
12491                                      (vector int)__b);
12492}
12493
12494static int __ATTRS_o_ai vec_any_eq(vector bool int __a, vector bool int __b) {
12495  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
12496                                      (vector int)__b);
12497}
12498
12499#ifdef __POWER8_VECTOR__
12500static int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
12501                                   vector signed long long __b) {
12502  return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b);
12503}
12504
12505static int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
12506                                   vector unsigned long long __b) {
12507  return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a,
12508                                      (vector long long)__b);
12509}
12510
12511static int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
12512                                   vector bool long long __b) {
12513  return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a,
12514                                      (vector signed long long)__b);
12515}
12516
12517static int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
12518                                   vector bool long long __b) {
12519  return __builtin_altivec_vcmpequd_p(
12520      __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
12521}
12522
12523static int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
12524                                   vector signed long long __b) {
12525  return __builtin_altivec_vcmpequd_p(
12526      __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
12527}
12528
12529static int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
12530                                   vector unsigned long long __b) {
12531  return __builtin_altivec_vcmpequd_p(
12532      __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
12533}
12534
12535static int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
12536                                   vector bool long long __b) {
12537  return __builtin_altivec_vcmpequd_p(
12538      __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
12539}
12540#endif
12541
12542static int __ATTRS_o_ai vec_any_eq(vector float __a, vector float __b) {
12543  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
12544}
12545
12546/* vec_any_ge */
12547
12548static int __ATTRS_o_ai vec_any_ge(vector signed char __a,
12549                                   vector signed char __b) {
12550  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
12551}
12552
12553static int __ATTRS_o_ai vec_any_ge(vector signed char __a,
12554                                   vector bool char __b) {
12555  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b,
12556                                      __a);
12557}
12558
12559static int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
12560                                   vector unsigned char __b) {
12561  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
12562}
12563
12564static int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
12565                                   vector bool char __b) {
12566  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
12567                                      __a);
12568}
12569
12570static int __ATTRS_o_ai vec_any_ge(vector bool char __a,
12571                                   vector signed char __b) {
12572  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
12573                                      (vector unsigned char)__a);
12574}
12575
12576static int __ATTRS_o_ai vec_any_ge(vector bool char __a,
12577                                   vector unsigned char __b) {
12578  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b,
12579                                      (vector unsigned char)__a);
12580}
12581
12582static int __ATTRS_o_ai vec_any_ge(vector bool char __a, vector bool char __b) {
12583  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
12584                                      (vector unsigned char)__a);
12585}
12586
12587static int __ATTRS_o_ai vec_any_ge(vector short __a, vector short __b) {
12588  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
12589}
12590
12591static int __ATTRS_o_ai vec_any_ge(vector short __a, vector bool short __b) {
12592  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
12593}
12594
12595static int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
12596                                   vector unsigned short __b) {
12597  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
12598}
12599
12600static int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
12601                                   vector bool short __b) {
12602  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
12603                                      __a);
12604}
12605
12606static int __ATTRS_o_ai vec_any_ge(vector bool short __a, vector short __b) {
12607  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
12608                                      (vector unsigned short)__a);
12609}
12610
12611static int __ATTRS_o_ai vec_any_ge(vector bool short __a,
12612                                   vector unsigned short __b) {
12613  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b,
12614                                      (vector unsigned short)__a);
12615}
12616
12617static int __ATTRS_o_ai vec_any_ge(vector bool short __a,
12618                                   vector bool short __b) {
12619  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
12620                                      (vector unsigned short)__a);
12621}
12622
12623static int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) {
12624  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
12625}
12626
12627static int __ATTRS_o_ai vec_any_ge(vector int __a, vector bool int __b) {
12628  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
12629}
12630
12631static int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
12632                                   vector unsigned int __b) {
12633  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
12634}
12635
12636static int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
12637                                   vector bool int __b) {
12638  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
12639                                      __a);
12640}
12641
12642static int __ATTRS_o_ai vec_any_ge(vector bool int __a, vector int __b) {
12643  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
12644                                      (vector unsigned int)__a);
12645}
12646
12647static int __ATTRS_o_ai vec_any_ge(vector bool int __a,
12648                                   vector unsigned int __b) {
12649  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b,
12650                                      (vector unsigned int)__a);
12651}
12652
12653static int __ATTRS_o_ai vec_any_ge(vector bool int __a, vector bool int __b) {
12654  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
12655                                      (vector unsigned int)__a);
12656}
12657
12658#ifdef __POWER8_VECTOR__
12659static int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
12660                                   vector signed long long __b) {
12661  return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a);
12662}
12663
12664static int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
12665                                   vector unsigned long long __b) {
12666  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a);
12667}
12668
12669static int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
12670                                   vector bool long long __b) {
12671  return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV,
12672                                      (vector signed long long)__b, __a);
12673}
12674
12675static int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
12676                                   vector bool long long __b) {
12677  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
12678                                      (vector unsigned long long)__b, __a);
12679}
12680
12681static int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
12682                                   vector signed long long __b) {
12683  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
12684                                      (vector unsigned long long)__b,
12685                                      (vector unsigned long long)__a);
12686}
12687
12688static int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
12689                                   vector unsigned long long __b) {
12690  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b,
12691                                      (vector unsigned long long)__a);
12692}
12693
12694static int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
12695                                   vector bool long long __b) {
12696  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
12697                                      (vector unsigned long long)__b,
12698                                      (vector unsigned long long)__a);
12699}
12700#endif
12701
12702static int __ATTRS_o_ai vec_any_ge(vector float __a, vector float __b) {
12703  return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
12704}
12705
12706/* vec_any_gt */
12707
12708static int __ATTRS_o_ai vec_any_gt(vector signed char __a,
12709                                   vector signed char __b) {
12710  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
12711}
12712
12713static int __ATTRS_o_ai vec_any_gt(vector signed char __a,
12714                                   vector bool char __b) {
12715  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a,
12716                                      (vector signed char)__b);
12717}
12718
12719static int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
12720                                   vector unsigned char __b) {
12721  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
12722}
12723
12724static int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
12725                                   vector bool char __b) {
12726  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a,
12727                                      (vector unsigned char)__b);
12728}
12729
12730static int __ATTRS_o_ai vec_any_gt(vector bool char __a,
12731                                   vector signed char __b) {
12732  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
12733                                      (vector unsigned char)__b);
12734}
12735
12736static int __ATTRS_o_ai vec_any_gt(vector bool char __a,
12737                                   vector unsigned char __b) {
12738  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
12739                                      __b);
12740}
12741
12742static int __ATTRS_o_ai vec_any_gt(vector bool char __a, vector bool char __b) {
12743  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
12744                                      (vector unsigned char)__b);
12745}
12746
12747static int __ATTRS_o_ai vec_any_gt(vector short __a, vector short __b) {
12748  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
12749}
12750
12751static int __ATTRS_o_ai vec_any_gt(vector short __a, vector bool short __b) {
12752  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
12753}
12754
12755static int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
12756                                   vector unsigned short __b) {
12757  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
12758}
12759
12760static int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
12761                                   vector bool short __b) {
12762  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a,
12763                                      (vector unsigned short)__b);
12764}
12765
12766static int __ATTRS_o_ai vec_any_gt(vector bool short __a, vector short __b) {
12767  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
12768                                      (vector unsigned short)__b);
12769}
12770
12771static int __ATTRS_o_ai vec_any_gt(vector bool short __a,
12772                                   vector unsigned short __b) {
12773  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
12774                                      __b);
12775}
12776
12777static int __ATTRS_o_ai vec_any_gt(vector bool short __a,
12778                                   vector bool short __b) {
12779  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
12780                                      (vector unsigned short)__b);
12781}
12782
12783static int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) {
12784  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
12785}
12786
12787static int __ATTRS_o_ai vec_any_gt(vector int __a, vector bool int __b) {
12788  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
12789}
12790
12791static int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
12792                                   vector unsigned int __b) {
12793  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
12794}
12795
12796static int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
12797                                   vector bool int __b) {
12798  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a,
12799                                      (vector unsigned int)__b);
12800}
12801
12802static int __ATTRS_o_ai vec_any_gt(vector bool int __a, vector int __b) {
12803  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
12804                                      (vector unsigned int)__b);
12805}
12806
12807static int __ATTRS_o_ai vec_any_gt(vector bool int __a,
12808                                   vector unsigned int __b) {
12809  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
12810                                      __b);
12811}
12812
12813static int __ATTRS_o_ai vec_any_gt(vector bool int __a, vector bool int __b) {
12814  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
12815                                      (vector unsigned int)__b);
12816}
12817
12818#ifdef __POWER8_VECTOR__
12819static int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
12820                                   vector signed long long __b) {
12821  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b);
12822}
12823
12824static int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
12825                                   vector unsigned long long __b) {
12826  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b);
12827}
12828
12829static int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
12830                                   vector bool long long __b) {
12831  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a,
12832                                      (vector signed long long)__b);
12833}
12834
12835static int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
12836                                   vector bool long long __b) {
12837  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a,
12838                                      (vector unsigned long long)__b);
12839}
12840
12841static int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
12842                                   vector signed long long __b) {
12843  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
12844                                      (vector unsigned long long)__a,
12845                                      (vector unsigned long long)__b);
12846}
12847
12848static int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
12849                                   vector unsigned long long __b) {
12850  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
12851                                      (vector unsigned long long)__a, __b);
12852}
12853
12854static int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
12855                                   vector bool long long __b) {
12856  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
12857                                      (vector unsigned long long)__a,
12858                                      (vector unsigned long long)__b);
12859}
12860#endif
12861
12862static int __ATTRS_o_ai vec_any_gt(vector float __a, vector float __b) {
12863  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
12864}
12865
12866/* vec_any_le */
12867
12868static int __ATTRS_o_ai vec_any_le(vector signed char __a,
12869                                   vector signed char __b) {
12870  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
12871}
12872
12873static int __ATTRS_o_ai vec_any_le(vector signed char __a,
12874                                   vector bool char __b) {
12875  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a,
12876                                      (vector signed char)__b);
12877}
12878
12879static int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
12880                                   vector unsigned char __b) {
12881  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
12882}
12883
12884static int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
12885                                   vector bool char __b) {
12886  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a,
12887                                      (vector unsigned char)__b);
12888}
12889
12890static int __ATTRS_o_ai vec_any_le(vector bool char __a,
12891                                   vector signed char __b) {
12892  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
12893                                      (vector unsigned char)__b);
12894}
12895
12896static int __ATTRS_o_ai vec_any_le(vector bool char __a,
12897                                   vector unsigned char __b) {
12898  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
12899                                      __b);
12900}
12901
12902static int __ATTRS_o_ai vec_any_le(vector bool char __a, vector bool char __b) {
12903  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
12904                                      (vector unsigned char)__b);
12905}
12906
12907static int __ATTRS_o_ai vec_any_le(vector short __a, vector short __b) {
12908  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
12909}
12910
12911static int __ATTRS_o_ai vec_any_le(vector short __a, vector bool short __b) {
12912  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
12913}
12914
12915static int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
12916                                   vector unsigned short __b) {
12917  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
12918}
12919
12920static int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
12921                                   vector bool short __b) {
12922  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a,
12923                                      (vector unsigned short)__b);
12924}
12925
12926static int __ATTRS_o_ai vec_any_le(vector bool short __a, vector short __b) {
12927  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
12928                                      (vector unsigned short)__b);
12929}
12930
12931static int __ATTRS_o_ai vec_any_le(vector bool short __a,
12932                                   vector unsigned short __b) {
12933  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
12934                                      __b);
12935}
12936
12937static int __ATTRS_o_ai vec_any_le(vector bool short __a,
12938                                   vector bool short __b) {
12939  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
12940                                      (vector unsigned short)__b);
12941}
12942
12943static int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) {
12944  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
12945}
12946
12947static int __ATTRS_o_ai vec_any_le(vector int __a, vector bool int __b) {
12948  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
12949}
12950
12951static int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
12952                                   vector unsigned int __b) {
12953  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
12954}
12955
12956static int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
12957                                   vector bool int __b) {
12958  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a,
12959                                      (vector unsigned int)__b);
12960}
12961
12962static int __ATTRS_o_ai vec_any_le(vector bool int __a, vector int __b) {
12963  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
12964                                      (vector unsigned int)__b);
12965}
12966
12967static int __ATTRS_o_ai vec_any_le(vector bool int __a,
12968                                   vector unsigned int __b) {
12969  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
12970                                      __b);
12971}
12972
12973static int __ATTRS_o_ai vec_any_le(vector bool int __a, vector bool int __b) {
12974  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
12975                                      (vector unsigned int)__b);
12976}
12977
12978#ifdef __POWER8_VECTOR__
12979static int __ATTRS_o_ai vec_any_le(vector signed long long __a,
12980                                   vector signed long long __b) {
12981  return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b);
12982}
12983
12984static int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
12985                                   vector unsigned long long __b) {
12986  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b);
12987}
12988
12989static int __ATTRS_o_ai vec_any_le(vector signed long long __a,
12990                                   vector bool long long __b) {
12991  return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a,
12992                                      (vector signed long long)__b);
12993}
12994
12995static int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
12996                                   vector bool long long __b) {
12997  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a,
12998                                      (vector unsigned long long)__b);
12999}
13000
13001static int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13002                                   vector signed long long __b) {
13003  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13004                                      (vector unsigned long long)__a,
13005                                      (vector unsigned long long)__b);
13006}
13007
13008static int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13009                                   vector unsigned long long __b) {
13010  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13011                                      (vector unsigned long long)__a, __b);
13012}
13013
13014static int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13015                                   vector bool long long __b) {
13016  return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13017                                      (vector unsigned long long)__a,
13018                                      (vector unsigned long long)__b);
13019}
13020#endif
13021
13022static int __ATTRS_o_ai vec_any_le(vector float __a, vector float __b) {
13023  return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
13024}
13025
13026/* vec_any_lt */
13027
13028static int __ATTRS_o_ai vec_any_lt(vector signed char __a,
13029                                   vector signed char __b) {
13030  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
13031}
13032
13033static int __ATTRS_o_ai vec_any_lt(vector signed char __a,
13034                                   vector bool char __b) {
13035  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b,
13036                                      __a);
13037}
13038
13039static int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
13040                                   vector unsigned char __b) {
13041  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
13042}
13043
13044static int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
13045                                   vector bool char __b) {
13046  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13047                                      __a);
13048}
13049
13050static int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13051                                   vector signed char __b) {
13052  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13053                                      (vector unsigned char)__a);
13054}
13055
13056static int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13057                                   vector unsigned char __b) {
13058  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b,
13059                                      (vector unsigned char)__a);
13060}
13061
13062static int __ATTRS_o_ai vec_any_lt(vector bool char __a, vector bool char __b) {
13063  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13064                                      (vector unsigned char)__a);
13065}
13066
13067static int __ATTRS_o_ai vec_any_lt(vector short __a, vector short __b) {
13068  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
13069}
13070
13071static int __ATTRS_o_ai vec_any_lt(vector short __a, vector bool short __b) {
13072  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
13073}
13074
13075static int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
13076                                   vector unsigned short __b) {
13077  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
13078}
13079
13080static int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
13081                                   vector bool short __b) {
13082  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13083                                      __a);
13084}
13085
13086static int __ATTRS_o_ai vec_any_lt(vector bool short __a, vector short __b) {
13087  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13088                                      (vector unsigned short)__a);
13089}
13090
13091static int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13092                                   vector unsigned short __b) {
13093  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b,
13094                                      (vector unsigned short)__a);
13095}
13096
13097static int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13098                                   vector bool short __b) {
13099  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13100                                      (vector unsigned short)__a);
13101}
13102
13103static int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) {
13104  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
13105}
13106
13107static int __ATTRS_o_ai vec_any_lt(vector int __a, vector bool int __b) {
13108  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
13109}
13110
13111static int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
13112                                   vector unsigned int __b) {
13113  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
13114}
13115
13116static int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
13117                                   vector bool int __b) {
13118  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
13119                                      __a);
13120}
13121
13122static int __ATTRS_o_ai vec_any_lt(vector bool int __a, vector int __b) {
13123  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
13124                                      (vector unsigned int)__a);
13125}
13126
13127static int __ATTRS_o_ai vec_any_lt(vector bool int __a,
13128                                   vector unsigned int __b) {
13129  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b,
13130                                      (vector unsigned int)__a);
13131}
13132
13133static int __ATTRS_o_ai vec_any_lt(vector bool int __a, vector bool int __b) {
13134  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
13135                                      (vector unsigned int)__a);
13136}
13137
13138#ifdef __POWER8_VECTOR__
13139static int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
13140                                   vector signed long long __b) {
13141  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a);
13142}
13143
13144static int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
13145                                   vector unsigned long long __b) {
13146  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a);
13147}
13148
13149static int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
13150                                   vector bool long long __b) {
13151  return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV,
13152                                      (vector signed long long)__b, __a);
13153}
13154
13155static int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
13156                                   vector bool long long __b) {
13157  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13158                                      (vector unsigned long long)__b, __a);
13159}
13160
13161static int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
13162                                   vector signed long long __b) {
13163  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13164                                      (vector unsigned long long)__b,
13165                                      (vector unsigned long long)__a);
13166}
13167
13168static int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
13169                                   vector unsigned long long __b) {
13170  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b,
13171                                      (vector unsigned long long)__a);
13172}
13173
13174static int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
13175                                   vector bool long long __b) {
13176  return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13177                                      (vector unsigned long long)__b,
13178                                      (vector unsigned long long)__a);
13179}
13180#endif
13181
13182static int __ATTRS_o_ai vec_any_lt(vector float __a, vector float __b) {
13183  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
13184}
13185
13186/* vec_any_nan */
13187
13188static int __attribute__((__always_inline__)) vec_any_nan(vector float __a) {
13189  return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
13190}
13191
13192/* vec_any_ne */
13193
13194static int __ATTRS_o_ai vec_any_ne(vector signed char __a,
13195                                   vector signed char __b) {
13196  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
13197                                      (vector char)__b);
13198}
13199
13200static int __ATTRS_o_ai vec_any_ne(vector signed char __a,
13201                                   vector bool char __b) {
13202  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
13203                                      (vector char)__b);
13204}
13205
13206static int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
13207                                   vector unsigned char __b) {
13208  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
13209                                      (vector char)__b);
13210}
13211
13212static int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
13213                                   vector bool char __b) {
13214  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
13215                                      (vector char)__b);
13216}
13217
13218static int __ATTRS_o_ai vec_any_ne(vector bool char __a,
13219                                   vector signed char __b) {
13220  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
13221                                      (vector char)__b);
13222}
13223
13224static int __ATTRS_o_ai vec_any_ne(vector bool char __a,
13225                                   vector unsigned char __b) {
13226  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
13227                                      (vector char)__b);
13228}
13229
13230static int __ATTRS_o_ai vec_any_ne(vector bool char __a, vector bool char __b) {
13231  return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
13232                                      (vector char)__b);
13233}
13234
13235static int __ATTRS_o_ai vec_any_ne(vector short __a, vector short __b) {
13236  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
13237}
13238
13239static int __ATTRS_o_ai vec_any_ne(vector short __a, vector bool short __b) {
13240  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
13241}
13242
13243static int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
13244                                   vector unsigned short __b) {
13245  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
13246                                      (vector short)__b);
13247}
13248
13249static int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
13250                                   vector bool short __b) {
13251  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
13252                                      (vector short)__b);
13253}
13254
13255static int __ATTRS_o_ai vec_any_ne(vector bool short __a, vector short __b) {
13256  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
13257                                      (vector short)__b);
13258}
13259
13260static int __ATTRS_o_ai vec_any_ne(vector bool short __a,
13261                                   vector unsigned short __b) {
13262  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
13263                                      (vector short)__b);
13264}
13265
13266static int __ATTRS_o_ai vec_any_ne(vector bool short __a,
13267                                   vector bool short __b) {
13268  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
13269                                      (vector short)__b);
13270}
13271
13272static int __ATTRS_o_ai vec_any_ne(vector pixel __a, vector pixel __b) {
13273  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
13274                                      (vector short)__b);
13275}
13276
13277static int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) {
13278  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
13279}
13280
13281static int __ATTRS_o_ai vec_any_ne(vector int __a, vector bool int __b) {
13282  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
13283}
13284
13285static int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
13286                                   vector unsigned int __b) {
13287  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
13288                                      (vector int)__b);
13289}
13290
13291static int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
13292                                   vector bool int __b) {
13293  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
13294                                      (vector int)__b);
13295}
13296
13297static int __ATTRS_o_ai vec_any_ne(vector bool int __a, vector int __b) {
13298  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
13299                                      (vector int)__b);
13300}
13301
13302static int __ATTRS_o_ai vec_any_ne(vector bool int __a,
13303                                   vector unsigned int __b) {
13304  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
13305                                      (vector int)__b);
13306}
13307
13308static int __ATTRS_o_ai vec_any_ne(vector bool int __a, vector bool int __b) {
13309  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
13310                                      (vector int)__b);
13311}
13312
13313#ifdef __POWER8_VECTOR__
13314static int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
13315                                   vector signed long long __b) {
13316  return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b);
13317}
13318
13319static int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
13320                                   vector unsigned long long __b) {
13321  return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a,
13322                                      (vector long long)__b);
13323}
13324
13325static int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
13326                                   vector bool long long __b) {
13327  return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a,
13328                                      (vector signed long long)__b);
13329}
13330
13331static int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
13332                                   vector bool long long __b) {
13333  return __builtin_altivec_vcmpequd_p(
13334      __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
13335}
13336
13337static int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
13338                                   vector signed long long __b) {
13339  return __builtin_altivec_vcmpequd_p(
13340      __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
13341}
13342
13343static int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
13344                                   vector unsigned long long __b) {
13345  return __builtin_altivec_vcmpequd_p(
13346      __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
13347}
13348
13349static int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
13350                                   vector bool long long __b) {
13351  return __builtin_altivec_vcmpequd_p(
13352      __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
13353}
13354#endif
13355
13356static int __ATTRS_o_ai vec_any_ne(vector float __a, vector float __b) {
13357  return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
13358}
13359
13360/* vec_any_nge */
13361
13362static int __attribute__((__always_inline__))
13363vec_any_nge(vector float __a, vector float __b) {
13364  return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
13365}
13366
13367/* vec_any_ngt */
13368
13369static int __attribute__((__always_inline__))
13370vec_any_ngt(vector float __a, vector float __b) {
13371  return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
13372}
13373
13374/* vec_any_nle */
13375
13376static int __attribute__((__always_inline__))
13377vec_any_nle(vector float __a, vector float __b) {
13378  return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
13379}
13380
13381/* vec_any_nlt */
13382
13383static int __attribute__((__always_inline__))
13384vec_any_nlt(vector float __a, vector float __b) {
13385  return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
13386}
13387
13388/* vec_any_numeric */
13389
13390static int __attribute__((__always_inline__))
13391vec_any_numeric(vector float __a) {
13392  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
13393}
13394
13395/* vec_any_out */
13396
13397static int __attribute__((__always_inline__))
13398vec_any_out(vector float __a, vector float __b) {
13399  return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
13400}
13401
13402/* Power 8 Crypto functions
13403Note: We diverge from the current GCC implementation with regard
13404to cryptography and related functions as follows:
13405- Only the SHA and AES instructions and builtins are disabled by -mno-crypto
13406- The remaining ones are only available on Power8 and up so
13407  require -mpower8-vector
13408The justification for this is that export requirements require that
13409Category:Vector.Crypto is optional (i.e. compliant hardware may not provide
13410support). As a result, we need to be able to turn off support for those.
13411The remaining ones (currently controlled by -mcrypto for GCC) still
13412need to be provided on compliant hardware even if Vector.Crypto is not
13413provided.
13414FIXME: the naming convention for the builtins will be adjusted due
13415to the inconsistency (__builtin_crypto_ prefix on builtins that cannot be
13416removed with -mno-crypto). This is under development.
13417*/
13418#ifdef __CRYPTO__
13419static vector unsigned long long __attribute__((__always_inline__))
13420__builtin_crypto_vsbox(vector unsigned long long __a) {
13421  return __builtin_altivec_crypto_vsbox(__a);
13422}
13423
13424static vector unsigned long long __attribute__((__always_inline__))
13425__builtin_crypto_vcipher(vector unsigned long long __a,
13426                         vector unsigned long long __b) {
13427  return __builtin_altivec_crypto_vcipher(__a, __b);
13428}
13429
13430static vector unsigned long long __attribute__((__always_inline__))
13431__builtin_crypto_vcipherlast(vector unsigned long long __a,
13432                             vector unsigned long long __b) {
13433  return __builtin_altivec_crypto_vcipherlast(__a, __b);
13434}
13435
13436static vector unsigned long long __attribute__((__always_inline__))
13437__builtin_crypto_vncipher(vector unsigned long long __a,
13438                          vector unsigned long long __b) {
13439  return __builtin_altivec_crypto_vncipher(__a, __b);
13440}
13441
13442static vector unsigned long long __attribute__((__always_inline__))
13443__builtin_crypto_vncipherlast(vector unsigned long long __a,
13444                              vector unsigned long long __b) {
13445  return __builtin_altivec_crypto_vncipherlast(__a, __b);
13446}
13447
13448#define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad
13449#define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw
13450#endif
13451
13452#ifdef __POWER8_VECTOR__
13453static vector unsigned char __ATTRS_o_ai
13454__builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b,
13455                          vector unsigned char __c) {
13456  return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
13457}
13458
13459static vector unsigned short __ATTRS_o_ai
13460__builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b,
13461                          vector unsigned short __c) {
13462  return (vector unsigned short)__builtin_altivec_crypto_vpermxor(
13463      (vector unsigned char)__a, (vector unsigned char)__b,
13464      (vector unsigned char)__c);
13465}
13466
13467static vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor(
13468    vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
13469  return (vector unsigned int)__builtin_altivec_crypto_vpermxor(
13470      (vector unsigned char)__a, (vector unsigned char)__b,
13471      (vector unsigned char)__c);
13472}
13473
13474static vector unsigned long long __ATTRS_o_ai __builtin_crypto_vpermxor(
13475    vector unsigned long long __a, vector unsigned long long __b,
13476    vector unsigned long long __c) {
13477  return (vector unsigned long long)__builtin_altivec_crypto_vpermxor(
13478      (vector unsigned char)__a, (vector unsigned char)__b,
13479      (vector unsigned char)__c);
13480}
13481
13482static vector unsigned char __ATTRS_o_ai
13483__builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) {
13484  return __builtin_altivec_crypto_vpmsumb(__a, __b);
13485}
13486
13487static vector unsigned short __ATTRS_o_ai
13488__builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) {
13489  return __builtin_altivec_crypto_vpmsumh(__a, __b);
13490}
13491
13492static vector unsigned int __ATTRS_o_ai
13493__builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) {
13494  return __builtin_altivec_crypto_vpmsumw(__a, __b);
13495}
13496
13497static vector unsigned long long __ATTRS_o_ai __builtin_crypto_vpmsumb(
13498    vector unsigned long long __a, vector unsigned long long __b) {
13499  return __builtin_altivec_crypto_vpmsumd(__a, __b);
13500}
13501
13502static vector signed char __ATTRS_o_ai vec_vgbbd (vector signed char __a)
13503{
13504  return __builtin_altivec_vgbbd((vector unsigned char) __a);
13505}
13506
13507static vector unsigned char __ATTRS_o_ai vec_vgbbd (vector unsigned char __a)
13508{
13509  return __builtin_altivec_vgbbd(__a);
13510}
13511
13512static vector long long __ATTRS_o_ai
13513vec_vbpermq (vector signed char __a, vector signed char __b)
13514{
13515  return __builtin_altivec_vbpermq((vector unsigned char) __a,
13516                                   (vector unsigned char) __b);
13517}
13518
13519static vector long long __ATTRS_o_ai
13520vec_vbpermq (vector unsigned char __a, vector unsigned char __b)
13521{
13522  return __builtin_altivec_vbpermq(__a, __b);
13523}
13524#endif
13525
13526#undef __ATTRS_o_ai
13527
13528#endif /* __ALTIVEC_H */
13529