altivec.h revision e19df1839992d54d37624e617f410ac7dda87f07
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
40vec_perm(vector signed char a, vector signed char b, vector unsigned char c);
41
42static vector unsigned char __ATTRS_o_ai
43vec_perm(vector unsigned char a,
44         vector unsigned char b,
45         vector unsigned char c);
46
47static vector bool char __ATTRS_o_ai
48vec_perm(vector bool char a, vector bool char b, vector unsigned char c);
49
50static vector short __ATTRS_o_ai
51vec_perm(vector short a, vector short b, vector unsigned char c);
52
53static vector unsigned short __ATTRS_o_ai
54vec_perm(vector unsigned short a,
55         vector unsigned short b,
56         vector unsigned char c);
57
58static vector bool short __ATTRS_o_ai
59vec_perm(vector bool short a, vector bool short b, vector unsigned char c);
60
61static vector pixel __ATTRS_o_ai
62vec_perm(vector pixel a, vector pixel b, vector unsigned char c);
63
64static vector int __ATTRS_o_ai
65vec_perm(vector int a, vector int b, vector unsigned char c);
66
67static vector unsigned int __ATTRS_o_ai
68vec_perm(vector unsigned int a, vector unsigned int b, vector unsigned char c);
69
70static vector bool int __ATTRS_o_ai
71vec_perm(vector bool int a, vector bool int b, vector unsigned char c);
72
73static vector float __ATTRS_o_ai
74vec_perm(vector float a, vector float b, vector unsigned char c);
75
76/* vec_abs */
77
78#define __builtin_altivec_abs_v16qi vec_abs
79#define __builtin_altivec_abs_v8hi  vec_abs
80#define __builtin_altivec_abs_v4si  vec_abs
81
82static vector signed char __ATTRS_o_ai
83vec_abs(vector signed char a)
84{
85  return __builtin_altivec_vmaxsb(a, -a);
86}
87
88static vector signed short __ATTRS_o_ai
89vec_abs(vector signed short a)
90{
91  return __builtin_altivec_vmaxsh(a, -a);
92}
93
94static vector signed int __ATTRS_o_ai
95vec_abs(vector signed int a)
96{
97  return __builtin_altivec_vmaxsw(a, -a);
98}
99
100static vector float __ATTRS_o_ai
101vec_abs(vector float a)
102{
103  vector unsigned int res = (vector unsigned int)a
104                            & (vector unsigned int)(0x7FFFFFFF);
105  return (vector float)res;
106}
107
108/* vec_abss */
109
110#define __builtin_altivec_abss_v16qi vec_abss
111#define __builtin_altivec_abss_v8hi  vec_abss
112#define __builtin_altivec_abss_v4si  vec_abss
113
114static vector signed char __ATTRS_o_ai
115vec_abss(vector signed char a)
116{
117  return __builtin_altivec_vmaxsb
118           (a, __builtin_altivec_vsubsbs((vector signed char)(0), a));
119}
120
121static vector signed short __ATTRS_o_ai
122vec_abss(vector signed short a)
123{
124  return __builtin_altivec_vmaxsh
125           (a, __builtin_altivec_vsubshs((vector signed short)(0), a));
126}
127
128static vector signed int __ATTRS_o_ai
129vec_abss(vector signed int a)
130{
131  return __builtin_altivec_vmaxsw
132           (a, __builtin_altivec_vsubsws((vector signed int)(0), a));
133}
134
135/* vec_add */
136
137static vector signed char __ATTRS_o_ai
138vec_add(vector signed char a, vector signed char b)
139{
140  return a + b;
141}
142
143static vector signed char __ATTRS_o_ai
144vec_add(vector bool char a, vector signed char b)
145{
146  return (vector signed char)a + b;
147}
148
149static vector signed char __ATTRS_o_ai
150vec_add(vector signed char a, vector bool char b)
151{
152  return a + (vector signed char)b;
153}
154
155static vector unsigned char __ATTRS_o_ai
156vec_add(vector unsigned char a, vector unsigned char b)
157{
158  return a + b;
159}
160
161static vector unsigned char __ATTRS_o_ai
162vec_add(vector bool char a, vector unsigned char b)
163{
164  return (vector unsigned char)a + b;
165}
166
167static vector unsigned char __ATTRS_o_ai
168vec_add(vector unsigned char a, vector bool char b)
169{
170  return a + (vector unsigned char)b;
171}
172
173static vector short __ATTRS_o_ai
174vec_add(vector short a, vector short b)
175{
176  return a + b;
177}
178
179static vector short __ATTRS_o_ai
180vec_add(vector bool short a, vector short b)
181{
182  return (vector short)a + b;
183}
184
185static vector short __ATTRS_o_ai
186vec_add(vector short a, vector bool short b)
187{
188  return a + (vector short)b;
189}
190
191static vector unsigned short __ATTRS_o_ai
192vec_add(vector unsigned short a, vector unsigned short b)
193{
194  return a + b;
195}
196
197static vector unsigned short __ATTRS_o_ai
198vec_add(vector bool short a, vector unsigned short b)
199{
200  return (vector unsigned short)a + b;
201}
202
203static vector unsigned short __ATTRS_o_ai
204vec_add(vector unsigned short a, vector bool short b)
205{
206  return a + (vector unsigned short)b;
207}
208
209static vector int __ATTRS_o_ai
210vec_add(vector int a, vector int b)
211{
212  return a + b;
213}
214
215static vector int __ATTRS_o_ai
216vec_add(vector bool int a, vector int b)
217{
218  return (vector int)a + b;
219}
220
221static vector int __ATTRS_o_ai
222vec_add(vector int a, vector bool int b)
223{
224  return a + (vector int)b;
225}
226
227static vector unsigned int __ATTRS_o_ai
228vec_add(vector unsigned int a, vector unsigned int b)
229{
230  return a + b;
231}
232
233static vector unsigned int __ATTRS_o_ai
234vec_add(vector bool int a, vector unsigned int b)
235{
236  return (vector unsigned int)a + b;
237}
238
239static vector unsigned int __ATTRS_o_ai
240vec_add(vector unsigned int a, vector bool int b)
241{
242  return a + (vector unsigned int)b;
243}
244
245static vector float __ATTRS_o_ai
246vec_add(vector float a, vector float b)
247{
248  return a + b;
249}
250
251/* vec_vaddubm */
252
253#define __builtin_altivec_vaddubm vec_vaddubm
254
255static vector signed char __ATTRS_o_ai
256vec_vaddubm(vector signed char a, vector signed char b)
257{
258  return a + b;
259}
260
261static vector signed char __ATTRS_o_ai
262vec_vaddubm(vector bool char a, vector signed char b)
263{
264  return (vector signed char)a + b;
265}
266
267static vector signed char __ATTRS_o_ai
268vec_vaddubm(vector signed char a, vector bool char b)
269{
270  return a + (vector signed char)b;
271}
272
273static vector unsigned char __ATTRS_o_ai
274vec_vaddubm(vector unsigned char a, vector unsigned char b)
275{
276  return a + b;
277}
278
279static vector unsigned char __ATTRS_o_ai
280vec_vaddubm(vector bool char a, vector unsigned char b)
281{
282  return (vector unsigned char)a + b;
283}
284
285static vector unsigned char __ATTRS_o_ai
286vec_vaddubm(vector unsigned char a, vector bool char b)
287{
288  return a + (vector unsigned char)b;
289}
290
291/* vec_vadduhm */
292
293#define __builtin_altivec_vadduhm vec_vadduhm
294
295static vector short __ATTRS_o_ai
296vec_vadduhm(vector short a, vector short b)
297{
298  return a + b;
299}
300
301static vector short __ATTRS_o_ai
302vec_vadduhm(vector bool short a, vector short b)
303{
304  return (vector short)a + b;
305}
306
307static vector short __ATTRS_o_ai
308vec_vadduhm(vector short a, vector bool short b)
309{
310  return a + (vector short)b;
311}
312
313static vector unsigned short __ATTRS_o_ai
314vec_vadduhm(vector unsigned short a, vector unsigned short b)
315{
316  return a + b;
317}
318
319static vector unsigned short __ATTRS_o_ai
320vec_vadduhm(vector bool short a, vector unsigned short b)
321{
322  return (vector unsigned short)a + b;
323}
324
325static vector unsigned short __ATTRS_o_ai
326vec_vadduhm(vector unsigned short a, vector bool short b)
327{
328  return a + (vector unsigned short)b;
329}
330
331/* vec_vadduwm */
332
333#define __builtin_altivec_vadduwm vec_vadduwm
334
335static vector int __ATTRS_o_ai
336vec_vadduwm(vector int a, vector int b)
337{
338  return a + b;
339}
340
341static vector int __ATTRS_o_ai
342vec_vadduwm(vector bool int a, vector int b)
343{
344  return (vector int)a + b;
345}
346
347static vector int __ATTRS_o_ai
348vec_vadduwm(vector int a, vector bool int b)
349{
350  return a + (vector int)b;
351}
352
353static vector unsigned int __ATTRS_o_ai
354vec_vadduwm(vector unsigned int a, vector unsigned int b)
355{
356  return a + b;
357}
358
359static vector unsigned int __ATTRS_o_ai
360vec_vadduwm(vector bool int a, vector unsigned int b)
361{
362  return (vector unsigned int)a + b;
363}
364
365static vector unsigned int __ATTRS_o_ai
366vec_vadduwm(vector unsigned int a, vector bool int b)
367{
368  return a + (vector unsigned int)b;
369}
370
371/* vec_vaddfp */
372
373#define __builtin_altivec_vaddfp  vec_vaddfp
374
375static vector float __attribute__((__always_inline__))
376vec_vaddfp(vector float a, vector float b)
377{
378  return a + b;
379}
380
381/* vec_addc */
382
383static vector unsigned int __attribute__((__always_inline__))
384vec_addc(vector unsigned int a, vector unsigned int b)
385{
386  return __builtin_altivec_vaddcuw(a, b);
387}
388
389/* vec_vaddcuw */
390
391static vector unsigned int __attribute__((__always_inline__))
392vec_vaddcuw(vector unsigned int a, vector unsigned int b)
393{
394  return __builtin_altivec_vaddcuw(a, b);
395}
396
397/* vec_adds */
398
399static vector signed char __ATTRS_o_ai
400vec_adds(vector signed char a, vector signed char b)
401{
402  return __builtin_altivec_vaddsbs(a, b);
403}
404
405static vector signed char __ATTRS_o_ai
406vec_adds(vector bool char a, vector signed char b)
407{
408  return __builtin_altivec_vaddsbs((vector signed char)a, b);
409}
410
411static vector signed char __ATTRS_o_ai
412vec_adds(vector signed char a, vector bool char b)
413{
414  return __builtin_altivec_vaddsbs(a, (vector signed char)b);
415}
416
417static vector unsigned char __ATTRS_o_ai
418vec_adds(vector unsigned char a, vector unsigned char b)
419{
420  return __builtin_altivec_vaddubs(a, b);
421}
422
423static vector unsigned char __ATTRS_o_ai
424vec_adds(vector bool char a, vector unsigned char b)
425{
426  return __builtin_altivec_vaddubs((vector unsigned char)a, b);
427}
428
429static vector unsigned char __ATTRS_o_ai
430vec_adds(vector unsigned char a, vector bool char b)
431{
432  return __builtin_altivec_vaddubs(a, (vector unsigned char)b);
433}
434
435static vector short __ATTRS_o_ai
436vec_adds(vector short a, vector short b)
437{
438  return __builtin_altivec_vaddshs(a, b);
439}
440
441static vector short __ATTRS_o_ai
442vec_adds(vector bool short a, vector short b)
443{
444  return __builtin_altivec_vaddshs((vector short)a, b);
445}
446
447static vector short __ATTRS_o_ai
448vec_adds(vector short a, vector bool short b)
449{
450  return __builtin_altivec_vaddshs(a, (vector short)b);
451}
452
453static vector unsigned short __ATTRS_o_ai
454vec_adds(vector unsigned short a, vector unsigned short b)
455{
456  return __builtin_altivec_vadduhs(a, b);
457}
458
459static vector unsigned short __ATTRS_o_ai
460vec_adds(vector bool short a, vector unsigned short b)
461{
462  return __builtin_altivec_vadduhs((vector unsigned short)a, b);
463}
464
465static vector unsigned short __ATTRS_o_ai
466vec_adds(vector unsigned short a, vector bool short b)
467{
468  return __builtin_altivec_vadduhs(a, (vector unsigned short)b);
469}
470
471static vector int __ATTRS_o_ai
472vec_adds(vector int a, vector int b)
473{
474  return __builtin_altivec_vaddsws(a, b);
475}
476
477static vector int __ATTRS_o_ai
478vec_adds(vector bool int a, vector int b)
479{
480  return __builtin_altivec_vaddsws((vector int)a, b);
481}
482
483static vector int __ATTRS_o_ai
484vec_adds(vector int a, vector bool int b)
485{
486  return __builtin_altivec_vaddsws(a, (vector int)b);
487}
488
489static vector unsigned int __ATTRS_o_ai
490vec_adds(vector unsigned int a, vector unsigned int b)
491{
492  return __builtin_altivec_vadduws(a, b);
493}
494
495static vector unsigned int __ATTRS_o_ai
496vec_adds(vector bool int a, vector unsigned int b)
497{
498  return __builtin_altivec_vadduws((vector unsigned int)a, b);
499}
500
501static vector unsigned int __ATTRS_o_ai
502vec_adds(vector unsigned int a, vector bool int b)
503{
504  return __builtin_altivec_vadduws(a, (vector unsigned int)b);
505}
506
507/* vec_vaddsbs */
508
509static vector signed char __ATTRS_o_ai
510vec_vaddsbs(vector signed char a, vector signed char b)
511{
512  return __builtin_altivec_vaddsbs(a, b);
513}
514
515static vector signed char __ATTRS_o_ai
516vec_vaddsbs(vector bool char a, vector signed char b)
517{
518  return __builtin_altivec_vaddsbs((vector signed char)a, b);
519}
520
521static vector signed char __ATTRS_o_ai
522vec_vaddsbs(vector signed char a, vector bool char b)
523{
524  return __builtin_altivec_vaddsbs(a, (vector signed char)b);
525}
526
527/* vec_vaddubs */
528
529static vector unsigned char __ATTRS_o_ai
530vec_vaddubs(vector unsigned char a, vector unsigned char b)
531{
532  return __builtin_altivec_vaddubs(a, b);
533}
534
535static vector unsigned char __ATTRS_o_ai
536vec_vaddubs(vector bool char a, vector unsigned char b)
537{
538  return __builtin_altivec_vaddubs((vector unsigned char)a, b);
539}
540
541static vector unsigned char __ATTRS_o_ai
542vec_vaddubs(vector unsigned char a, vector bool char b)
543{
544  return __builtin_altivec_vaddubs(a, (vector unsigned char)b);
545}
546
547/* vec_vaddshs */
548
549static vector short __ATTRS_o_ai
550vec_vaddshs(vector short a, vector short b)
551{
552  return __builtin_altivec_vaddshs(a, b);
553}
554
555static vector short __ATTRS_o_ai
556vec_vaddshs(vector bool short a, vector short b)
557{
558  return __builtin_altivec_vaddshs((vector short)a, b);
559}
560
561static vector short __ATTRS_o_ai
562vec_vaddshs(vector short a, vector bool short b)
563{
564  return __builtin_altivec_vaddshs(a, (vector short)b);
565}
566
567/* vec_vadduhs */
568
569static vector unsigned short __ATTRS_o_ai
570vec_vadduhs(vector unsigned short a, vector unsigned short b)
571{
572  return __builtin_altivec_vadduhs(a, b);
573}
574
575static vector unsigned short __ATTRS_o_ai
576vec_vadduhs(vector bool short a, vector unsigned short b)
577{
578  return __builtin_altivec_vadduhs((vector unsigned short)a, b);
579}
580
581static vector unsigned short __ATTRS_o_ai
582vec_vadduhs(vector unsigned short a, vector bool short b)
583{
584  return __builtin_altivec_vadduhs(a, (vector unsigned short)b);
585}
586
587/* vec_vaddsws */
588
589static vector int __ATTRS_o_ai
590vec_vaddsws(vector int a, vector int b)
591{
592  return __builtin_altivec_vaddsws(a, b);
593}
594
595static vector int __ATTRS_o_ai
596vec_vaddsws(vector bool int a, vector int b)
597{
598  return __builtin_altivec_vaddsws((vector int)a, b);
599}
600
601static vector int __ATTRS_o_ai
602vec_vaddsws(vector int a, vector bool int b)
603{
604  return __builtin_altivec_vaddsws(a, (vector int)b);
605}
606
607/* vec_vadduws */
608
609static vector unsigned int __ATTRS_o_ai
610vec_vadduws(vector unsigned int a, vector unsigned int b)
611{
612  return __builtin_altivec_vadduws(a, b);
613}
614
615static vector unsigned int __ATTRS_o_ai
616vec_vadduws(vector bool int a, vector unsigned int b)
617{
618  return __builtin_altivec_vadduws((vector unsigned int)a, b);
619}
620
621static vector unsigned int __ATTRS_o_ai
622vec_vadduws(vector unsigned int a, vector bool int b)
623{
624  return __builtin_altivec_vadduws(a, (vector unsigned int)b);
625}
626
627/* vec_and */
628
629#define __builtin_altivec_vand vec_and
630
631static vector signed char __ATTRS_o_ai
632vec_and(vector signed char a, vector signed char b)
633{
634  return a & b;
635}
636
637static vector signed char __ATTRS_o_ai
638vec_and(vector bool char a, vector signed char b)
639{
640  return (vector signed char)a & b;
641}
642
643static vector signed char __ATTRS_o_ai
644vec_and(vector signed char a, vector bool char b)
645{
646  return a & (vector signed char)b;
647}
648
649static vector unsigned char __ATTRS_o_ai
650vec_and(vector unsigned char a, vector unsigned char b)
651{
652  return a & b;
653}
654
655static vector unsigned char __ATTRS_o_ai
656vec_and(vector bool char a, vector unsigned char b)
657{
658  return (vector unsigned char)a & b;
659}
660
661static vector unsigned char __ATTRS_o_ai
662vec_and(vector unsigned char a, vector bool char b)
663{
664  return a & (vector unsigned char)b;
665}
666
667static vector bool char __ATTRS_o_ai
668vec_and(vector bool char a, vector bool char b)
669{
670  return a & b;
671}
672
673static vector short __ATTRS_o_ai
674vec_and(vector short a, vector short b)
675{
676  return a & b;
677}
678
679static vector short __ATTRS_o_ai
680vec_and(vector bool short a, vector short b)
681{
682  return (vector short)a & b;
683}
684
685static vector short __ATTRS_o_ai
686vec_and(vector short a, vector bool short b)
687{
688  return a & (vector short)b;
689}
690
691static vector unsigned short __ATTRS_o_ai
692vec_and(vector unsigned short a, vector unsigned short b)
693{
694  return a & b;
695}
696
697static vector unsigned short __ATTRS_o_ai
698vec_and(vector bool short a, vector unsigned short b)
699{
700  return (vector unsigned short)a & b;
701}
702
703static vector unsigned short __ATTRS_o_ai
704vec_and(vector unsigned short a, vector bool short b)
705{
706  return a & (vector unsigned short)b;
707}
708
709static vector bool short __ATTRS_o_ai
710vec_and(vector bool short a, vector bool short b)
711{
712  return a & b;
713}
714
715static vector int __ATTRS_o_ai
716vec_and(vector int a, vector int b)
717{
718  return a & b;
719}
720
721static vector int __ATTRS_o_ai
722vec_and(vector bool int a, vector int b)
723{
724  return (vector int)a & b;
725}
726
727static vector int __ATTRS_o_ai
728vec_and(vector int a, vector bool int b)
729{
730  return a & (vector int)b;
731}
732
733static vector unsigned int __ATTRS_o_ai
734vec_and(vector unsigned int a, vector unsigned int b)
735{
736  return a & b;
737}
738
739static vector unsigned int __ATTRS_o_ai
740vec_and(vector bool int a, vector unsigned int b)
741{
742  return (vector unsigned int)a & b;
743}
744
745static vector unsigned int __ATTRS_o_ai
746vec_and(vector unsigned int a, vector bool int b)
747{
748  return a & (vector unsigned int)b;
749}
750
751static vector bool int __ATTRS_o_ai
752vec_and(vector bool int a, vector bool int b)
753{
754  return a & b;
755}
756
757static vector float __ATTRS_o_ai
758vec_and(vector float a, vector float b)
759{
760  vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b;
761  return (vector float)res;
762}
763
764static vector float __ATTRS_o_ai
765vec_and(vector bool int a, vector float b)
766{
767  vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b;
768  return (vector float)res;
769}
770
771static vector float __ATTRS_o_ai
772vec_and(vector float a, vector bool int b)
773{
774  vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b;
775  return (vector float)res;
776}
777
778/* vec_vand */
779
780static vector signed char __ATTRS_o_ai
781vec_vand(vector signed char a, vector signed char b)
782{
783  return a & b;
784}
785
786static vector signed char __ATTRS_o_ai
787vec_vand(vector bool char a, vector signed char b)
788{
789  return (vector signed char)a & b;
790}
791
792static vector signed char __ATTRS_o_ai
793vec_vand(vector signed char a, vector bool char b)
794{
795  return a & (vector signed char)b;
796}
797
798static vector unsigned char __ATTRS_o_ai
799vec_vand(vector unsigned char a, vector unsigned char b)
800{
801  return a & b;
802}
803
804static vector unsigned char __ATTRS_o_ai
805vec_vand(vector bool char a, vector unsigned char b)
806{
807  return (vector unsigned char)a & b;
808}
809
810static vector unsigned char __ATTRS_o_ai
811vec_vand(vector unsigned char a, vector bool char b)
812{
813  return a & (vector unsigned char)b;
814}
815
816static vector bool char __ATTRS_o_ai
817vec_vand(vector bool char a, vector bool char b)
818{
819  return a & b;
820}
821
822static vector short __ATTRS_o_ai
823vec_vand(vector short a, vector short b)
824{
825  return a & b;
826}
827
828static vector short __ATTRS_o_ai
829vec_vand(vector bool short a, vector short b)
830{
831  return (vector short)a & b;
832}
833
834static vector short __ATTRS_o_ai
835vec_vand(vector short a, vector bool short b)
836{
837  return a & (vector short)b;
838}
839
840static vector unsigned short __ATTRS_o_ai
841vec_vand(vector unsigned short a, vector unsigned short b)
842{
843  return a & b;
844}
845
846static vector unsigned short __ATTRS_o_ai
847vec_vand(vector bool short a, vector unsigned short b)
848{
849  return (vector unsigned short)a & b;
850}
851
852static vector unsigned short __ATTRS_o_ai
853vec_vand(vector unsigned short a, vector bool short b)
854{
855  return a & (vector unsigned short)b;
856}
857
858static vector bool short __ATTRS_o_ai
859vec_vand(vector bool short a, vector bool short b)
860{
861  return a & b;
862}
863
864static vector int __ATTRS_o_ai
865vec_vand(vector int a, vector int b)
866{
867  return a & b;
868}
869
870static vector int __ATTRS_o_ai
871vec_vand(vector bool int a, vector int b)
872{
873  return (vector int)a & b;
874}
875
876static vector int __ATTRS_o_ai
877vec_vand(vector int a, vector bool int b)
878{
879  return a & (vector int)b;
880}
881
882static vector unsigned int __ATTRS_o_ai
883vec_vand(vector unsigned int a, vector unsigned int b)
884{
885  return a & b;
886}
887
888static vector unsigned int __ATTRS_o_ai
889vec_vand(vector bool int a, vector unsigned int b)
890{
891  return (vector unsigned int)a & b;
892}
893
894static vector unsigned int __ATTRS_o_ai
895vec_vand(vector unsigned int a, vector bool int b)
896{
897  return a & (vector unsigned int)b;
898}
899
900static vector bool int __ATTRS_o_ai
901vec_vand(vector bool int a, vector bool int b)
902{
903  return a & b;
904}
905
906static vector float __ATTRS_o_ai
907vec_vand(vector float a, vector float b)
908{
909  vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b;
910  return (vector float)res;
911}
912
913static vector float __ATTRS_o_ai
914vec_vand(vector bool int a, vector float b)
915{
916  vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b;
917  return (vector float)res;
918}
919
920static vector float __ATTRS_o_ai
921vec_vand(vector float a, vector bool int b)
922{
923  vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b;
924  return (vector float)res;
925}
926
927/* vec_andc */
928
929#define __builtin_altivec_vandc vec_andc
930
931static vector signed char __ATTRS_o_ai
932vec_andc(vector signed char a, vector signed char b)
933{
934  return a & ~b;
935}
936
937static vector signed char __ATTRS_o_ai
938vec_andc(vector bool char a, vector signed char b)
939{
940  return (vector signed char)a & ~b;
941}
942
943static vector signed char __ATTRS_o_ai
944vec_andc(vector signed char a, vector bool char b)
945{
946  return a & ~(vector signed char)b;
947}
948
949static vector unsigned char __ATTRS_o_ai
950vec_andc(vector unsigned char a, vector unsigned char b)
951{
952  return a & ~b;
953}
954
955static vector unsigned char __ATTRS_o_ai
956vec_andc(vector bool char a, vector unsigned char b)
957{
958  return (vector unsigned char)a & ~b;
959}
960
961static vector unsigned char __ATTRS_o_ai
962vec_andc(vector unsigned char a, vector bool char b)
963{
964  return a & ~(vector unsigned char)b;
965}
966
967static vector bool char __ATTRS_o_ai
968vec_andc(vector bool char a, vector bool char b)
969{
970  return a & ~b;
971}
972
973static vector short __ATTRS_o_ai
974vec_andc(vector short a, vector short b)
975{
976  return a & ~b;
977}
978
979static vector short __ATTRS_o_ai
980vec_andc(vector bool short a, vector short b)
981{
982  return (vector short)a & ~b;
983}
984
985static vector short __ATTRS_o_ai
986vec_andc(vector short a, vector bool short b)
987{
988  return a & ~(vector short)b;
989}
990
991static vector unsigned short __ATTRS_o_ai
992vec_andc(vector unsigned short a, vector unsigned short b)
993{
994  return a & ~b;
995}
996
997static vector unsigned short __ATTRS_o_ai
998vec_andc(vector bool short a, vector unsigned short b)
999{
1000  return (vector unsigned short)a & ~b;
1001}
1002
1003static vector unsigned short __ATTRS_o_ai
1004vec_andc(vector unsigned short a, vector bool short b)
1005{
1006  return a & ~(vector unsigned short)b;
1007}
1008
1009static vector bool short __ATTRS_o_ai
1010vec_andc(vector bool short a, vector bool short b)
1011{
1012  return a & ~b;
1013}
1014
1015static vector int __ATTRS_o_ai
1016vec_andc(vector int a, vector int b)
1017{
1018  return a & ~b;
1019}
1020
1021static vector int __ATTRS_o_ai
1022vec_andc(vector bool int a, vector int b)
1023{
1024  return (vector int)a & ~b;
1025}
1026
1027static vector int __ATTRS_o_ai
1028vec_andc(vector int a, vector bool int b)
1029{
1030  return a & ~(vector int)b;
1031}
1032
1033static vector unsigned int __ATTRS_o_ai
1034vec_andc(vector unsigned int a, vector unsigned int b)
1035{
1036  return a & ~b;
1037}
1038
1039static vector unsigned int __ATTRS_o_ai
1040vec_andc(vector bool int a, vector unsigned int b)
1041{
1042  return (vector unsigned int)a & ~b;
1043}
1044
1045static vector unsigned int __ATTRS_o_ai
1046vec_andc(vector unsigned int a, vector bool int b)
1047{
1048  return a & ~(vector unsigned int)b;
1049}
1050
1051static vector bool int __ATTRS_o_ai
1052vec_andc(vector bool int a, vector bool int b)
1053{
1054  return a & ~b;
1055}
1056
1057static vector float __ATTRS_o_ai
1058vec_andc(vector float a, vector float b)
1059{
1060  vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b;
1061  return (vector float)res;
1062}
1063
1064static vector float __ATTRS_o_ai
1065vec_andc(vector bool int a, vector float b)
1066{
1067  vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b;
1068  return (vector float)res;
1069}
1070
1071static vector float __ATTRS_o_ai
1072vec_andc(vector float a, vector bool int b)
1073{
1074  vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b;
1075  return (vector float)res;
1076}
1077
1078/* vec_vandc */
1079
1080static vector signed char __ATTRS_o_ai
1081vec_vandc(vector signed char a, vector signed char b)
1082{
1083  return a & ~b;
1084}
1085
1086static vector signed char __ATTRS_o_ai
1087vec_vandc(vector bool char a, vector signed char b)
1088{
1089  return (vector signed char)a & ~b;
1090}
1091
1092static vector signed char __ATTRS_o_ai
1093vec_vandc(vector signed char a, vector bool char b)
1094{
1095  return a & ~(vector signed char)b;
1096}
1097
1098static vector unsigned char __ATTRS_o_ai
1099vec_vandc(vector unsigned char a, vector unsigned char b)
1100{
1101  return a & ~b;
1102}
1103
1104static vector unsigned char __ATTRS_o_ai
1105vec_vandc(vector bool char a, vector unsigned char b)
1106{
1107  return (vector unsigned char)a & ~b;
1108}
1109
1110static vector unsigned char __ATTRS_o_ai
1111vec_vandc(vector unsigned char a, vector bool char b)
1112{
1113  return a & ~(vector unsigned char)b;
1114}
1115
1116static vector bool char __ATTRS_o_ai
1117vec_vandc(vector bool char a, vector bool char b)
1118{
1119  return a & ~b;
1120}
1121
1122static vector short __ATTRS_o_ai
1123vec_vandc(vector short a, vector short b)
1124{
1125  return a & ~b;
1126}
1127
1128static vector short __ATTRS_o_ai
1129vec_vandc(vector bool short a, vector short b)
1130{
1131  return (vector short)a & ~b;
1132}
1133
1134static vector short __ATTRS_o_ai
1135vec_vandc(vector short a, vector bool short b)
1136{
1137  return a & ~(vector short)b;
1138}
1139
1140static vector unsigned short __ATTRS_o_ai
1141vec_vandc(vector unsigned short a, vector unsigned short b)
1142{
1143  return a & ~b;
1144}
1145
1146static vector unsigned short __ATTRS_o_ai
1147vec_vandc(vector bool short a, vector unsigned short b)
1148{
1149  return (vector unsigned short)a & ~b;
1150}
1151
1152static vector unsigned short __ATTRS_o_ai
1153vec_vandc(vector unsigned short a, vector bool short b)
1154{
1155  return a & ~(vector unsigned short)b;
1156}
1157
1158static vector bool short __ATTRS_o_ai
1159vec_vandc(vector bool short a, vector bool short b)
1160{
1161  return a & ~b;
1162}
1163
1164static vector int __ATTRS_o_ai
1165vec_vandc(vector int a, vector int b)
1166{
1167  return a & ~b;
1168}
1169
1170static vector int __ATTRS_o_ai
1171vec_vandc(vector bool int a, vector int b)
1172{
1173  return (vector int)a & ~b;
1174}
1175
1176static vector int __ATTRS_o_ai
1177vec_vandc(vector int a, vector bool int b)
1178{
1179  return a & ~(vector int)b;
1180}
1181
1182static vector unsigned int __ATTRS_o_ai
1183vec_vandc(vector unsigned int a, vector unsigned int b)
1184{
1185  return a & ~b;
1186}
1187
1188static vector unsigned int __ATTRS_o_ai
1189vec_vandc(vector bool int a, vector unsigned int b)
1190{
1191  return (vector unsigned int)a & ~b;
1192}
1193
1194static vector unsigned int __ATTRS_o_ai
1195vec_vandc(vector unsigned int a, vector bool int b)
1196{
1197  return a & ~(vector unsigned int)b;
1198}
1199
1200static vector bool int __ATTRS_o_ai
1201vec_vandc(vector bool int a, vector bool int b)
1202{
1203  return a & ~b;
1204}
1205
1206static vector float __ATTRS_o_ai
1207vec_vandc(vector float a, vector float b)
1208{
1209  vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b;
1210  return (vector float)res;
1211}
1212
1213static vector float __ATTRS_o_ai
1214vec_vandc(vector bool int a, vector float b)
1215{
1216  vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b;
1217  return (vector float)res;
1218}
1219
1220static vector float __ATTRS_o_ai
1221vec_vandc(vector float a, vector bool int b)
1222{
1223  vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b;
1224  return (vector float)res;
1225}
1226
1227/* vec_avg */
1228
1229static vector signed char __ATTRS_o_ai
1230vec_avg(vector signed char a, vector signed char b)
1231{
1232  return __builtin_altivec_vavgsb(a, b);
1233}
1234
1235static vector unsigned char __ATTRS_o_ai
1236vec_avg(vector unsigned char a, vector unsigned char b)
1237{
1238  return __builtin_altivec_vavgub(a, b);
1239}
1240
1241static vector short __ATTRS_o_ai
1242vec_avg(vector short a, vector short b)
1243{
1244  return __builtin_altivec_vavgsh(a, b);
1245}
1246
1247static vector unsigned short __ATTRS_o_ai
1248vec_avg(vector unsigned short a, vector unsigned short b)
1249{
1250  return __builtin_altivec_vavguh(a, b);
1251}
1252
1253static vector int __ATTRS_o_ai
1254vec_avg(vector int a, vector int b)
1255{
1256  return __builtin_altivec_vavgsw(a, b);
1257}
1258
1259static vector unsigned int __ATTRS_o_ai
1260vec_avg(vector unsigned int a, vector unsigned int b)
1261{
1262  return __builtin_altivec_vavguw(a, b);
1263}
1264
1265/* vec_vavgsb */
1266
1267static vector signed char __attribute__((__always_inline__))
1268vec_vavgsb(vector signed char a, vector signed char b)
1269{
1270  return __builtin_altivec_vavgsb(a, b);
1271}
1272
1273/* vec_vavgub */
1274
1275static vector unsigned char __attribute__((__always_inline__))
1276vec_vavgub(vector unsigned char a, vector unsigned char b)
1277{
1278  return __builtin_altivec_vavgub(a, b);
1279}
1280
1281/* vec_vavgsh */
1282
1283static vector short __attribute__((__always_inline__))
1284vec_vavgsh(vector short a, vector short b)
1285{
1286  return __builtin_altivec_vavgsh(a, b);
1287}
1288
1289/* vec_vavguh */
1290
1291static vector unsigned short __attribute__((__always_inline__))
1292vec_vavguh(vector unsigned short a, vector unsigned short b)
1293{
1294  return __builtin_altivec_vavguh(a, b);
1295}
1296
1297/* vec_vavgsw */
1298
1299static vector int __attribute__((__always_inline__))
1300vec_vavgsw(vector int a, vector int b)
1301{
1302  return __builtin_altivec_vavgsw(a, b);
1303}
1304
1305/* vec_vavguw */
1306
1307static vector unsigned int __attribute__((__always_inline__))
1308vec_vavguw(vector unsigned int a, vector unsigned int b)
1309{
1310  return __builtin_altivec_vavguw(a, b);
1311}
1312
1313/* vec_ceil */
1314
1315static vector float __attribute__((__always_inline__))
1316vec_ceil(vector float a)
1317{
1318  return __builtin_altivec_vrfip(a);
1319}
1320
1321/* vec_vrfip */
1322
1323static vector float __attribute__((__always_inline__))
1324vec_vrfip(vector float a)
1325{
1326  return __builtin_altivec_vrfip(a);
1327}
1328
1329/* vec_cmpb */
1330
1331static vector int __attribute__((__always_inline__))
1332vec_cmpb(vector float a, vector float b)
1333{
1334  return __builtin_altivec_vcmpbfp(a, b);
1335}
1336
1337/* vec_vcmpbfp */
1338
1339static vector int __attribute__((__always_inline__))
1340vec_vcmpbfp(vector float a, vector float b)
1341{
1342  return __builtin_altivec_vcmpbfp(a, b);
1343}
1344
1345/* vec_cmpeq */
1346
1347static vector bool char __ATTRS_o_ai
1348vec_cmpeq(vector signed char a, vector signed char b)
1349{
1350  return (vector bool char)
1351    __builtin_altivec_vcmpequb((vector char)a, (vector char)b);
1352}
1353
1354static vector bool char __ATTRS_o_ai
1355vec_cmpeq(vector unsigned char a, vector unsigned char b)
1356{
1357  return (vector bool char)
1358    __builtin_altivec_vcmpequb((vector char)a, (vector char)b);
1359}
1360
1361static vector bool short __ATTRS_o_ai
1362vec_cmpeq(vector short a, vector short b)
1363{
1364  return (vector bool short)__builtin_altivec_vcmpequh(a, b);
1365}
1366
1367static vector bool short __ATTRS_o_ai
1368vec_cmpeq(vector unsigned short a, vector unsigned short b)
1369{
1370  return (vector bool short)
1371    __builtin_altivec_vcmpequh((vector short)a, (vector short)b);
1372}
1373
1374static vector bool int __ATTRS_o_ai
1375vec_cmpeq(vector int a, vector int b)
1376{
1377  return (vector bool int)__builtin_altivec_vcmpequw(a, b);
1378}
1379
1380static vector bool int __ATTRS_o_ai
1381vec_cmpeq(vector unsigned int a, vector unsigned int b)
1382{
1383  return (vector bool int)
1384    __builtin_altivec_vcmpequw((vector int)a, (vector int)b);
1385}
1386
1387static vector bool int __ATTRS_o_ai
1388vec_cmpeq(vector float a, vector float b)
1389{
1390  return (vector bool int)__builtin_altivec_vcmpeqfp(a, b);
1391}
1392
1393/* vec_cmpge */
1394
1395static vector bool int __attribute__((__always_inline__))
1396vec_cmpge(vector float a, vector float b)
1397{
1398  return (vector bool int)__builtin_altivec_vcmpgefp(a, b);
1399}
1400
1401/* vec_vcmpgefp */
1402
1403static vector bool int __attribute__((__always_inline__))
1404vec_vcmpgefp(vector float a, vector float b)
1405{
1406  return (vector bool int)__builtin_altivec_vcmpgefp(a, b);
1407}
1408
1409/* vec_cmpgt */
1410
1411static vector bool char __ATTRS_o_ai
1412vec_cmpgt(vector signed char a, vector signed char b)
1413{
1414  return (vector bool char)__builtin_altivec_vcmpgtsb(a, b);
1415}
1416
1417static vector bool char __ATTRS_o_ai
1418vec_cmpgt(vector unsigned char a, vector unsigned char b)
1419{
1420  return (vector bool char)__builtin_altivec_vcmpgtub(a, b);
1421}
1422
1423static vector bool short __ATTRS_o_ai
1424vec_cmpgt(vector short a, vector short b)
1425{
1426  return (vector bool short)__builtin_altivec_vcmpgtsh(a, b);
1427}
1428
1429static vector bool short __ATTRS_o_ai
1430vec_cmpgt(vector unsigned short a, vector unsigned short b)
1431{
1432  return (vector bool short)__builtin_altivec_vcmpgtuh(a, b);
1433}
1434
1435static vector bool int __ATTRS_o_ai
1436vec_cmpgt(vector int a, vector int b)
1437{
1438  return (vector bool int)__builtin_altivec_vcmpgtsw(a, b);
1439}
1440
1441static vector bool int __ATTRS_o_ai
1442vec_cmpgt(vector unsigned int a, vector unsigned int b)
1443{
1444  return (vector bool int)__builtin_altivec_vcmpgtuw(a, b);
1445}
1446
1447static vector bool int __ATTRS_o_ai
1448vec_cmpgt(vector float a, vector float b)
1449{
1450  return (vector bool int)__builtin_altivec_vcmpgtfp(a, b);
1451}
1452
1453/* vec_vcmpgtsb */
1454
1455static vector bool char __attribute__((__always_inline__))
1456vec_vcmpgtsb(vector signed char a, vector signed char b)
1457{
1458  return (vector bool char)__builtin_altivec_vcmpgtsb(a, b);
1459}
1460
1461/* vec_vcmpgtub */
1462
1463static vector bool char __attribute__((__always_inline__))
1464vec_vcmpgtub(vector unsigned char a, vector unsigned char b)
1465{
1466  return (vector bool char)__builtin_altivec_vcmpgtub(a, b);
1467}
1468
1469/* vec_vcmpgtsh */
1470
1471static vector bool short __attribute__((__always_inline__))
1472vec_vcmpgtsh(vector short a, vector short b)
1473{
1474  return (vector bool short)__builtin_altivec_vcmpgtsh(a, b);
1475}
1476
1477/* vec_vcmpgtuh */
1478
1479static vector bool short __attribute__((__always_inline__))
1480vec_vcmpgtuh(vector unsigned short a, vector unsigned short b)
1481{
1482  return (vector bool short)__builtin_altivec_vcmpgtuh(a, b);
1483}
1484
1485/* vec_vcmpgtsw */
1486
1487static vector bool int __attribute__((__always_inline__))
1488vec_vcmpgtsw(vector int a, vector int b)
1489{
1490  return (vector bool int)__builtin_altivec_vcmpgtsw(a, b);
1491}
1492
1493/* vec_vcmpgtuw */
1494
1495static vector bool int __attribute__((__always_inline__))
1496vec_vcmpgtuw(vector unsigned int a, vector unsigned int b)
1497{
1498  return (vector bool int)__builtin_altivec_vcmpgtuw(a, b);
1499}
1500
1501/* vec_vcmpgtfp */
1502
1503static vector bool int __attribute__((__always_inline__))
1504vec_vcmpgtfp(vector float a, vector float b)
1505{
1506  return (vector bool int)__builtin_altivec_vcmpgtfp(a, b);
1507}
1508
1509/* vec_cmple */
1510
1511static vector bool int __attribute__((__always_inline__))
1512vec_cmple(vector float a, vector float b)
1513{
1514  return (vector bool int)__builtin_altivec_vcmpgefp(b, a);
1515}
1516
1517/* vec_cmplt */
1518
1519static vector bool char __ATTRS_o_ai
1520vec_cmplt(vector signed char a, vector signed char b)
1521{
1522  return (vector bool char)__builtin_altivec_vcmpgtsb(b, a);
1523}
1524
1525static vector bool char __ATTRS_o_ai
1526vec_cmplt(vector unsigned char a, vector unsigned char b)
1527{
1528  return (vector bool char)__builtin_altivec_vcmpgtub(b, a);
1529}
1530
1531static vector bool short __ATTRS_o_ai
1532vec_cmplt(vector short a, vector short b)
1533{
1534  return (vector bool short)__builtin_altivec_vcmpgtsh(b, a);
1535}
1536
1537static vector bool short __ATTRS_o_ai
1538vec_cmplt(vector unsigned short a, vector unsigned short b)
1539{
1540  return (vector bool short)__builtin_altivec_vcmpgtuh(b, a);
1541}
1542
1543static vector bool int __ATTRS_o_ai
1544vec_cmplt(vector int a, vector int b)
1545{
1546  return (vector bool int)__builtin_altivec_vcmpgtsw(b, a);
1547}
1548
1549static vector bool int __ATTRS_o_ai
1550vec_cmplt(vector unsigned int a, vector unsigned int b)
1551{
1552  return (vector bool int)__builtin_altivec_vcmpgtuw(b, a);
1553}
1554
1555static vector bool int __ATTRS_o_ai
1556vec_cmplt(vector float a, vector float b)
1557{
1558  return (vector bool int)__builtin_altivec_vcmpgtfp(b, a);
1559}
1560
1561/* vec_ctf */
1562
1563static vector float __ATTRS_o_ai
1564vec_ctf(vector int a, int b)
1565{
1566  return __builtin_altivec_vcfsx(a, b);
1567}
1568
1569static vector float __ATTRS_o_ai
1570vec_ctf(vector unsigned int a, int b)
1571{
1572  return __builtin_altivec_vcfux((vector int)a, b);
1573}
1574
1575/* vec_vcfsx */
1576
1577static vector float __attribute__((__always_inline__))
1578vec_vcfsx(vector int a, int b)
1579{
1580  return __builtin_altivec_vcfsx(a, b);
1581}
1582
1583/* vec_vcfux */
1584
1585static vector float __attribute__((__always_inline__))
1586vec_vcfux(vector unsigned int a, int b)
1587{
1588  return __builtin_altivec_vcfux((vector int)a, b);
1589}
1590
1591/* vec_cts */
1592
1593static vector int __attribute__((__always_inline__))
1594vec_cts(vector float a, int b)
1595{
1596  return __builtin_altivec_vctsxs(a, b);
1597}
1598
1599/* vec_vctsxs */
1600
1601static vector int __attribute__((__always_inline__))
1602vec_vctsxs(vector float a, int b)
1603{
1604  return __builtin_altivec_vctsxs(a, b);
1605}
1606
1607/* vec_ctu */
1608
1609static vector unsigned int __attribute__((__always_inline__))
1610vec_ctu(vector float a, int b)
1611{
1612  return __builtin_altivec_vctuxs(a, b);
1613}
1614
1615/* vec_vctuxs */
1616
1617static vector unsigned int __attribute__((__always_inline__))
1618vec_vctuxs(vector float a, int b)
1619{
1620  return __builtin_altivec_vctuxs(a, b);
1621}
1622
1623/* vec_dss */
1624
1625static void __attribute__((__always_inline__))
1626vec_dss(int a)
1627{
1628  __builtin_altivec_dss(a);
1629}
1630
1631/* vec_dssall */
1632
1633static void __attribute__((__always_inline__))
1634vec_dssall(void)
1635{
1636  __builtin_altivec_dssall();
1637}
1638
1639/* vec_dst */
1640
1641static void __attribute__((__always_inline__))
1642vec_dst(const void *a, int b, int c)
1643{
1644  __builtin_altivec_dst(a, b, c);
1645}
1646
1647/* vec_dstst */
1648
1649static void __attribute__((__always_inline__))
1650vec_dstst(const void *a, int b, int c)
1651{
1652  __builtin_altivec_dstst(a, b, c);
1653}
1654
1655/* vec_dststt */
1656
1657static void __attribute__((__always_inline__))
1658vec_dststt(const void *a, int b, int c)
1659{
1660  __builtin_altivec_dststt(a, b, c);
1661}
1662
1663/* vec_dstt */
1664
1665static void __attribute__((__always_inline__))
1666vec_dstt(const void *a, int b, int c)
1667{
1668  __builtin_altivec_dstt(a, b, c);
1669}
1670
1671/* vec_expte */
1672
1673static vector float __attribute__((__always_inline__))
1674vec_expte(vector float a)
1675{
1676  return __builtin_altivec_vexptefp(a);
1677}
1678
1679/* vec_vexptefp */
1680
1681static vector float __attribute__((__always_inline__))
1682vec_vexptefp(vector float a)
1683{
1684  return __builtin_altivec_vexptefp(a);
1685}
1686
1687/* vec_floor */
1688
1689static vector float __attribute__((__always_inline__))
1690vec_floor(vector float a)
1691{
1692  return __builtin_altivec_vrfim(a);
1693}
1694
1695/* vec_vrfim */
1696
1697static vector float __attribute__((__always_inline__))
1698vec_vrfim(vector float a)
1699{
1700  return __builtin_altivec_vrfim(a);
1701}
1702
1703/* vec_ld */
1704
1705static vector signed char __ATTRS_o_ai
1706vec_ld(int a, const vector signed char *b)
1707{
1708  return (vector signed char)__builtin_altivec_lvx(a, b);
1709}
1710
1711static vector signed char __ATTRS_o_ai
1712vec_ld(int a, const signed char *b)
1713{
1714  return (vector signed char)__builtin_altivec_lvx(a, b);
1715}
1716
1717static vector unsigned char __ATTRS_o_ai
1718vec_ld(int a, const vector unsigned char *b)
1719{
1720  return (vector unsigned char)__builtin_altivec_lvx(a, b);
1721}
1722
1723static vector unsigned char __ATTRS_o_ai
1724vec_ld(int a, const unsigned char *b)
1725{
1726  return (vector unsigned char)__builtin_altivec_lvx(a, b);
1727}
1728
1729static vector bool char __ATTRS_o_ai
1730vec_ld(int a, const vector bool char *b)
1731{
1732  return (vector bool char)__builtin_altivec_lvx(a, b);
1733}
1734
1735static vector short __ATTRS_o_ai
1736vec_ld(int a, const vector short *b)
1737{
1738  return (vector short)__builtin_altivec_lvx(a, b);
1739}
1740
1741static vector short __ATTRS_o_ai
1742vec_ld(int a, const short *b)
1743{
1744  return (vector short)__builtin_altivec_lvx(a, b);
1745}
1746
1747static vector unsigned short __ATTRS_o_ai
1748vec_ld(int a, const vector unsigned short *b)
1749{
1750  return (vector unsigned short)__builtin_altivec_lvx(a, b);
1751}
1752
1753static vector unsigned short __ATTRS_o_ai
1754vec_ld(int a, const unsigned short *b)
1755{
1756  return (vector unsigned short)__builtin_altivec_lvx(a, b);
1757}
1758
1759static vector bool short __ATTRS_o_ai
1760vec_ld(int a, const vector bool short *b)
1761{
1762  return (vector bool short)__builtin_altivec_lvx(a, b);
1763}
1764
1765static vector pixel __ATTRS_o_ai
1766vec_ld(int a, const vector pixel *b)
1767{
1768  return (vector pixel)__builtin_altivec_lvx(a, b);
1769}
1770
1771static vector int __ATTRS_o_ai
1772vec_ld(int a, const vector int *b)
1773{
1774  return (vector int)__builtin_altivec_lvx(a, b);
1775}
1776
1777static vector int __ATTRS_o_ai
1778vec_ld(int a, const int *b)
1779{
1780  return (vector int)__builtin_altivec_lvx(a, b);
1781}
1782
1783static vector unsigned int __ATTRS_o_ai
1784vec_ld(int a, const vector unsigned int *b)
1785{
1786  return (vector unsigned int)__builtin_altivec_lvx(a, b);
1787}
1788
1789static vector unsigned int __ATTRS_o_ai
1790vec_ld(int a, const unsigned int *b)
1791{
1792  return (vector unsigned int)__builtin_altivec_lvx(a, b);
1793}
1794
1795static vector bool int __ATTRS_o_ai
1796vec_ld(int a, const vector bool int *b)
1797{
1798  return (vector bool int)__builtin_altivec_lvx(a, b);
1799}
1800
1801static vector float __ATTRS_o_ai
1802vec_ld(int a, const vector float *b)
1803{
1804  return (vector float)__builtin_altivec_lvx(a, b);
1805}
1806
1807static vector float __ATTRS_o_ai
1808vec_ld(int a, const float *b)
1809{
1810  return (vector float)__builtin_altivec_lvx(a, b);
1811}
1812
1813/* vec_lvx */
1814
1815static vector signed char __ATTRS_o_ai
1816vec_lvx(int a, const vector signed char *b)
1817{
1818  return (vector signed char)__builtin_altivec_lvx(a, b);
1819}
1820
1821static vector signed char __ATTRS_o_ai
1822vec_lvx(int a, const signed char *b)
1823{
1824  return (vector signed char)__builtin_altivec_lvx(a, b);
1825}
1826
1827static vector unsigned char __ATTRS_o_ai
1828vec_lvx(int a, const vector unsigned char *b)
1829{
1830  return (vector unsigned char)__builtin_altivec_lvx(a, b);
1831}
1832
1833static vector unsigned char __ATTRS_o_ai
1834vec_lvx(int a, const unsigned char *b)
1835{
1836  return (vector unsigned char)__builtin_altivec_lvx(a, b);
1837}
1838
1839static vector bool char __ATTRS_o_ai
1840vec_lvx(int a, const vector bool char *b)
1841{
1842  return (vector bool char)__builtin_altivec_lvx(a, b);
1843}
1844
1845static vector short __ATTRS_o_ai
1846vec_lvx(int a, const vector short *b)
1847{
1848  return (vector short)__builtin_altivec_lvx(a, b);
1849}
1850
1851static vector short __ATTRS_o_ai
1852vec_lvx(int a, const short *b)
1853{
1854  return (vector short)__builtin_altivec_lvx(a, b);
1855}
1856
1857static vector unsigned short __ATTRS_o_ai
1858vec_lvx(int a, const vector unsigned short *b)
1859{
1860  return (vector unsigned short)__builtin_altivec_lvx(a, b);
1861}
1862
1863static vector unsigned short __ATTRS_o_ai
1864vec_lvx(int a, const unsigned short *b)
1865{
1866  return (vector unsigned short)__builtin_altivec_lvx(a, b);
1867}
1868
1869static vector bool short __ATTRS_o_ai
1870vec_lvx(int a, const vector bool short *b)
1871{
1872  return (vector bool short)__builtin_altivec_lvx(a, b);
1873}
1874
1875static vector pixel __ATTRS_o_ai
1876vec_lvx(int a, const vector pixel *b)
1877{
1878  return (vector pixel)__builtin_altivec_lvx(a, b);
1879}
1880
1881static vector int __ATTRS_o_ai
1882vec_lvx(int a, const vector int *b)
1883{
1884  return (vector int)__builtin_altivec_lvx(a, b);
1885}
1886
1887static vector int __ATTRS_o_ai
1888vec_lvx(int a, const int *b)
1889{
1890  return (vector int)__builtin_altivec_lvx(a, b);
1891}
1892
1893static vector unsigned int __ATTRS_o_ai
1894vec_lvx(int a, const vector unsigned int *b)
1895{
1896  return (vector unsigned int)__builtin_altivec_lvx(a, b);
1897}
1898
1899static vector unsigned int __ATTRS_o_ai
1900vec_lvx(int a, const unsigned int *b)
1901{
1902  return (vector unsigned int)__builtin_altivec_lvx(a, b);
1903}
1904
1905static vector bool int __ATTRS_o_ai
1906vec_lvx(int a, const vector bool int *b)
1907{
1908  return (vector bool int)__builtin_altivec_lvx(a, b);
1909}
1910
1911static vector float __ATTRS_o_ai
1912vec_lvx(int a, const vector float *b)
1913{
1914  return (vector float)__builtin_altivec_lvx(a, b);
1915}
1916
1917static vector float __ATTRS_o_ai
1918vec_lvx(int a, const float *b)
1919{
1920  return (vector float)__builtin_altivec_lvx(a, b);
1921}
1922
1923/* vec_lde */
1924
1925static vector signed char __ATTRS_o_ai
1926vec_lde(int a, const vector signed char *b)
1927{
1928  return (vector signed char)__builtin_altivec_lvebx(a, b);
1929}
1930
1931static vector unsigned char __ATTRS_o_ai
1932vec_lde(int a, const vector unsigned char *b)
1933{
1934  return (vector unsigned char)__builtin_altivec_lvebx(a, b);
1935}
1936
1937static vector short __ATTRS_o_ai
1938vec_lde(int a, const vector short *b)
1939{
1940  return (vector short)__builtin_altivec_lvehx(a, b);
1941}
1942
1943static vector unsigned short __ATTRS_o_ai
1944vec_lde(int a, const vector unsigned short *b)
1945{
1946  return (vector unsigned short)__builtin_altivec_lvehx(a, b);
1947}
1948
1949static vector int __ATTRS_o_ai
1950vec_lde(int a, const vector int *b)
1951{
1952  return (vector int)__builtin_altivec_lvewx(a, b);
1953}
1954
1955static vector unsigned int __ATTRS_o_ai
1956vec_lde(int a, const vector unsigned int *b)
1957{
1958  return (vector unsigned int)__builtin_altivec_lvewx(a, b);
1959}
1960
1961static vector float __ATTRS_o_ai
1962vec_lde(int a, const vector float *b)
1963{
1964  return (vector float)__builtin_altivec_lvewx(a, b);
1965}
1966
1967/* vec_lvebx */
1968
1969static vector signed char __ATTRS_o_ai
1970vec_lvebx(int a, const vector signed char *b)
1971{
1972  return (vector signed char)__builtin_altivec_lvebx(a, b);
1973}
1974
1975static vector unsigned char __ATTRS_o_ai
1976vec_lvebx(int a, const vector unsigned char *b)
1977{
1978  return (vector unsigned char)__builtin_altivec_lvebx(a, b);
1979}
1980
1981/* vec_lvehx */
1982
1983static vector short __ATTRS_o_ai
1984vec_lvehx(int a, const vector short *b)
1985{
1986  return (vector short)__builtin_altivec_lvehx(a, b);
1987}
1988
1989static vector unsigned short __ATTRS_o_ai
1990vec_lvehx(int a, const vector unsigned short *b)
1991{
1992  return (vector unsigned short)__builtin_altivec_lvehx(a, b);
1993}
1994
1995/* vec_lvewx */
1996
1997static vector int __ATTRS_o_ai
1998vec_lvewx(int a, const vector int *b)
1999{
2000  return (vector int)__builtin_altivec_lvewx(a, b);
2001}
2002
2003static vector unsigned int __ATTRS_o_ai
2004vec_lvewx(int a, const vector unsigned int *b)
2005{
2006  return (vector unsigned int)__builtin_altivec_lvewx(a, b);
2007}
2008
2009static vector float __ATTRS_o_ai
2010vec_lvewx(int a, const vector float *b)
2011{
2012  return (vector float)__builtin_altivec_lvewx(a, b);
2013}
2014
2015/* vec_ldl */
2016
2017static vector signed char __ATTRS_o_ai
2018vec_ldl(int a, const vector signed char *b)
2019{
2020  return (vector signed char)__builtin_altivec_lvxl(a, b);
2021}
2022
2023static vector signed char __ATTRS_o_ai
2024vec_ldl(int a, const signed char *b)
2025{
2026  return (vector signed char)__builtin_altivec_lvxl(a, b);
2027}
2028
2029static vector unsigned char __ATTRS_o_ai
2030vec_ldl(int a, const vector unsigned char *b)
2031{
2032  return (vector unsigned char)__builtin_altivec_lvxl(a, b);
2033}
2034
2035static vector unsigned char __ATTRS_o_ai
2036vec_ldl(int a, const unsigned char *b)
2037{
2038  return (vector unsigned char)__builtin_altivec_lvxl(a, b);
2039}
2040
2041static vector bool char __ATTRS_o_ai
2042vec_ldl(int a, const vector bool char *b)
2043{
2044  return (vector bool char)__builtin_altivec_lvxl(a, b);
2045}
2046
2047static vector short __ATTRS_o_ai
2048vec_ldl(int a, const vector short *b)
2049{
2050  return (vector short)__builtin_altivec_lvxl(a, b);
2051}
2052
2053static vector short __ATTRS_o_ai
2054vec_ldl(int a, const short *b)
2055{
2056  return (vector short)__builtin_altivec_lvxl(a, b);
2057}
2058
2059static vector unsigned short __ATTRS_o_ai
2060vec_ldl(int a, const vector unsigned short *b)
2061{
2062  return (vector unsigned short)__builtin_altivec_lvxl(a, b);
2063}
2064
2065static vector unsigned short __ATTRS_o_ai
2066vec_ldl(int a, const unsigned short *b)
2067{
2068  return (vector unsigned short)__builtin_altivec_lvxl(a, b);
2069}
2070
2071static vector bool short __ATTRS_o_ai
2072vec_ldl(int a, const vector bool short *b)
2073{
2074  return (vector bool short)__builtin_altivec_lvxl(a, b);
2075}
2076
2077static vector pixel __ATTRS_o_ai
2078vec_ldl(int a, const vector pixel *b)
2079{
2080  return (vector pixel short)__builtin_altivec_lvxl(a, b);
2081}
2082
2083static vector int __ATTRS_o_ai
2084vec_ldl(int a, const vector int *b)
2085{
2086  return (vector int)__builtin_altivec_lvxl(a, b);
2087}
2088
2089static vector int __ATTRS_o_ai
2090vec_ldl(int a, const int *b)
2091{
2092  return (vector int)__builtin_altivec_lvxl(a, b);
2093}
2094
2095static vector unsigned int __ATTRS_o_ai
2096vec_ldl(int a, const vector unsigned int *b)
2097{
2098  return (vector unsigned int)__builtin_altivec_lvxl(a, b);
2099}
2100
2101static vector unsigned int __ATTRS_o_ai
2102vec_ldl(int a, const unsigned int *b)
2103{
2104  return (vector unsigned int)__builtin_altivec_lvxl(a, b);
2105}
2106
2107static vector bool int __ATTRS_o_ai
2108vec_ldl(int a, const vector bool int *b)
2109{
2110  return (vector bool int)__builtin_altivec_lvxl(a, b);
2111}
2112
2113static vector float __ATTRS_o_ai
2114vec_ldl(int a, const vector float *b)
2115{
2116  return (vector float)__builtin_altivec_lvxl(a, b);
2117}
2118
2119static vector float __ATTRS_o_ai
2120vec_ldl(int a, const float *b)
2121{
2122  return (vector float)__builtin_altivec_lvxl(a, b);
2123}
2124
2125/* vec_lvxl */
2126
2127static vector signed char __ATTRS_o_ai
2128vec_lvxl(int a, const vector signed char *b)
2129{
2130  return (vector signed char)__builtin_altivec_lvxl(a, b);
2131}
2132
2133static vector signed char __ATTRS_o_ai
2134vec_lvxl(int a, const signed char *b)
2135{
2136  return (vector signed char)__builtin_altivec_lvxl(a, b);
2137}
2138
2139static vector unsigned char __ATTRS_o_ai
2140vec_lvxl(int a, const vector unsigned char *b)
2141{
2142  return (vector unsigned char)__builtin_altivec_lvxl(a, b);
2143}
2144
2145static vector unsigned char __ATTRS_o_ai
2146vec_lvxl(int a, const unsigned char *b)
2147{
2148  return (vector unsigned char)__builtin_altivec_lvxl(a, b);
2149}
2150
2151static vector bool char __ATTRS_o_ai
2152vec_lvxl(int a, const vector bool char *b)
2153{
2154  return (vector bool char)__builtin_altivec_lvxl(a, b);
2155}
2156
2157static vector short __ATTRS_o_ai
2158vec_lvxl(int a, const vector short *b)
2159{
2160  return (vector short)__builtin_altivec_lvxl(a, b);
2161}
2162
2163static vector short __ATTRS_o_ai
2164vec_lvxl(int a, const short *b)
2165{
2166  return (vector short)__builtin_altivec_lvxl(a, b);
2167}
2168
2169static vector unsigned short __ATTRS_o_ai
2170vec_lvxl(int a, const vector unsigned short *b)
2171{
2172  return (vector unsigned short)__builtin_altivec_lvxl(a, b);
2173}
2174
2175static vector unsigned short __ATTRS_o_ai
2176vec_lvxl(int a, const unsigned short *b)
2177{
2178  return (vector unsigned short)__builtin_altivec_lvxl(a, b);
2179}
2180
2181static vector bool short __ATTRS_o_ai
2182vec_lvxl(int a, const vector bool short *b)
2183{
2184  return (vector bool short)__builtin_altivec_lvxl(a, b);
2185}
2186
2187static vector pixel __ATTRS_o_ai
2188vec_lvxl(int a, const vector pixel *b)
2189{
2190  return (vector pixel)__builtin_altivec_lvxl(a, b);
2191}
2192
2193static vector int __ATTRS_o_ai
2194vec_lvxl(int a, const vector int *b)
2195{
2196  return (vector int)__builtin_altivec_lvxl(a, b);
2197}
2198
2199static vector int __ATTRS_o_ai
2200vec_lvxl(int a, const int *b)
2201{
2202  return (vector int)__builtin_altivec_lvxl(a, b);
2203}
2204
2205static vector unsigned int __ATTRS_o_ai
2206vec_lvxl(int a, const vector unsigned int *b)
2207{
2208  return (vector unsigned int)__builtin_altivec_lvxl(a, b);
2209}
2210
2211static vector unsigned int __ATTRS_o_ai
2212vec_lvxl(int a, const unsigned int *b)
2213{
2214  return (vector unsigned int)__builtin_altivec_lvxl(a, b);
2215}
2216
2217static vector bool int __ATTRS_o_ai
2218vec_lvxl(int a, const vector bool int *b)
2219{
2220  return (vector bool int)__builtin_altivec_lvxl(a, b);
2221}
2222
2223static vector float __ATTRS_o_ai
2224vec_lvxl(int a, const vector float *b)
2225{
2226  return (vector float)__builtin_altivec_lvxl(a, b);
2227}
2228
2229static vector float __ATTRS_o_ai
2230vec_lvxl(int a, const float *b)
2231{
2232  return (vector float)__builtin_altivec_lvxl(a, b);
2233}
2234
2235/* vec_loge */
2236
2237static vector float __attribute__((__always_inline__))
2238vec_loge(vector float a)
2239{
2240  return __builtin_altivec_vlogefp(a);
2241}
2242
2243/* vec_vlogefp */
2244
2245static vector float __attribute__((__always_inline__))
2246vec_vlogefp(vector float a)
2247{
2248  return __builtin_altivec_vlogefp(a);
2249}
2250
2251/* vec_lvsl */
2252
2253static vector unsigned char __ATTRS_o_ai
2254vec_lvsl(int a, const signed char *b)
2255{
2256  return (vector unsigned char)__builtin_altivec_lvsl(a, b);
2257}
2258
2259static vector unsigned char __ATTRS_o_ai
2260vec_lvsl(int a, const unsigned char *b)
2261{
2262  return (vector unsigned char)__builtin_altivec_lvsl(a, b);
2263}
2264
2265static vector unsigned char __ATTRS_o_ai
2266vec_lvsl(int a, const short *b)
2267{
2268  return (vector unsigned char)__builtin_altivec_lvsl(a, b);
2269}
2270
2271static vector unsigned char __ATTRS_o_ai
2272vec_lvsl(int a, const unsigned short *b)
2273{
2274  return (vector unsigned char)__builtin_altivec_lvsl(a, b);
2275}
2276
2277static vector unsigned char __ATTRS_o_ai
2278vec_lvsl(int a, const int *b)
2279{
2280  return (vector unsigned char)__builtin_altivec_lvsl(a, b);
2281}
2282
2283static vector unsigned char __ATTRS_o_ai
2284vec_lvsl(int a, const unsigned int *b)
2285{
2286  return (vector unsigned char)__builtin_altivec_lvsl(a, b);
2287}
2288
2289static vector unsigned char __ATTRS_o_ai
2290vec_lvsl(int a, const float *b)
2291{
2292  return (vector unsigned char)__builtin_altivec_lvsl(a, b);
2293}
2294
2295/* vec_lvsr */
2296
2297static vector unsigned char __ATTRS_o_ai
2298vec_lvsr(int a, const signed char *b)
2299{
2300  return (vector unsigned char)__builtin_altivec_lvsr(a, b);
2301}
2302
2303static vector unsigned char __ATTRS_o_ai
2304vec_lvsr(int a, const unsigned char *b)
2305{
2306  return (vector unsigned char)__builtin_altivec_lvsr(a, b);
2307}
2308
2309static vector unsigned char __ATTRS_o_ai
2310vec_lvsr(int a, const short *b)
2311{
2312  return (vector unsigned char)__builtin_altivec_lvsr(a, b);
2313}
2314
2315static vector unsigned char __ATTRS_o_ai
2316vec_lvsr(int a, const unsigned short *b)
2317{
2318  return (vector unsigned char)__builtin_altivec_lvsr(a, b);
2319}
2320
2321static vector unsigned char __ATTRS_o_ai
2322vec_lvsr(int a, const int *b)
2323{
2324  return (vector unsigned char)__builtin_altivec_lvsr(a, b);
2325}
2326
2327static vector unsigned char __ATTRS_o_ai
2328vec_lvsr(int a, const unsigned int *b)
2329{
2330  return (vector unsigned char)__builtin_altivec_lvsr(a, b);
2331}
2332
2333static vector unsigned char __ATTRS_o_ai
2334vec_lvsr(int a, const float *b)
2335{
2336  return (vector unsigned char)__builtin_altivec_lvsr(a, b);
2337}
2338
2339/* vec_madd */
2340
2341static vector float __attribute__((__always_inline__))
2342vec_madd(vector float a, vector float b, vector float c)
2343{
2344  return __builtin_altivec_vmaddfp(a, b, c);
2345}
2346
2347/* vec_vmaddfp */
2348
2349static vector float __attribute__((__always_inline__))
2350vec_vmaddfp(vector float a, vector float b, vector float c)
2351{
2352  return __builtin_altivec_vmaddfp(a, b, c);
2353}
2354
2355/* vec_madds */
2356
2357static vector signed short __attribute__((__always_inline__))
2358vec_madds(vector signed short a, vector signed short b, vector signed short c)
2359{
2360  return __builtin_altivec_vmhaddshs(a, b, c);
2361}
2362
2363/* vec_vmhaddshs */
2364static vector signed short __attribute__((__always_inline__))
2365vec_vmhaddshs(vector signed short a,
2366              vector signed short b,
2367              vector signed short c)
2368{
2369  return __builtin_altivec_vmhaddshs(a, b, c);
2370}
2371
2372/* vec_max */
2373
2374static vector signed char __ATTRS_o_ai
2375vec_max(vector signed char a, vector signed char b)
2376{
2377  return __builtin_altivec_vmaxsb(a, b);
2378}
2379
2380static vector signed char __ATTRS_o_ai
2381vec_max(vector bool char a, vector signed char b)
2382{
2383  return __builtin_altivec_vmaxsb((vector signed char)a, b);
2384}
2385
2386static vector signed char __ATTRS_o_ai
2387vec_max(vector signed char a, vector bool char b)
2388{
2389  return __builtin_altivec_vmaxsb(a, (vector signed char)b);
2390}
2391
2392static vector unsigned char __ATTRS_o_ai
2393vec_max(vector unsigned char a, vector unsigned char b)
2394{
2395  return __builtin_altivec_vmaxub(a, b);
2396}
2397
2398static vector unsigned char __ATTRS_o_ai
2399vec_max(vector bool char a, vector unsigned char b)
2400{
2401  return __builtin_altivec_vmaxub((vector unsigned char)a, b);
2402}
2403
2404static vector unsigned char __ATTRS_o_ai
2405vec_max(vector unsigned char a, vector bool char b)
2406{
2407  return __builtin_altivec_vmaxub(a, (vector unsigned char)b);
2408}
2409
2410static vector short __ATTRS_o_ai
2411vec_max(vector short a, vector short b)
2412{
2413  return __builtin_altivec_vmaxsh(a, b);
2414}
2415
2416static vector short __ATTRS_o_ai
2417vec_max(vector bool short a, vector short b)
2418{
2419  return __builtin_altivec_vmaxsh((vector short)a, b);
2420}
2421
2422static vector short __ATTRS_o_ai
2423vec_max(vector short a, vector bool short b)
2424{
2425  return __builtin_altivec_vmaxsh(a, (vector short)b);
2426}
2427
2428static vector unsigned short __ATTRS_o_ai
2429vec_max(vector unsigned short a, vector unsigned short b)
2430{
2431  return __builtin_altivec_vmaxuh(a, b);
2432}
2433
2434static vector unsigned short __ATTRS_o_ai
2435vec_max(vector bool short a, vector unsigned short b)
2436{
2437  return __builtin_altivec_vmaxuh((vector unsigned short)a, b);
2438}
2439
2440static vector unsigned short __ATTRS_o_ai
2441vec_max(vector unsigned short a, vector bool short b)
2442{
2443  return __builtin_altivec_vmaxuh(a, (vector unsigned short)b);
2444}
2445
2446static vector int __ATTRS_o_ai
2447vec_max(vector int a, vector int b)
2448{
2449  return __builtin_altivec_vmaxsw(a, b);
2450}
2451
2452static vector int __ATTRS_o_ai
2453vec_max(vector bool int a, vector int b)
2454{
2455  return __builtin_altivec_vmaxsw((vector int)a, b);
2456}
2457
2458static vector int __ATTRS_o_ai
2459vec_max(vector int a, vector bool int b)
2460{
2461  return __builtin_altivec_vmaxsw(a, (vector int)b);
2462}
2463
2464static vector unsigned int __ATTRS_o_ai
2465vec_max(vector unsigned int a, vector unsigned int b)
2466{
2467  return __builtin_altivec_vmaxuw(a, b);
2468}
2469
2470static vector unsigned int __ATTRS_o_ai
2471vec_max(vector bool int a, vector unsigned int b)
2472{
2473  return __builtin_altivec_vmaxuw((vector unsigned int)a, b);
2474}
2475
2476static vector unsigned int __ATTRS_o_ai
2477vec_max(vector unsigned int a, vector bool int b)
2478{
2479  return __builtin_altivec_vmaxuw(a, (vector unsigned int)b);
2480}
2481
2482static vector float __ATTRS_o_ai
2483vec_max(vector float a, vector float b)
2484{
2485  return __builtin_altivec_vmaxfp(a, b);
2486}
2487
2488/* vec_vmaxsb */
2489
2490static vector signed char __ATTRS_o_ai
2491vec_vmaxsb(vector signed char a, vector signed char b)
2492{
2493  return __builtin_altivec_vmaxsb(a, b);
2494}
2495
2496static vector signed char __ATTRS_o_ai
2497vec_vmaxsb(vector bool char a, vector signed char b)
2498{
2499  return __builtin_altivec_vmaxsb((vector signed char)a, b);
2500}
2501
2502static vector signed char __ATTRS_o_ai
2503vec_vmaxsb(vector signed char a, vector bool char b)
2504{
2505  return __builtin_altivec_vmaxsb(a, (vector signed char)b);
2506}
2507
2508/* vec_vmaxub */
2509
2510static vector unsigned char __ATTRS_o_ai
2511vec_vmaxub(vector unsigned char a, vector unsigned char b)
2512{
2513  return __builtin_altivec_vmaxub(a, b);
2514}
2515
2516static vector unsigned char __ATTRS_o_ai
2517vec_vmaxub(vector bool char a, vector unsigned char b)
2518{
2519  return __builtin_altivec_vmaxub((vector unsigned char)a, b);
2520}
2521
2522static vector unsigned char __ATTRS_o_ai
2523vec_vmaxub(vector unsigned char a, vector bool char b)
2524{
2525  return __builtin_altivec_vmaxub(a, (vector unsigned char)b);
2526}
2527
2528/* vec_vmaxsh */
2529
2530static vector short __ATTRS_o_ai
2531vec_vmaxsh(vector short a, vector short b)
2532{
2533  return __builtin_altivec_vmaxsh(a, b);
2534}
2535
2536static vector short __ATTRS_o_ai
2537vec_vmaxsh(vector bool short a, vector short b)
2538{
2539  return __builtin_altivec_vmaxsh((vector short)a, b);
2540}
2541
2542static vector short __ATTRS_o_ai
2543vec_vmaxsh(vector short a, vector bool short b)
2544{
2545  return __builtin_altivec_vmaxsh(a, (vector short)b);
2546}
2547
2548/* vec_vmaxuh */
2549
2550static vector unsigned short __ATTRS_o_ai
2551vec_vmaxuh(vector unsigned short a, vector unsigned short b)
2552{
2553  return __builtin_altivec_vmaxuh(a, b);
2554}
2555
2556static vector unsigned short __ATTRS_o_ai
2557vec_vmaxuh(vector bool short a, vector unsigned short b)
2558{
2559  return __builtin_altivec_vmaxuh((vector unsigned short)a, b);
2560}
2561
2562static vector unsigned short __ATTRS_o_ai
2563vec_vmaxuh(vector unsigned short a, vector bool short b)
2564{
2565  return __builtin_altivec_vmaxuh(a, (vector unsigned short)b);
2566}
2567
2568/* vec_vmaxsw */
2569
2570static vector int __ATTRS_o_ai
2571vec_vmaxsw(vector int a, vector int b)
2572{
2573  return __builtin_altivec_vmaxsw(a, b);
2574}
2575
2576static vector int __ATTRS_o_ai
2577vec_vmaxsw(vector bool int a, vector int b)
2578{
2579  return __builtin_altivec_vmaxsw((vector int)a, b);
2580}
2581
2582static vector int __ATTRS_o_ai
2583vec_vmaxsw(vector int a, vector bool int b)
2584{
2585  return __builtin_altivec_vmaxsw(a, (vector int)b);
2586}
2587
2588/* vec_vmaxuw */
2589
2590static vector unsigned int __ATTRS_o_ai
2591vec_vmaxuw(vector unsigned int a, vector unsigned int b)
2592{
2593  return __builtin_altivec_vmaxuw(a, b);
2594}
2595
2596static vector unsigned int __ATTRS_o_ai
2597vec_vmaxuw(vector bool int a, vector unsigned int b)
2598{
2599  return __builtin_altivec_vmaxuw((vector unsigned int)a, b);
2600}
2601
2602static vector unsigned int __ATTRS_o_ai
2603vec_vmaxuw(vector unsigned int a, vector bool int b)
2604{
2605  return __builtin_altivec_vmaxuw(a, (vector unsigned int)b);
2606}
2607
2608/* vec_vmaxfp */
2609
2610static vector float __attribute__((__always_inline__))
2611vec_vmaxfp(vector float a, vector float b)
2612{
2613  return __builtin_altivec_vmaxfp(a, b);
2614}
2615
2616/* vec_mergeh */
2617
2618static vector signed char __ATTRS_o_ai
2619vec_mergeh(vector signed char a, vector signed char b)
2620{
2621  return vec_perm(a, b, (vector unsigned char)
2622    (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2623     0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2624}
2625
2626static vector unsigned char __ATTRS_o_ai
2627vec_mergeh(vector unsigned char a, vector unsigned char b)
2628{
2629  return vec_perm(a, b, (vector unsigned char)
2630    (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2631     0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2632}
2633
2634static vector bool char __ATTRS_o_ai
2635vec_mergeh(vector bool char a, vector bool char b)
2636{
2637  return vec_perm(a, b, (vector unsigned char)
2638    (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2639     0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2640}
2641
2642static vector short __ATTRS_o_ai
2643vec_mergeh(vector short a, vector short b)
2644{
2645  return vec_perm(a, b, (vector unsigned char)
2646    (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2647     0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2648}
2649
2650static vector unsigned short __ATTRS_o_ai
2651vec_mergeh(vector unsigned short a, vector unsigned short b)
2652{
2653  return vec_perm(a, b, (vector unsigned char)
2654    (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2655     0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2656}
2657
2658static vector bool short __ATTRS_o_ai
2659vec_mergeh(vector bool short a, vector bool short b)
2660{
2661  return vec_perm(a, b, (vector unsigned char)
2662    (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2663     0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2664}
2665
2666static vector pixel __ATTRS_o_ai
2667vec_mergeh(vector pixel a, vector pixel b)
2668{
2669  return vec_perm(a, b, (vector unsigned char)
2670    (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2671     0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2672}
2673
2674static vector int __ATTRS_o_ai
2675vec_mergeh(vector int a, vector int b)
2676{
2677  return vec_perm(a, b, (vector unsigned char)
2678    (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2679     0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2680}
2681
2682static vector unsigned int __ATTRS_o_ai
2683vec_mergeh(vector unsigned int a, vector unsigned int b)
2684{
2685  return vec_perm(a, b, (vector unsigned char)
2686    (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2687     0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2688}
2689
2690static vector bool int __ATTRS_o_ai
2691vec_mergeh(vector bool int a, vector bool int b)
2692{
2693  return vec_perm(a, b, (vector unsigned char)
2694    (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2695     0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2696}
2697
2698static vector float __ATTRS_o_ai
2699vec_mergeh(vector float a, vector float b)
2700{
2701  return vec_perm(a, b, (vector unsigned char)
2702    (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2703     0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2704}
2705
2706/* vec_vmrghb */
2707
2708#define __builtin_altivec_vmrghb vec_vmrghb
2709
2710static vector signed char __ATTRS_o_ai
2711vec_vmrghb(vector signed char a, vector signed char b)
2712{
2713  return vec_perm(a, b, (vector unsigned char)
2714    (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2715     0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2716}
2717
2718static vector unsigned char __ATTRS_o_ai
2719vec_vmrghb(vector unsigned char a, vector unsigned char b)
2720{
2721  return vec_perm(a, b, (vector unsigned char)
2722    (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2723     0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2724}
2725
2726static vector bool char __ATTRS_o_ai
2727vec_vmrghb(vector bool char a, vector bool char b)
2728{
2729  return vec_perm(a, b, (vector unsigned char)
2730    (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2731     0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2732}
2733
2734/* vec_vmrghh */
2735
2736#define __builtin_altivec_vmrghh vec_vmrghh
2737
2738static vector short __ATTRS_o_ai
2739vec_vmrghh(vector short a, vector short b)
2740{
2741  return vec_perm(a, b, (vector unsigned char)
2742    (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2743     0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2744}
2745
2746static vector unsigned short __ATTRS_o_ai
2747vec_vmrghh(vector unsigned short a, vector unsigned short b)
2748{
2749  return vec_perm(a, b, (vector unsigned char)
2750    (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2751     0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2752}
2753
2754static vector bool short __ATTRS_o_ai
2755vec_vmrghh(vector bool short a, vector bool short b)
2756{
2757  return vec_perm(a, b, (vector unsigned char)
2758    (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2759     0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2760}
2761
2762static vector pixel __ATTRS_o_ai
2763vec_vmrghh(vector pixel a, vector pixel b)
2764{
2765  return vec_perm(a, b, (vector unsigned char)
2766    (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2767     0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2768}
2769
2770/* vec_vmrghw */
2771
2772#define __builtin_altivec_vmrghw vec_vmrghw
2773
2774static vector int __ATTRS_o_ai
2775vec_vmrghw(vector int a, vector int b)
2776{
2777  return vec_perm(a, b, (vector unsigned char)
2778    (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2779     0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2780}
2781
2782static vector unsigned int __ATTRS_o_ai
2783vec_vmrghw(vector unsigned int a, vector unsigned int b)
2784{
2785  return vec_perm(a, b, (vector unsigned char)
2786    (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2787     0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2788}
2789
2790static vector bool int __ATTRS_o_ai
2791vec_vmrghw(vector bool int a, vector bool int b)
2792{
2793  return vec_perm(a, b, (vector unsigned char)
2794    (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2795     0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2796}
2797
2798static vector float __ATTRS_o_ai
2799vec_vmrghw(vector float a, vector float b)
2800{
2801  return vec_perm(a, b, (vector unsigned char)
2802    (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2803     0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2804}
2805
2806/* vec_mergel */
2807
2808static vector signed char __ATTRS_o_ai
2809vec_mergel(vector signed char a, vector signed char b)
2810{
2811  return vec_perm(a, b, (vector unsigned char)
2812    (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2813     0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2814}
2815
2816static vector unsigned char __ATTRS_o_ai
2817vec_mergel(vector unsigned char a, vector unsigned char b)
2818{
2819  return vec_perm(a, b, (vector unsigned char)
2820    (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2821     0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2822}
2823
2824static vector bool char __ATTRS_o_ai
2825vec_mergel(vector bool char a, vector bool char b)
2826{
2827  return vec_perm(a, b, (vector unsigned char)
2828    (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2829     0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2830}
2831
2832static vector short __ATTRS_o_ai
2833vec_mergel(vector short a, vector short b)
2834{
2835  return vec_perm(a, b, (vector unsigned char)
2836    (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2837     0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2838}
2839
2840static vector unsigned short __ATTRS_o_ai
2841vec_mergel(vector unsigned short a, vector unsigned short b)
2842{
2843  return vec_perm(a, b, (vector unsigned char)
2844    (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2845     0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2846}
2847
2848static vector bool short __ATTRS_o_ai
2849vec_mergel(vector bool short a, vector bool short b)
2850{
2851  return vec_perm(a, b, (vector unsigned char)
2852    (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2853     0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2854}
2855
2856static vector pixel __ATTRS_o_ai
2857vec_mergel(vector pixel a, vector pixel b)
2858{
2859  return vec_perm(a, b, (vector unsigned char)
2860    (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2861     0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2862}
2863
2864static vector int __ATTRS_o_ai
2865vec_mergel(vector int a, vector int b)
2866{
2867  return vec_perm(a, b, (vector unsigned char)
2868    (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2869     0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2870}
2871
2872static vector unsigned int __ATTRS_o_ai
2873vec_mergel(vector unsigned int a, vector unsigned int b)
2874{
2875  return vec_perm(a, b, (vector unsigned char)
2876    (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2877     0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2878}
2879
2880static vector bool int __ATTRS_o_ai
2881vec_mergel(vector bool int a, vector bool int b)
2882{
2883  return vec_perm(a, b, (vector unsigned char)
2884    (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2885     0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2886}
2887
2888static vector float __ATTRS_o_ai
2889vec_mergel(vector float a, vector float b)
2890{
2891  return vec_perm(a, b, (vector unsigned char)
2892    (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2893     0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2894}
2895
2896/* vec_vmrglb */
2897
2898#define __builtin_altivec_vmrglb vec_vmrglb
2899
2900static vector signed char __ATTRS_o_ai
2901vec_vmrglb(vector signed char a, vector signed char b)
2902{
2903  return vec_perm(a, b, (vector unsigned char)
2904    (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2905     0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2906}
2907
2908static vector unsigned char __ATTRS_o_ai
2909vec_vmrglb(vector unsigned char a, vector unsigned char b)
2910{
2911  return vec_perm(a, b, (vector unsigned char)
2912    (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2913     0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2914}
2915
2916static vector bool char __ATTRS_o_ai
2917vec_vmrglb(vector bool char a, vector bool char b)
2918{
2919  return vec_perm(a, b, (vector unsigned char)
2920    (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2921     0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2922}
2923
2924/* vec_vmrglh */
2925
2926#define __builtin_altivec_vmrglh vec_vmrglh
2927
2928static vector short __ATTRS_o_ai
2929vec_vmrglh(vector short a, vector short b)
2930{
2931  return vec_perm(a, b, (vector unsigned char)
2932    (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2933     0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2934}
2935
2936static vector unsigned short __ATTRS_o_ai
2937vec_vmrglh(vector unsigned short a, vector unsigned short b)
2938{
2939  return vec_perm(a, b, (vector unsigned char)
2940    (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2941     0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2942}
2943
2944static vector bool short __ATTRS_o_ai
2945vec_vmrglh(vector bool short a, vector bool short b)
2946{
2947  return vec_perm(a, b, (vector unsigned char)
2948    (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2949     0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2950}
2951
2952static vector pixel __ATTRS_o_ai
2953vec_vmrglh(vector pixel a, vector pixel b)
2954{
2955  return vec_perm(a, b, (vector unsigned char)
2956    (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2957     0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2958}
2959
2960/* vec_vmrglw */
2961
2962#define __builtin_altivec_vmrglw vec_vmrglw
2963
2964static vector int __ATTRS_o_ai
2965vec_vmrglw(vector int a, vector int b)
2966{
2967  return vec_perm(a, b, (vector unsigned char)
2968    (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2969     0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2970}
2971
2972static vector unsigned int __ATTRS_o_ai
2973vec_vmrglw(vector unsigned int a, vector unsigned int b)
2974{
2975  return vec_perm(a, b, (vector unsigned char)
2976    (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2977     0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2978}
2979
2980static vector bool int __ATTRS_o_ai
2981vec_vmrglw(vector bool int a, vector bool int b)
2982{
2983  return vec_perm(a, b, (vector unsigned char)
2984    (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2985     0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2986}
2987
2988static vector float __ATTRS_o_ai
2989vec_vmrglw(vector float a, vector float b)
2990{
2991  return vec_perm(a, b, (vector unsigned char)
2992    (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2993     0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2994}
2995
2996/* vec_mfvscr */
2997
2998static vector unsigned short __attribute__((__always_inline__))
2999vec_mfvscr(void)
3000{
3001  return __builtin_altivec_mfvscr();
3002}
3003
3004/* vec_min */
3005
3006static vector signed char __ATTRS_o_ai
3007vec_min(vector signed char a, vector signed char b)
3008{
3009  return __builtin_altivec_vminsb(a, b);
3010}
3011
3012static vector signed char __ATTRS_o_ai
3013vec_min(vector bool char a, vector signed char b)
3014{
3015  return __builtin_altivec_vminsb((vector signed char)a, b);
3016}
3017
3018static vector signed char __ATTRS_o_ai
3019vec_min(vector signed char a, vector bool char b)
3020{
3021  return __builtin_altivec_vminsb(a, (vector signed char)b);
3022}
3023
3024static vector unsigned char __ATTRS_o_ai
3025vec_min(vector unsigned char a, vector unsigned char b)
3026{
3027  return __builtin_altivec_vminub(a, b);
3028}
3029
3030static vector unsigned char __ATTRS_o_ai
3031vec_min(vector bool char a, vector unsigned char b)
3032{
3033  return __builtin_altivec_vminub((vector unsigned char)a, b);
3034}
3035
3036static vector unsigned char __ATTRS_o_ai
3037vec_min(vector unsigned char a, vector bool char b)
3038{
3039  return __builtin_altivec_vminub(a, (vector unsigned char)b);
3040}
3041
3042static vector short __ATTRS_o_ai
3043vec_min(vector short a, vector short b)
3044{
3045  return __builtin_altivec_vminsh(a, b);
3046}
3047
3048static vector short __ATTRS_o_ai
3049vec_min(vector bool short a, vector short b)
3050{
3051  return __builtin_altivec_vminsh((vector short)a, b);
3052}
3053
3054static vector short __ATTRS_o_ai
3055vec_min(vector short a, vector bool short b)
3056{
3057  return __builtin_altivec_vminsh(a, (vector short)b);
3058}
3059
3060static vector unsigned short __ATTRS_o_ai
3061vec_min(vector unsigned short a, vector unsigned short b)
3062{
3063  return __builtin_altivec_vminuh(a, b);
3064}
3065
3066static vector unsigned short __ATTRS_o_ai
3067vec_min(vector bool short a, vector unsigned short b)
3068{
3069  return __builtin_altivec_vminuh((vector unsigned short)a, b);
3070}
3071
3072static vector unsigned short __ATTRS_o_ai
3073vec_min(vector unsigned short a, vector bool short b)
3074{
3075  return __builtin_altivec_vminuh(a, (vector unsigned short)b);
3076}
3077
3078static vector int __ATTRS_o_ai
3079vec_min(vector int a, vector int b)
3080{
3081  return __builtin_altivec_vminsw(a, b);
3082}
3083
3084static vector int __ATTRS_o_ai
3085vec_min(vector bool int a, vector int b)
3086{
3087  return __builtin_altivec_vminsw((vector int)a, b);
3088}
3089
3090static vector int __ATTRS_o_ai
3091vec_min(vector int a, vector bool int b)
3092{
3093  return __builtin_altivec_vminsw(a, (vector int)b);
3094}
3095
3096static vector unsigned int __ATTRS_o_ai
3097vec_min(vector unsigned int a, vector unsigned int b)
3098{
3099  return __builtin_altivec_vminuw(a, b);
3100}
3101
3102static vector unsigned int __ATTRS_o_ai
3103vec_min(vector bool int a, vector unsigned int b)
3104{
3105  return __builtin_altivec_vminuw((vector unsigned int)a, b);
3106}
3107
3108static vector unsigned int __ATTRS_o_ai
3109vec_min(vector unsigned int a, vector bool int b)
3110{
3111  return __builtin_altivec_vminuw(a, (vector unsigned int)b);
3112}
3113
3114static vector float __ATTRS_o_ai
3115vec_min(vector float a, vector float b)
3116{
3117  return __builtin_altivec_vminfp(a, b);
3118}
3119
3120/* vec_vminsb */
3121
3122static vector signed char __ATTRS_o_ai
3123vec_vminsb(vector signed char a, vector signed char b)
3124{
3125  return __builtin_altivec_vminsb(a, b);
3126}
3127
3128static vector signed char __ATTRS_o_ai
3129vec_vminsb(vector bool char a, vector signed char b)
3130{
3131  return __builtin_altivec_vminsb((vector signed char)a, b);
3132}
3133
3134static vector signed char __ATTRS_o_ai
3135vec_vminsb(vector signed char a, vector bool char b)
3136{
3137  return __builtin_altivec_vminsb(a, (vector signed char)b);
3138}
3139
3140/* vec_vminub */
3141
3142static vector unsigned char __ATTRS_o_ai
3143vec_vminub(vector unsigned char a, vector unsigned char b)
3144{
3145  return __builtin_altivec_vminub(a, b);
3146}
3147
3148static vector unsigned char __ATTRS_o_ai
3149vec_vminub(vector bool char a, vector unsigned char b)
3150{
3151  return __builtin_altivec_vminub((vector unsigned char)a, b);
3152}
3153
3154static vector unsigned char __ATTRS_o_ai
3155vec_vminub(vector unsigned char a, vector bool char b)
3156{
3157  return __builtin_altivec_vminub(a, (vector unsigned char)b);
3158}
3159
3160/* vec_vminsh */
3161
3162static vector short __ATTRS_o_ai
3163vec_vminsh(vector short a, vector short b)
3164{
3165  return __builtin_altivec_vminsh(a, b);
3166}
3167
3168static vector short __ATTRS_o_ai
3169vec_vminsh(vector bool short a, vector short b)
3170{
3171  return __builtin_altivec_vminsh((vector short)a, b);
3172}
3173
3174static vector short __ATTRS_o_ai
3175vec_vminsh(vector short a, vector bool short b)
3176{
3177  return __builtin_altivec_vminsh(a, (vector short)b);
3178}
3179
3180/* vec_vminuh */
3181
3182static vector unsigned short __ATTRS_o_ai
3183vec_vminuh(vector unsigned short a, vector unsigned short b)
3184{
3185  return __builtin_altivec_vminuh(a, b);
3186}
3187
3188static vector unsigned short __ATTRS_o_ai
3189vec_vminuh(vector bool short a, vector unsigned short b)
3190{
3191  return __builtin_altivec_vminuh((vector unsigned short)a, b);
3192}
3193
3194static vector unsigned short __ATTRS_o_ai
3195vec_vminuh(vector unsigned short a, vector bool short b)
3196{
3197  return __builtin_altivec_vminuh(a, (vector unsigned short)b);
3198}
3199
3200/* vec_vminsw */
3201
3202static vector int __ATTRS_o_ai
3203vec_vminsw(vector int a, vector int b)
3204{
3205  return __builtin_altivec_vminsw(a, b);
3206}
3207
3208static vector int __ATTRS_o_ai
3209vec_vminsw(vector bool int a, vector int b)
3210{
3211  return __builtin_altivec_vminsw((vector int)a, b);
3212}
3213
3214static vector int __ATTRS_o_ai
3215vec_vminsw(vector int a, vector bool int b)
3216{
3217  return __builtin_altivec_vminsw(a, (vector int)b);
3218}
3219
3220/* vec_vminuw */
3221
3222static vector unsigned int __ATTRS_o_ai
3223vec_vminuw(vector unsigned int a, vector unsigned int b)
3224{
3225  return __builtin_altivec_vminuw(a, b);
3226}
3227
3228static vector unsigned int __ATTRS_o_ai
3229vec_vminuw(vector bool int a, vector unsigned int b)
3230{
3231  return __builtin_altivec_vminuw((vector unsigned int)a, b);
3232}
3233
3234static vector unsigned int __ATTRS_o_ai
3235vec_vminuw(vector unsigned int a, vector bool int b)
3236{
3237  return __builtin_altivec_vminuw(a, (vector unsigned int)b);
3238}
3239
3240/* vec_vminfp */
3241
3242static vector float __attribute__((__always_inline__))
3243vec_vminfp(vector float a, vector float b)
3244{
3245  return __builtin_altivec_vminfp(a, b);
3246}
3247
3248/* vec_mladd */
3249
3250#define __builtin_altivec_vmladduhm vec_mladd
3251
3252static vector short __ATTRS_o_ai
3253vec_mladd(vector short a, vector short b, vector short c)
3254{
3255  return a * b + c;
3256}
3257
3258static vector short __ATTRS_o_ai
3259vec_mladd(vector short a, vector unsigned short b, vector unsigned short c)
3260{
3261  return a * (vector short)b + (vector short)c;
3262}
3263
3264static vector short __ATTRS_o_ai
3265vec_mladd(vector unsigned short a, vector short b, vector short c)
3266{
3267  return (vector short)a * b + c;
3268}
3269
3270static vector unsigned short __ATTRS_o_ai
3271vec_mladd(vector unsigned short a,
3272          vector unsigned short b,
3273          vector unsigned short c)
3274{
3275  return a * b + c;
3276}
3277
3278/* vec_vmladduhm */
3279
3280static vector short __ATTRS_o_ai
3281vec_vmladduhm(vector short a, vector short b, vector short c)
3282{
3283  return a * b + c;
3284}
3285
3286static vector short __ATTRS_o_ai
3287vec_vmladduhm(vector short a, vector unsigned short b, vector unsigned short c)
3288{
3289  return a * (vector short)b + (vector short)c;
3290}
3291
3292static vector short __ATTRS_o_ai
3293vec_vmladduhm(vector unsigned short a, vector short b, vector short c)
3294{
3295  return (vector short)a * b + c;
3296}
3297
3298static vector unsigned short __ATTRS_o_ai
3299vec_vmladduhm(vector unsigned short a,
3300              vector unsigned short b,
3301              vector unsigned short c)
3302{
3303  return a * b + c;
3304}
3305
3306/* vec_mradds */
3307
3308static vector short __attribute__((__always_inline__))
3309vec_mradds(vector short a, vector short b, vector short c)
3310{
3311  return __builtin_altivec_vmhraddshs(a, b, c);
3312}
3313
3314/* vec_vmhraddshs */
3315
3316static vector short __attribute__((__always_inline__))
3317vec_vmhraddshs(vector short a, vector short b, vector short c)
3318{
3319  return __builtin_altivec_vmhraddshs(a, b, c);
3320}
3321
3322/* vec_msum */
3323
3324static vector int __ATTRS_o_ai
3325vec_msum(vector signed char a, vector unsigned char b, vector int c)
3326{
3327  return __builtin_altivec_vmsummbm(a, b, c);
3328}
3329
3330static vector unsigned int __ATTRS_o_ai
3331vec_msum(vector unsigned char a, vector unsigned char b, vector unsigned int c)
3332{
3333  return __builtin_altivec_vmsumubm(a, b, c);
3334}
3335
3336static vector int __ATTRS_o_ai
3337vec_msum(vector short a, vector short b, vector int c)
3338{
3339  return __builtin_altivec_vmsumshm(a, b, c);
3340}
3341
3342static vector unsigned int __ATTRS_o_ai
3343vec_msum(vector unsigned short a,
3344         vector unsigned short b,
3345         vector unsigned int c)
3346{
3347  return __builtin_altivec_vmsumuhm(a, b, c);
3348}
3349
3350/* vec_vmsummbm */
3351
3352static vector int __attribute__((__always_inline__))
3353vec_vmsummbm(vector signed char a, vector unsigned char b, vector int c)
3354{
3355  return __builtin_altivec_vmsummbm(a, b, c);
3356}
3357
3358/* vec_vmsumubm */
3359
3360static vector unsigned int __attribute__((__always_inline__))
3361vec_vmsumubm(vector unsigned char a,
3362             vector unsigned char b,
3363             vector unsigned int c)
3364{
3365  return __builtin_altivec_vmsumubm(a, b, c);
3366}
3367
3368/* vec_vmsumshm */
3369
3370static vector int __attribute__((__always_inline__))
3371vec_vmsumshm(vector short a, vector short b, vector int c)
3372{
3373  return __builtin_altivec_vmsumshm(a, b, c);
3374}
3375
3376/* vec_vmsumuhm */
3377
3378static vector unsigned int __attribute__((__always_inline__))
3379vec_vmsumuhm(vector unsigned short a,
3380             vector unsigned short b,
3381             vector unsigned int c)
3382{
3383  return __builtin_altivec_vmsumuhm(a, b, c);
3384}
3385
3386/* vec_msums */
3387
3388static vector int __ATTRS_o_ai
3389vec_msums(vector short a, vector short b, vector int c)
3390{
3391  return __builtin_altivec_vmsumshs(a, b, c);
3392}
3393
3394static vector unsigned int __ATTRS_o_ai
3395vec_msums(vector unsigned short a,
3396          vector unsigned short b,
3397          vector unsigned int c)
3398{
3399  return __builtin_altivec_vmsumuhs(a, b, c);
3400}
3401
3402/* vec_vmsumshs */
3403
3404static vector int __attribute__((__always_inline__))
3405vec_vmsumshs(vector short a, vector short b, vector int c)
3406{
3407  return __builtin_altivec_vmsumshs(a, b, c);
3408}
3409
3410/* vec_vmsumuhs */
3411
3412static vector unsigned int __attribute__((__always_inline__))
3413vec_vmsumuhs(vector unsigned short a,
3414             vector unsigned short b,
3415             vector unsigned int c)
3416{
3417  return __builtin_altivec_vmsumuhs(a, b, c);
3418}
3419
3420/* vec_mtvscr */
3421
3422static void __ATTRS_o_ai
3423vec_mtvscr(vector signed char a)
3424{
3425  __builtin_altivec_mtvscr((vector int)a);
3426}
3427
3428static void __ATTRS_o_ai
3429vec_mtvscr(vector unsigned char a)
3430{
3431  __builtin_altivec_mtvscr((vector int)a);
3432}
3433
3434static void __ATTRS_o_ai
3435vec_mtvscr(vector bool char a)
3436{
3437  __builtin_altivec_mtvscr((vector int)a);
3438}
3439
3440static void __ATTRS_o_ai
3441vec_mtvscr(vector short a)
3442{
3443  __builtin_altivec_mtvscr((vector int)a);
3444}
3445
3446static void __ATTRS_o_ai
3447vec_mtvscr(vector unsigned short a)
3448{
3449  __builtin_altivec_mtvscr((vector int)a);
3450}
3451
3452static void __ATTRS_o_ai
3453vec_mtvscr(vector bool short a)
3454{
3455  __builtin_altivec_mtvscr((vector int)a);
3456}
3457
3458static void __ATTRS_o_ai
3459vec_mtvscr(vector pixel a)
3460{
3461  __builtin_altivec_mtvscr((vector int)a);
3462}
3463
3464static void __ATTRS_o_ai
3465vec_mtvscr(vector int a)
3466{
3467  __builtin_altivec_mtvscr((vector int)a);
3468}
3469
3470static void __ATTRS_o_ai
3471vec_mtvscr(vector unsigned int a)
3472{
3473  __builtin_altivec_mtvscr((vector int)a);
3474}
3475
3476static void __ATTRS_o_ai
3477vec_mtvscr(vector bool int a)
3478{
3479  __builtin_altivec_mtvscr((vector int)a);
3480}
3481
3482static void __ATTRS_o_ai
3483vec_mtvscr(vector float a)
3484{
3485  __builtin_altivec_mtvscr((vector int)a);
3486}
3487
3488/* vec_mule */
3489
3490static vector short __ATTRS_o_ai
3491vec_mule(vector signed char a, vector signed char b)
3492{
3493  return __builtin_altivec_vmulesb(a, b);
3494}
3495
3496static vector unsigned short __ATTRS_o_ai
3497vec_mule(vector unsigned char a, vector unsigned char b)
3498{
3499  return __builtin_altivec_vmuleub(a, b);
3500}
3501
3502static vector int __ATTRS_o_ai
3503vec_mule(vector short a, vector short b)
3504{
3505  return __builtin_altivec_vmulesh(a, b);
3506}
3507
3508static vector unsigned int __ATTRS_o_ai
3509vec_mule(vector unsigned short a, vector unsigned short b)
3510{
3511  return __builtin_altivec_vmuleuh(a, b);
3512}
3513
3514/* vec_vmulesb */
3515
3516static vector short __attribute__((__always_inline__))
3517vec_vmulesb(vector signed char a, vector signed char b)
3518{
3519  return __builtin_altivec_vmulesb(a, b);
3520}
3521
3522/* vec_vmuleub */
3523
3524static vector unsigned short __attribute__((__always_inline__))
3525vec_vmuleub(vector unsigned char a, vector unsigned char b)
3526{
3527  return __builtin_altivec_vmuleub(a, b);
3528}
3529
3530/* vec_vmulesh */
3531
3532static vector int __attribute__((__always_inline__))
3533vec_vmulesh(vector short a, vector short b)
3534{
3535  return __builtin_altivec_vmulesh(a, b);
3536}
3537
3538/* vec_vmuleuh */
3539
3540static vector unsigned int __attribute__((__always_inline__))
3541vec_vmuleuh(vector unsigned short a, vector unsigned short b)
3542{
3543  return __builtin_altivec_vmuleuh(a, b);
3544}
3545
3546/* vec_mulo */
3547
3548static vector short __ATTRS_o_ai
3549vec_mulo(vector signed char a, vector signed char b)
3550{
3551  return __builtin_altivec_vmulosb(a, b);
3552}
3553
3554static vector unsigned short __ATTRS_o_ai
3555vec_mulo(vector unsigned char a, vector unsigned char b)
3556{
3557  return __builtin_altivec_vmuloub(a, b);
3558}
3559
3560static vector int __ATTRS_o_ai
3561vec_mulo(vector short a, vector short b)
3562{
3563  return __builtin_altivec_vmulosh(a, b);
3564}
3565
3566static vector unsigned int __ATTRS_o_ai
3567vec_mulo(vector unsigned short a, vector unsigned short b)
3568{
3569  return __builtin_altivec_vmulouh(a, b);
3570}
3571
3572/* vec_vmulosb */
3573
3574static vector short __attribute__((__always_inline__))
3575vec_vmulosb(vector signed char a, vector signed char b)
3576{
3577  return __builtin_altivec_vmulosb(a, b);
3578}
3579
3580/* vec_vmuloub */
3581
3582static vector unsigned short __attribute__((__always_inline__))
3583vec_vmuloub(vector unsigned char a, vector unsigned char b)
3584{
3585  return __builtin_altivec_vmuloub(a, b);
3586}
3587
3588/* vec_vmulosh */
3589
3590static vector int __attribute__((__always_inline__))
3591vec_vmulosh(vector short a, vector short b)
3592{
3593  return __builtin_altivec_vmulosh(a, b);
3594}
3595
3596/* vec_vmulouh */
3597
3598static vector unsigned int __attribute__((__always_inline__))
3599vec_vmulouh(vector unsigned short a, vector unsigned short b)
3600{
3601  return __builtin_altivec_vmulouh(a, b);
3602}
3603
3604/* vec_nmsub */
3605
3606static vector float __attribute__((__always_inline__))
3607vec_nmsub(vector float a, vector float b, vector float c)
3608{
3609  return __builtin_altivec_vnmsubfp(a, b, c);
3610}
3611
3612/* vec_vnmsubfp */
3613
3614static vector float __attribute__((__always_inline__))
3615vec_vnmsubfp(vector float a, vector float b, vector float c)
3616{
3617  return __builtin_altivec_vnmsubfp(a, b, c);
3618}
3619
3620/* vec_nor */
3621
3622#define __builtin_altivec_vnor vec_nor
3623
3624static vector signed char __ATTRS_o_ai
3625vec_nor(vector signed char a, vector signed char b)
3626{
3627  return ~(a | b);
3628}
3629
3630static vector unsigned char __ATTRS_o_ai
3631vec_nor(vector unsigned char a, vector unsigned char b)
3632{
3633  return ~(a | b);
3634}
3635
3636static vector bool char __ATTRS_o_ai
3637vec_nor(vector bool char a, vector bool char b)
3638{
3639  return ~(a | b);
3640}
3641
3642static vector short __ATTRS_o_ai
3643vec_nor(vector short a, vector short b)
3644{
3645  return ~(a | b);
3646}
3647
3648static vector unsigned short __ATTRS_o_ai
3649vec_nor(vector unsigned short a, vector unsigned short b)
3650{
3651  return ~(a | b);
3652}
3653
3654static vector bool short __ATTRS_o_ai
3655vec_nor(vector bool short a, vector bool short b)
3656{
3657  return ~(a | b);
3658}
3659
3660static vector int __ATTRS_o_ai
3661vec_nor(vector int a, vector int b)
3662{
3663  return ~(a | b);
3664}
3665
3666static vector unsigned int __ATTRS_o_ai
3667vec_nor(vector unsigned int a, vector unsigned int b)
3668{
3669  return ~(a | b);
3670}
3671
3672static vector bool int __ATTRS_o_ai
3673vec_nor(vector bool int a, vector bool int b)
3674{
3675  return ~(a | b);
3676}
3677
3678static vector float __ATTRS_o_ai
3679vec_nor(vector float a, vector float b)
3680{
3681  vector unsigned int res = ~((vector unsigned int)a | (vector unsigned int)b);
3682  return (vector float)res;
3683}
3684
3685/* vec_vnor */
3686
3687static vector signed char __ATTRS_o_ai
3688vec_vnor(vector signed char a, vector signed char b)
3689{
3690  return ~(a | b);
3691}
3692
3693static vector unsigned char __ATTRS_o_ai
3694vec_vnor(vector unsigned char a, vector unsigned char b)
3695{
3696  return ~(a | b);
3697}
3698
3699static vector bool char __ATTRS_o_ai
3700vec_vnor(vector bool char a, vector bool char b)
3701{
3702  return ~(a | b);
3703}
3704
3705static vector short __ATTRS_o_ai
3706vec_vnor(vector short a, vector short b)
3707{
3708  return ~(a | b);
3709}
3710
3711static vector unsigned short __ATTRS_o_ai
3712vec_vnor(vector unsigned short a, vector unsigned short b)
3713{
3714  return ~(a | b);
3715}
3716
3717static vector bool short __ATTRS_o_ai
3718vec_vnor(vector bool short a, vector bool short b)
3719{
3720  return ~(a | b);
3721}
3722
3723static vector int __ATTRS_o_ai
3724vec_vnor(vector int a, vector int b)
3725{
3726  return ~(a | b);
3727}
3728
3729static vector unsigned int __ATTRS_o_ai
3730vec_vnor(vector unsigned int a, vector unsigned int b)
3731{
3732  return ~(a | b);
3733}
3734
3735static vector bool int __ATTRS_o_ai
3736vec_vnor(vector bool int a, vector bool int b)
3737{
3738  return ~(a | b);
3739}
3740
3741static vector float __ATTRS_o_ai
3742vec_vnor(vector float a, vector float b)
3743{
3744  vector unsigned int res = ~((vector unsigned int)a | (vector unsigned int)b);
3745  return (vector float)res;
3746}
3747
3748/* vec_or */
3749
3750#define __builtin_altivec_vor vec_or
3751
3752static vector signed char __ATTRS_o_ai
3753vec_or(vector signed char a, vector signed char b)
3754{
3755  return a | b;
3756}
3757
3758static vector signed char __ATTRS_o_ai
3759vec_or(vector bool char a, vector signed char b)
3760{
3761  return (vector signed char)a | b;
3762}
3763
3764static vector signed char __ATTRS_o_ai
3765vec_or(vector signed char a, vector bool char b)
3766{
3767  return a | (vector signed char)b;
3768}
3769
3770static vector unsigned char __ATTRS_o_ai
3771vec_or(vector unsigned char a, vector unsigned char b)
3772{
3773  return a | b;
3774}
3775
3776static vector unsigned char __ATTRS_o_ai
3777vec_or(vector bool char a, vector unsigned char b)
3778{
3779  return (vector unsigned char)a | b;
3780}
3781
3782static vector unsigned char __ATTRS_o_ai
3783vec_or(vector unsigned char a, vector bool char b)
3784{
3785  return a | (vector unsigned char)b;
3786}
3787
3788static vector bool char __ATTRS_o_ai
3789vec_or(vector bool char a, vector bool char b)
3790{
3791  return a | b;
3792}
3793
3794static vector short __ATTRS_o_ai
3795vec_or(vector short a, vector short b)
3796{
3797  return a | b;
3798}
3799
3800static vector short __ATTRS_o_ai
3801vec_or(vector bool short a, vector short b)
3802{
3803  return (vector short)a | b;
3804}
3805
3806static vector short __ATTRS_o_ai
3807vec_or(vector short a, vector bool short b)
3808{
3809  return a | (vector short)b;
3810}
3811
3812static vector unsigned short __ATTRS_o_ai
3813vec_or(vector unsigned short a, vector unsigned short b)
3814{
3815  return a | b;
3816}
3817
3818static vector unsigned short __ATTRS_o_ai
3819vec_or(vector bool short a, vector unsigned short b)
3820{
3821  return (vector unsigned short)a | b;
3822}
3823
3824static vector unsigned short __ATTRS_o_ai
3825vec_or(vector unsigned short a, vector bool short b)
3826{
3827  return a | (vector unsigned short)b;
3828}
3829
3830static vector bool short __ATTRS_o_ai
3831vec_or(vector bool short a, vector bool short b)
3832{
3833  return a | b;
3834}
3835
3836static vector int __ATTRS_o_ai
3837vec_or(vector int a, vector int b)
3838{
3839  return a | b;
3840}
3841
3842static vector int __ATTRS_o_ai
3843vec_or(vector bool int a, vector int b)
3844{
3845  return (vector int)a | b;
3846}
3847
3848static vector int __ATTRS_o_ai
3849vec_or(vector int a, vector bool int b)
3850{
3851  return a | (vector int)b;
3852}
3853
3854static vector unsigned int __ATTRS_o_ai
3855vec_or(vector unsigned int a, vector unsigned int b)
3856{
3857  return a | b;
3858}
3859
3860static vector unsigned int __ATTRS_o_ai
3861vec_or(vector bool int a, vector unsigned int b)
3862{
3863  return (vector unsigned int)a | b;
3864}
3865
3866static vector unsigned int __ATTRS_o_ai
3867vec_or(vector unsigned int a, vector bool int b)
3868{
3869  return a | (vector unsigned int)b;
3870}
3871
3872static vector bool int __ATTRS_o_ai
3873vec_or(vector bool int a, vector bool int b)
3874{
3875  return a | b;
3876}
3877
3878static vector float __ATTRS_o_ai
3879vec_or(vector float a, vector float b)
3880{
3881  vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b;
3882  return (vector float)res;
3883}
3884
3885static vector float __ATTRS_o_ai
3886vec_or(vector bool int a, vector float b)
3887{
3888  vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b;
3889  return (vector float)res;
3890}
3891
3892static vector float __ATTRS_o_ai
3893vec_or(vector float a, vector bool int b)
3894{
3895  vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b;
3896  return (vector float)res;
3897}
3898
3899/* vec_vor */
3900
3901static vector signed char __ATTRS_o_ai
3902vec_vor(vector signed char a, vector signed char b)
3903{
3904  return a | b;
3905}
3906
3907static vector signed char __ATTRS_o_ai
3908vec_vor(vector bool char a, vector signed char b)
3909{
3910  return (vector signed char)a | b;
3911}
3912
3913static vector signed char __ATTRS_o_ai
3914vec_vor(vector signed char a, vector bool char b)
3915{
3916  return a | (vector signed char)b;
3917}
3918
3919static vector unsigned char __ATTRS_o_ai
3920vec_vor(vector unsigned char a, vector unsigned char b)
3921{
3922  return a | b;
3923}
3924
3925static vector unsigned char __ATTRS_o_ai
3926vec_vor(vector bool char a, vector unsigned char b)
3927{
3928  return (vector unsigned char)a | b;
3929}
3930
3931static vector unsigned char __ATTRS_o_ai
3932vec_vor(vector unsigned char a, vector bool char b)
3933{
3934  return a | (vector unsigned char)b;
3935}
3936
3937static vector bool char __ATTRS_o_ai
3938vec_vor(vector bool char a, vector bool char b)
3939{
3940  return a | b;
3941}
3942
3943static vector short __ATTRS_o_ai
3944vec_vor(vector short a, vector short b)
3945{
3946  return a | b;
3947}
3948
3949static vector short __ATTRS_o_ai
3950vec_vor(vector bool short a, vector short b)
3951{
3952  return (vector short)a | b;
3953}
3954
3955static vector short __ATTRS_o_ai
3956vec_vor(vector short a, vector bool short b)
3957{
3958  return a | (vector short)b;
3959}
3960
3961static vector unsigned short __ATTRS_o_ai
3962vec_vor(vector unsigned short a, vector unsigned short b)
3963{
3964  return a | b;
3965}
3966
3967static vector unsigned short __ATTRS_o_ai
3968vec_vor(vector bool short a, vector unsigned short b)
3969{
3970  return (vector unsigned short)a | b;
3971}
3972
3973static vector unsigned short __ATTRS_o_ai
3974vec_vor(vector unsigned short a, vector bool short b)
3975{
3976  return a | (vector unsigned short)b;
3977}
3978
3979static vector bool short __ATTRS_o_ai
3980vec_vor(vector bool short a, vector bool short b)
3981{
3982  return a | b;
3983}
3984
3985static vector int __ATTRS_o_ai
3986vec_vor(vector int a, vector int b)
3987{
3988  return a | b;
3989}
3990
3991static vector int __ATTRS_o_ai
3992vec_vor(vector bool int a, vector int b)
3993{
3994  return (vector int)a | b;
3995}
3996
3997static vector int __ATTRS_o_ai
3998vec_vor(vector int a, vector bool int b)
3999{
4000  return a | (vector int)b;
4001}
4002
4003static vector unsigned int __ATTRS_o_ai
4004vec_vor(vector unsigned int a, vector unsigned int b)
4005{
4006  return a | b;
4007}
4008
4009static vector unsigned int __ATTRS_o_ai
4010vec_vor(vector bool int a, vector unsigned int b)
4011{
4012  return (vector unsigned int)a | b;
4013}
4014
4015static vector unsigned int __ATTRS_o_ai
4016vec_vor(vector unsigned int a, vector bool int b)
4017{
4018  return a | (vector unsigned int)b;
4019}
4020
4021static vector bool int __ATTRS_o_ai
4022vec_vor(vector bool int a, vector bool int b)
4023{
4024  return a | b;
4025}
4026
4027static vector float __ATTRS_o_ai
4028vec_vor(vector float a, vector float b)
4029{
4030  vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b;
4031  return (vector float)res;
4032}
4033
4034static vector float __ATTRS_o_ai
4035vec_vor(vector bool int a, vector float b)
4036{
4037  vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b;
4038  return (vector float)res;
4039}
4040
4041static vector float __ATTRS_o_ai
4042vec_vor(vector float a, vector bool int b)
4043{
4044  vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b;
4045  return (vector float)res;
4046}
4047
4048/* vec_pack */
4049
4050static vector signed char __ATTRS_o_ai
4051vec_pack(vector signed short a, vector signed short b)
4052{
4053  return (vector signed char)vec_perm(a, b, (vector unsigned char)
4054    (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4055     0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4056}
4057
4058static vector unsigned char __ATTRS_o_ai
4059vec_pack(vector unsigned short a, vector unsigned short b)
4060{
4061  return (vector unsigned char)vec_perm(a, b, (vector unsigned char)
4062    (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4063     0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4064}
4065
4066static vector bool char __ATTRS_o_ai
4067vec_pack(vector bool short a, vector bool short b)
4068{
4069  return (vector bool char)vec_perm(a, b, (vector unsigned char)
4070    (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4071     0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4072}
4073
4074static vector short __ATTRS_o_ai
4075vec_pack(vector int a, vector int b)
4076{
4077  return (vector short)vec_perm(a, b, (vector unsigned char)
4078    (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4079     0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4080}
4081
4082static vector unsigned short __ATTRS_o_ai
4083vec_pack(vector unsigned int a, vector unsigned int b)
4084{
4085  return (vector unsigned short)vec_perm(a, b, (vector unsigned char)
4086    (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4087     0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4088}
4089
4090static vector bool short __ATTRS_o_ai
4091vec_pack(vector bool int a, vector bool int b)
4092{
4093  return (vector bool short)vec_perm(a, b, (vector unsigned char)
4094    (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4095     0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4096}
4097
4098/* vec_vpkuhum */
4099
4100#define __builtin_altivec_vpkuhum vec_vpkuhum
4101
4102static vector signed char __ATTRS_o_ai
4103vec_vpkuhum(vector signed short a, vector signed short b)
4104{
4105  return (vector signed char)vec_perm(a, b, (vector unsigned char)
4106    (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4107     0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4108}
4109
4110static vector unsigned char __ATTRS_o_ai
4111vec_vpkuhum(vector unsigned short a, vector unsigned short b)
4112{
4113  return (vector unsigned char)vec_perm(a, b, (vector unsigned char)
4114    (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4115     0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4116}
4117
4118static vector bool char __ATTRS_o_ai
4119vec_vpkuhum(vector bool short a, vector bool short b)
4120{
4121  return (vector bool char)vec_perm(a, b, (vector unsigned char)
4122    (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4123     0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4124}
4125
4126/* vec_vpkuwum */
4127
4128#define __builtin_altivec_vpkuwum vec_vpkuwum
4129
4130static vector short __ATTRS_o_ai
4131vec_vpkuwum(vector int a, vector int b)
4132{
4133  return (vector short)vec_perm(a, b, (vector unsigned char)
4134    (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4135     0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4136}
4137
4138static vector unsigned short __ATTRS_o_ai
4139vec_vpkuwum(vector unsigned int a, vector unsigned int b)
4140{
4141  return (vector unsigned short)vec_perm(a, b, (vector unsigned char)
4142    (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4143     0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4144}
4145
4146static vector bool short __ATTRS_o_ai
4147vec_vpkuwum(vector bool int a, vector bool int b)
4148{
4149  return (vector bool short)vec_perm(a, b, (vector unsigned char)
4150    (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4151     0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4152}
4153
4154/* vec_packpx */
4155
4156static vector pixel __attribute__((__always_inline__))
4157vec_packpx(vector unsigned int a, vector unsigned int b)
4158{
4159  return (vector pixel)__builtin_altivec_vpkpx(a, b);
4160}
4161
4162/* vec_vpkpx */
4163
4164static vector pixel __attribute__((__always_inline__))
4165vec_vpkpx(vector unsigned int a, vector unsigned int b)
4166{
4167  return (vector pixel)__builtin_altivec_vpkpx(a, b);
4168}
4169
4170/* vec_packs */
4171
4172static vector signed char __ATTRS_o_ai
4173vec_packs(vector short a, vector short b)
4174{
4175  return __builtin_altivec_vpkshss(a, b);
4176}
4177
4178static vector unsigned char __ATTRS_o_ai
4179vec_packs(vector unsigned short a, vector unsigned short b)
4180{
4181  return __builtin_altivec_vpkuhus(a, b);
4182}
4183
4184static vector signed short __ATTRS_o_ai
4185vec_packs(vector int a, vector int b)
4186{
4187  return __builtin_altivec_vpkswss(a, b);
4188}
4189
4190static vector unsigned short __ATTRS_o_ai
4191vec_packs(vector unsigned int a, vector unsigned int b)
4192{
4193  return __builtin_altivec_vpkuwus(a, b);
4194}
4195
4196/* vec_vpkshss */
4197
4198static vector signed char __attribute__((__always_inline__))
4199vec_vpkshss(vector short a, vector short b)
4200{
4201  return __builtin_altivec_vpkshss(a, b);
4202}
4203
4204/* vec_vpkuhus */
4205
4206static vector unsigned char __attribute__((__always_inline__))
4207vec_vpkuhus(vector unsigned short a, vector unsigned short b)
4208{
4209  return __builtin_altivec_vpkuhus(a, b);
4210}
4211
4212/* vec_vpkswss */
4213
4214static vector signed short __attribute__((__always_inline__))
4215vec_vpkswss(vector int a, vector int b)
4216{
4217  return __builtin_altivec_vpkswss(a, b);
4218}
4219
4220/* vec_vpkuwus */
4221
4222static vector unsigned short __attribute__((__always_inline__))
4223vec_vpkuwus(vector unsigned int a, vector unsigned int b)
4224{
4225  return __builtin_altivec_vpkuwus(a, b);
4226}
4227
4228/* vec_packsu */
4229
4230static vector unsigned char __ATTRS_o_ai
4231vec_packsu(vector short a, vector short b)
4232{
4233  return __builtin_altivec_vpkshus(a, b);
4234}
4235
4236static vector unsigned char __ATTRS_o_ai
4237vec_packsu(vector unsigned short a, vector unsigned short b)
4238{
4239  return __builtin_altivec_vpkuhus(a, b);
4240}
4241
4242static vector unsigned short __ATTRS_o_ai
4243vec_packsu(vector int a, vector int b)
4244{
4245  return __builtin_altivec_vpkswus(a, b);
4246}
4247
4248static vector unsigned short __ATTRS_o_ai
4249vec_packsu(vector unsigned int a, vector unsigned int b)
4250{
4251  return __builtin_altivec_vpkuwus(a, b);
4252}
4253
4254/* vec_vpkshus */
4255
4256static vector unsigned char __ATTRS_o_ai
4257vec_vpkshus(vector short a, vector short b)
4258{
4259  return __builtin_altivec_vpkshus(a, b);
4260}
4261
4262static vector unsigned char __ATTRS_o_ai
4263vec_vpkshus(vector unsigned short a, vector unsigned short b)
4264{
4265  return __builtin_altivec_vpkuhus(a, b);
4266}
4267
4268/* vec_vpkswus */
4269
4270static vector unsigned short __ATTRS_o_ai
4271vec_vpkswus(vector int a, vector int b)
4272{
4273  return __builtin_altivec_vpkswus(a, b);
4274}
4275
4276static vector unsigned short __ATTRS_o_ai
4277vec_vpkswus(vector unsigned int a, vector unsigned int b)
4278{
4279  return __builtin_altivec_vpkuwus(a, b);
4280}
4281
4282/* vec_perm */
4283
4284vector signed char __ATTRS_o_ai
4285vec_perm(vector signed char a, vector signed char b, vector unsigned char c)
4286{
4287  return (vector signed char)
4288           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4289}
4290
4291vector unsigned char __ATTRS_o_ai
4292vec_perm(vector unsigned char a,
4293         vector unsigned char b,
4294         vector unsigned char c)
4295{
4296  return (vector unsigned char)
4297           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4298}
4299
4300vector bool char __ATTRS_o_ai
4301vec_perm(vector bool char a, vector bool char b, vector unsigned char c)
4302{
4303  return (vector bool char)
4304           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4305}
4306
4307vector short __ATTRS_o_ai
4308vec_perm(vector short a, vector short b, vector unsigned char c)
4309{
4310  return (vector short)
4311           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4312}
4313
4314vector unsigned short __ATTRS_o_ai
4315vec_perm(vector unsigned short a,
4316         vector unsigned short b,
4317         vector unsigned char c)
4318{
4319  return (vector unsigned short)
4320           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4321}
4322
4323vector bool short __ATTRS_o_ai
4324vec_perm(vector bool short a, vector bool short b, vector unsigned char c)
4325{
4326  return (vector bool short)
4327           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4328}
4329
4330vector pixel __ATTRS_o_ai
4331vec_perm(vector pixel a, vector pixel b, vector unsigned char c)
4332{
4333  return (vector pixel)
4334           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4335}
4336
4337vector int __ATTRS_o_ai
4338vec_perm(vector int a, vector int b, vector unsigned char c)
4339{
4340  return (vector int)__builtin_altivec_vperm_4si(a, b, c);
4341}
4342
4343vector unsigned int __ATTRS_o_ai
4344vec_perm(vector unsigned int a, vector unsigned int b, vector unsigned char c)
4345{
4346  return (vector unsigned int)
4347           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4348}
4349
4350vector bool int __ATTRS_o_ai
4351vec_perm(vector bool int a, vector bool int b, vector unsigned char c)
4352{
4353  return (vector bool int)
4354           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4355}
4356
4357vector float __ATTRS_o_ai
4358vec_perm(vector float a, vector float b, vector unsigned char c)
4359{
4360  return (vector float)
4361           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4362}
4363
4364/* vec_vperm */
4365
4366vector signed char __ATTRS_o_ai
4367vec_vperm(vector signed char a, vector signed char b, vector unsigned char c)
4368{
4369  return (vector signed char)
4370           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4371}
4372
4373vector unsigned char __ATTRS_o_ai
4374vec_vperm(vector unsigned char a,
4375          vector unsigned char b,
4376          vector unsigned char c)
4377{
4378  return (vector unsigned char)
4379           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4380}
4381
4382vector bool char __ATTRS_o_ai
4383vec_vperm(vector bool char a, vector bool char b, vector unsigned char c)
4384{
4385  return (vector bool char)
4386           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4387}
4388
4389vector short __ATTRS_o_ai
4390vec_vperm(vector short a, vector short b, vector unsigned char c)
4391{
4392  return (vector short)
4393           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4394}
4395
4396vector unsigned short __ATTRS_o_ai
4397vec_vperm(vector unsigned short a,
4398          vector unsigned short b,
4399          vector unsigned char c)
4400{
4401  return (vector unsigned short)
4402           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4403}
4404
4405vector bool short __ATTRS_o_ai
4406vec_vperm(vector bool short a, vector bool short b, vector unsigned char c)
4407{
4408  return (vector bool short)
4409           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4410}
4411
4412vector pixel __ATTRS_o_ai
4413vec_vperm(vector pixel a, vector pixel b, vector unsigned char c)
4414{
4415  return (vector pixel)
4416           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4417}
4418
4419vector int __ATTRS_o_ai
4420vec_vperm(vector int a, vector int b, vector unsigned char c)
4421{
4422  return (vector int)__builtin_altivec_vperm_4si(a, b, c);
4423}
4424
4425vector unsigned int __ATTRS_o_ai
4426vec_vperm(vector unsigned int a, vector unsigned int b, vector unsigned char c)
4427{
4428  return (vector unsigned int)
4429           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4430}
4431
4432vector bool int __ATTRS_o_ai
4433vec_vperm(vector bool int a, vector bool int b, vector unsigned char c)
4434{
4435  return (vector bool int)
4436           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4437}
4438
4439vector float __ATTRS_o_ai
4440vec_vperm(vector float a, vector float b, vector unsigned char c)
4441{
4442  return (vector float)
4443           __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c);
4444}
4445
4446/* vec_re */
4447
4448vector float __attribute__((__always_inline__))
4449vec_re(vector float a)
4450{
4451  return __builtin_altivec_vrefp(a);
4452}
4453
4454/* vec_vrefp */
4455
4456vector float __attribute__((__always_inline__))
4457vec_vrefp(vector float a)
4458{
4459  return __builtin_altivec_vrefp(a);
4460}
4461
4462/* vec_rl */
4463
4464static vector signed char __ATTRS_o_ai
4465vec_rl(vector signed char a, vector unsigned char b)
4466{
4467  return (vector signed char)__builtin_altivec_vrlb((vector char)a, b);
4468}
4469
4470static vector unsigned char __ATTRS_o_ai
4471vec_rl(vector unsigned char a, vector unsigned char b)
4472{
4473  return (vector unsigned char)__builtin_altivec_vrlb((vector char)a, b);
4474}
4475
4476static vector short __ATTRS_o_ai
4477vec_rl(vector short a, vector unsigned short b)
4478{
4479  return __builtin_altivec_vrlh(a, b);
4480}
4481
4482static vector unsigned short __ATTRS_o_ai
4483vec_rl(vector unsigned short a, vector unsigned short b)
4484{
4485  return (vector unsigned short)__builtin_altivec_vrlh((vector short)a, b);
4486}
4487
4488static vector int __ATTRS_o_ai
4489vec_rl(vector int a, vector unsigned int b)
4490{
4491  return __builtin_altivec_vrlw(a, b);
4492}
4493
4494static vector unsigned int __ATTRS_o_ai
4495vec_rl(vector unsigned int a, vector unsigned int b)
4496{
4497  return (vector unsigned int)__builtin_altivec_vrlw((vector int)a, b);
4498}
4499
4500/* vec_vrlb */
4501
4502static vector signed char __ATTRS_o_ai
4503vec_vrlb(vector signed char a, vector unsigned char b)
4504{
4505  return (vector signed char)__builtin_altivec_vrlb((vector char)a, b);
4506}
4507
4508static vector unsigned char __ATTRS_o_ai
4509vec_vrlb(vector unsigned char a, vector unsigned char b)
4510{
4511  return (vector unsigned char)__builtin_altivec_vrlb((vector char)a, b);
4512}
4513
4514/* vec_vrlh */
4515
4516static vector short __ATTRS_o_ai
4517vec_vrlh(vector short a, vector unsigned short b)
4518{
4519  return __builtin_altivec_vrlh(a, b);
4520}
4521
4522static vector unsigned short __ATTRS_o_ai
4523vec_vrlh(vector unsigned short a, vector unsigned short b)
4524{
4525  return (vector unsigned short)__builtin_altivec_vrlh((vector short)a, b);
4526}
4527
4528/* vec_vrlw */
4529
4530static vector int __ATTRS_o_ai
4531vec_vrlw(vector int a, vector unsigned int b)
4532{
4533  return __builtin_altivec_vrlw(a, b);
4534}
4535
4536static vector unsigned int __ATTRS_o_ai
4537vec_vrlw(vector unsigned int a, vector unsigned int b)
4538{
4539  return (vector unsigned int)__builtin_altivec_vrlw((vector int)a, b);
4540}
4541
4542/* vec_round */
4543
4544static vector float __attribute__((__always_inline__))
4545vec_round(vector float a)
4546{
4547  return __builtin_altivec_vrfin(a);
4548}
4549
4550/* vec_vrfin */
4551
4552static vector float __attribute__((__always_inline__))
4553vec_vrfin(vector float a)
4554{
4555  return __builtin_altivec_vrfin(a);
4556}
4557
4558/* vec_rsqrte */
4559
4560static __vector float __attribute__((__always_inline__))
4561vec_rsqrte(vector float a)
4562{
4563  return __builtin_altivec_vrsqrtefp(a);
4564}
4565
4566/* vec_vrsqrtefp */
4567
4568static __vector float __attribute__((__always_inline__))
4569vec_vrsqrtefp(vector float a)
4570{
4571  return __builtin_altivec_vrsqrtefp(a);
4572}
4573
4574/* vec_sel */
4575
4576#define __builtin_altivec_vsel_4si vec_sel
4577
4578static vector signed char __ATTRS_o_ai
4579vec_sel(vector signed char a, vector signed char b, vector unsigned char c)
4580{
4581  return (a & ~(vector signed char)c) | (b & (vector signed char)c);
4582}
4583
4584static vector signed char __ATTRS_o_ai
4585vec_sel(vector signed char a, vector signed char b, vector bool char c)
4586{
4587  return (a & ~(vector signed char)c) | (b & (vector signed char)c);
4588}
4589
4590static vector unsigned char __ATTRS_o_ai
4591vec_sel(vector unsigned char a, vector unsigned char b, vector unsigned char c)
4592{
4593  return (a & ~c) | (b & c);
4594}
4595
4596static vector unsigned char __ATTRS_o_ai
4597vec_sel(vector unsigned char a, vector unsigned char b, vector bool char c)
4598{
4599  return (a & ~(vector unsigned char)c) | (b & (vector unsigned char)c);
4600}
4601
4602static vector bool char __ATTRS_o_ai
4603vec_sel(vector bool char a, vector bool char b, vector unsigned char c)
4604{
4605  return (a & ~(vector bool char)c) | (b & (vector bool char)c);
4606}
4607
4608static vector bool char __ATTRS_o_ai
4609vec_sel(vector bool char a, vector bool char b, vector bool char c)
4610{
4611  return (a & ~c) | (b & c);
4612}
4613
4614static vector short __ATTRS_o_ai
4615vec_sel(vector short a, vector short b, vector unsigned short c)
4616{
4617  return (a & ~(vector short)c) | (b & (vector short)c);
4618}
4619
4620static vector short __ATTRS_o_ai
4621vec_sel(vector short a, vector short b, vector bool short c)
4622{
4623  return (a & ~(vector short)c) | (b & (vector short)c);
4624}
4625
4626static vector unsigned short __ATTRS_o_ai
4627vec_sel(vector unsigned short a,
4628        vector unsigned short b,
4629        vector unsigned short c)
4630{
4631  return (a & ~c) | (b & c);
4632}
4633
4634static vector unsigned short __ATTRS_o_ai
4635vec_sel(vector unsigned short a, vector unsigned short b, vector bool short c)
4636{
4637  return (a & ~(vector unsigned short)c) | (b & (vector unsigned short)c);
4638}
4639
4640static vector bool short __ATTRS_o_ai
4641vec_sel(vector bool short a, vector bool short b, vector unsigned short c)
4642{
4643  return (a & ~(vector bool short)c) | (b & (vector bool short)c);
4644}
4645
4646static vector bool short __ATTRS_o_ai
4647vec_sel(vector bool short a, vector bool short b, vector bool short c)
4648{
4649  return (a & ~c) | (b & c);
4650}
4651
4652static vector int __ATTRS_o_ai
4653vec_sel(vector int a, vector int b, vector unsigned int c)
4654{
4655  return (a & ~(vector int)c) | (b & (vector int)c);
4656}
4657
4658static vector int __ATTRS_o_ai
4659vec_sel(vector int a, vector int b, vector bool int c)
4660{
4661  return (a & ~(vector int)c) | (b & (vector int)c);
4662}
4663
4664static vector unsigned int __ATTRS_o_ai
4665vec_sel(vector unsigned int a, vector unsigned int b, vector unsigned int c)
4666{
4667  return (a & ~c) | (b & c);
4668}
4669
4670static vector unsigned int __ATTRS_o_ai
4671vec_sel(vector unsigned int a, vector unsigned int b, vector bool int c)
4672{
4673  return (a & ~(vector unsigned int)c) | (b & (vector unsigned int)c);
4674}
4675
4676static vector bool int __ATTRS_o_ai
4677vec_sel(vector bool int a, vector bool int b, vector unsigned int c)
4678{
4679  return (a & ~(vector bool int)c) | (b & (vector bool int)c);
4680}
4681
4682static vector bool int __ATTRS_o_ai
4683vec_sel(vector bool int a, vector bool int b, vector bool int c)
4684{
4685  return (a & ~c) | (b & c);
4686}
4687
4688static vector float __ATTRS_o_ai
4689vec_sel(vector float a, vector float b, vector unsigned int c)
4690{
4691  vector int res = ((vector int)a & ~(vector int)c)
4692                   | ((vector int)b & (vector int)c);
4693  return (vector float)res;
4694}
4695
4696static vector float __ATTRS_o_ai
4697vec_sel(vector float a, vector float b, vector bool int c)
4698{
4699  vector int res = ((vector int)a & ~(vector int)c)
4700                   | ((vector int)b & (vector int)c);
4701  return (vector float)res;
4702}
4703
4704/* vec_vsel */
4705
4706static vector signed char __ATTRS_o_ai
4707vec_vsel(vector signed char a, vector signed char b, vector unsigned char c)
4708{
4709  return (a & ~(vector signed char)c) | (b & (vector signed char)c);
4710}
4711
4712static vector signed char __ATTRS_o_ai
4713vec_vsel(vector signed char a, vector signed char b, vector bool char c)
4714{
4715  return (a & ~(vector signed char)c) | (b & (vector signed char)c);
4716}
4717
4718static vector unsigned char __ATTRS_o_ai
4719vec_vsel(vector unsigned char a, vector unsigned char b, vector unsigned char c)
4720{
4721  return (a & ~c) | (b & c);
4722}
4723
4724static vector unsigned char __ATTRS_o_ai
4725vec_vsel(vector unsigned char a, vector unsigned char b, vector bool char c)
4726{
4727  return (a & ~(vector unsigned char)c) | (b & (vector unsigned char)c);
4728}
4729
4730static vector bool char __ATTRS_o_ai
4731vec_vsel(vector bool char a, vector bool char b, vector unsigned char c)
4732{
4733  return (a & ~(vector bool char)c) | (b & (vector bool char)c);
4734}
4735
4736static vector bool char __ATTRS_o_ai
4737vec_vsel(vector bool char a, vector bool char b, vector bool char c)
4738{
4739  return (a & ~c) | (b & c);
4740}
4741
4742static vector short __ATTRS_o_ai
4743vec_vsel(vector short a, vector short b, vector unsigned short c)
4744{
4745  return (a & ~(vector short)c) | (b & (vector short)c);
4746}
4747
4748static vector short __ATTRS_o_ai
4749vec_vsel(vector short a, vector short b, vector bool short c)
4750{
4751  return (a & ~(vector short)c) | (b & (vector short)c);
4752}
4753
4754static vector unsigned short __ATTRS_o_ai
4755vec_vsel(vector unsigned short a,
4756         vector unsigned short b,
4757         vector unsigned short c)
4758{
4759  return (a & ~c) | (b & c);
4760}
4761
4762static vector unsigned short __ATTRS_o_ai
4763vec_vsel(vector unsigned short a, vector unsigned short b, vector bool short c)
4764{
4765  return (a & ~(vector unsigned short)c) | (b & (vector unsigned short)c);
4766}
4767
4768static vector bool short __ATTRS_o_ai
4769vec_vsel(vector bool short a, vector bool short b, vector unsigned short c)
4770{
4771  return (a & ~(vector bool short)c) | (b & (vector bool short)c);
4772}
4773
4774static vector bool short __ATTRS_o_ai
4775vec_vsel(vector bool short a, vector bool short b, vector bool short c)
4776{
4777  return (a & ~c) | (b & c);
4778}
4779
4780static vector int __ATTRS_o_ai
4781vec_vsel(vector int a, vector int b, vector unsigned int c)
4782{
4783  return (a & ~(vector int)c) | (b & (vector int)c);
4784}
4785
4786static vector int __ATTRS_o_ai
4787vec_vsel(vector int a, vector int b, vector bool int c)
4788{
4789  return (a & ~(vector int)c) | (b & (vector int)c);
4790}
4791
4792static vector unsigned int __ATTRS_o_ai
4793vec_vsel(vector unsigned int a, vector unsigned int b, vector unsigned int c)
4794{
4795  return (a & ~c) | (b & c);
4796}
4797
4798static vector unsigned int __ATTRS_o_ai
4799vec_vsel(vector unsigned int a, vector unsigned int b, vector bool int c)
4800{
4801  return (a & ~(vector unsigned int)c) | (b & (vector unsigned int)c);
4802}
4803
4804static vector bool int __ATTRS_o_ai
4805vec_vsel(vector bool int a, vector bool int b, vector unsigned int c)
4806{
4807  return (a & ~(vector bool int)c) | (b & (vector bool int)c);
4808}
4809
4810static vector bool int __ATTRS_o_ai
4811vec_vsel(vector bool int a, vector bool int b, vector bool int c)
4812{
4813  return (a & ~c) | (b & c);
4814}
4815
4816static vector float __ATTRS_o_ai
4817vec_vsel(vector float a, vector float b, vector unsigned int c)
4818{
4819  vector int res = ((vector int)a & ~(vector int)c)
4820                   | ((vector int)b & (vector int)c);
4821  return (vector float)res;
4822}
4823
4824static vector float __ATTRS_o_ai
4825vec_vsel(vector float a, vector float b, vector bool int c)
4826{
4827  vector int res = ((vector int)a & ~(vector int)c)
4828                   | ((vector int)b & (vector int)c);
4829  return (vector float)res;
4830}
4831
4832/* vec_sl */
4833
4834static vector signed char __ATTRS_o_ai
4835vec_sl(vector signed char a, vector unsigned char b)
4836{
4837  return a << (vector signed char)b;
4838}
4839
4840static vector unsigned char __ATTRS_o_ai
4841vec_sl(vector unsigned char a, vector unsigned char b)
4842{
4843  return a << b;
4844}
4845
4846static vector short __ATTRS_o_ai
4847vec_sl(vector short a, vector unsigned short b)
4848{
4849  return a << (vector short)b;
4850}
4851
4852static vector unsigned short __ATTRS_o_ai
4853vec_sl(vector unsigned short a, vector unsigned short b)
4854{
4855  return a << b;
4856}
4857
4858static vector int __ATTRS_o_ai
4859vec_sl(vector int a, vector unsigned int b)
4860{
4861  return a << (vector int)b;
4862}
4863
4864static vector unsigned int __ATTRS_o_ai
4865vec_sl(vector unsigned int a, vector unsigned int b)
4866{
4867  return a << b;
4868}
4869
4870/* vec_vslb */
4871
4872#define __builtin_altivec_vslb vec_vslb
4873
4874static vector signed char __ATTRS_o_ai
4875vec_vslb(vector signed char a, vector unsigned char b)
4876{
4877  return vec_sl(a, b);
4878}
4879
4880static vector unsigned char __ATTRS_o_ai
4881vec_vslb(vector unsigned char a, vector unsigned char b)
4882{
4883  return vec_sl(a, b);
4884}
4885
4886/* vec_vslh */
4887
4888#define __builtin_altivec_vslh vec_vslh
4889
4890static vector short __ATTRS_o_ai
4891vec_vslh(vector short a, vector unsigned short b)
4892{
4893  return vec_sl(a, b);
4894}
4895
4896static vector unsigned short __ATTRS_o_ai
4897vec_vslh(vector unsigned short a, vector unsigned short b)
4898{
4899  return vec_sl(a, b);
4900}
4901
4902/* vec_vslw */
4903
4904#define __builtin_altivec_vslw vec_vslw
4905
4906static vector int __ATTRS_o_ai
4907vec_vslw(vector int a, vector unsigned int b)
4908{
4909  return vec_sl(a, b);
4910}
4911
4912static vector unsigned int __ATTRS_o_ai
4913vec_vslw(vector unsigned int a, vector unsigned int b)
4914{
4915  return vec_sl(a, b);
4916}
4917
4918/* vec_sld */
4919
4920#define __builtin_altivec_vsldoi_4si vec_sld
4921
4922static vector signed char __ATTRS_o_ai
4923vec_sld(vector signed char a, vector signed char b, unsigned char c)
4924{
4925  return vec_perm(a, b, (vector unsigned char)
4926    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
4927     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
4928}
4929
4930static vector unsigned char __ATTRS_o_ai
4931vec_sld(vector unsigned char a, vector unsigned char b, unsigned char c)
4932{
4933  return vec_perm(a, b, (vector unsigned char)
4934    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
4935     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
4936}
4937
4938static vector short __ATTRS_o_ai
4939vec_sld(vector short a, vector short b, unsigned char c)
4940{
4941  return vec_perm(a, b, (vector unsigned char)
4942    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
4943     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
4944}
4945
4946static vector unsigned short __ATTRS_o_ai
4947vec_sld(vector unsigned short a, vector unsigned short b, unsigned char c)
4948{
4949  return vec_perm(a, b, (vector unsigned char)
4950    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
4951     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
4952}
4953
4954static vector pixel __ATTRS_o_ai
4955vec_sld(vector pixel a, vector pixel b, unsigned char c)
4956{
4957  return vec_perm(a, b, (vector unsigned char)
4958    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
4959     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
4960}
4961
4962static vector int __ATTRS_o_ai
4963vec_sld(vector int a, vector int b, unsigned char c)
4964{
4965  return vec_perm(a, b, (vector unsigned char)
4966    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
4967     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
4968}
4969
4970static vector unsigned int __ATTRS_o_ai
4971vec_sld(vector unsigned int a, vector unsigned int b, unsigned char c)
4972{
4973  return vec_perm(a, b, (vector unsigned char)
4974    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
4975     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
4976}
4977
4978static vector float __ATTRS_o_ai
4979vec_sld(vector float a, vector float b, unsigned char c)
4980{
4981  return vec_perm(a, b, (vector unsigned char)
4982    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
4983     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
4984}
4985
4986/* vec_vsldoi */
4987
4988static vector signed char __ATTRS_o_ai
4989vec_vsldoi(vector signed char a, vector signed char b, unsigned char c)
4990{
4991  return vec_perm(a, b, (vector unsigned char)
4992    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
4993     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
4994}
4995
4996static vector unsigned char __ATTRS_o_ai
4997vec_vsldoi(vector unsigned char a, vector unsigned char b, unsigned char c)
4998{
4999  return vec_perm(a, b, (vector unsigned char)
5000    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
5001     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
5002}
5003
5004static vector short __ATTRS_o_ai
5005vec_vsldoi(vector short a, vector short b, unsigned char c)
5006{
5007  return vec_perm(a, b, (vector unsigned char)
5008    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
5009     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
5010}
5011
5012static vector unsigned short __ATTRS_o_ai
5013vec_vsldoi(vector unsigned short a, vector unsigned short b, unsigned char c)
5014{
5015  return vec_perm(a, b, (vector unsigned char)
5016    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
5017     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
5018}
5019
5020static vector pixel __ATTRS_o_ai
5021vec_vsldoi(vector pixel a, vector pixel b, unsigned char c)
5022{
5023  return vec_perm(a, b, (vector unsigned char)
5024    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
5025     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
5026}
5027
5028static vector int __ATTRS_o_ai
5029vec_vsldoi(vector int a, vector int b, unsigned char c)
5030{
5031  return vec_perm(a, b, (vector unsigned char)
5032    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
5033     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
5034}
5035
5036static vector unsigned int __ATTRS_o_ai
5037vec_vsldoi(vector unsigned int a, vector unsigned int b, unsigned char c)
5038{
5039  return vec_perm(a, b, (vector unsigned char)
5040    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
5041     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
5042}
5043
5044static vector float __ATTRS_o_ai
5045vec_vsldoi(vector float a, vector float b, unsigned char c)
5046{
5047  return vec_perm(a, b, (vector unsigned char)
5048    (c,   c+1, c+2,  c+3,  c+4,  c+5,  c+6,  c+7,
5049     c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15));
5050}
5051
5052/* vec_sll */
5053
5054static vector signed char __ATTRS_o_ai
5055vec_sll(vector signed char a, vector unsigned char b)
5056{
5057  return (vector signed char)
5058           __builtin_altivec_vsl((vector int)a, (vector int)b);
5059}
5060
5061static vector signed char __ATTRS_o_ai
5062vec_sll(vector signed char a, vector unsigned short b)
5063{
5064  return (vector signed char)
5065           __builtin_altivec_vsl((vector int)a, (vector int)b);
5066}
5067
5068static vector signed char __ATTRS_o_ai
5069vec_sll(vector signed char a, vector unsigned int b)
5070{
5071  return (vector signed char)
5072           __builtin_altivec_vsl((vector int)a, (vector int)b);
5073}
5074
5075static vector unsigned char __ATTRS_o_ai
5076vec_sll(vector unsigned char a, vector unsigned char b)
5077{
5078  return (vector unsigned char)
5079           __builtin_altivec_vsl((vector int)a, (vector int)b);
5080}
5081
5082static vector unsigned char __ATTRS_o_ai
5083vec_sll(vector unsigned char a, vector unsigned short b)
5084{
5085  return (vector unsigned char)
5086           __builtin_altivec_vsl((vector int)a, (vector int)b);
5087}
5088
5089static vector unsigned char __ATTRS_o_ai
5090vec_sll(vector unsigned char a, vector unsigned int b)
5091{
5092  return (vector unsigned char)
5093           __builtin_altivec_vsl((vector int)a, (vector int)b);
5094}
5095
5096static vector bool char __ATTRS_o_ai
5097vec_sll(vector bool char a, vector unsigned char b)
5098{
5099  return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b);
5100}
5101
5102static vector bool char __ATTRS_o_ai
5103vec_sll(vector bool char a, vector unsigned short b)
5104{
5105  return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b);
5106}
5107
5108static vector bool char __ATTRS_o_ai
5109vec_sll(vector bool char a, vector unsigned int b)
5110{
5111  return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b);
5112}
5113
5114static vector short __ATTRS_o_ai
5115vec_sll(vector short a, vector unsigned char b)
5116{
5117  return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5118}
5119
5120static vector short __ATTRS_o_ai
5121vec_sll(vector short a, vector unsigned short b)
5122{
5123  return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5124}
5125
5126static vector short __ATTRS_o_ai
5127vec_sll(vector short a, vector unsigned int b)
5128{
5129  return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5130}
5131
5132static vector unsigned short __ATTRS_o_ai
5133vec_sll(vector unsigned short a, vector unsigned char b)
5134{
5135  return (vector unsigned short)
5136           __builtin_altivec_vsl((vector int)a, (vector int)b);
5137}
5138
5139static vector unsigned short __ATTRS_o_ai
5140vec_sll(vector unsigned short a, vector unsigned short b)
5141{
5142  return (vector unsigned short)
5143           __builtin_altivec_vsl((vector int)a, (vector int)b);
5144}
5145
5146static vector unsigned short __ATTRS_o_ai
5147vec_sll(vector unsigned short a, vector unsigned int b)
5148{
5149  return (vector unsigned short)
5150           __builtin_altivec_vsl((vector int)a, (vector int)b);
5151}
5152
5153static vector bool short __ATTRS_o_ai
5154vec_sll(vector bool short a, vector unsigned char b)
5155{
5156  return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5157}
5158
5159static vector bool short __ATTRS_o_ai
5160vec_sll(vector bool short a, vector unsigned short b)
5161{
5162  return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5163}
5164
5165static vector bool short __ATTRS_o_ai
5166vec_sll(vector bool short a, vector unsigned int b)
5167{
5168  return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5169}
5170
5171static vector pixel __ATTRS_o_ai
5172vec_sll(vector pixel a, vector unsigned char b)
5173{
5174  return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b);
5175}
5176
5177static vector pixel __ATTRS_o_ai
5178vec_sll(vector pixel a, vector unsigned short b)
5179{
5180  return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b);
5181}
5182
5183static vector pixel __ATTRS_o_ai
5184vec_sll(vector pixel a, vector unsigned int b)
5185{
5186  return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b);
5187}
5188
5189static vector int __ATTRS_o_ai
5190vec_sll(vector int a, vector unsigned char b)
5191{
5192  return (vector int)__builtin_altivec_vsl(a, (vector int)b);
5193}
5194
5195static vector int __ATTRS_o_ai
5196vec_sll(vector int a, vector unsigned short b)
5197{
5198  return (vector int)__builtin_altivec_vsl(a, (vector int)b);
5199}
5200
5201static vector int __ATTRS_o_ai
5202vec_sll(vector int a, vector unsigned int b)
5203{
5204  return (vector int)__builtin_altivec_vsl(a, (vector int)b);
5205}
5206
5207static vector unsigned int __ATTRS_o_ai
5208vec_sll(vector unsigned int a, vector unsigned char b)
5209{
5210  return (vector unsigned int)
5211           __builtin_altivec_vsl((vector int)a, (vector int)b);
5212}
5213
5214static vector unsigned int __ATTRS_o_ai
5215vec_sll(vector unsigned int a, vector unsigned short b)
5216{
5217  return (vector unsigned int)
5218           __builtin_altivec_vsl((vector int)a, (vector int)b);
5219}
5220
5221static vector unsigned int __ATTRS_o_ai
5222vec_sll(vector unsigned int a, vector unsigned int b)
5223{
5224  return (vector unsigned int)
5225           __builtin_altivec_vsl((vector int)a, (vector int)b);
5226}
5227
5228static vector bool int __ATTRS_o_ai
5229vec_sll(vector bool int a, vector unsigned char b)
5230{
5231  return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b);
5232}
5233
5234static vector bool int __ATTRS_o_ai
5235vec_sll(vector bool int a, vector unsigned short b)
5236{
5237  return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b);
5238}
5239
5240static vector bool int __ATTRS_o_ai
5241vec_sll(vector bool int a, vector unsigned int b)
5242{
5243  return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b);
5244}
5245
5246/* vec_vsl */
5247
5248static vector signed char __ATTRS_o_ai
5249vec_vsl(vector signed char a, vector unsigned char b)
5250{
5251  return (vector signed char)
5252           __builtin_altivec_vsl((vector int)a, (vector int)b);
5253}
5254
5255static vector signed char __ATTRS_o_ai
5256vec_vsl(vector signed char a, vector unsigned short b)
5257{
5258  return (vector signed char)
5259           __builtin_altivec_vsl((vector int)a, (vector int)b);
5260}
5261
5262static vector signed char __ATTRS_o_ai
5263vec_vsl(vector signed char a, vector unsigned int b)
5264{
5265  return (vector signed char)
5266           __builtin_altivec_vsl((vector int)a, (vector int)b);
5267}
5268
5269static vector unsigned char __ATTRS_o_ai
5270vec_vsl(vector unsigned char a, vector unsigned char b)
5271{
5272  return (vector unsigned char)
5273           __builtin_altivec_vsl((vector int)a, (vector int)b);
5274}
5275
5276static vector unsigned char __ATTRS_o_ai
5277vec_vsl(vector unsigned char a, vector unsigned short b)
5278{
5279  return (vector unsigned char)
5280           __builtin_altivec_vsl((vector int)a, (vector int)b);
5281}
5282
5283static vector unsigned char __ATTRS_o_ai
5284vec_vsl(vector unsigned char a, vector unsigned int b)
5285{
5286  return (vector unsigned char)
5287           __builtin_altivec_vsl((vector int)a, (vector int)b);
5288}
5289
5290static vector bool char __ATTRS_o_ai
5291vec_vsl(vector bool char a, vector unsigned char b)
5292{
5293  return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b);
5294}
5295
5296static vector bool char __ATTRS_o_ai
5297vec_vsl(vector bool char a, vector unsigned short b)
5298{
5299  return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b);
5300}
5301
5302static vector bool char __ATTRS_o_ai
5303vec_vsl(vector bool char a, vector unsigned int b)
5304{
5305  return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b);
5306}
5307
5308static vector short __ATTRS_o_ai
5309vec_vsl(vector short a, vector unsigned char b)
5310{
5311  return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5312}
5313
5314static vector short __ATTRS_o_ai
5315vec_vsl(vector short a, vector unsigned short b)
5316{
5317  return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5318}
5319
5320static vector short __ATTRS_o_ai
5321vec_vsl(vector short a, vector unsigned int b)
5322{
5323  return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5324}
5325
5326static vector unsigned short __ATTRS_o_ai
5327vec_vsl(vector unsigned short a, vector unsigned char b)
5328{
5329  return (vector unsigned short)
5330           __builtin_altivec_vsl((vector int)a, (vector int)b);
5331}
5332
5333static vector unsigned short __ATTRS_o_ai
5334vec_vsl(vector unsigned short a, vector unsigned short b)
5335{
5336  return (vector unsigned short)
5337           __builtin_altivec_vsl((vector int)a, (vector int)b);
5338}
5339
5340static vector unsigned short __ATTRS_o_ai
5341vec_vsl(vector unsigned short a, vector unsigned int b)
5342{
5343  return (vector unsigned short)
5344           __builtin_altivec_vsl((vector int)a, (vector int)b);
5345}
5346
5347static vector bool short __ATTRS_o_ai
5348vec_vsl(vector bool short a, vector unsigned char b)
5349{
5350  return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5351}
5352
5353static vector bool short __ATTRS_o_ai
5354vec_vsl(vector bool short a, vector unsigned short b)
5355{
5356  return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5357}
5358
5359static vector bool short __ATTRS_o_ai
5360vec_vsl(vector bool short a, vector unsigned int b)
5361{
5362  return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b);
5363}
5364
5365static vector pixel __ATTRS_o_ai
5366vec_vsl(vector pixel a, vector unsigned char b)
5367{
5368  return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b);
5369}
5370
5371static vector pixel __ATTRS_o_ai
5372vec_vsl(vector pixel a, vector unsigned short b)
5373{
5374  return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b);
5375}
5376
5377static vector pixel __ATTRS_o_ai
5378vec_vsl(vector pixel a, vector unsigned int b)
5379{
5380  return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b);
5381}
5382
5383static vector int __ATTRS_o_ai
5384vec_vsl(vector int a, vector unsigned char b)
5385{
5386  return (vector int)__builtin_altivec_vsl(a, (vector int)b);
5387}
5388
5389static vector int __ATTRS_o_ai
5390vec_vsl(vector int a, vector unsigned short b)
5391{
5392  return (vector int)__builtin_altivec_vsl(a, (vector int)b);
5393}
5394
5395static vector int __ATTRS_o_ai
5396vec_vsl(vector int a, vector unsigned int b)
5397{
5398  return (vector int)__builtin_altivec_vsl(a, (vector int)b);
5399}
5400
5401static vector unsigned int __ATTRS_o_ai
5402vec_vsl(vector unsigned int a, vector unsigned char b)
5403{
5404  return (vector unsigned int)
5405           __builtin_altivec_vsl((vector int)a, (vector int)b);
5406}
5407
5408static vector unsigned int __ATTRS_o_ai
5409vec_vsl(vector unsigned int a, vector unsigned short b)
5410{
5411  return (vector unsigned int)
5412           __builtin_altivec_vsl((vector int)a, (vector int)b);
5413}
5414
5415static vector unsigned int __ATTRS_o_ai
5416vec_vsl(vector unsigned int a, vector unsigned int b)
5417{
5418  return (vector unsigned int)
5419           __builtin_altivec_vsl((vector int)a, (vector int)b);
5420}
5421
5422static vector bool int __ATTRS_o_ai
5423vec_vsl(vector bool int a, vector unsigned char b)
5424{
5425  return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b);
5426}
5427
5428static vector bool int __ATTRS_o_ai
5429vec_vsl(vector bool int a, vector unsigned short b)
5430{
5431  return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b);
5432}
5433
5434static vector bool int __ATTRS_o_ai
5435vec_vsl(vector bool int a, vector unsigned int b)
5436{
5437  return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b);
5438}
5439
5440/* vec_slo */
5441
5442static vector signed char __ATTRS_o_ai
5443vec_slo(vector signed char a, vector signed char b)
5444{
5445  return (vector signed char)
5446           __builtin_altivec_vslo((vector int)a, (vector int)b);
5447}
5448
5449static vector signed char __ATTRS_o_ai
5450vec_slo(vector signed char a, vector unsigned char b)
5451{
5452  return (vector signed char)
5453           __builtin_altivec_vslo((vector int)a, (vector int)b);
5454}
5455
5456static vector unsigned char __ATTRS_o_ai
5457vec_slo(vector unsigned char a, vector signed char b)
5458{
5459  return (vector unsigned char)
5460           __builtin_altivec_vslo((vector int)a, (vector int)b);
5461}
5462
5463static vector unsigned char __ATTRS_o_ai
5464vec_slo(vector unsigned char a, vector unsigned char b)
5465{
5466  return (vector unsigned char)
5467           __builtin_altivec_vslo((vector int)a, (vector int)b);
5468}
5469
5470static vector short __ATTRS_o_ai
5471vec_slo(vector short a, vector signed char b)
5472{
5473  return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b);
5474}
5475
5476static vector short __ATTRS_o_ai
5477vec_slo(vector short a, vector unsigned char b)
5478{
5479  return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b);
5480}
5481
5482static vector unsigned short __ATTRS_o_ai
5483vec_slo(vector unsigned short a, vector signed char b)
5484{
5485  return (vector unsigned short)
5486           __builtin_altivec_vslo((vector int)a, (vector int)b);
5487}
5488
5489static vector unsigned short __ATTRS_o_ai
5490vec_slo(vector unsigned short a, vector unsigned char b)
5491{
5492  return (vector unsigned short)
5493           __builtin_altivec_vslo((vector int)a, (vector int)b);
5494}
5495
5496static vector pixel __ATTRS_o_ai
5497vec_slo(vector pixel a, vector signed char b)
5498{
5499  return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b);
5500}
5501
5502static vector pixel __ATTRS_o_ai
5503vec_slo(vector pixel a, vector unsigned char b)
5504{
5505  return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b);
5506}
5507
5508static vector int __ATTRS_o_ai
5509vec_slo(vector int a, vector signed char b)
5510{
5511  return (vector int)__builtin_altivec_vslo(a, (vector int)b);
5512}
5513
5514static vector int __ATTRS_o_ai
5515vec_slo(vector int a, vector unsigned char b)
5516{
5517  return (vector int)__builtin_altivec_vslo(a, (vector int)b);
5518}
5519
5520static vector unsigned int __ATTRS_o_ai
5521vec_slo(vector unsigned int a, vector signed char b)
5522{
5523  return (vector unsigned int)
5524           __builtin_altivec_vslo((vector int)a, (vector int)b);
5525}
5526
5527static vector unsigned int __ATTRS_o_ai
5528vec_slo(vector unsigned int a, vector unsigned char b)
5529{
5530  return (vector unsigned int)
5531           __builtin_altivec_vslo((vector int)a, (vector int)b);
5532}
5533
5534static vector float __ATTRS_o_ai
5535vec_slo(vector float a, vector signed char b)
5536{
5537  return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b);
5538}
5539
5540static vector float __ATTRS_o_ai
5541vec_slo(vector float a, vector unsigned char b)
5542{
5543  return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b);
5544}
5545
5546/* vec_vslo */
5547
5548static vector signed char __ATTRS_o_ai
5549vec_vslo(vector signed char a, vector signed char b)
5550{
5551  return (vector signed char)
5552           __builtin_altivec_vslo((vector int)a, (vector int)b);
5553}
5554
5555static vector signed char __ATTRS_o_ai
5556vec_vslo(vector signed char a, vector unsigned char b)
5557{
5558  return (vector signed char)
5559           __builtin_altivec_vslo((vector int)a, (vector int)b);
5560}
5561
5562static vector unsigned char __ATTRS_o_ai
5563vec_vslo(vector unsigned char a, vector signed char b)
5564{
5565  return (vector unsigned char)
5566           __builtin_altivec_vslo((vector int)a, (vector int)b);
5567}
5568
5569static vector unsigned char __ATTRS_o_ai
5570vec_vslo(vector unsigned char a, vector unsigned char b)
5571{
5572  return (vector unsigned char)
5573           __builtin_altivec_vslo((vector int)a, (vector int)b);
5574}
5575
5576static vector short __ATTRS_o_ai
5577vec_vslo(vector short a, vector signed char b)
5578{
5579  return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b);
5580}
5581
5582static vector short __ATTRS_o_ai
5583vec_vslo(vector short a, vector unsigned char b)
5584{
5585  return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b);
5586}
5587
5588static vector unsigned short __ATTRS_o_ai
5589vec_vslo(vector unsigned short a, vector signed char b)
5590{
5591  return (vector unsigned short)
5592           __builtin_altivec_vslo((vector int)a, (vector int)b);
5593}
5594
5595static vector unsigned short __ATTRS_o_ai
5596vec_vslo(vector unsigned short a, vector unsigned char b)
5597{
5598  return (vector unsigned short)
5599           __builtin_altivec_vslo((vector int)a, (vector int)b);
5600}
5601
5602static vector pixel __ATTRS_o_ai
5603vec_vslo(vector pixel a, vector signed char b)
5604{
5605  return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b);
5606}
5607
5608static vector pixel __ATTRS_o_ai
5609vec_vslo(vector pixel a, vector unsigned char b)
5610{
5611  return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b);
5612}
5613
5614static vector int __ATTRS_o_ai
5615vec_vslo(vector int a, vector signed char b)
5616{
5617  return (vector int)__builtin_altivec_vslo(a, (vector int)b);
5618}
5619
5620static vector int __ATTRS_o_ai
5621vec_vslo(vector int a, vector unsigned char b)
5622{
5623  return (vector int)__builtin_altivec_vslo(a, (vector int)b);
5624}
5625
5626static vector unsigned int __ATTRS_o_ai
5627vec_vslo(vector unsigned int a, vector signed char b)
5628{
5629  return (vector unsigned int)
5630           __builtin_altivec_vslo((vector int)a, (vector int)b);
5631}
5632
5633static vector unsigned int __ATTRS_o_ai
5634vec_vslo(vector unsigned int a, vector unsigned char b)
5635{
5636  return (vector unsigned int)
5637           __builtin_altivec_vslo((vector int)a, (vector int)b);
5638}
5639
5640static vector float __ATTRS_o_ai
5641vec_vslo(vector float a, vector signed char b)
5642{
5643  return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b);
5644}
5645
5646static vector float __ATTRS_o_ai
5647vec_vslo(vector float a, vector unsigned char b)
5648{
5649  return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b);
5650}
5651
5652/* vec_splat */
5653
5654static vector signed char __ATTRS_o_ai
5655vec_splat(vector signed char a, unsigned char b)
5656{
5657  return vec_perm(a, a, (vector unsigned char)(b));
5658}
5659
5660static vector unsigned char __ATTRS_o_ai
5661vec_splat(vector unsigned char a, unsigned char b)
5662{
5663  return vec_perm(a, a, (vector unsigned char)(b));
5664}
5665
5666static vector bool char __ATTRS_o_ai
5667vec_splat(vector bool char a, unsigned char b)
5668{
5669  return vec_perm(a, a, (vector unsigned char)(b));
5670}
5671
5672static vector short __ATTRS_o_ai
5673vec_splat(vector short a, unsigned char b)
5674{
5675  b *= 2;
5676  return vec_perm(a, a, (vector unsigned char)
5677    (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1));
5678}
5679
5680static vector unsigned short __ATTRS_o_ai
5681vec_splat(vector unsigned short a, unsigned char b)
5682{
5683  b *= 2;
5684  return vec_perm(a, a, (vector unsigned char)
5685    (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1));
5686}
5687
5688static vector bool short __ATTRS_o_ai
5689vec_splat(vector bool short a, unsigned char b)
5690{
5691  b *= 2;
5692  return vec_perm(a, a, (vector unsigned char)
5693    (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1));
5694}
5695
5696static vector pixel __ATTRS_o_ai
5697vec_splat(vector pixel a, unsigned char b)
5698{
5699  b *= 2;
5700  return vec_perm(a, a, (vector unsigned char)
5701    (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1));
5702}
5703
5704static vector int __ATTRS_o_ai
5705vec_splat(vector int a, unsigned char b)
5706{
5707  b *= 4;
5708  return vec_perm(a, a, (vector unsigned char)
5709    (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3));
5710}
5711
5712static vector unsigned int __ATTRS_o_ai
5713vec_splat(vector unsigned int a, unsigned char b)
5714{
5715  b *= 4;
5716  return vec_perm(a, a, (vector unsigned char)
5717    (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3));
5718}
5719
5720static vector bool int __ATTRS_o_ai
5721vec_splat(vector bool int a, unsigned char b)
5722{
5723  b *= 4;
5724  return vec_perm(a, a, (vector unsigned char)
5725    (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3));
5726}
5727
5728static vector float __ATTRS_o_ai
5729vec_splat(vector float a, unsigned char b)
5730{
5731  b *= 4;
5732  return vec_perm(a, a, (vector unsigned char)
5733    (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3));
5734}
5735
5736/* vec_vspltb */
5737
5738#define __builtin_altivec_vspltb vec_vspltb
5739
5740static vector signed char __ATTRS_o_ai
5741vec_vspltb(vector signed char a, unsigned char b)
5742{
5743  return vec_perm(a, a, (vector unsigned char)(b));
5744}
5745
5746static vector unsigned char __ATTRS_o_ai
5747vec_vspltb(vector unsigned char a, unsigned char b)
5748{
5749  return vec_perm(a, a, (vector unsigned char)(b));
5750}
5751
5752static vector bool char __ATTRS_o_ai
5753vec_vspltb(vector bool char a, unsigned char b)
5754{
5755  return vec_perm(a, a, (vector unsigned char)(b));
5756}
5757
5758/* vec_vsplth */
5759
5760#define __builtin_altivec_vsplth vec_vsplth
5761
5762static vector short __ATTRS_o_ai
5763vec_vsplth(vector short a, unsigned char b)
5764{
5765  b *= 2;
5766  return vec_perm(a, a, (vector unsigned char)
5767    (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1));
5768}
5769
5770static vector unsigned short __ATTRS_o_ai
5771vec_vsplth(vector unsigned short a, unsigned char b)
5772{
5773  b *= 2;
5774  return vec_perm(a, a, (vector unsigned char)
5775    (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1));
5776}
5777
5778static vector bool short __ATTRS_o_ai
5779vec_vsplth(vector bool short a, unsigned char b)
5780{
5781  b *= 2;
5782  return vec_perm(a, a, (vector unsigned char)
5783    (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1));
5784}
5785
5786static vector pixel __ATTRS_o_ai
5787vec_vsplth(vector pixel a, unsigned char b)
5788{
5789  b *= 2;
5790  return vec_perm(a, a, (vector unsigned char)
5791    (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1));
5792}
5793
5794/* vec_vspltw */
5795
5796#define __builtin_altivec_vspltw vec_vspltw
5797
5798static vector int __ATTRS_o_ai
5799vec_vspltw(vector int a, unsigned char b)
5800{
5801  b *= 4;
5802  return vec_perm(a, a, (vector unsigned char)
5803    (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3));
5804}
5805
5806static vector unsigned int __ATTRS_o_ai
5807vec_vspltw(vector unsigned int a, unsigned char b)
5808{
5809  b *= 4;
5810  return vec_perm(a, a, (vector unsigned char)
5811    (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3));
5812}
5813
5814static vector bool int __ATTRS_o_ai
5815vec_vspltw(vector bool int a, unsigned char b)
5816{
5817  b *= 4;
5818  return vec_perm(a, a, (vector unsigned char)
5819    (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3));
5820}
5821
5822static vector float __ATTRS_o_ai
5823vec_vspltw(vector float a, unsigned char b)
5824{
5825  b *= 4;
5826  return vec_perm(a, a, (vector unsigned char)
5827    (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3));
5828}
5829
5830/* vec_splat_s8 */
5831
5832#define __builtin_altivec_vspltisb vec_splat_s8
5833
5834// FIXME: parameter should be treated as 5-bit signed literal
5835static vector signed char __ATTRS_o_ai
5836vec_splat_s8(signed char a)
5837{
5838  return (vector signed char)(a);
5839}
5840
5841/* vec_vspltisb */
5842
5843// FIXME: parameter should be treated as 5-bit signed literal
5844static vector signed char __ATTRS_o_ai
5845vec_vspltisb(signed char a)
5846{
5847  return (vector signed char)(a);
5848}
5849
5850/* vec_splat_s16 */
5851
5852#define __builtin_altivec_vspltish vec_splat_s16
5853
5854// FIXME: parameter should be treated as 5-bit signed literal
5855static vector short __ATTRS_o_ai
5856vec_splat_s16(signed char a)
5857{
5858  return (vector short)(a);
5859}
5860
5861/* vec_vspltish */
5862
5863// FIXME: parameter should be treated as 5-bit signed literal
5864static vector short __ATTRS_o_ai
5865vec_vspltish(signed char a)
5866{
5867  return (vector short)(a);
5868}
5869
5870/* vec_splat_s32 */
5871
5872#define __builtin_altivec_vspltisw vec_splat_s32
5873
5874// FIXME: parameter should be treated as 5-bit signed literal
5875static vector int __ATTRS_o_ai
5876vec_splat_s32(signed char a)
5877{
5878  return (vector int)(a);
5879}
5880
5881/* vec_vspltisw */
5882
5883// FIXME: parameter should be treated as 5-bit signed literal
5884static vector int __ATTRS_o_ai
5885vec_vspltisw(signed char a)
5886{
5887  return (vector int)(a);
5888}
5889
5890/* vec_splat_u8 */
5891
5892// FIXME: parameter should be treated as 5-bit signed literal
5893static vector unsigned char __ATTRS_o_ai
5894vec_splat_u8(unsigned char a)
5895{
5896  return (vector unsigned char)(a);
5897}
5898
5899/* vec_splat_u16 */
5900
5901// FIXME: parameter should be treated as 5-bit signed literal
5902static vector unsigned short __ATTRS_o_ai
5903vec_splat_u16(signed char a)
5904{
5905  return (vector unsigned short)(a);
5906}
5907
5908/* vec_splat_u32 */
5909
5910// FIXME: parameter should be treated as 5-bit signed literal
5911static vector unsigned int __ATTRS_o_ai
5912vec_splat_u32(signed char a)
5913{
5914  return (vector unsigned int)(a);
5915}
5916
5917/* vec_sr */
5918
5919static vector signed char __ATTRS_o_ai
5920vec_sr(vector signed char a, vector unsigned char b)
5921{
5922  return a >> (vector signed char)b;
5923}
5924
5925static vector unsigned char __ATTRS_o_ai
5926vec_sr(vector unsigned char a, vector unsigned char b)
5927{
5928  return a >> b;
5929}
5930
5931static vector short __ATTRS_o_ai
5932vec_sr(vector short a, vector unsigned short b)
5933{
5934  return a >> (vector short)b;
5935}
5936
5937static vector unsigned short __ATTRS_o_ai
5938vec_sr(vector unsigned short a, vector unsigned short b)
5939{
5940  return a >> b;
5941}
5942
5943static vector int __ATTRS_o_ai
5944vec_sr(vector int a, vector unsigned int b)
5945{
5946  return a >> (vector int)b;
5947}
5948
5949static vector unsigned int __ATTRS_o_ai
5950vec_sr(vector unsigned int a, vector unsigned int b)
5951{
5952  return a >> b;
5953}
5954
5955/* vec_vsrb */
5956
5957#define __builtin_altivec_vsrb vec_vsrb
5958
5959static vector signed char __ATTRS_o_ai
5960vec_vsrb(vector signed char a, vector unsigned char b)
5961{
5962  return a >> (vector signed char)b;
5963}
5964
5965static vector unsigned char __ATTRS_o_ai
5966vec_vsrb(vector unsigned char a, vector unsigned char b)
5967{
5968  return a >> b;
5969}
5970
5971/* vec_vsrh */
5972
5973#define __builtin_altivec_vsrh vec_vsrh
5974
5975static vector short __ATTRS_o_ai
5976vec_vsrh(vector short a, vector unsigned short b)
5977{
5978  return a >> (vector short)b;
5979}
5980
5981static vector unsigned short __ATTRS_o_ai
5982vec_vsrh(vector unsigned short a, vector unsigned short b)
5983{
5984  return a >> b;
5985}
5986
5987/* vec_vsrw */
5988
5989#define __builtin_altivec_vsrw vec_vsrw
5990
5991static vector int __ATTRS_o_ai
5992vec_vsrw(vector int a, vector unsigned int b)
5993{
5994  return a >> (vector int)b;
5995}
5996
5997static vector unsigned int __ATTRS_o_ai
5998vec_vsrw(vector unsigned int a, vector unsigned int b)
5999{
6000  return a >> b;
6001}
6002
6003/* vec_sra */
6004
6005static vector signed char __ATTRS_o_ai
6006vec_sra(vector signed char a, vector unsigned char b)
6007{
6008  return (vector signed char)__builtin_altivec_vsrab((vector char)a, b);
6009}
6010
6011static vector unsigned char __ATTRS_o_ai
6012vec_sra(vector unsigned char a, vector unsigned char b)
6013{
6014  return (vector unsigned char)__builtin_altivec_vsrab((vector char)a, b);
6015}
6016
6017static vector short __ATTRS_o_ai
6018vec_sra(vector short a, vector unsigned short b)
6019{
6020  return __builtin_altivec_vsrah(a, (vector unsigned short)b);
6021}
6022
6023static vector unsigned short __ATTRS_o_ai
6024vec_sra(vector unsigned short a, vector unsigned short b)
6025{
6026  return (vector unsigned short)__builtin_altivec_vsrah((vector short)a, b);
6027}
6028
6029static vector int __ATTRS_o_ai
6030vec_sra(vector int a, vector unsigned int b)
6031{
6032  return __builtin_altivec_vsraw(a, b);
6033}
6034
6035static vector unsigned int __ATTRS_o_ai
6036vec_sra(vector unsigned int a, vector unsigned int b)
6037{
6038  return (vector unsigned int)__builtin_altivec_vsraw((vector int)a, b);
6039}
6040
6041/* vec_vsrab */
6042
6043static vector signed char __ATTRS_o_ai
6044vec_vsrab(vector signed char a, vector unsigned char b)
6045{
6046  return (vector signed char)__builtin_altivec_vsrab((vector char)a, b);
6047}
6048
6049static vector unsigned char __ATTRS_o_ai
6050vec_vsrab(vector unsigned char a, vector unsigned char b)
6051{
6052  return (vector unsigned char)__builtin_altivec_vsrab((vector char)a, b);
6053}
6054
6055/* vec_vsrah */
6056
6057static vector short __ATTRS_o_ai
6058vec_vsrah(vector short a, vector unsigned short b)
6059{
6060  return __builtin_altivec_vsrah(a, (vector unsigned short)b);
6061}
6062
6063static vector unsigned short __ATTRS_o_ai
6064vec_vsrah(vector unsigned short a, vector unsigned short b)
6065{
6066  return (vector unsigned short)__builtin_altivec_vsrah((vector short)a, b);
6067}
6068
6069/* vec_vsraw */
6070
6071static vector int __ATTRS_o_ai
6072vec_vsraw(vector int a, vector unsigned int b)
6073{
6074  return __builtin_altivec_vsraw(a, b);
6075}
6076
6077static vector unsigned int __ATTRS_o_ai
6078vec_vsraw(vector unsigned int a, vector unsigned int b)
6079{
6080  return (vector unsigned int)__builtin_altivec_vsraw((vector int)a, b);
6081}
6082
6083/* vec_srl */
6084
6085static vector signed char __ATTRS_o_ai
6086vec_srl(vector signed char a, vector unsigned char b)
6087{
6088  return (vector signed char)
6089           __builtin_altivec_vsr((vector int)a, (vector int)b);
6090}
6091
6092static vector signed char __ATTRS_o_ai
6093vec_srl(vector signed char a, vector unsigned short b)
6094{
6095  return (vector signed char)
6096           __builtin_altivec_vsr((vector int)a, (vector int)b);
6097}
6098
6099static vector signed char __ATTRS_o_ai
6100vec_srl(vector signed char a, vector unsigned int b)
6101{
6102  return (vector signed char)
6103           __builtin_altivec_vsr((vector int)a, (vector int)b);
6104}
6105
6106static vector unsigned char __ATTRS_o_ai
6107vec_srl(vector unsigned char a, vector unsigned char b)
6108{
6109  return (vector unsigned char)
6110           __builtin_altivec_vsr((vector int)a, (vector int)b);
6111}
6112
6113static vector unsigned char __ATTRS_o_ai
6114vec_srl(vector unsigned char a, vector unsigned short b)
6115{
6116  return (vector unsigned char)
6117           __builtin_altivec_vsr((vector int)a, (vector int)b);
6118}
6119
6120static vector unsigned char __ATTRS_o_ai
6121vec_srl(vector unsigned char a, vector unsigned int b)
6122{
6123  return (vector unsigned char)
6124           __builtin_altivec_vsr((vector int)a, (vector int)b);
6125}
6126
6127static vector bool char __ATTRS_o_ai
6128vec_srl(vector bool char a, vector unsigned char b)
6129{
6130  return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b);
6131}
6132
6133static vector bool char __ATTRS_o_ai
6134vec_srl(vector bool char a, vector unsigned short b)
6135{
6136  return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b);
6137}
6138
6139static vector bool char __ATTRS_o_ai
6140vec_srl(vector bool char a, vector unsigned int b)
6141{
6142  return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b);
6143}
6144
6145static vector short __ATTRS_o_ai
6146vec_srl(vector short a, vector unsigned char b)
6147{
6148  return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6149}
6150
6151static vector short __ATTRS_o_ai
6152vec_srl(vector short a, vector unsigned short b)
6153{
6154  return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6155}
6156
6157static vector short __ATTRS_o_ai
6158vec_srl(vector short a, vector unsigned int b)
6159{
6160  return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6161}
6162
6163static vector unsigned short __ATTRS_o_ai
6164vec_srl(vector unsigned short a, vector unsigned char b)
6165{
6166  return (vector unsigned short)
6167           __builtin_altivec_vsr((vector int)a, (vector int)b);
6168}
6169
6170static vector unsigned short __ATTRS_o_ai
6171vec_srl(vector unsigned short a, vector unsigned short b)
6172{
6173  return (vector unsigned short)
6174           __builtin_altivec_vsr((vector int)a, (vector int)b);
6175}
6176
6177static vector unsigned short __ATTRS_o_ai
6178vec_srl(vector unsigned short a, vector unsigned int b)
6179{
6180  return (vector unsigned short)
6181           __builtin_altivec_vsr((vector int)a, (vector int)b);
6182}
6183
6184static vector bool short __ATTRS_o_ai
6185vec_srl(vector bool short a, vector unsigned char b)
6186{
6187  return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6188}
6189
6190static vector bool short __ATTRS_o_ai
6191vec_srl(vector bool short a, vector unsigned short b)
6192{
6193  return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6194}
6195
6196static vector bool short __ATTRS_o_ai
6197vec_srl(vector bool short a, vector unsigned int b)
6198{
6199  return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6200}
6201
6202static vector pixel __ATTRS_o_ai
6203vec_srl(vector pixel a, vector unsigned char b)
6204{
6205  return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b);
6206}
6207
6208static vector pixel __ATTRS_o_ai
6209vec_srl(vector pixel a, vector unsigned short b)
6210{
6211  return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b);
6212}
6213
6214static vector pixel __ATTRS_o_ai
6215vec_srl(vector pixel a, vector unsigned int b)
6216{
6217  return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b);
6218}
6219
6220static vector int __ATTRS_o_ai
6221vec_srl(vector int a, vector unsigned char b)
6222{
6223  return (vector int)__builtin_altivec_vsr(a, (vector int)b);
6224}
6225
6226static vector int __ATTRS_o_ai
6227vec_srl(vector int a, vector unsigned short b)
6228{
6229  return (vector int)__builtin_altivec_vsr(a, (vector int)b);
6230}
6231
6232static vector int __ATTRS_o_ai
6233vec_srl(vector int a, vector unsigned int b)
6234{
6235  return (vector int)__builtin_altivec_vsr(a, (vector int)b);
6236}
6237
6238static vector unsigned int __ATTRS_o_ai
6239vec_srl(vector unsigned int a, vector unsigned char b)
6240{
6241  return (vector unsigned int)
6242           __builtin_altivec_vsr((vector int)a, (vector int)b);
6243}
6244
6245static vector unsigned int __ATTRS_o_ai
6246vec_srl(vector unsigned int a, vector unsigned short b)
6247{
6248  return (vector unsigned int)
6249           __builtin_altivec_vsr((vector int)a, (vector int)b);
6250}
6251
6252static vector unsigned int __ATTRS_o_ai
6253vec_srl(vector unsigned int a, vector unsigned int b)
6254{
6255  return (vector unsigned int)
6256           __builtin_altivec_vsr((vector int)a, (vector int)b);
6257}
6258
6259static vector bool int __ATTRS_o_ai
6260vec_srl(vector bool int a, vector unsigned char b)
6261{
6262  return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b);
6263}
6264
6265static vector bool int __ATTRS_o_ai
6266vec_srl(vector bool int a, vector unsigned short b)
6267{
6268  return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b);
6269}
6270
6271static vector bool int __ATTRS_o_ai
6272vec_srl(vector bool int a, vector unsigned int b)
6273{
6274  return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b);
6275}
6276
6277/* vec_vsr */
6278
6279static vector signed char __ATTRS_o_ai
6280vec_vsr(vector signed char a, vector unsigned char b)
6281{
6282  return (vector signed char)
6283           __builtin_altivec_vsr((vector int)a, (vector int)b);
6284}
6285
6286static vector signed char __ATTRS_o_ai
6287vec_vsr(vector signed char a, vector unsigned short b)
6288{
6289  return (vector signed char)
6290           __builtin_altivec_vsr((vector int)a, (vector int)b);
6291}
6292
6293static vector signed char __ATTRS_o_ai
6294vec_vsr(vector signed char a, vector unsigned int b)
6295{
6296  return (vector signed char)
6297           __builtin_altivec_vsr((vector int)a, (vector int)b);
6298}
6299
6300static vector unsigned char __ATTRS_o_ai
6301vec_vsr(vector unsigned char a, vector unsigned char b)
6302{
6303  return (vector unsigned char)
6304           __builtin_altivec_vsr((vector int)a, (vector int)b);
6305}
6306
6307static vector unsigned char __ATTRS_o_ai
6308vec_vsr(vector unsigned char a, vector unsigned short b)
6309{
6310  return (vector unsigned char)
6311           __builtin_altivec_vsr((vector int)a, (vector int)b);
6312}
6313
6314static vector unsigned char __ATTRS_o_ai
6315vec_vsr(vector unsigned char a, vector unsigned int b)
6316{
6317  return (vector unsigned char)
6318           __builtin_altivec_vsr((vector int)a, (vector int)b);
6319}
6320
6321static vector bool char __ATTRS_o_ai
6322vec_vsr(vector bool char a, vector unsigned char b)
6323{
6324  return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b);
6325}
6326
6327static vector bool char __ATTRS_o_ai
6328vec_vsr(vector bool char a, vector unsigned short b)
6329{
6330  return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b);
6331}
6332
6333static vector bool char __ATTRS_o_ai
6334vec_vsr(vector bool char a, vector unsigned int b)
6335{
6336  return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b);
6337}
6338
6339static vector short __ATTRS_o_ai
6340vec_vsr(vector short a, vector unsigned char b)
6341{
6342  return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6343}
6344
6345static vector short __ATTRS_o_ai
6346vec_vsr(vector short a, vector unsigned short b)
6347{
6348  return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6349}
6350
6351static vector short __ATTRS_o_ai
6352vec_vsr(vector short a, vector unsigned int b)
6353{
6354  return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6355}
6356
6357static vector unsigned short __ATTRS_o_ai
6358vec_vsr(vector unsigned short a, vector unsigned char b)
6359{
6360  return (vector unsigned short)
6361           __builtin_altivec_vsr((vector int)a, (vector int)b);
6362}
6363
6364static vector unsigned short __ATTRS_o_ai
6365vec_vsr(vector unsigned short a, vector unsigned short b)
6366{
6367  return (vector unsigned short)
6368           __builtin_altivec_vsr((vector int)a, (vector int)b);
6369}
6370
6371static vector unsigned short __ATTRS_o_ai
6372vec_vsr(vector unsigned short a, vector unsigned int b)
6373{
6374  return (vector unsigned short)
6375           __builtin_altivec_vsr((vector int)a, (vector int)b);
6376}
6377
6378static vector bool short __ATTRS_o_ai
6379vec_vsr(vector bool short a, vector unsigned char b)
6380{
6381  return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6382}
6383
6384static vector bool short __ATTRS_o_ai
6385vec_vsr(vector bool short a, vector unsigned short b)
6386{
6387  return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6388}
6389
6390static vector bool short __ATTRS_o_ai
6391vec_vsr(vector bool short a, vector unsigned int b)
6392{
6393  return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b);
6394}
6395
6396static vector pixel __ATTRS_o_ai
6397vec_vsr(vector pixel a, vector unsigned char b)
6398{
6399  return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b);
6400}
6401
6402static vector pixel __ATTRS_o_ai
6403vec_vsr(vector pixel a, vector unsigned short b)
6404{
6405  return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b);
6406}
6407
6408static vector pixel __ATTRS_o_ai
6409vec_vsr(vector pixel a, vector unsigned int b)
6410{
6411  return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b);
6412}
6413
6414static vector int __ATTRS_o_ai
6415vec_vsr(vector int a, vector unsigned char b)
6416{
6417  return (vector int)__builtin_altivec_vsr(a, (vector int)b);
6418}
6419
6420static vector int __ATTRS_o_ai
6421vec_vsr(vector int a, vector unsigned short b)
6422{
6423  return (vector int)__builtin_altivec_vsr(a, (vector int)b);
6424}
6425
6426static vector int __ATTRS_o_ai
6427vec_vsr(vector int a, vector unsigned int b)
6428{
6429  return (vector int)__builtin_altivec_vsr(a, (vector int)b);
6430}
6431
6432static vector unsigned int __ATTRS_o_ai
6433vec_vsr(vector unsigned int a, vector unsigned char b)
6434{
6435  return (vector unsigned int)
6436           __builtin_altivec_vsr((vector int)a, (vector int)b);
6437}
6438
6439static vector unsigned int __ATTRS_o_ai
6440vec_vsr(vector unsigned int a, vector unsigned short b)
6441{
6442  return (vector unsigned int)
6443           __builtin_altivec_vsr((vector int)a, (vector int)b);
6444}
6445
6446static vector unsigned int __ATTRS_o_ai
6447vec_vsr(vector unsigned int a, vector unsigned int b)
6448{
6449  return (vector unsigned int)
6450           __builtin_altivec_vsr((vector int)a, (vector int)b);
6451}
6452
6453static vector bool int __ATTRS_o_ai
6454vec_vsr(vector bool int a, vector unsigned char b)
6455{
6456  return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b);
6457}
6458
6459static vector bool int __ATTRS_o_ai
6460vec_vsr(vector bool int a, vector unsigned short b)
6461{
6462  return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b);
6463}
6464
6465static vector bool int __ATTRS_o_ai
6466vec_vsr(vector bool int a, vector unsigned int b)
6467{
6468  return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b);
6469}
6470
6471/* vec_sro */
6472
6473static vector signed char __ATTRS_o_ai
6474vec_sro(vector signed char a, vector signed char b)
6475{
6476  return (vector signed char)
6477           __builtin_altivec_vsro((vector int)a, (vector int)b);
6478}
6479
6480static vector signed char __ATTRS_o_ai
6481vec_sro(vector signed char a, vector unsigned char b)
6482{
6483  return (vector signed char)
6484           __builtin_altivec_vsro((vector int)a, (vector int)b);
6485}
6486
6487static vector unsigned char __ATTRS_o_ai
6488vec_sro(vector unsigned char a, vector signed char b)
6489{
6490  return (vector unsigned char)
6491           __builtin_altivec_vsro((vector int)a, (vector int)b);
6492}
6493
6494static vector unsigned char __ATTRS_o_ai
6495vec_sro(vector unsigned char a, vector unsigned char b)
6496{
6497  return (vector unsigned char)
6498           __builtin_altivec_vsro((vector int)a, (vector int)b);
6499}
6500
6501static vector short __ATTRS_o_ai
6502vec_sro(vector short a, vector signed char b)
6503{
6504  return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b);
6505}
6506
6507static vector short __ATTRS_o_ai
6508vec_sro(vector short a, vector unsigned char b)
6509{
6510  return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b);
6511}
6512
6513static vector unsigned short __ATTRS_o_ai
6514vec_sro(vector unsigned short a, vector signed char b)
6515{
6516  return (vector unsigned short)
6517           __builtin_altivec_vsro((vector int)a, (vector int)b);
6518}
6519
6520static vector unsigned short __ATTRS_o_ai
6521vec_sro(vector unsigned short a, vector unsigned char b)
6522{
6523  return (vector unsigned short)
6524           __builtin_altivec_vsro((vector int)a, (vector int)b);
6525}
6526
6527static vector pixel __ATTRS_o_ai
6528vec_sro(vector pixel a, vector signed char b)
6529{
6530  return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b);
6531}
6532
6533static vector pixel __ATTRS_o_ai
6534vec_sro(vector pixel a, vector unsigned char b)
6535{
6536  return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b);
6537}
6538
6539static vector int __ATTRS_o_ai
6540vec_sro(vector int a, vector signed char b)
6541{
6542  return (vector int)__builtin_altivec_vsro(a, (vector int)b);
6543}
6544
6545static vector int __ATTRS_o_ai
6546vec_sro(vector int a, vector unsigned char b)
6547{
6548  return (vector int)__builtin_altivec_vsro(a, (vector int)b);
6549}
6550
6551static vector unsigned int __ATTRS_o_ai
6552vec_sro(vector unsigned int a, vector signed char b)
6553{
6554  return (vector unsigned int)
6555           __builtin_altivec_vsro((vector int)a, (vector int)b);
6556}
6557
6558static vector unsigned int __ATTRS_o_ai
6559vec_sro(vector unsigned int a, vector unsigned char b)
6560{
6561  return (vector unsigned int)
6562           __builtin_altivec_vsro((vector int)a, (vector int)b);
6563}
6564
6565static vector float __ATTRS_o_ai
6566vec_sro(vector float a, vector signed char b)
6567{
6568  return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b);
6569}
6570
6571static vector float __ATTRS_o_ai
6572vec_sro(vector float a, vector unsigned char b)
6573{
6574  return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b);
6575}
6576
6577/* vec_vsro */
6578
6579static vector signed char __ATTRS_o_ai
6580vec_vsro(vector signed char a, vector signed char b)
6581{
6582  return (vector signed char)
6583           __builtin_altivec_vsro((vector int)a, (vector int)b);
6584}
6585
6586static vector signed char __ATTRS_o_ai
6587vec_vsro(vector signed char a, vector unsigned char b)
6588{
6589  return (vector signed char)
6590           __builtin_altivec_vsro((vector int)a, (vector int)b);
6591}
6592
6593static vector unsigned char __ATTRS_o_ai
6594vec_vsro(vector unsigned char a, vector signed char b)
6595{
6596  return (vector unsigned char)
6597           __builtin_altivec_vsro((vector int)a, (vector int)b);
6598}
6599
6600static vector unsigned char __ATTRS_o_ai
6601vec_vsro(vector unsigned char a, vector unsigned char b)
6602{
6603  return (vector unsigned char)
6604           __builtin_altivec_vsro((vector int)a, (vector int)b);
6605}
6606
6607static vector short __ATTRS_o_ai
6608vec_vsro(vector short a, vector signed char b)
6609{
6610  return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b);
6611}
6612
6613static vector short __ATTRS_o_ai
6614vec_vsro(vector short a, vector unsigned char b)
6615{
6616  return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b);
6617}
6618
6619static vector unsigned short __ATTRS_o_ai
6620vec_vsro(vector unsigned short a, vector signed char b)
6621{
6622  return (vector unsigned short)
6623           __builtin_altivec_vsro((vector int)a, (vector int)b);
6624}
6625
6626static vector unsigned short __ATTRS_o_ai
6627vec_vsro(vector unsigned short a, vector unsigned char b)
6628{
6629  return (vector unsigned short)
6630           __builtin_altivec_vsro((vector int)a, (vector int)b);
6631}
6632
6633static vector pixel __ATTRS_o_ai
6634vec_vsro(vector pixel a, vector signed char b)
6635{
6636  return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b);
6637}
6638
6639static vector pixel __ATTRS_o_ai
6640vec_vsro(vector pixel a, vector unsigned char b)
6641{
6642  return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b);
6643}
6644
6645static vector int __ATTRS_o_ai
6646vec_vsro(vector int a, vector signed char b)
6647{
6648  return (vector int)__builtin_altivec_vsro(a, (vector int)b);
6649}
6650
6651static vector int __ATTRS_o_ai
6652vec_vsro(vector int a, vector unsigned char b)
6653{
6654  return (vector int)__builtin_altivec_vsro(a, (vector int)b);
6655}
6656
6657static vector unsigned int __ATTRS_o_ai
6658vec_vsro(vector unsigned int a, vector signed char b)
6659{
6660  return (vector unsigned int)
6661           __builtin_altivec_vsro((vector int)a, (vector int)b);
6662}
6663
6664static vector unsigned int __ATTRS_o_ai
6665vec_vsro(vector unsigned int a, vector unsigned char b)
6666{
6667  return (vector unsigned int)
6668           __builtin_altivec_vsro((vector int)a, (vector int)b);
6669}
6670
6671static vector float __ATTRS_o_ai
6672vec_vsro(vector float a, vector signed char b)
6673{
6674  return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b);
6675}
6676
6677static vector float __ATTRS_o_ai
6678vec_vsro(vector float a, vector unsigned char b)
6679{
6680  return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b);
6681}
6682
6683/* vec_st */
6684
6685static void __ATTRS_o_ai
6686vec_st(vector signed char a, int b, vector signed char *c)
6687{
6688  __builtin_altivec_stvx((vector int)a, b, c);
6689}
6690
6691static void __ATTRS_o_ai
6692vec_st(vector signed char a, int b, signed char *c)
6693{
6694  __builtin_altivec_stvx((vector int)a, b, c);
6695}
6696
6697static void __ATTRS_o_ai
6698vec_st(vector unsigned char a, int b, vector unsigned char *c)
6699{
6700  __builtin_altivec_stvx((vector int)a, b, c);
6701}
6702
6703static void __ATTRS_o_ai
6704vec_st(vector unsigned char a, int b, unsigned char *c)
6705{
6706  __builtin_altivec_stvx((vector int)a, b, c);
6707}
6708
6709static void __ATTRS_o_ai
6710vec_st(vector bool char a, int b, signed char *c)
6711{
6712  __builtin_altivec_stvx((vector int)a, b, c);
6713}
6714
6715static void __ATTRS_o_ai
6716vec_st(vector bool char a, int b, unsigned char *c)
6717{
6718  __builtin_altivec_stvx((vector int)a, b, c);
6719}
6720
6721static void __ATTRS_o_ai
6722vec_st(vector bool char a, int b, vector bool char *c)
6723{
6724  __builtin_altivec_stvx((vector int)a, b, c);
6725}
6726
6727static void __ATTRS_o_ai
6728vec_st(vector short a, int b, vector short *c)
6729{
6730  __builtin_altivec_stvx((vector int)a, b, c);
6731}
6732
6733static void __ATTRS_o_ai
6734vec_st(vector short a, int b, short *c)
6735{
6736  __builtin_altivec_stvx((vector int)a, b, c);
6737}
6738
6739static void __ATTRS_o_ai
6740vec_st(vector unsigned short a, int b, vector unsigned short *c)
6741{
6742  __builtin_altivec_stvx((vector int)a, b, c);
6743}
6744
6745static void __ATTRS_o_ai
6746vec_st(vector unsigned short a, int b, unsigned short *c)
6747{
6748  __builtin_altivec_stvx((vector int)a, b, c);
6749}
6750
6751static void __ATTRS_o_ai
6752vec_st(vector bool short a, int b, short *c)
6753{
6754  __builtin_altivec_stvx((vector int)a, b, c);
6755}
6756
6757static void __ATTRS_o_ai
6758vec_st(vector bool short a, int b, unsigned short *c)
6759{
6760  __builtin_altivec_stvx((vector int)a, b, c);
6761}
6762
6763static void __ATTRS_o_ai
6764vec_st(vector bool short a, int b, vector bool short *c)
6765{
6766  __builtin_altivec_stvx((vector int)a, b, c);
6767}
6768
6769static void __ATTRS_o_ai
6770vec_st(vector pixel a, int b, short *c)
6771{
6772  __builtin_altivec_stvx((vector int)a, b, c);
6773}
6774
6775static void __ATTRS_o_ai
6776vec_st(vector pixel a, int b, unsigned short *c)
6777{
6778  __builtin_altivec_stvx((vector int)a, b, c);
6779}
6780
6781static void __ATTRS_o_ai
6782vec_st(vector pixel a, int b, vector pixel *c)
6783{
6784  __builtin_altivec_stvx((vector int)a, b, c);
6785}
6786
6787static void __ATTRS_o_ai
6788vec_st(vector int a, int b, vector int *c)
6789{
6790  __builtin_altivec_stvx(a, b, c);
6791}
6792
6793static void __ATTRS_o_ai
6794vec_st(vector int a, int b, int *c)
6795{
6796  __builtin_altivec_stvx(a, b, c);
6797}
6798
6799static void __ATTRS_o_ai
6800vec_st(vector unsigned int a, int b, vector unsigned int *c)
6801{
6802  __builtin_altivec_stvx((vector int)a, b, c);
6803}
6804
6805static void __ATTRS_o_ai
6806vec_st(vector unsigned int a, int b, unsigned int *c)
6807{
6808  __builtin_altivec_stvx((vector int)a, b, c);
6809}
6810
6811static void __ATTRS_o_ai
6812vec_st(vector bool int a, int b, int *c)
6813{
6814  __builtin_altivec_stvx((vector int)a, b, c);
6815}
6816
6817static void __ATTRS_o_ai
6818vec_st(vector bool int a, int b, unsigned int *c)
6819{
6820  __builtin_altivec_stvx((vector int)a, b, c);
6821}
6822
6823static void __ATTRS_o_ai
6824vec_st(vector bool int a, int b, vector bool int *c)
6825{
6826  __builtin_altivec_stvx((vector int)a, b, c);
6827}
6828
6829static void __ATTRS_o_ai
6830vec_st(vector float a, int b, vector float *c)
6831{
6832  __builtin_altivec_stvx((vector int)a, b, c);
6833}
6834
6835static void __ATTRS_o_ai
6836vec_st(vector float a, int b, float *c)
6837{
6838  __builtin_altivec_stvx((vector int)a, b, c);
6839}
6840
6841/* vec_stvx */
6842
6843static void __ATTRS_o_ai
6844vec_stvx(vector signed char a, int b, vector signed char *c)
6845{
6846  __builtin_altivec_stvx((vector int)a, b, c);
6847}
6848
6849static void __ATTRS_o_ai
6850vec_stvx(vector signed char a, int b, signed char *c)
6851{
6852  __builtin_altivec_stvx((vector int)a, b, c);
6853}
6854
6855static void __ATTRS_o_ai
6856vec_stvx(vector unsigned char a, int b, vector unsigned char *c)
6857{
6858  __builtin_altivec_stvx((vector int)a, b, c);
6859}
6860
6861static void __ATTRS_o_ai
6862vec_stvx(vector unsigned char a, int b, unsigned char *c)
6863{
6864  __builtin_altivec_stvx((vector int)a, b, c);
6865}
6866
6867static void __ATTRS_o_ai
6868vec_stvx(vector bool char a, int b, signed char *c)
6869{
6870  __builtin_altivec_stvx((vector int)a, b, c);
6871}
6872
6873static void __ATTRS_o_ai
6874vec_stvx(vector bool char a, int b, unsigned char *c)
6875{
6876  __builtin_altivec_stvx((vector int)a, b, c);
6877}
6878
6879static void __ATTRS_o_ai
6880vec_stvx(vector bool char a, int b, vector bool char *c)
6881{
6882  __builtin_altivec_stvx((vector int)a, b, c);
6883}
6884
6885static void __ATTRS_o_ai
6886vec_stvx(vector short a, int b, vector short *c)
6887{
6888  __builtin_altivec_stvx((vector int)a, b, c);
6889}
6890
6891static void __ATTRS_o_ai
6892vec_stvx(vector short a, int b, short *c)
6893{
6894  __builtin_altivec_stvx((vector int)a, b, c);
6895}
6896
6897static void __ATTRS_o_ai
6898vec_stvx(vector unsigned short a, int b, vector unsigned short *c)
6899{
6900  __builtin_altivec_stvx((vector int)a, b, c);
6901}
6902
6903static void __ATTRS_o_ai
6904vec_stvx(vector unsigned short a, int b, unsigned short *c)
6905{
6906  __builtin_altivec_stvx((vector int)a, b, c);
6907}
6908
6909static void __ATTRS_o_ai
6910vec_stvx(vector bool short a, int b, short *c)
6911{
6912  __builtin_altivec_stvx((vector int)a, b, c);
6913}
6914
6915static void __ATTRS_o_ai
6916vec_stvx(vector bool short a, int b, unsigned short *c)
6917{
6918  __builtin_altivec_stvx((vector int)a, b, c);
6919}
6920
6921static void __ATTRS_o_ai
6922vec_stvx(vector bool short a, int b, vector bool short *c)
6923{
6924  __builtin_altivec_stvx((vector int)a, b, c);
6925}
6926
6927static void __ATTRS_o_ai
6928vec_stvx(vector pixel a, int b, short *c)
6929{
6930  __builtin_altivec_stvx((vector int)a, b, c);
6931}
6932
6933static void __ATTRS_o_ai
6934vec_stvx(vector pixel a, int b, unsigned short *c)
6935{
6936  __builtin_altivec_stvx((vector int)a, b, c);
6937}
6938
6939static void __ATTRS_o_ai
6940vec_stvx(vector pixel a, int b, vector pixel *c)
6941{
6942  __builtin_altivec_stvx((vector int)a, b, c);
6943}
6944
6945static void __ATTRS_o_ai
6946vec_stvx(vector int a, int b, vector int *c)
6947{
6948  __builtin_altivec_stvx(a, b, c);
6949}
6950
6951static void __ATTRS_o_ai
6952vec_stvx(vector int a, int b, int *c)
6953{
6954  __builtin_altivec_stvx(a, b, c);
6955}
6956
6957static void __ATTRS_o_ai
6958vec_stvx(vector unsigned int a, int b, vector unsigned int *c)
6959{
6960  __builtin_altivec_stvx((vector int)a, b, c);
6961}
6962
6963static void __ATTRS_o_ai
6964vec_stvx(vector unsigned int a, int b, unsigned int *c)
6965{
6966  __builtin_altivec_stvx((vector int)a, b, c);
6967}
6968
6969static void __ATTRS_o_ai
6970vec_stvx(vector bool int a, int b, int *c)
6971{
6972  __builtin_altivec_stvx((vector int)a, b, c);
6973}
6974
6975static void __ATTRS_o_ai
6976vec_stvx(vector bool int a, int b, unsigned int *c)
6977{
6978  __builtin_altivec_stvx((vector int)a, b, c);
6979}
6980
6981static void __ATTRS_o_ai
6982vec_stvx(vector bool int a, int b, vector bool int *c)
6983{
6984  __builtin_altivec_stvx((vector int)a, b, c);
6985}
6986
6987static void __ATTRS_o_ai
6988vec_stvx(vector float a, int b, vector float *c)
6989{
6990  __builtin_altivec_stvx((vector int)a, b, c);
6991}
6992
6993static void __ATTRS_o_ai
6994vec_stvx(vector float a, int b, float *c)
6995{
6996  __builtin_altivec_stvx((vector int)a, b, c);
6997}
6998
6999/* vec_ste */
7000
7001static void __ATTRS_o_ai
7002vec_ste(vector signed char a, int b, signed char *c)
7003{
7004  __builtin_altivec_stvebx((vector char)a, b, c);
7005}
7006
7007static void __ATTRS_o_ai
7008vec_ste(vector unsigned char a, int b, unsigned char *c)
7009{
7010  __builtin_altivec_stvebx((vector char)a, b, c);
7011}
7012
7013static void __ATTRS_o_ai
7014vec_ste(vector bool char a, int b, signed char *c)
7015{
7016  __builtin_altivec_stvebx((vector char)a, b, c);
7017}
7018
7019static void __ATTRS_o_ai
7020vec_ste(vector bool char a, int b, unsigned char *c)
7021{
7022  __builtin_altivec_stvebx((vector char)a, b, c);
7023}
7024
7025static void __ATTRS_o_ai
7026vec_ste(vector short a, int b, short *c)
7027{
7028  __builtin_altivec_stvehx(a, b, c);
7029}
7030
7031static void __ATTRS_o_ai
7032vec_ste(vector unsigned short a, int b, unsigned short *c)
7033{
7034  __builtin_altivec_stvehx((vector short)a, b, c);
7035}
7036
7037static void __ATTRS_o_ai
7038vec_ste(vector bool short a, int b, short *c)
7039{
7040  __builtin_altivec_stvehx((vector short)a, b, c);
7041}
7042
7043static void __ATTRS_o_ai
7044vec_ste(vector bool short a, int b, unsigned short *c)
7045{
7046  __builtin_altivec_stvehx((vector short)a, b, c);
7047}
7048
7049static void __ATTRS_o_ai
7050vec_ste(vector pixel a, int b, short *c)
7051{
7052  __builtin_altivec_stvehx((vector short)a, b, c);
7053}
7054
7055static void __ATTRS_o_ai
7056vec_ste(vector pixel a, int b, unsigned short *c)
7057{
7058  __builtin_altivec_stvehx((vector short)a, b, c);
7059}
7060
7061static void __ATTRS_o_ai
7062vec_ste(vector int a, int b, int *c)
7063{
7064  __builtin_altivec_stvewx(a, b, c);
7065}
7066
7067static void __ATTRS_o_ai
7068vec_ste(vector unsigned int a, int b, unsigned int *c)
7069{
7070  __builtin_altivec_stvewx((vector int)a, b, c);
7071}
7072
7073static void __ATTRS_o_ai
7074vec_ste(vector bool int a, int b, int *c)
7075{
7076  __builtin_altivec_stvewx((vector int)a, b, c);
7077}
7078
7079static void __ATTRS_o_ai
7080vec_ste(vector bool int a, int b, unsigned int *c)
7081{
7082  __builtin_altivec_stvewx((vector int)a, b, c);
7083}
7084
7085static void __ATTRS_o_ai
7086vec_ste(vector float a, int b, float *c)
7087{
7088  __builtin_altivec_stvewx((vector int)a, b, c);
7089}
7090
7091/* vec_stvebx */
7092
7093static void __ATTRS_o_ai
7094vec_stvebx(vector signed char a, int b, signed char *c)
7095{
7096  __builtin_altivec_stvebx((vector char)a, b, c);
7097}
7098
7099static void __ATTRS_o_ai
7100vec_stvebx(vector unsigned char a, int b, unsigned char *c)
7101{
7102  __builtin_altivec_stvebx((vector char)a, b, c);
7103}
7104
7105static void __ATTRS_o_ai
7106vec_stvebx(vector bool char a, int b, signed char *c)
7107{
7108  __builtin_altivec_stvebx((vector char)a, b, c);
7109}
7110
7111static void __ATTRS_o_ai
7112vec_stvebx(vector bool char a, int b, unsigned char *c)
7113{
7114  __builtin_altivec_stvebx((vector char)a, b, c);
7115}
7116
7117/* vec_stvehx */
7118
7119static void __ATTRS_o_ai
7120vec_stvehx(vector short a, int b, short *c)
7121{
7122  __builtin_altivec_stvehx(a, b, c);
7123}
7124
7125static void __ATTRS_o_ai
7126vec_stvehx(vector unsigned short a, int b, unsigned short *c)
7127{
7128  __builtin_altivec_stvehx((vector short)a, b, c);
7129}
7130
7131static void __ATTRS_o_ai
7132vec_stvehx(vector bool short a, int b, short *c)
7133{
7134  __builtin_altivec_stvehx((vector short)a, b, c);
7135}
7136
7137static void __ATTRS_o_ai
7138vec_stvehx(vector bool short a, int b, unsigned short *c)
7139{
7140  __builtin_altivec_stvehx((vector short)a, b, c);
7141}
7142
7143static void __ATTRS_o_ai
7144vec_stvehx(vector pixel a, int b, short *c)
7145{
7146  __builtin_altivec_stvehx((vector short)a, b, c);
7147}
7148
7149static void __ATTRS_o_ai
7150vec_stvehx(vector pixel a, int b, unsigned short *c)
7151{
7152  __builtin_altivec_stvehx((vector short)a, b, c);
7153}
7154
7155/* vec_stvewx */
7156
7157static void __ATTRS_o_ai
7158vec_stvewx(vector int a, int b, int *c)
7159{
7160  __builtin_altivec_stvewx(a, b, c);
7161}
7162
7163static void __ATTRS_o_ai
7164vec_stvewx(vector unsigned int a, int b, unsigned int *c)
7165{
7166  __builtin_altivec_stvewx((vector int)a, b, c);
7167}
7168
7169static void __ATTRS_o_ai
7170vec_stvewx(vector bool int a, int b, int *c)
7171{
7172  __builtin_altivec_stvewx((vector int)a, b, c);
7173}
7174
7175static void __ATTRS_o_ai
7176vec_stvewx(vector bool int a, int b, unsigned int *c)
7177{
7178  __builtin_altivec_stvewx((vector int)a, b, c);
7179}
7180
7181static void __ATTRS_o_ai
7182vec_stvewx(vector float a, int b, float *c)
7183{
7184  __builtin_altivec_stvewx((vector int)a, b, c);
7185}
7186
7187/* vec_stl */
7188
7189static void __ATTRS_o_ai
7190vec_stl(vector signed char a, int b, vector signed char *c)
7191{
7192  __builtin_altivec_stvxl((vector int)a, b, c);
7193}
7194
7195static void __ATTRS_o_ai
7196vec_stl(vector signed char a, int b, signed char *c)
7197{
7198  __builtin_altivec_stvxl((vector int)a, b, c);
7199}
7200
7201static void __ATTRS_o_ai
7202vec_stl(vector unsigned char a, int b, vector unsigned char *c)
7203{
7204  __builtin_altivec_stvxl((vector int)a, b, c);
7205}
7206
7207static void __ATTRS_o_ai
7208vec_stl(vector unsigned char a, int b, unsigned char *c)
7209{
7210  __builtin_altivec_stvxl((vector int)a, b, c);
7211}
7212
7213static void __ATTRS_o_ai
7214vec_stl(vector bool char a, int b, signed char *c)
7215{
7216  __builtin_altivec_stvxl((vector int)a, b, c);
7217}
7218
7219static void __ATTRS_o_ai
7220vec_stl(vector bool char a, int b, unsigned char *c)
7221{
7222  __builtin_altivec_stvxl((vector int)a, b, c);
7223}
7224
7225static void __ATTRS_o_ai
7226vec_stl(vector bool char a, int b, vector bool char *c)
7227{
7228  __builtin_altivec_stvxl((vector int)a, b, c);
7229}
7230
7231static void __ATTRS_o_ai
7232vec_stl(vector short a, int b, vector short *c)
7233{
7234  __builtin_altivec_stvxl((vector int)a, b, c);
7235}
7236
7237static void __ATTRS_o_ai
7238vec_stl(vector short a, int b, short *c)
7239{
7240  __builtin_altivec_stvxl((vector int)a, b, c);
7241}
7242
7243static void __ATTRS_o_ai
7244vec_stl(vector unsigned short a, int b, vector unsigned short *c)
7245{
7246  __builtin_altivec_stvxl((vector int)a, b, c);
7247}
7248
7249static void __ATTRS_o_ai
7250vec_stl(vector unsigned short a, int b, unsigned short *c)
7251{
7252  __builtin_altivec_stvxl((vector int)a, b, c);
7253}
7254
7255static void __ATTRS_o_ai
7256vec_stl(vector bool short a, int b, short *c)
7257{
7258  __builtin_altivec_stvxl((vector int)a, b, c);
7259}
7260
7261static void __ATTRS_o_ai
7262vec_stl(vector bool short a, int b, unsigned short *c)
7263{
7264  __builtin_altivec_stvxl((vector int)a, b, c);
7265}
7266
7267static void __ATTRS_o_ai
7268vec_stl(vector bool short a, int b, vector bool short *c)
7269{
7270  __builtin_altivec_stvxl((vector int)a, b, c);
7271}
7272
7273static void __ATTRS_o_ai
7274vec_stl(vector pixel a, int b, short *c)
7275{
7276  __builtin_altivec_stvxl((vector int)a, b, c);
7277}
7278
7279static void __ATTRS_o_ai
7280vec_stl(vector pixel a, int b, unsigned short *c)
7281{
7282  __builtin_altivec_stvxl((vector int)a, b, c);
7283}
7284
7285static void __ATTRS_o_ai
7286vec_stl(vector pixel a, int b, vector pixel *c)
7287{
7288  __builtin_altivec_stvxl((vector int)a, b, c);
7289}
7290
7291static void __ATTRS_o_ai
7292vec_stl(vector int a, int b, vector int *c)
7293{
7294  __builtin_altivec_stvxl(a, b, c);
7295}
7296
7297static void __ATTRS_o_ai
7298vec_stl(vector int a, int b, int *c)
7299{
7300  __builtin_altivec_stvxl(a, b, c);
7301}
7302
7303static void __ATTRS_o_ai
7304vec_stl(vector unsigned int a, int b, vector unsigned int *c)
7305{
7306  __builtin_altivec_stvxl((vector int)a, b, c);
7307}
7308
7309static void __ATTRS_o_ai
7310vec_stl(vector unsigned int a, int b, unsigned int *c)
7311{
7312  __builtin_altivec_stvxl((vector int)a, b, c);
7313}
7314
7315static void __ATTRS_o_ai
7316vec_stl(vector bool int a, int b, int *c)
7317{
7318  __builtin_altivec_stvxl((vector int)a, b, c);
7319}
7320
7321static void __ATTRS_o_ai
7322vec_stl(vector bool int a, int b, unsigned int *c)
7323{
7324  __builtin_altivec_stvxl((vector int)a, b, c);
7325}
7326
7327static void __ATTRS_o_ai
7328vec_stl(vector bool int a, int b, vector bool int *c)
7329{
7330  __builtin_altivec_stvxl((vector int)a, b, c);
7331}
7332
7333static void __ATTRS_o_ai
7334vec_stl(vector float a, int b, vector float *c)
7335{
7336  __builtin_altivec_stvxl((vector int)a, b, c);
7337}
7338
7339static void __ATTRS_o_ai
7340vec_stl(vector float a, int b, float *c)
7341{
7342  __builtin_altivec_stvxl((vector int)a, b, c);
7343}
7344
7345/* vec_stvxl */
7346
7347static void __ATTRS_o_ai
7348vec_stvxl(vector signed char a, int b, vector signed char *c)
7349{
7350  __builtin_altivec_stvxl((vector int)a, b, c);
7351}
7352
7353static void __ATTRS_o_ai
7354vec_stvxl(vector signed char a, int b, signed char *c)
7355{
7356  __builtin_altivec_stvxl((vector int)a, b, c);
7357}
7358
7359static void __ATTRS_o_ai
7360vec_stvxl(vector unsigned char a, int b, vector unsigned char *c)
7361{
7362  __builtin_altivec_stvxl((vector int)a, b, c);
7363}
7364
7365static void __ATTRS_o_ai
7366vec_stvxl(vector unsigned char a, int b, unsigned char *c)
7367{
7368  __builtin_altivec_stvxl((vector int)a, b, c);
7369}
7370
7371static void __ATTRS_o_ai
7372vec_stvxl(vector bool char a, int b, signed char *c)
7373{
7374  __builtin_altivec_stvxl((vector int)a, b, c);
7375}
7376
7377static void __ATTRS_o_ai
7378vec_stvxl(vector bool char a, int b, unsigned char *c)
7379{
7380  __builtin_altivec_stvxl((vector int)a, b, c);
7381}
7382
7383static void __ATTRS_o_ai
7384vec_stvxl(vector bool char a, int b, vector bool char *c)
7385{
7386  __builtin_altivec_stvxl((vector int)a, b, c);
7387}
7388
7389static void __ATTRS_o_ai
7390vec_stvxl(vector short a, int b, vector short *c)
7391{
7392  __builtin_altivec_stvxl((vector int)a, b, c);
7393}
7394
7395static void __ATTRS_o_ai
7396vec_stvxl(vector short a, int b, short *c)
7397{
7398  __builtin_altivec_stvxl((vector int)a, b, c);
7399}
7400
7401static void __ATTRS_o_ai
7402vec_stvxl(vector unsigned short a, int b, vector unsigned short *c)
7403{
7404  __builtin_altivec_stvxl((vector int)a, b, c);
7405}
7406
7407static void __ATTRS_o_ai
7408vec_stvxl(vector unsigned short a, int b, unsigned short *c)
7409{
7410  __builtin_altivec_stvxl((vector int)a, b, c);
7411}
7412
7413static void __ATTRS_o_ai
7414vec_stvxl(vector bool short a, int b, short *c)
7415{
7416  __builtin_altivec_stvxl((vector int)a, b, c);
7417}
7418
7419static void __ATTRS_o_ai
7420vec_stvxl(vector bool short a, int b, unsigned short *c)
7421{
7422  __builtin_altivec_stvxl((vector int)a, b, c);
7423}
7424
7425static void __ATTRS_o_ai
7426vec_stvxl(vector bool short a, int b, vector bool short *c)
7427{
7428  __builtin_altivec_stvxl((vector int)a, b, c);
7429}
7430
7431static void __ATTRS_o_ai
7432vec_stvxl(vector pixel a, int b, short *c)
7433{
7434  __builtin_altivec_stvxl((vector int)a, b, c);
7435}
7436
7437static void __ATTRS_o_ai
7438vec_stvxl(vector pixel a, int b, unsigned short *c)
7439{
7440  __builtin_altivec_stvxl((vector int)a, b, c);
7441}
7442
7443static void __ATTRS_o_ai
7444vec_stvxl(vector pixel a, int b, vector pixel *c)
7445{
7446  __builtin_altivec_stvxl((vector int)a, b, c);
7447}
7448
7449static void __ATTRS_o_ai
7450vec_stvxl(vector int a, int b, vector int *c)
7451{
7452  __builtin_altivec_stvxl(a, b, c);
7453}
7454
7455static void __ATTRS_o_ai
7456vec_stvxl(vector int a, int b, int *c)
7457{
7458  __builtin_altivec_stvxl(a, b, c);
7459}
7460
7461static void __ATTRS_o_ai
7462vec_stvxl(vector unsigned int a, int b, vector unsigned int *c)
7463{
7464  __builtin_altivec_stvxl((vector int)a, b, c);
7465}
7466
7467static void __ATTRS_o_ai
7468vec_stvxl(vector unsigned int a, int b, unsigned int *c)
7469{
7470  __builtin_altivec_stvxl((vector int)a, b, c);
7471}
7472
7473static void __ATTRS_o_ai
7474vec_stvxl(vector bool int a, int b, int *c)
7475{
7476  __builtin_altivec_stvxl((vector int)a, b, c);
7477}
7478
7479static void __ATTRS_o_ai
7480vec_stvxl(vector bool int a, int b, unsigned int *c)
7481{
7482  __builtin_altivec_stvxl((vector int)a, b, c);
7483}
7484
7485static void __ATTRS_o_ai
7486vec_stvxl(vector bool int a, int b, vector bool int *c)
7487{
7488  __builtin_altivec_stvxl((vector int)a, b, c);
7489}
7490
7491static void __ATTRS_o_ai
7492vec_stvxl(vector float a, int b, vector float *c)
7493{
7494  __builtin_altivec_stvxl((vector int)a, b, c);
7495}
7496
7497static void __ATTRS_o_ai
7498vec_stvxl(vector float a, int b, float *c)
7499{
7500  __builtin_altivec_stvxl((vector int)a, b, c);
7501}
7502
7503/* vec_sub */
7504
7505static vector signed char __ATTRS_o_ai
7506vec_sub(vector signed char a, vector signed char b)
7507{
7508  return a - b;
7509}
7510
7511static vector signed char __ATTRS_o_ai
7512vec_sub(vector bool char a, vector signed char b)
7513{
7514  return (vector signed char)a - b;
7515}
7516
7517static vector signed char __ATTRS_o_ai
7518vec_sub(vector signed char a, vector bool char b)
7519{
7520  return a - (vector signed char)b;
7521}
7522
7523static vector unsigned char __ATTRS_o_ai
7524vec_sub(vector unsigned char a, vector unsigned char b)
7525{
7526  return a - b;
7527}
7528
7529static vector unsigned char __ATTRS_o_ai
7530vec_sub(vector bool char a, vector unsigned char b)
7531{
7532  return (vector unsigned char)a - b;
7533}
7534
7535static vector unsigned char __ATTRS_o_ai
7536vec_sub(vector unsigned char a, vector bool char b)
7537{
7538  return a - (vector unsigned char)b;
7539}
7540
7541static vector short __ATTRS_o_ai
7542vec_sub(vector short a, vector short b)
7543{
7544  return a - b;
7545}
7546
7547static vector short __ATTRS_o_ai
7548vec_sub(vector bool short a, vector short b)
7549{
7550  return (vector short)a - b;
7551}
7552
7553static vector short __ATTRS_o_ai
7554vec_sub(vector short a, vector bool short b)
7555{
7556  return a - (vector short)b;
7557}
7558
7559static vector unsigned short __ATTRS_o_ai
7560vec_sub(vector unsigned short a, vector unsigned short b)
7561{
7562  return a - b;
7563}
7564
7565static vector unsigned short __ATTRS_o_ai
7566vec_sub(vector bool short a, vector unsigned short b)
7567{
7568  return (vector unsigned short)a - b;
7569}
7570
7571static vector unsigned short __ATTRS_o_ai
7572vec_sub(vector unsigned short a, vector bool short b)
7573{
7574  return a - (vector unsigned short)b;
7575}
7576
7577static vector int __ATTRS_o_ai
7578vec_sub(vector int a, vector int b)
7579{
7580  return a - b;
7581}
7582
7583static vector int __ATTRS_o_ai
7584vec_sub(vector bool int a, vector int b)
7585{
7586  return (vector int)a - b;
7587}
7588
7589static vector int __ATTRS_o_ai
7590vec_sub(vector int a, vector bool int b)
7591{
7592  return a - (vector int)b;
7593}
7594
7595static vector unsigned int __ATTRS_o_ai
7596vec_sub(vector unsigned int a, vector unsigned int b)
7597{
7598  return a - b;
7599}
7600
7601static vector unsigned int __ATTRS_o_ai
7602vec_sub(vector bool int a, vector unsigned int b)
7603{
7604  return (vector unsigned int)a - b;
7605}
7606
7607static vector unsigned int __ATTRS_o_ai
7608vec_sub(vector unsigned int a, vector bool int b)
7609{
7610  return a - (vector unsigned int)b;
7611}
7612
7613static vector float __ATTRS_o_ai
7614vec_sub(vector float a, vector float b)
7615{
7616  return a - b;
7617}
7618
7619/* vec_vsububm */
7620
7621#define __builtin_altivec_vsububm vec_vsububm
7622
7623static vector signed char __ATTRS_o_ai
7624vec_vsububm(vector signed char a, vector signed char b)
7625{
7626  return a - b;
7627}
7628
7629static vector signed char __ATTRS_o_ai
7630vec_vsububm(vector bool char a, vector signed char b)
7631{
7632  return (vector signed char)a - b;
7633}
7634
7635static vector signed char __ATTRS_o_ai
7636vec_vsububm(vector signed char a, vector bool char b)
7637{
7638  return a - (vector signed char)b;
7639}
7640
7641static vector unsigned char __ATTRS_o_ai
7642vec_vsububm(vector unsigned char a, vector unsigned char b)
7643{
7644  return a - b;
7645}
7646
7647static vector unsigned char __ATTRS_o_ai
7648vec_vsububm(vector bool char a, vector unsigned char b)
7649{
7650  return (vector unsigned char)a - b;
7651}
7652
7653static vector unsigned char __ATTRS_o_ai
7654vec_vsububm(vector unsigned char a, vector bool char b)
7655{
7656  return a - (vector unsigned char)b;
7657}
7658
7659/* vec_vsubuhm */
7660
7661#define __builtin_altivec_vsubuhm vec_vsubuhm
7662
7663static vector short __ATTRS_o_ai
7664vec_vsubuhm(vector short a, vector short b)
7665{
7666  return a - b;
7667}
7668
7669static vector short __ATTRS_o_ai
7670vec_vsubuhm(vector bool short a, vector short b)
7671{
7672  return (vector short)a - b;
7673}
7674
7675static vector short __ATTRS_o_ai
7676vec_vsubuhm(vector short a, vector bool short b)
7677{
7678  return a - (vector short)b;
7679}
7680
7681static vector unsigned short __ATTRS_o_ai
7682vec_vsubuhm(vector unsigned short a, vector unsigned short b)
7683{
7684  return a - b;
7685}
7686
7687static vector unsigned short __ATTRS_o_ai
7688vec_vsubuhm(vector bool short a, vector unsigned short b)
7689{
7690  return (vector unsigned short)a - b;
7691}
7692
7693static vector unsigned short __ATTRS_o_ai
7694vec_vsubuhm(vector unsigned short a, vector bool short b)
7695{
7696  return a - (vector unsigned short)b;
7697}
7698
7699/* vec_vsubuwm */
7700
7701#define __builtin_altivec_vsubuwm vec_vsubuwm
7702
7703static vector int __ATTRS_o_ai
7704vec_vsubuwm(vector int a, vector int b)
7705{
7706  return a - b;
7707}
7708
7709static vector int __ATTRS_o_ai
7710vec_vsubuwm(vector bool int a, vector int b)
7711{
7712  return (vector int)a - b;
7713}
7714
7715static vector int __ATTRS_o_ai
7716vec_vsubuwm(vector int a, vector bool int b)
7717{
7718  return a - (vector int)b;
7719}
7720
7721static vector unsigned int __ATTRS_o_ai
7722vec_vsubuwm(vector unsigned int a, vector unsigned int b)
7723{
7724  return a - b;
7725}
7726
7727static vector unsigned int __ATTRS_o_ai
7728vec_vsubuwm(vector bool int a, vector unsigned int b)
7729{
7730  return (vector unsigned int)a - b;
7731}
7732
7733static vector unsigned int __ATTRS_o_ai
7734vec_vsubuwm(vector unsigned int a, vector bool int b)
7735{
7736  return a - (vector unsigned int)b;
7737}
7738
7739/* vec_vsubfp */
7740
7741#define __builtin_altivec_vsubfp vec_vsubfp
7742
7743static vector float __attribute__((__always_inline__))
7744vec_vsubfp(vector float a, vector float b)
7745{
7746  return a - b;
7747}
7748
7749/* vec_subc */
7750
7751static vector unsigned int __attribute__((__always_inline__))
7752vec_subc(vector unsigned int a, vector unsigned int b)
7753{
7754  return __builtin_altivec_vsubcuw(a, b);
7755}
7756
7757/* vec_vsubcuw */
7758
7759static vector unsigned int __attribute__((__always_inline__))
7760vec_vsubcuw(vector unsigned int a, vector unsigned int b)
7761{
7762  return __builtin_altivec_vsubcuw(a, b);
7763}
7764
7765/* vec_subs */
7766
7767static vector signed char __ATTRS_o_ai
7768vec_subs(vector signed char a, vector signed char b)
7769{
7770  return __builtin_altivec_vsubsbs(a, b);
7771}
7772
7773static vector signed char __ATTRS_o_ai
7774vec_subs(vector bool char a, vector signed char b)
7775{
7776  return __builtin_altivec_vsubsbs((vector signed char)a, b);
7777}
7778
7779static vector signed char __ATTRS_o_ai
7780vec_subs(vector signed char a, vector bool char b)
7781{
7782  return __builtin_altivec_vsubsbs(a, (vector signed char)b);
7783}
7784
7785static vector unsigned char __ATTRS_o_ai
7786vec_subs(vector unsigned char a, vector unsigned char b)
7787{
7788  return __builtin_altivec_vsububs(a, b);
7789}
7790
7791static vector unsigned char __ATTRS_o_ai
7792vec_subs(vector bool char a, vector unsigned char b)
7793{
7794  return __builtin_altivec_vsububs((vector unsigned char)a, b);
7795}
7796
7797static vector unsigned char __ATTRS_o_ai
7798vec_subs(vector unsigned char a, vector bool char b)
7799{
7800  return __builtin_altivec_vsububs(a, (vector unsigned char)b);
7801}
7802
7803static vector short __ATTRS_o_ai
7804vec_subs(vector short a, vector short b)
7805{
7806  return __builtin_altivec_vsubshs(a, b);
7807}
7808
7809static vector short __ATTRS_o_ai
7810vec_subs(vector bool short a, vector short b)
7811{
7812  return __builtin_altivec_vsubshs((vector short)a, b);
7813}
7814
7815static vector short __ATTRS_o_ai
7816vec_subs(vector short a, vector bool short b)
7817{
7818  return __builtin_altivec_vsubshs(a, (vector short)b);
7819}
7820
7821static vector unsigned short __ATTRS_o_ai
7822vec_subs(vector unsigned short a, vector unsigned short b)
7823{
7824  return __builtin_altivec_vsubuhs(a, b);
7825}
7826
7827static vector unsigned short __ATTRS_o_ai
7828vec_subs(vector bool short a, vector unsigned short b)
7829{
7830  return __builtin_altivec_vsubuhs((vector unsigned short)a, b);
7831}
7832
7833static vector unsigned short __ATTRS_o_ai
7834vec_subs(vector unsigned short a, vector bool short b)
7835{
7836  return __builtin_altivec_vsubuhs(a, (vector unsigned short)b);
7837}
7838
7839static vector int __ATTRS_o_ai
7840vec_subs(vector int a, vector int b)
7841{
7842  return __builtin_altivec_vsubsws(a, b);
7843}
7844
7845static vector int __ATTRS_o_ai
7846vec_subs(vector bool int a, vector int b)
7847{
7848  return __builtin_altivec_vsubsws((vector int)a, b);
7849}
7850
7851static vector int __ATTRS_o_ai
7852vec_subs(vector int a, vector bool int b)
7853{
7854  return __builtin_altivec_vsubsws(a, (vector int)b);
7855}
7856
7857static vector unsigned int __ATTRS_o_ai
7858vec_subs(vector unsigned int a, vector unsigned int b)
7859{
7860  return __builtin_altivec_vsubuws(a, b);
7861}
7862
7863static vector unsigned int __ATTRS_o_ai
7864vec_subs(vector bool int a, vector unsigned int b)
7865{
7866  return __builtin_altivec_vsubuws((vector unsigned int)a, b);
7867}
7868
7869static vector unsigned int __ATTRS_o_ai
7870vec_subs(vector unsigned int a, vector bool int b)
7871{
7872  return __builtin_altivec_vsubuws(a, (vector unsigned int)b);
7873}
7874
7875/* vec_vsubsbs */
7876
7877static vector signed char __ATTRS_o_ai
7878vec_vsubsbs(vector signed char a, vector signed char b)
7879{
7880  return __builtin_altivec_vsubsbs(a, b);
7881}
7882
7883static vector signed char __ATTRS_o_ai
7884vec_vsubsbs(vector bool char a, vector signed char b)
7885{
7886  return __builtin_altivec_vsubsbs((vector signed char)a, b);
7887}
7888
7889static vector signed char __ATTRS_o_ai
7890vec_vsubsbs(vector signed char a, vector bool char b)
7891{
7892  return __builtin_altivec_vsubsbs(a, (vector signed char)b);
7893}
7894
7895/* vec_vsububs */
7896
7897static vector unsigned char __ATTRS_o_ai
7898vec_vsububs(vector unsigned char a, vector unsigned char b)
7899{
7900  return __builtin_altivec_vsububs(a, b);
7901}
7902
7903static vector unsigned char __ATTRS_o_ai
7904vec_vsububs(vector bool char a, vector unsigned char b)
7905{
7906  return __builtin_altivec_vsububs((vector unsigned char)a, b);
7907}
7908
7909static vector unsigned char __ATTRS_o_ai
7910vec_vsububs(vector unsigned char a, vector bool char b)
7911{
7912  return __builtin_altivec_vsububs(a, (vector unsigned char)b);
7913}
7914
7915/* vec_vsubshs */
7916
7917static vector short __ATTRS_o_ai
7918vec_vsubshs(vector short a, vector short b)
7919{
7920  return __builtin_altivec_vsubshs(a, b);
7921}
7922
7923static vector short __ATTRS_o_ai
7924vec_vsubshs(vector bool short a, vector short b)
7925{
7926  return __builtin_altivec_vsubshs((vector short)a, b);
7927}
7928
7929static vector short __ATTRS_o_ai
7930vec_vsubshs(vector short a, vector bool short b)
7931{
7932  return __builtin_altivec_vsubshs(a, (vector short)b);
7933}
7934
7935/* vec_vsubuhs */
7936
7937static vector unsigned short __ATTRS_o_ai
7938vec_vsubuhs(vector unsigned short a, vector unsigned short b)
7939{
7940  return __builtin_altivec_vsubuhs(a, b);
7941}
7942
7943static vector unsigned short __ATTRS_o_ai
7944vec_vsubuhs(vector bool short a, vector unsigned short b)
7945{
7946  return __builtin_altivec_vsubuhs((vector unsigned short)a, b);
7947}
7948
7949static vector unsigned short __ATTRS_o_ai
7950vec_vsubuhs(vector unsigned short a, vector bool short b)
7951{
7952  return __builtin_altivec_vsubuhs(a, (vector unsigned short)b);
7953}
7954
7955/* vec_vsubsws */
7956
7957static vector int __ATTRS_o_ai
7958vec_vsubsws(vector int a, vector int b)
7959{
7960  return __builtin_altivec_vsubsws(a, b);
7961}
7962
7963static vector int __ATTRS_o_ai
7964vec_vsubsws(vector bool int a, vector int b)
7965{
7966  return __builtin_altivec_vsubsws((vector int)a, b);
7967}
7968
7969static vector int __ATTRS_o_ai
7970vec_vsubsws(vector int a, vector bool int b)
7971{
7972  return __builtin_altivec_vsubsws(a, (vector int)b);
7973}
7974
7975/* vec_vsubuws */
7976
7977static vector unsigned int __ATTRS_o_ai
7978vec_vsubuws(vector unsigned int a, vector unsigned int b)
7979{
7980  return __builtin_altivec_vsubuws(a, b);
7981}
7982
7983static vector unsigned int __ATTRS_o_ai
7984vec_vsubuws(vector bool int a, vector unsigned int b)
7985{
7986  return __builtin_altivec_vsubuws((vector unsigned int)a, b);
7987}
7988
7989static vector unsigned int __ATTRS_o_ai
7990vec_vsubuws(vector unsigned int a, vector bool int b)
7991{
7992  return __builtin_altivec_vsubuws(a, (vector unsigned int)b);
7993}
7994
7995/* vec_sum4s */
7996
7997static vector int __ATTRS_o_ai
7998vec_sum4s(vector signed char a, vector int b)
7999{
8000  return __builtin_altivec_vsum4sbs(a, b);
8001}
8002
8003static vector unsigned int __ATTRS_o_ai
8004vec_sum4s(vector unsigned char a, vector unsigned int b)
8005{
8006  return __builtin_altivec_vsum4ubs(a, b);
8007}
8008
8009static vector int __ATTRS_o_ai
8010vec_sum4s(vector signed short a, vector int b)
8011{
8012  return __builtin_altivec_vsum4shs(a, b);
8013}
8014
8015/* vec_vsum4sbs */
8016
8017static vector int __attribute__((__always_inline__))
8018vec_vsum4sbs(vector signed char a, vector int b)
8019{
8020  return __builtin_altivec_vsum4sbs(a, b);
8021}
8022
8023/* vec_vsum4ubs */
8024
8025static vector unsigned int __attribute__((__always_inline__))
8026vec_vsum4ubs(vector unsigned char a, vector unsigned int b)
8027{
8028  return __builtin_altivec_vsum4ubs(a, b);
8029}
8030
8031/* vec_vsum4shs */
8032
8033static vector int __attribute__((__always_inline__))
8034vec_vsum4shs(vector signed short a, vector int b)
8035{
8036  return __builtin_altivec_vsum4shs(a, b);
8037}
8038
8039/* vec_sum2s */
8040
8041static vector signed int __attribute__((__always_inline__))
8042vec_sum2s(vector int a, vector int b)
8043{
8044  return __builtin_altivec_vsum2sws(a, b);
8045}
8046
8047/* vec_vsum2sws */
8048
8049static vector signed int __attribute__((__always_inline__))
8050vec_vsum2sws(vector int a, vector int b)
8051{
8052  return __builtin_altivec_vsum2sws(a, b);
8053}
8054
8055/* vec_sums */
8056
8057static vector signed int __attribute__((__always_inline__))
8058vec_sums(vector signed int a, vector signed int b)
8059{
8060  return __builtin_altivec_vsumsws(a, b);
8061}
8062
8063/* vec_vsumsws */
8064
8065static vector signed int __attribute__((__always_inline__))
8066vec_vsumsws(vector signed int a, vector signed int b)
8067{
8068  return __builtin_altivec_vsumsws(a, b);
8069}
8070
8071/* vec_trunc */
8072
8073static vector float __attribute__((__always_inline__))
8074vec_trunc(vector float a)
8075{
8076  return __builtin_altivec_vrfiz(a);
8077}
8078
8079/* vec_vrfiz */
8080
8081static vector float __attribute__((__always_inline__))
8082vec_vrfiz(vector float a)
8083{
8084  return __builtin_altivec_vrfiz(a);
8085}
8086
8087/* vec_unpackh */
8088
8089static vector short __ATTRS_o_ai
8090vec_unpackh(vector signed char a)
8091{
8092  return __builtin_altivec_vupkhsb((vector char)a);
8093}
8094
8095static vector bool short __ATTRS_o_ai
8096vec_unpackh(vector bool char a)
8097{
8098  return (vector bool short)__builtin_altivec_vupkhsb((vector char)a);
8099}
8100
8101static vector int __ATTRS_o_ai
8102vec_unpackh(vector short a)
8103{
8104  return __builtin_altivec_vupkhsh(a);
8105}
8106
8107static vector bool int __ATTRS_o_ai
8108vec_unpackh(vector bool short a)
8109{
8110  return (vector bool int)__builtin_altivec_vupkhsh((vector short)a);
8111}
8112
8113static vector unsigned int __ATTRS_o_ai
8114vec_unpackh(vector pixel a)
8115{
8116  return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)a);
8117}
8118
8119/* vec_vupkhsb */
8120
8121static vector short __ATTRS_o_ai
8122vec_vupkhsb(vector signed char a)
8123{
8124  return __builtin_altivec_vupkhsb((vector char)a);
8125}
8126
8127static vector bool short __ATTRS_o_ai
8128vec_vupkhsb(vector bool char a)
8129{
8130  return (vector bool short)__builtin_altivec_vupkhsb((vector char)a);
8131}
8132
8133/* vec_vupkhsh */
8134
8135static vector int __ATTRS_o_ai
8136vec_vupkhsh(vector short a)
8137{
8138  return __builtin_altivec_vupkhsh(a);
8139}
8140
8141static vector bool int __ATTRS_o_ai
8142vec_vupkhsh(vector bool short a)
8143{
8144  return (vector bool int)__builtin_altivec_vupkhsh((vector short)a);
8145}
8146
8147static vector unsigned int __ATTRS_o_ai
8148vec_vupkhsh(vector pixel a)
8149{
8150  return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)a);
8151}
8152
8153/* vec_unpackl */
8154
8155static vector short __ATTRS_o_ai
8156vec_unpackl(vector signed char a)
8157{
8158  return __builtin_altivec_vupklsb((vector char)a);
8159}
8160
8161static vector bool short __ATTRS_o_ai
8162vec_unpackl(vector bool char a)
8163{
8164  return (vector bool short)__builtin_altivec_vupklsb((vector char)a);
8165}
8166
8167static vector int __ATTRS_o_ai
8168vec_unpackl(vector short a)
8169{
8170  return __builtin_altivec_vupklsh(a);
8171}
8172
8173static vector bool int __ATTRS_o_ai
8174vec_unpackl(vector bool short a)
8175{
8176  return (vector bool int)__builtin_altivec_vupklsh((vector short)a);
8177}
8178
8179static vector unsigned int __ATTRS_o_ai
8180vec_unpackl(vector pixel a)
8181{
8182  return (vector unsigned int)__builtin_altivec_vupklsh((vector short)a);
8183}
8184
8185/* vec_vupklsb */
8186
8187static vector short __ATTRS_o_ai
8188vec_vupklsb(vector signed char a)
8189{
8190  return __builtin_altivec_vupklsb((vector char)a);
8191}
8192
8193static vector bool short __ATTRS_o_ai
8194vec_vupklsb(vector bool char a)
8195{
8196  return (vector bool short)__builtin_altivec_vupklsb((vector char)a);
8197}
8198
8199/* vec_vupklsh */
8200
8201static vector int __ATTRS_o_ai
8202vec_vupklsh(vector short a)
8203{
8204  return __builtin_altivec_vupklsh(a);
8205}
8206
8207static vector bool int __ATTRS_o_ai
8208vec_vupklsh(vector bool short a)
8209{
8210  return (vector bool int)__builtin_altivec_vupklsh((vector short)a);
8211}
8212
8213static vector unsigned int __ATTRS_o_ai
8214vec_vupklsh(vector pixel a)
8215{
8216  return (vector unsigned int)__builtin_altivec_vupklsh((vector short)a);
8217}
8218
8219/* vec_xor */
8220
8221#define __builtin_altivec_vxor vec_xor
8222
8223static vector signed char __ATTRS_o_ai
8224vec_xor(vector signed char a, vector signed char b)
8225{
8226  return a ^ b;
8227}
8228
8229static vector signed char __ATTRS_o_ai
8230vec_xor(vector bool char a, vector signed char b)
8231{
8232  return (vector signed char)a ^ b;
8233}
8234
8235static vector signed char __ATTRS_o_ai
8236vec_xor(vector signed char a, vector bool char b)
8237{
8238  return a ^ (vector signed char)b;
8239}
8240
8241static vector unsigned char __ATTRS_o_ai
8242vec_xor(vector unsigned char a, vector unsigned char b)
8243{
8244  return a ^ b;
8245}
8246
8247static vector unsigned char __ATTRS_o_ai
8248vec_xor(vector bool char a, vector unsigned char b)
8249{
8250  return (vector unsigned char)a ^ b;
8251}
8252
8253static vector unsigned char __ATTRS_o_ai
8254vec_xor(vector unsigned char a, vector bool char b)
8255{
8256  return a ^ (vector unsigned char)b;
8257}
8258
8259static vector bool char __ATTRS_o_ai
8260vec_xor(vector bool char a, vector bool char b)
8261{
8262  return a ^ b;
8263}
8264
8265static vector short __ATTRS_o_ai
8266vec_xor(vector short a, vector short b)
8267{
8268  return a ^ b;
8269}
8270
8271static vector short __ATTRS_o_ai
8272vec_xor(vector bool short a, vector short b)
8273{
8274  return (vector short)a ^ b;
8275}
8276
8277static vector short __ATTRS_o_ai
8278vec_xor(vector short a, vector bool short b)
8279{
8280  return a ^ (vector short)b;
8281}
8282
8283static vector unsigned short __ATTRS_o_ai
8284vec_xor(vector unsigned short a, vector unsigned short b)
8285{
8286  return a ^ b;
8287}
8288
8289static vector unsigned short __ATTRS_o_ai
8290vec_xor(vector bool short a, vector unsigned short b)
8291{
8292  return (vector unsigned short)a ^ b;
8293}
8294
8295static vector unsigned short __ATTRS_o_ai
8296vec_xor(vector unsigned short a, vector bool short b)
8297{
8298  return a ^ (vector unsigned short)b;
8299}
8300
8301static vector bool short __ATTRS_o_ai
8302vec_xor(vector bool short a, vector bool short b)
8303{
8304  return a ^ b;
8305}
8306
8307static vector int __ATTRS_o_ai
8308vec_xor(vector int a, vector int b)
8309{
8310  return a ^ b;
8311}
8312
8313static vector int __ATTRS_o_ai
8314vec_xor(vector bool int a, vector int b)
8315{
8316  return (vector int)a ^ b;
8317}
8318
8319static vector int __ATTRS_o_ai
8320vec_xor(vector int a, vector bool int b)
8321{
8322  return a ^ (vector int)b;
8323}
8324
8325static vector unsigned int __ATTRS_o_ai
8326vec_xor(vector unsigned int a, vector unsigned int b)
8327{
8328  return a ^ b;
8329}
8330
8331static vector unsigned int __ATTRS_o_ai
8332vec_xor(vector bool int a, vector unsigned int b)
8333{
8334  return (vector unsigned int)a ^ b;
8335}
8336
8337static vector unsigned int __ATTRS_o_ai
8338vec_xor(vector unsigned int a, vector bool int b)
8339{
8340  return a ^ (vector unsigned int)b;
8341}
8342
8343static vector bool int __ATTRS_o_ai
8344vec_xor(vector bool int a, vector bool int b)
8345{
8346  return a ^ b;
8347}
8348
8349static vector float __ATTRS_o_ai
8350vec_xor(vector float a, vector float b)
8351{
8352  vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b;
8353  return (vector float)res;
8354}
8355
8356static vector float __ATTRS_o_ai
8357vec_xor(vector bool int a, vector float b)
8358{
8359  vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b;
8360  return (vector float)res;
8361}
8362
8363static vector float __ATTRS_o_ai
8364vec_xor(vector float a, vector bool int b)
8365{
8366  vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b;
8367  return (vector float)res;
8368}
8369
8370/* vec_vxor */
8371
8372static vector signed char __ATTRS_o_ai
8373vec_vxor(vector signed char a, vector signed char b)
8374{
8375  return a ^ b;
8376}
8377
8378static vector signed char __ATTRS_o_ai
8379vec_vxor(vector bool char a, vector signed char b)
8380{
8381  return (vector signed char)a ^ b;
8382}
8383
8384static vector signed char __ATTRS_o_ai
8385vec_vxor(vector signed char a, vector bool char b)
8386{
8387  return a ^ (vector signed char)b;
8388}
8389
8390static vector unsigned char __ATTRS_o_ai
8391vec_vxor(vector unsigned char a, vector unsigned char b)
8392{
8393  return a ^ b;
8394}
8395
8396static vector unsigned char __ATTRS_o_ai
8397vec_vxor(vector bool char a, vector unsigned char b)
8398{
8399  return (vector unsigned char)a ^ b;
8400}
8401
8402static vector unsigned char __ATTRS_o_ai
8403vec_vxor(vector unsigned char a, vector bool char b)
8404{
8405  return a ^ (vector unsigned char)b;
8406}
8407
8408static vector bool char __ATTRS_o_ai
8409vec_vxor(vector bool char a, vector bool char b)
8410{
8411  return a ^ b;
8412}
8413
8414static vector short __ATTRS_o_ai
8415vec_vxor(vector short a, vector short b)
8416{
8417  return a ^ b;
8418}
8419
8420static vector short __ATTRS_o_ai
8421vec_vxor(vector bool short a, vector short b)
8422{
8423  return (vector short)a ^ b;
8424}
8425
8426static vector short __ATTRS_o_ai
8427vec_vxor(vector short a, vector bool short b)
8428{
8429  return a ^ (vector short)b;
8430}
8431
8432static vector unsigned short __ATTRS_o_ai
8433vec_vxor(vector unsigned short a, vector unsigned short b)
8434{
8435  return a ^ b;
8436}
8437
8438static vector unsigned short __ATTRS_o_ai
8439vec_vxor(vector bool short a, vector unsigned short b)
8440{
8441  return (vector unsigned short)a ^ b;
8442}
8443
8444static vector unsigned short __ATTRS_o_ai
8445vec_vxor(vector unsigned short a, vector bool short b)
8446{
8447  return a ^ (vector unsigned short)b;
8448}
8449
8450static vector bool short __ATTRS_o_ai
8451vec_vxor(vector bool short a, vector bool short b)
8452{
8453  return a ^ b;
8454}
8455
8456static vector int __ATTRS_o_ai
8457vec_vxor(vector int a, vector int b)
8458{
8459  return a ^ b;
8460}
8461
8462static vector int __ATTRS_o_ai
8463vec_vxor(vector bool int a, vector int b)
8464{
8465  return (vector int)a ^ b;
8466}
8467
8468static vector int __ATTRS_o_ai
8469vec_vxor(vector int a, vector bool int b)
8470{
8471  return a ^ (vector int)b;
8472}
8473
8474static vector unsigned int __ATTRS_o_ai
8475vec_vxor(vector unsigned int a, vector unsigned int b)
8476{
8477  return a ^ b;
8478}
8479
8480static vector unsigned int __ATTRS_o_ai
8481vec_vxor(vector bool int a, vector unsigned int b)
8482{
8483  return (vector unsigned int)a ^ b;
8484}
8485
8486static vector unsigned int __ATTRS_o_ai
8487vec_vxor(vector unsigned int a, vector bool int b)
8488{
8489  return a ^ (vector unsigned int)b;
8490}
8491
8492static vector bool int __ATTRS_o_ai
8493vec_vxor(vector bool int a, vector bool int b)
8494{
8495  return a ^ b;
8496}
8497
8498static vector float __ATTRS_o_ai
8499vec_vxor(vector float a, vector float b)
8500{
8501  vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b;
8502  return (vector float)res;
8503}
8504
8505static vector float __ATTRS_o_ai
8506vec_vxor(vector bool int a, vector float b)
8507{
8508  vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b;
8509  return (vector float)res;
8510}
8511
8512static vector float __ATTRS_o_ai
8513vec_vxor(vector float a, vector bool int b)
8514{
8515  vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b;
8516  return (vector float)res;
8517}
8518
8519/* ------------------------ extensions for CBEA ----------------------------- */
8520
8521/* vec_extract */
8522
8523static signed char __ATTRS_o_ai
8524vec_extract(vector signed char a, int b)
8525{
8526  return a[b];
8527}
8528
8529static unsigned char __ATTRS_o_ai
8530vec_extract(vector unsigned char a, int b)
8531{
8532  return a[b];
8533}
8534
8535static short __ATTRS_o_ai
8536vec_extract(vector short a, int b)
8537{
8538  return a[b];
8539}
8540
8541static unsigned short __ATTRS_o_ai
8542vec_extract(vector unsigned short a, int b)
8543{
8544  return a[b];
8545}
8546
8547static int __ATTRS_o_ai
8548vec_extract(vector int a, int b)
8549{
8550  return a[b];
8551}
8552
8553static unsigned int __ATTRS_o_ai
8554vec_extract(vector unsigned int a, int b)
8555{
8556  return a[b];
8557}
8558
8559static float __ATTRS_o_ai
8560vec_extract(vector float a, int b)
8561{
8562  return a[b];
8563}
8564
8565/* vec_insert */
8566
8567static vector signed char __ATTRS_o_ai
8568vec_insert(signed char a, vector signed char b, int c)
8569{
8570  b[c] = a;
8571  return b;
8572}
8573
8574static vector unsigned char __ATTRS_o_ai
8575vec_insert(unsigned char a, vector unsigned char b, int c)
8576{
8577  b[c] = a;
8578  return b;
8579}
8580
8581static vector short __ATTRS_o_ai
8582vec_insert(short a, vector short b, int c)
8583{
8584  b[c] = a;
8585  return b;
8586}
8587
8588static vector unsigned short __ATTRS_o_ai
8589vec_insert(unsigned short a, vector unsigned short b, int c)
8590{
8591  b[c] = a;
8592  return b;
8593}
8594
8595static vector int __ATTRS_o_ai
8596vec_insert(int a, vector int b, int c)
8597{
8598  b[c] = a;
8599  return b;
8600}
8601
8602static vector unsigned int __ATTRS_o_ai
8603vec_insert(unsigned int a, vector unsigned int b, int c)
8604{
8605  b[c] = a;
8606  return b;
8607}
8608
8609static vector float __ATTRS_o_ai
8610vec_insert(float a, vector float b, int c)
8611{
8612  b[c] = a;
8613  return b;
8614}
8615
8616/* vec_lvlx */
8617
8618static vector signed char __ATTRS_o_ai
8619vec_lvlx(int a, const signed char *b)
8620{
8621  return vec_perm(vec_ld(a, b),
8622                  (vector signed char)(0),
8623                  vec_lvsl(a, b));
8624}
8625
8626static vector signed char __ATTRS_o_ai
8627vec_lvlx(int a, const vector signed char *b)
8628{
8629  return vec_perm(vec_ld(a, b),
8630                  (vector signed char)(0),
8631                  vec_lvsl(a, (unsigned char *)b));
8632}
8633
8634static vector unsigned char __ATTRS_o_ai
8635vec_lvlx(int a, const unsigned char *b)
8636{
8637  return vec_perm(vec_ld(a, b),
8638                  (vector unsigned char)(0),
8639                  vec_lvsl(a, b));
8640}
8641
8642static vector unsigned char __ATTRS_o_ai
8643vec_lvlx(int a, const vector unsigned char *b)
8644{
8645  return vec_perm(vec_ld(a, b),
8646                  (vector unsigned char)(0),
8647                  vec_lvsl(a, (unsigned char *)b));
8648}
8649
8650static vector bool char __ATTRS_o_ai
8651vec_lvlx(int a, const vector bool char *b)
8652{
8653  return vec_perm(vec_ld(a, b),
8654                  (vector bool char)(0),
8655                  vec_lvsl(a, (unsigned char *)b));
8656}
8657
8658static vector short __ATTRS_o_ai
8659vec_lvlx(int a, const short *b)
8660{
8661  return vec_perm(vec_ld(a, b),
8662                  (vector short)(0),
8663                  vec_lvsl(a, b));
8664}
8665
8666static vector short __ATTRS_o_ai
8667vec_lvlx(int a, const vector short *b)
8668{
8669  return vec_perm(vec_ld(a, b),
8670                  (vector short)(0),
8671                  vec_lvsl(a, (unsigned char *)b));
8672}
8673
8674static vector unsigned short __ATTRS_o_ai
8675vec_lvlx(int a, const unsigned short *b)
8676{
8677  return vec_perm(vec_ld(a, b),
8678                  (vector unsigned short)(0),
8679                  vec_lvsl(a, b));
8680}
8681
8682static vector unsigned short __ATTRS_o_ai
8683vec_lvlx(int a, const vector unsigned short *b)
8684{
8685  return vec_perm(vec_ld(a, b),
8686                  (vector unsigned short)(0),
8687                  vec_lvsl(a, (unsigned char *)b));
8688}
8689
8690static vector bool short __ATTRS_o_ai
8691vec_lvlx(int a, const vector bool short *b)
8692{
8693  return vec_perm(vec_ld(a, b),
8694                  (vector bool short)(0),
8695                  vec_lvsl(a, (unsigned char *)b));
8696}
8697
8698static vector pixel __ATTRS_o_ai
8699vec_lvlx(int a, const vector pixel *b)
8700{
8701  return vec_perm(vec_ld(a, b),
8702                  (vector pixel)(0),
8703                  vec_lvsl(a, (unsigned char *)b));
8704}
8705
8706static vector int __ATTRS_o_ai
8707vec_lvlx(int a, const int *b)
8708{
8709  return vec_perm(vec_ld(a, b),
8710                  (vector int)(0),
8711                  vec_lvsl(a, b));
8712}
8713
8714static vector int __ATTRS_o_ai
8715vec_lvlx(int a, const vector int *b)
8716{
8717  return vec_perm(vec_ld(a, b),
8718                  (vector int)(0),
8719                  vec_lvsl(a, (unsigned char *)b));
8720}
8721
8722static vector unsigned int __ATTRS_o_ai
8723vec_lvlx(int a, const unsigned int *b)
8724{
8725  return vec_perm(vec_ld(a, b),
8726                  (vector unsigned int)(0),
8727                  vec_lvsl(a, b));
8728}
8729
8730static vector unsigned int __ATTRS_o_ai
8731vec_lvlx(int a, const vector unsigned int *b)
8732{
8733  return vec_perm(vec_ld(a, b),
8734                  (vector unsigned int)(0),
8735                  vec_lvsl(a, (unsigned char *)b));
8736}
8737
8738static vector bool int __ATTRS_o_ai
8739vec_lvlx(int a, const vector bool int *b)
8740{
8741  return vec_perm(vec_ld(a, b),
8742                  (vector bool int)(0),
8743                  vec_lvsl(a, (unsigned char *)b));
8744}
8745
8746static vector float __ATTRS_o_ai
8747vec_lvlx(int a, const float *b)
8748{
8749  return vec_perm(vec_ld(a, b),
8750                  (vector float)(0),
8751                  vec_lvsl(a, b));
8752}
8753
8754static vector float __ATTRS_o_ai
8755vec_lvlx(int a, const vector float *b)
8756{
8757  return vec_perm(vec_ld(a, b),
8758                  (vector float)(0),
8759                  vec_lvsl(a, (unsigned char *)b));
8760}
8761
8762/* vec_lvlxl */
8763
8764static vector signed char __ATTRS_o_ai
8765vec_lvlxl(int a, const signed char *b)
8766{
8767  return vec_perm(vec_ldl(a, b),
8768                  (vector signed char)(0),
8769                  vec_lvsl(a, b));
8770}
8771
8772static vector signed char __ATTRS_o_ai
8773vec_lvlxl(int a, const vector signed char *b)
8774{
8775  return vec_perm(vec_ldl(a, b),
8776                  (vector signed char)(0),
8777                  vec_lvsl(a, (unsigned char *)b));
8778}
8779
8780static vector unsigned char __ATTRS_o_ai
8781vec_lvlxl(int a, const unsigned char *b)
8782{
8783  return vec_perm(vec_ldl(a, b),
8784                  (vector unsigned char)(0),
8785                  vec_lvsl(a, b));
8786}
8787
8788static vector unsigned char __ATTRS_o_ai
8789vec_lvlxl(int a, const vector unsigned char *b)
8790{
8791  return vec_perm(vec_ldl(a, b),
8792                  (vector unsigned char)(0),
8793                  vec_lvsl(a, (unsigned char *)b));
8794}
8795
8796static vector bool char __ATTRS_o_ai
8797vec_lvlxl(int a, const vector bool char *b)
8798{
8799  return vec_perm(vec_ldl(a, b),
8800                  (vector bool char)(0),
8801                  vec_lvsl(a, (unsigned char *)b));
8802}
8803
8804static vector short __ATTRS_o_ai
8805vec_lvlxl(int a, const short *b)
8806{
8807  return vec_perm(vec_ldl(a, b),
8808                  (vector short)(0),
8809                  vec_lvsl(a, b));
8810}
8811
8812static vector short __ATTRS_o_ai
8813vec_lvlxl(int a, const vector short *b)
8814{
8815  return vec_perm(vec_ldl(a, b),
8816                  (vector short)(0),
8817                  vec_lvsl(a, (unsigned char *)b));
8818}
8819
8820static vector unsigned short __ATTRS_o_ai
8821vec_lvlxl(int a, const unsigned short *b)
8822{
8823  return vec_perm(vec_ldl(a, b),
8824                  (vector unsigned short)(0),
8825                  vec_lvsl(a, b));
8826}
8827
8828static vector unsigned short __ATTRS_o_ai
8829vec_lvlxl(int a, const vector unsigned short *b)
8830{
8831  return vec_perm(vec_ldl(a, b),
8832                  (vector unsigned short)(0),
8833                  vec_lvsl(a, (unsigned char *)b));
8834}
8835
8836static vector bool short __ATTRS_o_ai
8837vec_lvlxl(int a, const vector bool short *b)
8838{
8839  return vec_perm(vec_ldl(a, b),
8840                  (vector bool short)(0),
8841                  vec_lvsl(a, (unsigned char *)b));
8842}
8843
8844static vector pixel __ATTRS_o_ai
8845vec_lvlxl(int a, const vector pixel *b)
8846{
8847  return vec_perm(vec_ldl(a, b),
8848                  (vector pixel)(0),
8849                  vec_lvsl(a, (unsigned char *)b));
8850}
8851
8852static vector int __ATTRS_o_ai
8853vec_lvlxl(int a, const int *b)
8854{
8855  return vec_perm(vec_ldl(a, b),
8856                  (vector int)(0),
8857                  vec_lvsl(a, b));
8858}
8859
8860static vector int __ATTRS_o_ai
8861vec_lvlxl(int a, const vector int *b)
8862{
8863  return vec_perm(vec_ldl(a, b),
8864                  (vector int)(0),
8865                  vec_lvsl(a, (unsigned char *)b));
8866}
8867
8868static vector unsigned int __ATTRS_o_ai
8869vec_lvlxl(int a, const unsigned int *b)
8870{
8871  return vec_perm(vec_ldl(a, b),
8872                  (vector unsigned int)(0),
8873                  vec_lvsl(a, b));
8874}
8875
8876static vector unsigned int __ATTRS_o_ai
8877vec_lvlxl(int a, const vector unsigned int *b)
8878{
8879  return vec_perm(vec_ldl(a, b),
8880                  (vector unsigned int)(0),
8881                  vec_lvsl(a, (unsigned char *)b));
8882}
8883
8884static vector bool int __ATTRS_o_ai
8885vec_lvlxl(int a, const vector bool int *b)
8886{
8887  return vec_perm(vec_ldl(a, b),
8888                  (vector bool int)(0),
8889                  vec_lvsl(a, (unsigned char *)b));
8890}
8891
8892static vector float __ATTRS_o_ai
8893vec_lvlxl(int a, const float *b)
8894{
8895  return vec_perm(vec_ldl(a, b),
8896                  (vector float)(0),
8897                  vec_lvsl(a, b));
8898}
8899
8900static vector float __ATTRS_o_ai
8901vec_lvlxl(int a, vector float *b)
8902{
8903  return vec_perm(vec_ldl(a, b),
8904                  (vector float)(0),
8905                  vec_lvsl(a, (unsigned char *)b));
8906}
8907
8908/* vec_lvrx */
8909
8910static vector signed char __ATTRS_o_ai
8911vec_lvrx(int a, const signed char *b)
8912{
8913  return vec_perm((vector signed char)(0),
8914                  vec_ld(a, b),
8915                  vec_lvsl(a, b));
8916}
8917
8918static vector signed char __ATTRS_o_ai
8919vec_lvrx(int a, const vector signed char *b)
8920{
8921  return vec_perm((vector signed char)(0),
8922                  vec_ld(a, b),
8923                  vec_lvsl(a, (unsigned char *)b));
8924}
8925
8926static vector unsigned char __ATTRS_o_ai
8927vec_lvrx(int a, const unsigned char *b)
8928{
8929  return vec_perm((vector unsigned char)(0),
8930                  vec_ld(a, b),
8931                  vec_lvsl(a, b));
8932}
8933
8934static vector unsigned char __ATTRS_o_ai
8935vec_lvrx(int a, const vector unsigned char *b)
8936{
8937  return vec_perm((vector unsigned char)(0),
8938                  vec_ld(a, b),
8939                  vec_lvsl(a, (unsigned char *)b));
8940}
8941
8942static vector bool char __ATTRS_o_ai
8943vec_lvrx(int a, const vector bool char *b)
8944{
8945  return vec_perm((vector bool char)(0),
8946                  vec_ld(a, b),
8947                  vec_lvsl(a, (unsigned char *)b));
8948}
8949
8950static vector short __ATTRS_o_ai
8951vec_lvrx(int a, const short *b)
8952{
8953  return vec_perm((vector short)(0),
8954                  vec_ld(a, b),
8955                  vec_lvsl(a, b));
8956}
8957
8958static vector short __ATTRS_o_ai
8959vec_lvrx(int a, const vector short *b)
8960{
8961  return vec_perm((vector short)(0),
8962                  vec_ld(a, b),
8963                  vec_lvsl(a, (unsigned char *)b));
8964}
8965
8966static vector unsigned short __ATTRS_o_ai
8967vec_lvrx(int a, const unsigned short *b)
8968{
8969  return vec_perm((vector unsigned short)(0),
8970                  vec_ld(a, b),
8971                  vec_lvsl(a, b));
8972}
8973
8974static vector unsigned short __ATTRS_o_ai
8975vec_lvrx(int a, const vector unsigned short *b)
8976{
8977  return vec_perm((vector unsigned short)(0),
8978                  vec_ld(a, b),
8979                  vec_lvsl(a, (unsigned char *)b));
8980}
8981
8982static vector bool short __ATTRS_o_ai
8983vec_lvrx(int a, const vector bool short *b)
8984{
8985  return vec_perm((vector bool short)(0),
8986                  vec_ld(a, b),
8987                  vec_lvsl(a, (unsigned char *)b));
8988}
8989
8990static vector pixel __ATTRS_o_ai
8991vec_lvrx(int a, const vector pixel *b)
8992{
8993  return vec_perm((vector pixel)(0),
8994                  vec_ld(a, b),
8995                  vec_lvsl(a, (unsigned char *)b));
8996}
8997
8998static vector int __ATTRS_o_ai
8999vec_lvrx(int a, const int *b)
9000{
9001  return vec_perm((vector int)(0),
9002                  vec_ld(a, b),
9003                  vec_lvsl(a, b));
9004}
9005
9006static vector int __ATTRS_o_ai
9007vec_lvrx(int a, const vector int *b)
9008{
9009  return vec_perm((vector int)(0),
9010                  vec_ld(a, b),
9011                  vec_lvsl(a, (unsigned char *)b));
9012}
9013
9014static vector unsigned int __ATTRS_o_ai
9015vec_lvrx(int a, const unsigned int *b)
9016{
9017  return vec_perm((vector unsigned int)(0),
9018                  vec_ld(a, b),
9019                  vec_lvsl(a, b));
9020}
9021
9022static vector unsigned int __ATTRS_o_ai
9023vec_lvrx(int a, const vector unsigned int *b)
9024{
9025  return vec_perm((vector unsigned int)(0),
9026                  vec_ld(a, b),
9027                  vec_lvsl(a, (unsigned char *)b));
9028}
9029
9030static vector bool int __ATTRS_o_ai
9031vec_lvrx(int a, const vector bool int *b)
9032{
9033  return vec_perm((vector bool int)(0),
9034                  vec_ld(a, b),
9035                  vec_lvsl(a, (unsigned char *)b));
9036}
9037
9038static vector float __ATTRS_o_ai
9039vec_lvrx(int a, const float *b)
9040{
9041  return vec_perm((vector float)(0),
9042                  vec_ld(a, b),
9043                  vec_lvsl(a, b));
9044}
9045
9046static vector float __ATTRS_o_ai
9047vec_lvrx(int a, const vector float *b)
9048{
9049  return vec_perm((vector float)(0),
9050                  vec_ld(a, b),
9051                  vec_lvsl(a, (unsigned char *)b));
9052}
9053
9054/* vec_lvrxl */
9055
9056static vector signed char __ATTRS_o_ai
9057vec_lvrxl(int a, const signed char *b)
9058{
9059  return vec_perm((vector signed char)(0),
9060                  vec_ldl(a, b),
9061                  vec_lvsl(a, b));
9062}
9063
9064static vector signed char __ATTRS_o_ai
9065vec_lvrxl(int a, const vector signed char *b)
9066{
9067  return vec_perm((vector signed char)(0),
9068                  vec_ldl(a, b),
9069                  vec_lvsl(a, (unsigned char *)b));
9070}
9071
9072static vector unsigned char __ATTRS_o_ai
9073vec_lvrxl(int a, const unsigned char *b)
9074{
9075  return vec_perm((vector unsigned char)(0),
9076                  vec_ldl(a, b),
9077                  vec_lvsl(a, b));
9078}
9079
9080static vector unsigned char __ATTRS_o_ai
9081vec_lvrxl(int a, const vector unsigned char *b)
9082{
9083  return vec_perm((vector unsigned char)(0),
9084                  vec_ldl(a, b),
9085                  vec_lvsl(a, (unsigned char *)b));
9086}
9087
9088static vector bool char __ATTRS_o_ai
9089vec_lvrxl(int a, const vector bool char *b)
9090{
9091  return vec_perm((vector bool char)(0),
9092                  vec_ldl(a, b),
9093                  vec_lvsl(a, (unsigned char *)b));
9094}
9095
9096static vector short __ATTRS_o_ai
9097vec_lvrxl(int a, const short *b)
9098{
9099  return vec_perm((vector short)(0),
9100                  vec_ldl(a, b),
9101                  vec_lvsl(a, b));
9102}
9103
9104static vector short __ATTRS_o_ai
9105vec_lvrxl(int a, const vector short *b)
9106{
9107  return vec_perm((vector short)(0),
9108                  vec_ldl(a, b),
9109                  vec_lvsl(a, (unsigned char *)b));
9110}
9111
9112static vector unsigned short __ATTRS_o_ai
9113vec_lvrxl(int a, const unsigned short *b)
9114{
9115  return vec_perm((vector unsigned short)(0),
9116                  vec_ldl(a, b),
9117                  vec_lvsl(a, b));
9118}
9119
9120static vector unsigned short __ATTRS_o_ai
9121vec_lvrxl(int a, const vector unsigned short *b)
9122{
9123  return vec_perm((vector unsigned short)(0),
9124                  vec_ldl(a, b),
9125                  vec_lvsl(a, (unsigned char *)b));
9126}
9127
9128static vector bool short __ATTRS_o_ai
9129vec_lvrxl(int a, const vector bool short *b)
9130{
9131  return vec_perm((vector bool short)(0),
9132                  vec_ldl(a, b),
9133                  vec_lvsl(a, (unsigned char *)b));
9134}
9135
9136static vector pixel __ATTRS_o_ai
9137vec_lvrxl(int a, const vector pixel *b)
9138{
9139  return vec_perm((vector pixel)(0),
9140                  vec_ldl(a, b),
9141                  vec_lvsl(a, (unsigned char *)b));
9142}
9143
9144static vector int __ATTRS_o_ai
9145vec_lvrxl(int a, const int *b)
9146{
9147  return vec_perm((vector int)(0),
9148                  vec_ldl(a, b),
9149                  vec_lvsl(a, b));
9150}
9151
9152static vector int __ATTRS_o_ai
9153vec_lvrxl(int a, const vector int *b)
9154{
9155  return vec_perm((vector int)(0),
9156                  vec_ldl(a, b),
9157                  vec_lvsl(a, (unsigned char *)b));
9158}
9159
9160static vector unsigned int __ATTRS_o_ai
9161vec_lvrxl(int a, const unsigned int *b)
9162{
9163  return vec_perm((vector unsigned int)(0),
9164                  vec_ldl(a, b),
9165                  vec_lvsl(a, b));
9166}
9167
9168static vector unsigned int __ATTRS_o_ai
9169vec_lvrxl(int a, const vector unsigned int *b)
9170{
9171  return vec_perm((vector unsigned int)(0),
9172                  vec_ldl(a, b),
9173                  vec_lvsl(a, (unsigned char *)b));
9174}
9175
9176static vector bool int __ATTRS_o_ai
9177vec_lvrxl(int a, const vector bool int *b)
9178{
9179  return vec_perm((vector bool int)(0),
9180                  vec_ldl(a, b),
9181                  vec_lvsl(a, (unsigned char *)b));
9182}
9183
9184static vector float __ATTRS_o_ai
9185vec_lvrxl(int a, const float *b)
9186{
9187  return vec_perm((vector float)(0),
9188                  vec_ldl(a, b),
9189                  vec_lvsl(a, b));
9190}
9191
9192static vector float __ATTRS_o_ai
9193vec_lvrxl(int a, const vector float *b)
9194{
9195  return vec_perm((vector float)(0),
9196                  vec_ldl(a, b),
9197                  vec_lvsl(a, (unsigned char *)b));
9198}
9199
9200/* vec_stvlx */
9201
9202static void __ATTRS_o_ai
9203vec_stvlx(vector signed char a, int b, signed char *c)
9204{
9205  return vec_st(vec_perm(vec_lvrx(b, c),
9206                         a,
9207                         vec_lvsr(b, c)),
9208                b, c);
9209}
9210
9211static void __ATTRS_o_ai
9212vec_stvlx(vector signed char a, int b, vector signed char *c)
9213{
9214  return vec_st(vec_perm(vec_lvrx(b, c),
9215                         a,
9216                         vec_lvsr(b, (unsigned char *)c)),
9217                b, c);
9218}
9219
9220static void __ATTRS_o_ai
9221vec_stvlx(vector unsigned char a, int b, unsigned char *c)
9222{
9223  return vec_st(vec_perm(vec_lvrx(b, c),
9224                         a,
9225                         vec_lvsr(b, c)),
9226                b, c);
9227}
9228
9229static void __ATTRS_o_ai
9230vec_stvlx(vector unsigned char a, int b, vector unsigned char *c)
9231{
9232  return vec_st(vec_perm(vec_lvrx(b, c),
9233                         a,
9234                         vec_lvsr(b, (unsigned char *)c)),
9235                b, c);
9236}
9237
9238static void __ATTRS_o_ai
9239vec_stvlx(vector bool char a, int b, vector bool char *c)
9240{
9241  return vec_st(vec_perm(vec_lvrx(b, c),
9242                         a,
9243                         vec_lvsr(b, (unsigned char *)c)),
9244                b, c);
9245}
9246
9247static void __ATTRS_o_ai
9248vec_stvlx(vector short a, int b, short *c)
9249{
9250  return vec_st(vec_perm(vec_lvrx(b, c),
9251                         a,
9252                         vec_lvsr(b, c)),
9253                b, c);
9254}
9255
9256static void __ATTRS_o_ai
9257vec_stvlx(vector short a, int b, vector short *c)
9258{
9259  return vec_st(vec_perm(vec_lvrx(b, c),
9260                         a,
9261                         vec_lvsr(b, (unsigned char *)c)),
9262                b, c);
9263}
9264
9265static void __ATTRS_o_ai
9266vec_stvlx(vector unsigned short a, int b, unsigned short *c)
9267{
9268  return vec_st(vec_perm(vec_lvrx(b, c),
9269                         a,
9270                         vec_lvsr(b, c)),
9271                b, c);
9272}
9273
9274static void __ATTRS_o_ai
9275vec_stvlx(vector unsigned short a, int b, vector unsigned short *c)
9276{
9277  return vec_st(vec_perm(vec_lvrx(b, c),
9278                         a,
9279                         vec_lvsr(b, (unsigned char *)c)),
9280                b, c);
9281}
9282
9283static void __ATTRS_o_ai
9284vec_stvlx(vector bool short a, int b, vector bool short *c)
9285{
9286  return vec_st(vec_perm(vec_lvrx(b, c),
9287                         a,
9288                         vec_lvsr(b, (unsigned char *)c)),
9289                b, c);
9290}
9291
9292static void __ATTRS_o_ai
9293vec_stvlx(vector pixel a, int b, vector pixel *c)
9294{
9295  return vec_st(vec_perm(vec_lvrx(b, c),
9296                         a,
9297                         vec_lvsr(b, (unsigned char *)c)),
9298                b, c);
9299}
9300
9301static void __ATTRS_o_ai
9302vec_stvlx(vector int a, int b, int *c)
9303{
9304  return vec_st(vec_perm(vec_lvrx(b, c),
9305                         a,
9306                         vec_lvsr(b, c)),
9307                b, c);
9308}
9309
9310static void __ATTRS_o_ai
9311vec_stvlx(vector int a, int b, vector int *c)
9312{
9313  return vec_st(vec_perm(vec_lvrx(b, c),
9314                         a,
9315                         vec_lvsr(b, (unsigned char *)c)),
9316                b, c);
9317}
9318
9319static void __ATTRS_o_ai
9320vec_stvlx(vector unsigned int a, int b, unsigned int *c)
9321{
9322  return vec_st(vec_perm(vec_lvrx(b, c),
9323                         a,
9324                         vec_lvsr(b, c)),
9325                b, c);
9326}
9327
9328static void __ATTRS_o_ai
9329vec_stvlx(vector unsigned int a, int b, vector unsigned int *c)
9330{
9331  return vec_st(vec_perm(vec_lvrx(b, c),
9332                         a,
9333                         vec_lvsr(b, (unsigned char *)c)),
9334                b, c);
9335}
9336
9337static void __ATTRS_o_ai
9338vec_stvlx(vector bool int a, int b, vector bool int *c)
9339{
9340  return vec_st(vec_perm(vec_lvrx(b, c),
9341                         a,
9342                         vec_lvsr(b, (unsigned char *)c)),
9343                b, c);
9344}
9345
9346static void __ATTRS_o_ai
9347vec_stvlx(vector float a, int b, vector float *c)
9348{
9349  return vec_st(vec_perm(vec_lvrx(b, c),
9350                         a,
9351                         vec_lvsr(b, (unsigned char *)c)),
9352                b, c);
9353}
9354
9355/* vec_stvlxl */
9356
9357static void __ATTRS_o_ai
9358vec_stvlxl(vector signed char a, int b, signed char *c)
9359{
9360  return vec_stl(vec_perm(vec_lvrx(b, c),
9361                          a,
9362                          vec_lvsr(b, c)),
9363                 b, c);
9364}
9365
9366static void __ATTRS_o_ai
9367vec_stvlxl(vector signed char a, int b, vector signed char *c)
9368{
9369  return vec_stl(vec_perm(vec_lvrx(b, c),
9370                          a,
9371                          vec_lvsr(b, (unsigned char *)c)),
9372                 b, c);
9373}
9374
9375static void __ATTRS_o_ai
9376vec_stvlxl(vector unsigned char a, int b, unsigned char *c)
9377{
9378  return vec_stl(vec_perm(vec_lvrx(b, c),
9379                          a,
9380                          vec_lvsr(b, c)),
9381                 b, c);
9382}
9383
9384static void __ATTRS_o_ai
9385vec_stvlxl(vector unsigned char a, int b, vector unsigned char *c)
9386{
9387  return vec_stl(vec_perm(vec_lvrx(b, c),
9388                          a,
9389                          vec_lvsr(b, (unsigned char *)c)),
9390                 b, c);
9391}
9392
9393static void __ATTRS_o_ai
9394vec_stvlxl(vector bool char a, int b, vector bool char *c)
9395{
9396  return vec_stl(vec_perm(vec_lvrx(b, c),
9397                          a,
9398                          vec_lvsr(b, (unsigned char *)c)),
9399                 b, c);
9400}
9401
9402static void __ATTRS_o_ai
9403vec_stvlxl(vector short a, int b, short *c)
9404{
9405  return vec_stl(vec_perm(vec_lvrx(b, c),
9406                          a,
9407                          vec_lvsr(b, c)),
9408                 b, c);
9409}
9410
9411static void __ATTRS_o_ai
9412vec_stvlxl(vector short a, int b, vector short *c)
9413{
9414  return vec_stl(vec_perm(vec_lvrx(b, c),
9415                          a,
9416                          vec_lvsr(b, (unsigned char *)c)),
9417                 b, c);
9418}
9419
9420static void __ATTRS_o_ai
9421vec_stvlxl(vector unsigned short a, int b, unsigned short *c)
9422{
9423  return vec_stl(vec_perm(vec_lvrx(b, c),
9424                          a,
9425                          vec_lvsr(b, c)),
9426                 b, c);
9427}
9428
9429static void __ATTRS_o_ai
9430vec_stvlxl(vector unsigned short a, int b, vector unsigned short *c)
9431{
9432  return vec_stl(vec_perm(vec_lvrx(b, c),
9433                          a,
9434                          vec_lvsr(b, (unsigned char *)c)),
9435                 b, c);
9436}
9437
9438static void __ATTRS_o_ai
9439vec_stvlxl(vector bool short a, int b, vector bool short *c)
9440{
9441  return vec_stl(vec_perm(vec_lvrx(b, c),
9442                          a,
9443                          vec_lvsr(b, (unsigned char *)c)),
9444                 b, c);
9445}
9446
9447static void __ATTRS_o_ai
9448vec_stvlxl(vector pixel a, int b, vector pixel *c)
9449{
9450  return vec_stl(vec_perm(vec_lvrx(b, c),
9451                          a,
9452                          vec_lvsr(b, (unsigned char *)c)),
9453                 b, c);
9454}
9455
9456static void __ATTRS_o_ai
9457vec_stvlxl(vector int a, int b, int *c)
9458{
9459  return vec_stl(vec_perm(vec_lvrx(b, c),
9460                          a,
9461                          vec_lvsr(b, c)),
9462                 b, c);
9463}
9464
9465static void __ATTRS_o_ai
9466vec_stvlxl(vector int a, int b, vector int *c)
9467{
9468  return vec_stl(vec_perm(vec_lvrx(b, c),
9469                          a,
9470                          vec_lvsr(b, (unsigned char *)c)),
9471                 b, c);
9472}
9473
9474static void __ATTRS_o_ai
9475vec_stvlxl(vector unsigned int a, int b, unsigned int *c)
9476{
9477  return vec_stl(vec_perm(vec_lvrx(b, c),
9478                          a,
9479                          vec_lvsr(b, c)),
9480                 b, c);
9481}
9482
9483static void __ATTRS_o_ai
9484vec_stvlxl(vector unsigned int a, int b, vector unsigned int *c)
9485{
9486  return vec_stl(vec_perm(vec_lvrx(b, c),
9487                          a,
9488                          vec_lvsr(b, (unsigned char *)c)),
9489                 b, c);
9490}
9491
9492static void __ATTRS_o_ai
9493vec_stvlxl(vector bool int a, int b, vector bool int *c)
9494{
9495  return vec_stl(vec_perm(vec_lvrx(b, c),
9496                          a,
9497                          vec_lvsr(b, (unsigned char *)c)),
9498                 b, c);
9499}
9500
9501static void __ATTRS_o_ai
9502vec_stvlxl(vector float a, int b, vector float *c)
9503{
9504  return vec_stl(vec_perm(vec_lvrx(b, c),
9505                          a,
9506                          vec_lvsr(b, (unsigned char *)c)),
9507                 b, c);
9508}
9509
9510/* vec_stvrx */
9511
9512static void __ATTRS_o_ai
9513vec_stvrx(vector signed char a, int b, signed char *c)
9514{
9515  return vec_st(vec_perm(a,
9516                         vec_lvlx(b, c),
9517                         vec_lvsr(b, c)),
9518                b, c);
9519}
9520
9521static void __ATTRS_o_ai
9522vec_stvrx(vector signed char a, int b, vector signed char *c)
9523{
9524  return vec_st(vec_perm(a,
9525                         vec_lvlx(b, c),
9526                         vec_lvsr(b, (unsigned char *)c)),
9527                b, c);
9528}
9529
9530static void __ATTRS_o_ai
9531vec_stvrx(vector unsigned char a, int b, unsigned char *c)
9532{
9533  return vec_st(vec_perm(a,
9534                         vec_lvlx(b, c),
9535                         vec_lvsr(b, c)),
9536                b, c);
9537}
9538
9539static void __ATTRS_o_ai
9540vec_stvrx(vector unsigned char a, int b, vector unsigned char *c)
9541{
9542  return vec_st(vec_perm(a,
9543                         vec_lvlx(b, c),
9544                         vec_lvsr(b, (unsigned char *)c)),
9545                b, c);
9546}
9547
9548static void __ATTRS_o_ai
9549vec_stvrx(vector bool char a, int b, vector bool char *c)
9550{
9551  return vec_st(vec_perm(a,
9552                         vec_lvlx(b, c),
9553                         vec_lvsr(b, (unsigned char *)c)),
9554                b, c);
9555}
9556
9557static void __ATTRS_o_ai
9558vec_stvrx(vector short a, int b, short *c)
9559{
9560  return vec_st(vec_perm(a,
9561                         vec_lvlx(b, c),
9562                         vec_lvsr(b, c)),
9563                b, c);
9564}
9565
9566static void __ATTRS_o_ai
9567vec_stvrx(vector short a, int b, vector short *c)
9568{
9569  return vec_st(vec_perm(a,
9570                         vec_lvlx(b, c),
9571                         vec_lvsr(b, (unsigned char *)c)),
9572                b, c);
9573}
9574
9575static void __ATTRS_o_ai
9576vec_stvrx(vector unsigned short a, int b, unsigned short *c)
9577{
9578  return vec_st(vec_perm(a,
9579                         vec_lvlx(b, c),
9580                         vec_lvsr(b, c)),
9581                b, c);
9582}
9583
9584static void __ATTRS_o_ai
9585vec_stvrx(vector unsigned short a, int b, vector unsigned short *c)
9586{
9587  return vec_st(vec_perm(a,
9588                         vec_lvlx(b, c),
9589                         vec_lvsr(b, (unsigned char *)c)),
9590                b, c);
9591}
9592
9593static void __ATTRS_o_ai
9594vec_stvrx(vector bool short a, int b, vector bool short *c)
9595{
9596  return vec_st(vec_perm(a,
9597                         vec_lvlx(b, c),
9598                         vec_lvsr(b, (unsigned char *)c)),
9599                b, c);
9600}
9601
9602static void __ATTRS_o_ai
9603vec_stvrx(vector pixel a, int b, vector pixel *c)
9604{
9605  return vec_st(vec_perm(a,
9606                         vec_lvlx(b, c),
9607                         vec_lvsr(b, (unsigned char *)c)),
9608                b, c);
9609}
9610
9611static void __ATTRS_o_ai
9612vec_stvrx(vector int a, int b, int *c)
9613{
9614  return vec_st(vec_perm(a,
9615                         vec_lvlx(b, c),
9616                         vec_lvsr(b, c)),
9617                b, c);
9618}
9619
9620static void __ATTRS_o_ai
9621vec_stvrx(vector int a, int b, vector int *c)
9622{
9623  return vec_st(vec_perm(a,
9624                         vec_lvlx(b, c),
9625                         vec_lvsr(b, (unsigned char *)c)),
9626                b, c);
9627}
9628
9629static void __ATTRS_o_ai
9630vec_stvrx(vector unsigned int a, int b, unsigned int *c)
9631{
9632  return vec_st(vec_perm(a,
9633                         vec_lvlx(b, c),
9634                         vec_lvsr(b, c)),
9635                b, c);
9636}
9637
9638static void __ATTRS_o_ai
9639vec_stvrx(vector unsigned int a, int b, vector unsigned int *c)
9640{
9641  return vec_st(vec_perm(a,
9642                         vec_lvlx(b, c),
9643                         vec_lvsr(b, (unsigned char *)c)),
9644                b, c);
9645}
9646
9647static void __ATTRS_o_ai
9648vec_stvrx(vector bool int a, int b, vector bool int *c)
9649{
9650  return vec_st(vec_perm(a,
9651                         vec_lvlx(b, c),
9652                         vec_lvsr(b, (unsigned char *)c)),
9653                b, c);
9654}
9655
9656static void __ATTRS_o_ai
9657vec_stvrx(vector float a, int b, vector float *c)
9658{
9659  return vec_st(vec_perm(a,
9660                         vec_lvlx(b, c),
9661                         vec_lvsr(b, (unsigned char *)c)),
9662                b, c);
9663}
9664
9665/* vec_stvrxl */
9666
9667static void __ATTRS_o_ai
9668vec_stvrxl(vector signed char a, int b, signed char *c)
9669{
9670  return vec_stl(vec_perm(a,
9671                          vec_lvlx(b, c),
9672                          vec_lvsr(b, c)),
9673                 b, c);
9674}
9675
9676static void __ATTRS_o_ai
9677vec_stvrxl(vector signed char a, int b, vector signed char *c)
9678{
9679  return vec_stl(vec_perm(a,
9680                          vec_lvlx(b, c),
9681                          vec_lvsr(b, (unsigned char *)c)),
9682                 b, c);
9683}
9684
9685static void __ATTRS_o_ai
9686vec_stvrxl(vector unsigned char a, int b, unsigned char *c)
9687{
9688  return vec_stl(vec_perm(a,
9689                          vec_lvlx(b, c),
9690                          vec_lvsr(b, c)),
9691                 b, c);
9692}
9693
9694static void __ATTRS_o_ai
9695vec_stvrxl(vector unsigned char a, int b, vector unsigned char *c)
9696{
9697  return vec_stl(vec_perm(a,
9698                          vec_lvlx(b, c),
9699                          vec_lvsr(b, (unsigned char *)c)),
9700                 b, c);
9701}
9702
9703static void __ATTRS_o_ai
9704vec_stvrxl(vector bool char a, int b, vector bool char *c)
9705{
9706  return vec_stl(vec_perm(a,
9707                          vec_lvlx(b, c),
9708                          vec_lvsr(b, (unsigned char *)c)),
9709                 b, c);
9710}
9711
9712static void __ATTRS_o_ai
9713vec_stvrxl(vector short a, int b, short *c)
9714{
9715  return vec_stl(vec_perm(a,
9716                          vec_lvlx(b, c),
9717                          vec_lvsr(b, c)),
9718                 b, c);
9719}
9720
9721static void __ATTRS_o_ai
9722vec_stvrxl(vector short a, int b, vector short *c)
9723{
9724  return vec_stl(vec_perm(a,
9725                          vec_lvlx(b, c),
9726                          vec_lvsr(b, (unsigned char *)c)),
9727                 b, c);
9728}
9729
9730static void __ATTRS_o_ai
9731vec_stvrxl(vector unsigned short a, int b, unsigned short *c)
9732{
9733  return vec_stl(vec_perm(a,
9734                          vec_lvlx(b, c),
9735                          vec_lvsr(b, c)),
9736                 b, c);
9737}
9738
9739static void __ATTRS_o_ai
9740vec_stvrxl(vector unsigned short a, int b, vector unsigned short *c)
9741{
9742  return vec_stl(vec_perm(a,
9743                          vec_lvlx(b, c),
9744                          vec_lvsr(b, (unsigned char *)c)),
9745                 b, c);
9746}
9747
9748static void __ATTRS_o_ai
9749vec_stvrxl(vector bool short a, int b, vector bool short *c)
9750{
9751  return vec_stl(vec_perm(a,
9752                          vec_lvlx(b, c),
9753                          vec_lvsr(b, (unsigned char *)c)),
9754                 b, c);
9755}
9756
9757static void __ATTRS_o_ai
9758vec_stvrxl(vector pixel a, int b, vector pixel *c)
9759{
9760  return vec_stl(vec_perm(a,
9761                          vec_lvlx(b, c),
9762                          vec_lvsr(b, (unsigned char *)c)),
9763                 b, c);
9764}
9765
9766static void __ATTRS_o_ai
9767vec_stvrxl(vector int a, int b, int *c)
9768{
9769  return vec_stl(vec_perm(a,
9770                          vec_lvlx(b, c),
9771                          vec_lvsr(b, c)),
9772                 b, c);
9773}
9774
9775static void __ATTRS_o_ai
9776vec_stvrxl(vector int a, int b, vector int *c)
9777{
9778  return vec_stl(vec_perm(a,
9779                          vec_lvlx(b, c),
9780                          vec_lvsr(b, (unsigned char *)c)),
9781                 b, c);
9782}
9783
9784static void __ATTRS_o_ai
9785vec_stvrxl(vector unsigned int a, int b, unsigned int *c)
9786{
9787  return vec_stl(vec_perm(a,
9788                          vec_lvlx(b, c),
9789                          vec_lvsr(b, c)),
9790                 b, c);
9791}
9792
9793static void __ATTRS_o_ai
9794vec_stvrxl(vector unsigned int a, int b, vector unsigned int *c)
9795{
9796  return vec_stl(vec_perm(a,
9797                          vec_lvlx(b, c),
9798                          vec_lvsr(b, (unsigned char *)c)),
9799                 b, c);
9800}
9801
9802static void __ATTRS_o_ai
9803vec_stvrxl(vector bool int a, int b, vector bool int *c)
9804{
9805  return vec_stl(vec_perm(a,
9806                          vec_lvlx(b, c),
9807                          vec_lvsr(b, (unsigned char *)c)),
9808                 b, c);
9809}
9810
9811static void __ATTRS_o_ai
9812vec_stvrxl(vector float a, int b, vector float *c)
9813{
9814  return vec_stl(vec_perm(a,
9815                          vec_lvlx(b, c),
9816                          vec_lvsr(b, (unsigned char *)c)),
9817                 b, c);
9818}
9819
9820/* vec_promote */
9821
9822static vector signed char __ATTRS_o_ai
9823vec_promote(signed char a, int b)
9824{
9825  vector signed char res = (vector signed char)(0);
9826  res[b] = a;
9827  return res;
9828}
9829
9830static vector unsigned char __ATTRS_o_ai
9831vec_promote(unsigned char a, int b)
9832{
9833  vector unsigned char res = (vector unsigned char)(0);
9834  res[b] = a;
9835  return res;
9836}
9837
9838static vector short __ATTRS_o_ai
9839vec_promote(short a, int b)
9840{
9841  vector short res = (vector short)(0);
9842  res[b] = a;
9843  return res;
9844}
9845
9846static vector unsigned short __ATTRS_o_ai
9847vec_promote(unsigned short a, int b)
9848{
9849  vector unsigned short res = (vector unsigned short)(0);
9850  res[b] = a;
9851  return res;
9852}
9853
9854static vector int __ATTRS_o_ai
9855vec_promote(int a, int b)
9856{
9857  vector int res = (vector int)(0);
9858  res[b] = a;
9859  return res;
9860}
9861
9862static vector unsigned int __ATTRS_o_ai
9863vec_promote(unsigned int a, int b)
9864{
9865  vector unsigned int res = (vector unsigned int)(0);
9866  res[b] = a;
9867  return res;
9868}
9869
9870static vector float __ATTRS_o_ai
9871vec_promote(float a, int b)
9872{
9873  vector float res = (vector float)(0);
9874  res[b] = a;
9875  return res;
9876}
9877
9878/* vec_splats */
9879
9880static vector signed char __ATTRS_o_ai
9881vec_splats(signed char a)
9882{
9883  return (vector signed char)(a);
9884}
9885
9886static vector unsigned char __ATTRS_o_ai
9887vec_splats(unsigned char a)
9888{
9889  return (vector unsigned char)(a);
9890}
9891
9892static vector short __ATTRS_o_ai
9893vec_splats(short a)
9894{
9895  return (vector short)(a);
9896}
9897
9898static vector unsigned short __ATTRS_o_ai
9899vec_splats(unsigned short a)
9900{
9901  return (vector unsigned short)(a);
9902}
9903
9904static vector int __ATTRS_o_ai
9905vec_splats(int a)
9906{
9907  return (vector int)(a);
9908}
9909
9910static vector unsigned int __ATTRS_o_ai
9911vec_splats(unsigned int a)
9912{
9913  return (vector unsigned int)(a);
9914}
9915
9916static vector float __ATTRS_o_ai
9917vec_splats(float a)
9918{
9919  return (vector float)(a);
9920}
9921
9922/* ----------------------------- predicates --------------------------------- */
9923
9924/* vec_all_eq */
9925
9926static int __ATTRS_o_ai
9927vec_all_eq(vector signed char a, vector signed char b)
9928{
9929  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b);
9930}
9931
9932static int __ATTRS_o_ai
9933vec_all_eq(vector signed char a, vector bool char b)
9934{
9935  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b);
9936}
9937
9938static int __ATTRS_o_ai
9939vec_all_eq(vector unsigned char a, vector unsigned char b)
9940{
9941  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b);
9942}
9943
9944static int __ATTRS_o_ai
9945vec_all_eq(vector unsigned char a, vector bool char b)
9946{
9947  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b);
9948}
9949
9950static int __ATTRS_o_ai
9951vec_all_eq(vector bool char a, vector signed char b)
9952{
9953  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b);
9954}
9955
9956static int __ATTRS_o_ai
9957vec_all_eq(vector bool char a, vector unsigned char b)
9958{
9959  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b);
9960}
9961
9962static int __ATTRS_o_ai
9963vec_all_eq(vector bool char a, vector bool char b)
9964{
9965  return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b);
9966}
9967
9968static int __ATTRS_o_ai
9969vec_all_eq(vector short a, vector short b)
9970{
9971  return __builtin_altivec_vcmpequh_p(__CR6_LT, a, b);
9972}
9973
9974static int __ATTRS_o_ai
9975vec_all_eq(vector short a, vector bool short b)
9976{
9977  return __builtin_altivec_vcmpequh_p(__CR6_LT, a, (vector short)b);
9978}
9979
9980static int __ATTRS_o_ai
9981vec_all_eq(vector unsigned short a, vector unsigned short b)
9982{
9983  return
9984    __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b);
9985}
9986
9987static int __ATTRS_o_ai
9988vec_all_eq(vector unsigned short a, vector bool short b)
9989{
9990  return
9991    __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b);
9992}
9993
9994static int __ATTRS_o_ai
9995vec_all_eq(vector bool short a, vector short b)
9996{
9997  return
9998    __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b);
9999}
10000
10001static int __ATTRS_o_ai
10002vec_all_eq(vector bool short a, vector unsigned short b)
10003{
10004  return
10005    __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b);
10006}
10007
10008static int __ATTRS_o_ai
10009vec_all_eq(vector bool short a, vector bool short b)
10010{
10011  return
10012    __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b);
10013}
10014
10015static int __ATTRS_o_ai
10016vec_all_eq(vector pixel a, vector pixel b)
10017{
10018  return
10019    __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b);
10020}
10021
10022static int __ATTRS_o_ai
10023vec_all_eq(vector int a, vector int b)
10024{
10025  return __builtin_altivec_vcmpequw_p(__CR6_LT, a, b);
10026}
10027
10028static int __ATTRS_o_ai
10029vec_all_eq(vector int a, vector bool int b)
10030{
10031  return __builtin_altivec_vcmpequw_p(__CR6_LT, a, (vector int)b);
10032}
10033
10034static int __ATTRS_o_ai
10035vec_all_eq(vector unsigned int a, vector unsigned int b)
10036{
10037  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b);
10038}
10039
10040static int __ATTRS_o_ai
10041vec_all_eq(vector unsigned int a, vector bool int b)
10042{
10043  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b);
10044}
10045
10046static int __ATTRS_o_ai
10047vec_all_eq(vector bool int a, vector int b)
10048{
10049  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b);
10050}
10051
10052static int __ATTRS_o_ai
10053vec_all_eq(vector bool int a, vector unsigned int b)
10054{
10055  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b);
10056}
10057
10058static int __ATTRS_o_ai
10059vec_all_eq(vector bool int a, vector bool int b)
10060{
10061  return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b);
10062}
10063
10064static int __ATTRS_o_ai
10065vec_all_eq(vector float a, vector float b)
10066{
10067  return __builtin_altivec_vcmpeqfp_p(__CR6_LT, a, b);
10068}
10069
10070/* vec_all_ge */
10071
10072static int __ATTRS_o_ai
10073vec_all_ge(vector signed char a, vector signed char b)
10074{
10075  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, b, a);
10076}
10077
10078static int __ATTRS_o_ai
10079vec_all_ge(vector signed char a, vector bool char b)
10080{
10081  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)b, a);
10082}
10083
10084static int __ATTRS_o_ai
10085vec_all_ge(vector unsigned char a, vector unsigned char b)
10086{
10087  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, b, a);
10088}
10089
10090static int __ATTRS_o_ai
10091vec_all_ge(vector unsigned char a, vector bool char b)
10092{
10093  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)b, a);
10094}
10095
10096static int __ATTRS_o_ai
10097vec_all_ge(vector bool char a, vector signed char b)
10098{
10099  return __builtin_altivec_vcmpgtub_p(__CR6_EQ,
10100                                      (vector unsigned char)b,
10101                                      (vector unsigned char)a);
10102}
10103
10104static int __ATTRS_o_ai
10105vec_all_ge(vector bool char a, vector unsigned char b)
10106{
10107  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, b, (vector unsigned char)a);
10108}
10109
10110static int __ATTRS_o_ai
10111vec_all_ge(vector bool char a, vector bool char b)
10112{
10113  return __builtin_altivec_vcmpgtub_p(__CR6_EQ,
10114                                      (vector unsigned char)b,
10115                                      (vector unsigned char)a);
10116}
10117
10118static int __ATTRS_o_ai
10119vec_all_ge(vector short a, vector short b)
10120{
10121  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, b, a);
10122}
10123
10124static int __ATTRS_o_ai
10125vec_all_ge(vector short a, vector bool short b)
10126{
10127  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)b, a);
10128}
10129
10130static int __ATTRS_o_ai
10131vec_all_ge(vector unsigned short a, vector unsigned short b)
10132{
10133  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, b, a);
10134}
10135
10136static int __ATTRS_o_ai
10137vec_all_ge(vector unsigned short a, vector bool short b)
10138{
10139  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)b, a);
10140}
10141
10142static int __ATTRS_o_ai
10143vec_all_ge(vector bool short a, vector short b)
10144{
10145  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ,
10146                                      (vector unsigned short)b,
10147                                      (vector unsigned short)a);
10148}
10149
10150static int __ATTRS_o_ai
10151vec_all_ge(vector bool short a, vector unsigned short b)
10152{
10153  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, b, (vector unsigned short)a);
10154}
10155
10156static int __ATTRS_o_ai
10157vec_all_ge(vector bool short a, vector bool short b)
10158{
10159  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ,
10160                                      (vector unsigned short)b,
10161                                      (vector unsigned short)a);
10162}
10163
10164static int __ATTRS_o_ai
10165vec_all_ge(vector int a, vector int b)
10166{
10167  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, b, a);
10168}
10169
10170static int __ATTRS_o_ai
10171vec_all_ge(vector int a, vector bool int b)
10172{
10173  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)b, a);
10174}
10175
10176static int __ATTRS_o_ai
10177vec_all_ge(vector unsigned int a, vector unsigned int b)
10178{
10179  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, b, a);
10180}
10181
10182static int __ATTRS_o_ai
10183vec_all_ge(vector unsigned int a, vector bool int b)
10184{
10185  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)b, a);
10186}
10187
10188static int __ATTRS_o_ai
10189vec_all_ge(vector bool int a, vector int b)
10190{
10191  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ,
10192                                      (vector unsigned int)b,
10193                                      (vector unsigned int)a);
10194}
10195
10196static int __ATTRS_o_ai
10197vec_all_ge(vector bool int a, vector unsigned int b)
10198{
10199  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, b, (vector unsigned int)a);
10200}
10201
10202static int __ATTRS_o_ai
10203vec_all_ge(vector bool int a, vector bool int b)
10204{
10205  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ,
10206                                      (vector unsigned int)b,
10207                                      (vector unsigned int)a);
10208}
10209
10210static int __ATTRS_o_ai
10211vec_all_ge(vector float a, vector float b)
10212{
10213  return __builtin_altivec_vcmpgefp_p(__CR6_LT, a, b);
10214}
10215
10216/* vec_all_gt */
10217
10218static int __ATTRS_o_ai
10219vec_all_gt(vector signed char a, vector signed char b)
10220{
10221  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, a, b);
10222}
10223
10224static int __ATTRS_o_ai
10225vec_all_gt(vector signed char a, vector bool char b)
10226{
10227  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, a, (vector signed char)b);
10228}
10229
10230static int __ATTRS_o_ai
10231vec_all_gt(vector unsigned char a, vector unsigned char b)
10232{
10233  return __builtin_altivec_vcmpgtub_p(__CR6_LT, a, b);
10234}
10235
10236static int __ATTRS_o_ai
10237vec_all_gt(vector unsigned char a, vector bool char b)
10238{
10239  return __builtin_altivec_vcmpgtub_p(__CR6_LT, a, (vector unsigned char)b);
10240}
10241
10242static int __ATTRS_o_ai
10243vec_all_gt(vector bool char a, vector signed char b)
10244{
10245  return __builtin_altivec_vcmpgtub_p(__CR6_LT,
10246                                      (vector unsigned char)a,
10247                                      (vector unsigned char)b);
10248}
10249
10250static int __ATTRS_o_ai
10251vec_all_gt(vector bool char a, vector unsigned char b)
10252{
10253  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)a, b);
10254}
10255
10256static int __ATTRS_o_ai
10257vec_all_gt(vector bool char a, vector bool char b)
10258{
10259  return __builtin_altivec_vcmpgtub_p(__CR6_LT,
10260                                      (vector unsigned char)a,
10261                                      (vector unsigned char)b);
10262}
10263
10264static int __ATTRS_o_ai
10265vec_all_gt(vector short a, vector short b)
10266{
10267  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, a, b);
10268}
10269
10270static int __ATTRS_o_ai
10271vec_all_gt(vector short a, vector bool short b)
10272{
10273  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, a, (vector short)b);
10274}
10275
10276static int __ATTRS_o_ai
10277vec_all_gt(vector unsigned short a, vector unsigned short b)
10278{
10279  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, a, b);
10280}
10281
10282static int __ATTRS_o_ai
10283vec_all_gt(vector unsigned short a, vector bool short b)
10284{
10285  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, a, (vector unsigned short)b);
10286}
10287
10288static int __ATTRS_o_ai
10289vec_all_gt(vector bool short a, vector short b)
10290{
10291  return __builtin_altivec_vcmpgtuh_p(__CR6_LT,
10292                                      (vector unsigned short)a,
10293                                      (vector unsigned short)b);
10294}
10295
10296static int __ATTRS_o_ai
10297vec_all_gt(vector bool short a, vector unsigned short b)
10298{
10299  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)a, b);
10300}
10301
10302static int __ATTRS_o_ai
10303vec_all_gt(vector bool short a, vector bool short b)
10304{
10305  return __builtin_altivec_vcmpgtuh_p(__CR6_LT,
10306                                      (vector unsigned short)a,
10307                                      (vector unsigned short)b);
10308}
10309
10310static int __ATTRS_o_ai
10311vec_all_gt(vector int a, vector int b)
10312{
10313  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, a, b);
10314}
10315
10316static int __ATTRS_o_ai
10317vec_all_gt(vector int a, vector bool int b)
10318{
10319  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, a, (vector int)b);
10320}
10321
10322static int __ATTRS_o_ai
10323vec_all_gt(vector unsigned int a, vector unsigned int b)
10324{
10325  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, a, b);
10326}
10327
10328static int __ATTRS_o_ai
10329vec_all_gt(vector unsigned int a, vector bool int b)
10330{
10331  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, a, (vector unsigned int)b);
10332}
10333
10334static int __ATTRS_o_ai
10335vec_all_gt(vector bool int a, vector int b)
10336{
10337  return __builtin_altivec_vcmpgtuw_p(__CR6_LT,
10338                                      (vector unsigned int)a,
10339                                      (vector unsigned int)b);
10340}
10341
10342static int __ATTRS_o_ai
10343vec_all_gt(vector bool int a, vector unsigned int b)
10344{
10345  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)a, b);
10346}
10347
10348static int __ATTRS_o_ai
10349vec_all_gt(vector bool int a, vector bool int b)
10350{
10351  return __builtin_altivec_vcmpgtuw_p(__CR6_LT,
10352                                      (vector unsigned int)a,
10353                                      (vector unsigned int)b);
10354}
10355
10356static int __ATTRS_o_ai
10357vec_all_gt(vector float a, vector float b)
10358{
10359  return __builtin_altivec_vcmpgtfp_p(__CR6_LT, a, b);
10360}
10361
10362/* vec_all_in */
10363
10364static int __attribute__((__always_inline__))
10365vec_all_in(vector float a, vector float b)
10366{
10367  return __builtin_altivec_vcmpbfp_p(__CR6_EQ, a, b);
10368}
10369
10370/* vec_all_le */
10371
10372static int __ATTRS_o_ai
10373vec_all_le(vector signed char a, vector signed char b)
10374{
10375  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, a, b);
10376}
10377
10378static int __ATTRS_o_ai
10379vec_all_le(vector signed char a, vector bool char b)
10380{
10381  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, a, (vector signed char)b);
10382}
10383
10384static int __ATTRS_o_ai
10385vec_all_le(vector unsigned char a, vector unsigned char b)
10386{
10387  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, a, b);
10388}
10389
10390static int __ATTRS_o_ai
10391vec_all_le(vector unsigned char a, vector bool char b)
10392{
10393  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, a, (vector unsigned char)b);
10394}
10395
10396static int __ATTRS_o_ai
10397vec_all_le(vector bool char a, vector signed char b)
10398{
10399  return __builtin_altivec_vcmpgtub_p(__CR6_EQ,
10400                                      (vector unsigned char)a,
10401                                      (vector unsigned char)b);
10402}
10403
10404static int __ATTRS_o_ai
10405vec_all_le(vector bool char a, vector unsigned char b)
10406{
10407  return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)a, b);
10408}
10409
10410static int __ATTRS_o_ai
10411vec_all_le(vector bool char a, vector bool char b)
10412{
10413  return __builtin_altivec_vcmpgtub_p(__CR6_EQ,
10414                                      (vector unsigned char)a,
10415                                      (vector unsigned char)b);
10416}
10417
10418static int __ATTRS_o_ai
10419vec_all_le(vector short a, vector short b)
10420{
10421  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, a, b);
10422}
10423
10424static int __ATTRS_o_ai
10425vec_all_le(vector short a, vector bool short b)
10426{
10427  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, a, (vector short)b);
10428}
10429
10430static int __ATTRS_o_ai
10431vec_all_le(vector unsigned short a, vector unsigned short b)
10432{
10433  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, a, b);
10434}
10435
10436static int __ATTRS_o_ai
10437vec_all_le(vector unsigned short a, vector bool short b)
10438{
10439  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, a, (vector unsigned short)b);
10440}
10441
10442static int __ATTRS_o_ai
10443vec_all_le(vector bool short a, vector short b)
10444{
10445  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ,
10446                                      (vector unsigned short)a,
10447                                      (vector unsigned short)b);
10448}
10449
10450static int __ATTRS_o_ai
10451vec_all_le(vector bool short a, vector unsigned short b)
10452{
10453  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)a, b);
10454}
10455
10456static int __ATTRS_o_ai
10457vec_all_le(vector bool short a, vector bool short b)
10458{
10459  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ,
10460                                      (vector unsigned short)a,
10461                                      (vector unsigned short)b);
10462}
10463
10464static int __ATTRS_o_ai
10465vec_all_le(vector int a, vector int b)
10466{
10467  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, a, b);
10468}
10469
10470static int __ATTRS_o_ai
10471vec_all_le(vector int a, vector bool int b)
10472{
10473  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, a, (vector int)b);
10474}
10475
10476static int __ATTRS_o_ai
10477vec_all_le(vector unsigned int a, vector unsigned int b)
10478{
10479  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, a, b);
10480}
10481
10482static int __ATTRS_o_ai
10483vec_all_le(vector unsigned int a, vector bool int b)
10484{
10485  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, a, (vector unsigned int)b);
10486}
10487
10488static int __ATTRS_o_ai
10489vec_all_le(vector bool int a, vector int b)
10490{
10491  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ,
10492                                      (vector unsigned int)a,
10493                                      (vector unsigned int)b);
10494}
10495
10496static int __ATTRS_o_ai
10497vec_all_le(vector bool int a, vector unsigned int b)
10498{
10499  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)a, b);
10500}
10501
10502static int __ATTRS_o_ai
10503vec_all_le(vector bool int a, vector bool int b)
10504{
10505  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ,
10506                                      (vector unsigned int)a,
10507                                      (vector unsigned int)b);
10508}
10509
10510static int __ATTRS_o_ai
10511vec_all_le(vector float a, vector float b)
10512{
10513  return __builtin_altivec_vcmpgefp_p(__CR6_LT, b, a);
10514}
10515
10516/* vec_all_lt */
10517
10518static int __ATTRS_o_ai
10519vec_all_lt(vector signed char a, vector signed char b)
10520{
10521  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, b, a);
10522}
10523
10524static int __ATTRS_o_ai
10525vec_all_lt(vector signed char a, vector bool char b)
10526{
10527  return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)b, a);
10528}
10529
10530static int __ATTRS_o_ai
10531vec_all_lt(vector unsigned char a, vector unsigned char b)
10532{
10533  return __builtin_altivec_vcmpgtub_p(__CR6_LT, b, a);
10534}
10535
10536static int __ATTRS_o_ai
10537vec_all_lt(vector unsigned char a, vector bool char b)
10538{
10539  return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)b, a);
10540}
10541
10542static int __ATTRS_o_ai
10543vec_all_lt(vector bool char a, vector signed char b)
10544{
10545  return __builtin_altivec_vcmpgtub_p(__CR6_LT,
10546                                      (vector unsigned char)b,
10547                                      (vector unsigned char)a);
10548}
10549
10550static int __ATTRS_o_ai
10551vec_all_lt(vector bool char a, vector unsigned char b)
10552{
10553  return __builtin_altivec_vcmpgtub_p(__CR6_LT, b, (vector unsigned char)a);
10554}
10555
10556static int __ATTRS_o_ai
10557vec_all_lt(vector bool char a, vector bool char b)
10558{
10559  return __builtin_altivec_vcmpgtub_p(__CR6_LT,
10560                                      (vector unsigned char)b,
10561                                      (vector unsigned char)a);
10562}
10563
10564static int __ATTRS_o_ai
10565vec_all_lt(vector short a, vector short b)
10566{
10567  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, b, a);
10568}
10569
10570static int __ATTRS_o_ai
10571vec_all_lt(vector short a, vector bool short b)
10572{
10573  return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)b, a);
10574}
10575
10576static int __ATTRS_o_ai
10577vec_all_lt(vector unsigned short a, vector unsigned short b)
10578{
10579  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, b, a);
10580}
10581
10582static int __ATTRS_o_ai
10583vec_all_lt(vector unsigned short a, vector bool short b)
10584{
10585  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)b, a);
10586}
10587
10588static int __ATTRS_o_ai
10589vec_all_lt(vector bool short a, vector short b)
10590{
10591  return __builtin_altivec_vcmpgtuh_p(__CR6_LT,
10592                                      (vector unsigned short)b,
10593                                      (vector unsigned short)a);
10594}
10595
10596static int __ATTRS_o_ai
10597vec_all_lt(vector bool short a, vector unsigned short b)
10598{
10599  return __builtin_altivec_vcmpgtuh_p(__CR6_LT, b, (vector unsigned short)a);
10600}
10601
10602static int __ATTRS_o_ai
10603vec_all_lt(vector bool short a, vector bool short b)
10604{
10605  return __builtin_altivec_vcmpgtuh_p(__CR6_LT,
10606                                      (vector unsigned short)b,
10607                                      (vector unsigned short)a);
10608}
10609
10610static int __ATTRS_o_ai
10611vec_all_lt(vector int a, vector int b)
10612{
10613  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, b, a);
10614}
10615
10616static int __ATTRS_o_ai
10617vec_all_lt(vector int a, vector bool int b)
10618{
10619  return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)b, a);
10620}
10621
10622static int __ATTRS_o_ai
10623vec_all_lt(vector unsigned int a, vector unsigned int b)
10624{
10625  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, b, a);
10626}
10627
10628static int __ATTRS_o_ai
10629vec_all_lt(vector unsigned int a, vector bool int b)
10630{
10631  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)b, a);
10632}
10633
10634static int __ATTRS_o_ai
10635vec_all_lt(vector bool int a, vector int b)
10636{
10637  return __builtin_altivec_vcmpgtuw_p(__CR6_LT,
10638                                      (vector unsigned int)b,
10639                                      (vector unsigned int)a);
10640}
10641
10642static int __ATTRS_o_ai
10643vec_all_lt(vector bool int a, vector unsigned int b)
10644{
10645  return __builtin_altivec_vcmpgtuw_p(__CR6_LT, b, (vector unsigned int)a);
10646}
10647
10648static int __ATTRS_o_ai
10649vec_all_lt(vector bool int a, vector bool int b)
10650{
10651  return __builtin_altivec_vcmpgtuw_p(__CR6_LT,
10652                                      (vector unsigned int)b,
10653                                      (vector unsigned int)a);
10654}
10655
10656static int __ATTRS_o_ai
10657vec_all_lt(vector float a, vector float b)
10658{
10659  return __builtin_altivec_vcmpgtfp_p(__CR6_LT, b, a);
10660}
10661
10662/* vec_all_nan */
10663
10664static int __attribute__((__always_inline__))
10665vec_all_nan(vector float a)
10666{
10667  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, a, a);
10668}
10669
10670/* vec_all_ne */
10671
10672static int __ATTRS_o_ai
10673vec_all_ne(vector signed char a, vector signed char b)
10674{
10675  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b);
10676}
10677
10678static int __ATTRS_o_ai
10679vec_all_ne(vector signed char a, vector bool char b)
10680{
10681  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b);
10682}
10683
10684static int __ATTRS_o_ai
10685vec_all_ne(vector unsigned char a, vector unsigned char b)
10686{
10687  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b);
10688}
10689
10690static int __ATTRS_o_ai
10691vec_all_ne(vector unsigned char a, vector bool char b)
10692{
10693  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b);
10694}
10695
10696static int __ATTRS_o_ai
10697vec_all_ne(vector bool char a, vector signed char b)
10698{
10699  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b);
10700}
10701
10702static int __ATTRS_o_ai
10703vec_all_ne(vector bool char a, vector unsigned char b)
10704{
10705  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b);
10706}
10707
10708static int __ATTRS_o_ai
10709vec_all_ne(vector bool char a, vector bool char b)
10710{
10711  return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b);
10712}
10713
10714static int __ATTRS_o_ai
10715vec_all_ne(vector short a, vector short b)
10716{
10717  return __builtin_altivec_vcmpequh_p(__CR6_EQ, a, b);
10718}
10719
10720static int __ATTRS_o_ai
10721vec_all_ne(vector short a, vector bool short b)
10722{
10723  return __builtin_altivec_vcmpequh_p(__CR6_EQ, a, (vector short)b);
10724}
10725
10726static int __ATTRS_o_ai
10727vec_all_ne(vector unsigned short a, vector unsigned short b)
10728{
10729  return
10730    __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b);
10731}
10732
10733static int __ATTRS_o_ai
10734vec_all_ne(vector unsigned short a, vector bool short b)
10735{
10736  return
10737    __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b);
10738}
10739
10740static int __ATTRS_o_ai
10741vec_all_ne(vector bool short a, vector short b)
10742{
10743  return
10744    __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b);
10745}
10746
10747static int __ATTRS_o_ai
10748vec_all_ne(vector bool short a, vector unsigned short b)
10749{
10750  return
10751    __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b);
10752}
10753
10754static int __ATTRS_o_ai
10755vec_all_ne(vector bool short a, vector bool short b)
10756{
10757  return
10758    __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b);
10759}
10760
10761static int __ATTRS_o_ai
10762vec_all_ne(vector pixel a, vector pixel b)
10763{
10764  return
10765    __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b);
10766}
10767
10768static int __ATTRS_o_ai
10769vec_all_ne(vector int a, vector int b)
10770{
10771  return __builtin_altivec_vcmpequw_p(__CR6_EQ, a, b);
10772}
10773
10774static int __ATTRS_o_ai
10775vec_all_ne(vector int a, vector bool int b)
10776{
10777  return __builtin_altivec_vcmpequw_p(__CR6_EQ, a, (vector int)b);
10778}
10779
10780static int __ATTRS_o_ai
10781vec_all_ne(vector unsigned int a, vector unsigned int b)
10782{
10783  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b);
10784}
10785
10786static int __ATTRS_o_ai
10787vec_all_ne(vector unsigned int a, vector bool int b)
10788{
10789  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b);
10790}
10791
10792static int __ATTRS_o_ai
10793vec_all_ne(vector bool int a, vector int b)
10794{
10795  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b);
10796}
10797
10798static int __ATTRS_o_ai
10799vec_all_ne(vector bool int a, vector unsigned int b)
10800{
10801  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b);
10802}
10803
10804static int __ATTRS_o_ai
10805vec_all_ne(vector bool int a, vector bool int b)
10806{
10807  return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b);
10808}
10809
10810static int __ATTRS_o_ai
10811vec_all_ne(vector float a, vector float b)
10812{
10813  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, a, b);
10814}
10815
10816/* vec_all_nge */
10817
10818static int __attribute__((__always_inline__))
10819vec_all_nge(vector float a, vector float b)
10820{
10821  return __builtin_altivec_vcmpgefp_p(__CR6_EQ, a, b);
10822}
10823
10824/* vec_all_ngt */
10825
10826static int __attribute__((__always_inline__))
10827vec_all_ngt(vector float a, vector float b)
10828{
10829  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, a, b);
10830}
10831
10832/* vec_all_nle */
10833
10834static int __attribute__((__always_inline__))
10835vec_all_nle(vector float a, vector float b)
10836{
10837  return __builtin_altivec_vcmpgefp_p(__CR6_EQ, b, a);
10838}
10839
10840/* vec_all_nlt */
10841
10842static int __attribute__((__always_inline__))
10843vec_all_nlt(vector float a, vector float b)
10844{
10845  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, b, a);
10846}
10847
10848/* vec_all_numeric */
10849
10850static int __attribute__((__always_inline__))
10851vec_all_numeric(vector float a)
10852{
10853  return __builtin_altivec_vcmpeqfp_p(__CR6_LT, a, a);
10854}
10855
10856/* vec_any_eq */
10857
10858static int __ATTRS_o_ai
10859vec_any_eq(vector signed char a, vector signed char b)
10860{
10861  return
10862    __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b);
10863}
10864
10865static int __ATTRS_o_ai
10866vec_any_eq(vector signed char a, vector bool char b)
10867{
10868  return
10869    __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b);
10870}
10871
10872static int __ATTRS_o_ai
10873vec_any_eq(vector unsigned char a, vector unsigned char b)
10874{
10875  return
10876    __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b);
10877}
10878
10879static int __ATTRS_o_ai
10880vec_any_eq(vector unsigned char a, vector bool char b)
10881{
10882  return
10883    __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b);
10884}
10885
10886static int __ATTRS_o_ai
10887vec_any_eq(vector bool char a, vector signed char b)
10888{
10889  return
10890    __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b);
10891}
10892
10893static int __ATTRS_o_ai
10894vec_any_eq(vector bool char a, vector unsigned char b)
10895{
10896  return
10897    __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b);
10898}
10899
10900static int __ATTRS_o_ai
10901vec_any_eq(vector bool char a, vector bool char b)
10902{
10903  return
10904    __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b);
10905}
10906
10907static int __ATTRS_o_ai
10908vec_any_eq(vector short a, vector short b)
10909{
10910  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, a, b);
10911}
10912
10913static int __ATTRS_o_ai
10914vec_any_eq(vector short a, vector bool short b)
10915{
10916  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, a, (vector short)b);
10917}
10918
10919static int __ATTRS_o_ai
10920vec_any_eq(vector unsigned short a, vector unsigned short b)
10921{
10922  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
10923                                      (vector short)a,
10924                                      (vector short)b);
10925}
10926
10927static int __ATTRS_o_ai
10928vec_any_eq(vector unsigned short a, vector bool short b)
10929{
10930  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
10931                                      (vector short)a,
10932                                      (vector short)b);
10933}
10934
10935static int __ATTRS_o_ai
10936vec_any_eq(vector bool short a, vector short b)
10937{
10938  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
10939                                      (vector short)a,
10940                                      (vector short)b);
10941}
10942
10943static int __ATTRS_o_ai
10944vec_any_eq(vector bool short a, vector unsigned short b)
10945{
10946  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
10947                                      (vector short)a,
10948                                      (vector short)b);
10949}
10950
10951static int __ATTRS_o_ai
10952vec_any_eq(vector bool short a, vector bool short b)
10953{
10954  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
10955                                      (vector short)a,
10956                                      (vector short)b);
10957}
10958
10959static int __ATTRS_o_ai
10960vec_any_eq(vector pixel a, vector pixel b)
10961{
10962  return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
10963                                      (vector short)a,
10964                                      (vector short)b);
10965}
10966
10967static int __ATTRS_o_ai
10968vec_any_eq(vector int a, vector int b)
10969{
10970  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, a, b);
10971}
10972
10973static int __ATTRS_o_ai
10974vec_any_eq(vector int a, vector bool int b)
10975{
10976  return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, a, (vector int)b);
10977}
10978
10979static int __ATTRS_o_ai
10980vec_any_eq(vector unsigned int a, vector unsigned int b)
10981{
10982  return
10983    __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b);
10984}
10985
10986static int __ATTRS_o_ai
10987vec_any_eq(vector unsigned int a, vector bool int b)
10988{
10989  return
10990    __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b);
10991}
10992
10993static int __ATTRS_o_ai
10994vec_any_eq(vector bool int a, vector int b)
10995{
10996  return
10997    __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b);
10998}
10999
11000static int __ATTRS_o_ai
11001vec_any_eq(vector bool int a, vector unsigned int b)
11002{
11003  return
11004    __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b);
11005}
11006
11007static int __ATTRS_o_ai
11008vec_any_eq(vector bool int a, vector bool int b)
11009{
11010  return
11011    __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b);
11012}
11013
11014static int __ATTRS_o_ai
11015vec_any_eq(vector float a, vector float b)
11016{
11017  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, a, b);
11018}
11019
11020/* vec_any_ge */
11021
11022static int __ATTRS_o_ai
11023vec_any_ge(vector signed char a, vector signed char b)
11024{
11025  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, b, a);
11026}
11027
11028static int __ATTRS_o_ai
11029vec_any_ge(vector signed char a, vector bool char b)
11030{
11031  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)b, a);
11032}
11033
11034static int __ATTRS_o_ai
11035vec_any_ge(vector unsigned char a, vector unsigned char b)
11036{
11037  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, b, a);
11038}
11039
11040static int __ATTRS_o_ai
11041vec_any_ge(vector unsigned char a, vector bool char b)
11042{
11043  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)b, a);
11044}
11045
11046static int __ATTRS_o_ai
11047vec_any_ge(vector bool char a, vector signed char b)
11048{
11049  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV,
11050                                      (vector unsigned char)b,
11051                                      (vector unsigned char)a);
11052}
11053
11054static int __ATTRS_o_ai
11055vec_any_ge(vector bool char a, vector unsigned char b)
11056{
11057  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, b, (vector unsigned char)a);
11058}
11059
11060static int __ATTRS_o_ai
11061vec_any_ge(vector bool char a, vector bool char b)
11062{
11063  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV,
11064                                      (vector unsigned char)b,
11065                                      (vector unsigned char)a);
11066}
11067
11068static int __ATTRS_o_ai
11069vec_any_ge(vector short a, vector short b)
11070{
11071  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, b, a);
11072}
11073
11074static int __ATTRS_o_ai
11075vec_any_ge(vector short a, vector bool short b)
11076{
11077  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)b, a);
11078}
11079
11080static int __ATTRS_o_ai
11081vec_any_ge(vector unsigned short a, vector unsigned short b)
11082{
11083  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, b, a);
11084}
11085
11086static int __ATTRS_o_ai
11087vec_any_ge(vector unsigned short a, vector bool short b)
11088{
11089  return
11090    __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)b, a);
11091}
11092
11093static int __ATTRS_o_ai
11094vec_any_ge(vector bool short a, vector short b)
11095{
11096  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV,
11097                                      (vector unsigned short)b,
11098                                      (vector unsigned short)a);
11099}
11100
11101static int __ATTRS_o_ai
11102vec_any_ge(vector bool short a, vector unsigned short b)
11103{
11104  return
11105    __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, b, (vector unsigned short)a);
11106}
11107
11108static int __ATTRS_o_ai
11109vec_any_ge(vector bool short a, vector bool short b)
11110{
11111  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV,
11112                                      (vector unsigned short)b,
11113                                      (vector unsigned short)a);
11114}
11115
11116static int __ATTRS_o_ai
11117vec_any_ge(vector int a, vector int b)
11118{
11119  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, b, a);
11120}
11121
11122static int __ATTRS_o_ai
11123vec_any_ge(vector int a, vector bool int b)
11124{
11125  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)b, a);
11126}
11127
11128static int __ATTRS_o_ai
11129vec_any_ge(vector unsigned int a, vector unsigned int b)
11130{
11131  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, b, a);
11132}
11133
11134static int __ATTRS_o_ai
11135vec_any_ge(vector unsigned int a, vector bool int b)
11136{
11137  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)b, a);
11138}
11139
11140static int __ATTRS_o_ai
11141vec_any_ge(vector bool int a, vector int b)
11142{
11143  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV,
11144                                      (vector unsigned int)b,
11145                                      (vector unsigned int)a);
11146}
11147
11148static int __ATTRS_o_ai
11149vec_any_ge(vector bool int a, vector unsigned int b)
11150{
11151  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, b, (vector unsigned int)a);
11152}
11153
11154static int __ATTRS_o_ai
11155vec_any_ge(vector bool int a, vector bool int b)
11156{
11157  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV,
11158                                      (vector unsigned int)b,
11159                                      (vector unsigned int)a);
11160}
11161
11162static int __ATTRS_o_ai
11163vec_any_ge(vector float a, vector float b)
11164{
11165  return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, a, b);
11166}
11167
11168/* vec_any_gt */
11169
11170static int __ATTRS_o_ai
11171vec_any_gt(vector signed char a, vector signed char b)
11172{
11173  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, a, b);
11174}
11175
11176static int __ATTRS_o_ai
11177vec_any_gt(vector signed char a, vector bool char b)
11178{
11179  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, a, (vector signed char)b);
11180}
11181
11182static int __ATTRS_o_ai
11183vec_any_gt(vector unsigned char a, vector unsigned char b)
11184{
11185  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, a, b);
11186}
11187
11188static int __ATTRS_o_ai
11189vec_any_gt(vector unsigned char a, vector bool char b)
11190{
11191  return
11192    __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, a, (vector unsigned char)b);
11193}
11194
11195static int __ATTRS_o_ai
11196vec_any_gt(vector bool char a, vector signed char b)
11197{
11198  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV,
11199                                      (vector unsigned char)a,
11200                                      (vector unsigned char)b);
11201}
11202
11203static int __ATTRS_o_ai
11204vec_any_gt(vector bool char a, vector unsigned char b)
11205{
11206  return
11207    __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)a, b);
11208}
11209
11210static int __ATTRS_o_ai
11211vec_any_gt(vector bool char a, vector bool char b)
11212{
11213  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV,
11214                                      (vector unsigned char)a,
11215                                      (vector unsigned char)b);
11216}
11217
11218static int __ATTRS_o_ai
11219vec_any_gt(vector short a, vector short b)
11220{
11221  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, a, b);
11222}
11223
11224static int __ATTRS_o_ai
11225vec_any_gt(vector short a, vector bool short b)
11226{
11227  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, a, (vector short)b);
11228}
11229
11230static int __ATTRS_o_ai
11231vec_any_gt(vector unsigned short a, vector unsigned short b)
11232{
11233  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, a, b);
11234}
11235
11236static int __ATTRS_o_ai
11237vec_any_gt(vector unsigned short a, vector bool short b)
11238{
11239  return
11240    __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, a, (vector unsigned short)b);
11241}
11242
11243static int __ATTRS_o_ai
11244vec_any_gt(vector bool short a, vector short b)
11245{
11246  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV,
11247                                      (vector unsigned short)a,
11248                                      (vector unsigned short)b);
11249}
11250
11251static int __ATTRS_o_ai
11252vec_any_gt(vector bool short a, vector unsigned short b)
11253{
11254  return
11255    __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)a, b);
11256}
11257
11258static int __ATTRS_o_ai
11259vec_any_gt(vector bool short a, vector bool short b)
11260{
11261  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV,
11262                                      (vector unsigned short)a,
11263                                      (vector unsigned short)b);
11264}
11265
11266static int __ATTRS_o_ai
11267vec_any_gt(vector int a, vector int b)
11268{
11269  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, a, b);
11270}
11271
11272static int __ATTRS_o_ai
11273vec_any_gt(vector int a, vector bool int b)
11274{
11275  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, a, (vector int)b);
11276}
11277
11278static int __ATTRS_o_ai
11279vec_any_gt(vector unsigned int a, vector unsigned int b)
11280{
11281  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, a, b);
11282}
11283
11284static int __ATTRS_o_ai
11285vec_any_gt(vector unsigned int a, vector bool int b)
11286{
11287  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, a, (vector unsigned int)b);
11288}
11289
11290static int __ATTRS_o_ai
11291vec_any_gt(vector bool int a, vector int b)
11292{
11293  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV,
11294                                      (vector unsigned int)a,
11295                                      (vector unsigned int)b);
11296}
11297
11298static int __ATTRS_o_ai
11299vec_any_gt(vector bool int a, vector unsigned int b)
11300{
11301  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)a, b);
11302}
11303
11304static int __ATTRS_o_ai
11305vec_any_gt(vector bool int a, vector bool int b)
11306{
11307  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV,
11308                                      (vector unsigned int)a,
11309                                      (vector unsigned int)b);
11310}
11311
11312static int __ATTRS_o_ai
11313vec_any_gt(vector float a, vector float b)
11314{
11315  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, a, b);
11316}
11317
11318/* vec_any_le */
11319
11320static int __ATTRS_o_ai
11321vec_any_le(vector signed char a, vector signed char b)
11322{
11323  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, a, b);
11324}
11325
11326static int __ATTRS_o_ai
11327vec_any_le(vector signed char a, vector bool char b)
11328{
11329  return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, a, (vector signed char)b);
11330}
11331
11332static int __ATTRS_o_ai
11333vec_any_le(vector unsigned char a, vector unsigned char b)
11334{
11335  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, a, b);
11336}
11337
11338static int __ATTRS_o_ai
11339vec_any_le(vector unsigned char a, vector bool char b)
11340{
11341  return
11342    __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, a, (vector unsigned char)b);
11343}
11344
11345static int __ATTRS_o_ai
11346vec_any_le(vector bool char a, vector signed char b)
11347{
11348  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV,
11349                                      (vector unsigned char)a,
11350                                      (vector unsigned char)b);
11351}
11352
11353static int __ATTRS_o_ai
11354vec_any_le(vector bool char a, vector unsigned char b)
11355{
11356  return
11357    __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)a, b);
11358}
11359
11360static int __ATTRS_o_ai
11361vec_any_le(vector bool char a, vector bool char b)
11362{
11363  return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV,
11364                                      (vector unsigned char)a,
11365                                      (vector unsigned char)b);
11366}
11367
11368static int __ATTRS_o_ai
11369vec_any_le(vector short a, vector short b)
11370{
11371  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, a, b);
11372}
11373
11374static int __ATTRS_o_ai
11375vec_any_le(vector short a, vector bool short b)
11376{
11377  return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, a, (vector short)b);
11378}
11379
11380static int __ATTRS_o_ai
11381vec_any_le(vector unsigned short a, vector unsigned short b)
11382{
11383  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, a, b);
11384}
11385
11386static int __ATTRS_o_ai
11387vec_any_le(vector unsigned short a, vector bool short b)
11388{
11389  return
11390    __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, a, (vector unsigned short)b);
11391}
11392
11393static int __ATTRS_o_ai
11394vec_any_le(vector bool short a, vector short b)
11395{
11396  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV,
11397                                      (vector unsigned short)a,
11398                                      (vector unsigned short)b);
11399}
11400
11401static int __ATTRS_o_ai
11402vec_any_le(vector bool short a, vector unsigned short b)
11403{
11404  return
11405    __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)a, b);
11406}
11407
11408static int __ATTRS_o_ai
11409vec_any_le(vector bool short a, vector bool short b)
11410{
11411  return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV,
11412                                      (vector unsigned short)a,
11413                                      (vector unsigned short)b);
11414}
11415
11416static int __ATTRS_o_ai
11417vec_any_le(vector int a, vector int b)
11418{
11419  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, a, b);
11420}
11421
11422static int __ATTRS_o_ai
11423vec_any_le(vector int a, vector bool int b)
11424{
11425  return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, a, (vector int)b);
11426}
11427
11428static int __ATTRS_o_ai
11429vec_any_le(vector unsigned int a, vector unsigned int b)
11430{
11431  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, a, b);
11432}
11433
11434static int __ATTRS_o_ai
11435vec_any_le(vector unsigned int a, vector bool int b)
11436{
11437  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, a, (vector unsigned int)b);
11438}
11439
11440static int __ATTRS_o_ai
11441vec_any_le(vector bool int a, vector int b)
11442{
11443  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV,
11444                                      (vector unsigned int)a,
11445                                      (vector unsigned int)b);
11446}
11447
11448static int __ATTRS_o_ai
11449vec_any_le(vector bool int a, vector unsigned int b)
11450{
11451  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)a, b);
11452}
11453
11454static int __ATTRS_o_ai
11455vec_any_le(vector bool int a, vector bool int b)
11456{
11457  return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV,
11458                                      (vector unsigned int)a,
11459                                      (vector unsigned int)b);
11460}
11461
11462static int __ATTRS_o_ai
11463vec_any_le(vector float a, vector float b)
11464{
11465  return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, b, a);
11466}
11467
11468/* vec_any_lt */
11469
11470static int __ATTRS_o_ai
11471vec_any_lt(vector signed char a, vector signed char b)
11472{
11473  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, b, a);
11474}
11475
11476static int __ATTRS_o_ai
11477vec_any_lt(vector signed char a, vector bool char b)
11478{
11479  return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)b, a);
11480}
11481
11482static int __ATTRS_o_ai
11483vec_any_lt(vector unsigned char a, vector unsigned char b)
11484{
11485  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, b, a);
11486}
11487
11488static int __ATTRS_o_ai
11489vec_any_lt(vector unsigned char a, vector bool char b)
11490{
11491  return
11492    __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)b, a);
11493}
11494
11495static int __ATTRS_o_ai
11496vec_any_lt(vector bool char a, vector signed char b)
11497{
11498  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV,
11499                                      (vector unsigned char)b,
11500                                      (vector unsigned char)a);
11501}
11502
11503static int __ATTRS_o_ai
11504vec_any_lt(vector bool char a, vector unsigned char b)
11505{
11506  return
11507    __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, b, (vector unsigned char)a);
11508}
11509
11510static int __ATTRS_o_ai
11511vec_any_lt(vector bool char a, vector bool char b)
11512{
11513  return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV,
11514                                      (vector unsigned char)b,
11515                                      (vector unsigned char)a);
11516}
11517
11518static int __ATTRS_o_ai
11519vec_any_lt(vector short a, vector short b)
11520{
11521  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, b, a);
11522}
11523
11524static int __ATTRS_o_ai
11525vec_any_lt(vector short a, vector bool short b)
11526{
11527  return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)b, a);
11528}
11529
11530static int __ATTRS_o_ai
11531vec_any_lt(vector unsigned short a, vector unsigned short b)
11532{
11533  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, b, a);
11534}
11535
11536static int __ATTRS_o_ai
11537vec_any_lt(vector unsigned short a, vector bool short b)
11538{
11539  return
11540    __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)b, a);
11541}
11542
11543static int __ATTRS_o_ai
11544vec_any_lt(vector bool short a, vector short b)
11545{
11546  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV,
11547                                      (vector unsigned short)b,
11548                                      (vector unsigned short)a);
11549}
11550
11551static int __ATTRS_o_ai
11552vec_any_lt(vector bool short a, vector unsigned short b)
11553{
11554  return
11555    __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, b, (vector unsigned short)a);
11556}
11557
11558static int __ATTRS_o_ai
11559vec_any_lt(vector bool short a, vector bool short b)
11560{
11561  return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV,
11562                                      (vector unsigned short)b,
11563                                      (vector unsigned short)a);
11564}
11565
11566static int __ATTRS_o_ai
11567vec_any_lt(vector int a, vector int b)
11568{
11569  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, b, a);
11570}
11571
11572static int __ATTRS_o_ai
11573vec_any_lt(vector int a, vector bool int b)
11574{
11575  return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)b, a);
11576}
11577
11578static int __ATTRS_o_ai
11579vec_any_lt(vector unsigned int a, vector unsigned int b)
11580{
11581  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, b, a);
11582}
11583
11584static int __ATTRS_o_ai
11585vec_any_lt(vector unsigned int a, vector bool int b)
11586{
11587  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)b, a);
11588}
11589
11590static int __ATTRS_o_ai
11591vec_any_lt(vector bool int a, vector int b)
11592{
11593  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV,
11594                                      (vector unsigned int)b,
11595                                      (vector unsigned int)a);
11596}
11597
11598static int __ATTRS_o_ai
11599vec_any_lt(vector bool int a, vector unsigned int b)
11600{
11601  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, b, (vector unsigned int)a);
11602}
11603
11604static int __ATTRS_o_ai
11605vec_any_lt(vector bool int a, vector bool int b)
11606{
11607  return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV,
11608                                      (vector unsigned int)b,
11609                                      (vector unsigned int)a);
11610}
11611
11612static int __ATTRS_o_ai
11613vec_any_lt(vector float a, vector float b)
11614{
11615  return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, b, a);
11616}
11617
11618/* vec_any_nan */
11619
11620static int __attribute__((__always_inline__))
11621vec_any_nan(vector float a)
11622{
11623  return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, a, a);
11624}
11625
11626/* vec_any_ne */
11627
11628static int __ATTRS_o_ai
11629vec_any_ne(vector signed char a, vector signed char b)
11630{
11631  return
11632    __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b);
11633}
11634
11635static int __ATTRS_o_ai
11636vec_any_ne(vector signed char a, vector bool char b)
11637{
11638  return
11639    __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b);
11640}
11641
11642static int __ATTRS_o_ai
11643vec_any_ne(vector unsigned char a, vector unsigned char b)
11644{
11645  return
11646    __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b);
11647}
11648
11649static int __ATTRS_o_ai
11650vec_any_ne(vector unsigned char a, vector bool char b)
11651{
11652  return
11653    __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b);
11654}
11655
11656static int __ATTRS_o_ai
11657vec_any_ne(vector bool char a, vector signed char b)
11658{
11659  return
11660    __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b);
11661}
11662
11663static int __ATTRS_o_ai
11664vec_any_ne(vector bool char a, vector unsigned char b)
11665{
11666  return
11667    __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b);
11668}
11669
11670static int __ATTRS_o_ai
11671vec_any_ne(vector bool char a, vector bool char b)
11672{
11673  return
11674    __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b);
11675}
11676
11677static int __ATTRS_o_ai
11678vec_any_ne(vector short a, vector short b)
11679{
11680  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, a, b);
11681}
11682
11683static int __ATTRS_o_ai
11684vec_any_ne(vector short a, vector bool short b)
11685{
11686  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, a, (vector short)b);
11687}
11688
11689static int __ATTRS_o_ai
11690vec_any_ne(vector unsigned short a, vector unsigned short b)
11691{
11692  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
11693                                      (vector short)a,
11694                                      (vector short)b);
11695}
11696
11697static int __ATTRS_o_ai
11698vec_any_ne(vector unsigned short a, vector bool short b)
11699{
11700  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
11701                                      (vector short)a,
11702                                      (vector short)b);
11703}
11704
11705static int __ATTRS_o_ai
11706vec_any_ne(vector bool short a, vector short b)
11707{
11708  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
11709                                      (vector short)a,
11710                                      (vector short)b);
11711}
11712
11713static int __ATTRS_o_ai
11714vec_any_ne(vector bool short a, vector unsigned short b)
11715{
11716  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
11717                                      (vector short)a,
11718                                      (vector short)b);
11719}
11720
11721static int __ATTRS_o_ai
11722vec_any_ne(vector bool short a, vector bool short b)
11723{
11724  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
11725                                      (vector short)a,
11726                                      (vector short)b);
11727}
11728
11729static int __ATTRS_o_ai
11730vec_any_ne(vector pixel a, vector pixel b)
11731{
11732  return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
11733                                      (vector short)a,
11734                                      (vector short)b);
11735}
11736
11737static int __ATTRS_o_ai
11738vec_any_ne(vector int a, vector int b)
11739{
11740  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, a, b);
11741}
11742
11743static int __ATTRS_o_ai
11744vec_any_ne(vector int a, vector bool int b)
11745{
11746  return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, a, (vector int)b);
11747}
11748
11749static int __ATTRS_o_ai
11750vec_any_ne(vector unsigned int a, vector unsigned int b)
11751{
11752  return
11753    __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b);
11754}
11755
11756static int __ATTRS_o_ai
11757vec_any_ne(vector unsigned int a, vector bool int b)
11758{
11759  return
11760    __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b);
11761}
11762
11763static int __ATTRS_o_ai
11764vec_any_ne(vector bool int a, vector int b)
11765{
11766  return
11767    __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b);
11768}
11769
11770static int __ATTRS_o_ai
11771vec_any_ne(vector bool int a, vector unsigned int b)
11772{
11773  return
11774    __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b);
11775}
11776
11777static int __ATTRS_o_ai
11778vec_any_ne(vector bool int a, vector bool int b)
11779{
11780  return
11781    __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b);
11782}
11783
11784static int __ATTRS_o_ai
11785vec_any_ne(vector float a, vector float b)
11786{
11787  return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, a, b);
11788}
11789
11790/* vec_any_nge */
11791
11792static int __attribute__((__always_inline__))
11793vec_any_nge(vector float a, vector float b)
11794{
11795  return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, a, b);
11796}
11797
11798/* vec_any_ngt */
11799
11800static int __attribute__((__always_inline__))
11801vec_any_ngt(vector float a, vector float b)
11802{
11803  return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, a, b);
11804}
11805
11806/* vec_any_nle */
11807
11808static int __attribute__((__always_inline__))
11809vec_any_nle(vector float a, vector float b)
11810{
11811  return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, b, a);
11812}
11813
11814/* vec_any_nlt */
11815
11816static int __attribute__((__always_inline__))
11817vec_any_nlt(vector float a, vector float b)
11818{
11819  return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, b, a);
11820}
11821
11822/* vec_any_numeric */
11823
11824static int __attribute__((__always_inline__))
11825vec_any_numeric(vector float a)
11826{
11827  return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, a, a);
11828}
11829
11830/* vec_any_out */
11831
11832static int __attribute__((__always_inline__))
11833vec_any_out(vector float a, vector float b)
11834{
11835  return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, a, b);
11836}
11837
11838#undef __ATTRS_o_ai
11839
11840#endif /* __ALTIVEC_H */
11841