1 /* PowerPC AltiVec include file.
2 Copyright (C) 2002 Free Software Foundation, Inc.
3 Contributed by Aldy Hernandez (aldyh@redhat.com).
5 This file is part of GNU CC.
7 GNU CC is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
12 GNU CC is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GNU CC; see the file COPYING. If not, write to
19 the Free Software Foundation, 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
22 /* As a special exception, if you include this header file into source
23 files compiled by GCC, this header file does not by itself cause
24 the resulting executable to be covered by the GNU General Public
25 License. This exception does not however invalidate any other
26 reasons why the executable file might be covered by the GNU General
29 /* Implemented to conform to the specification included in the AltiVec
30 Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0). */
35 /* Required by Motorola specs. */
42 #define __vector __attribute__((vector_size(16)))
44 /* You are allowed to undef this for C++ compatability. */
45 #define vector __vector
51 /* Dummy prototype. */
52 extern int __altivec_link_error_invalid_argument ();
57 #define __CR6_EQ_REV 1
59 #define __CR6_LT_REV 3
61 #define __bin_args_eq(xtype, x, ytype, y) \
62 (__builtin_types_compatible_p (xtype, typeof (x)) \
63 && __builtin_types_compatible_p (ytype, typeof (y)))
65 #define __un_args_eq(xtype, x) \
66 __builtin_types_compatible_p (xtype, typeof (x))
68 #define __tern_args_eq(xtype, x, ytype, y, ztype, z) \
69 (__builtin_types_compatible_p (xtype, typeof (x)) \
70 && __builtin_types_compatible_p (ytype, typeof (y)) \
71 && __builtin_types_compatible_p (ztype, typeof (z)))
73 #define __ch(x, y, z) __builtin_choose_expr (x, y, z)
77 /* Prototypes for builtins that take literals and must always be
79 inline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline));
80 inline vector float vec_ctf (vector signed int, const char) __attribute__ ((always_inline));
81 inline vector signed int vec_cts (vector float, const char) __attribute__ ((always_inline));
82 inline vector unsigned int vec_ctu (vector float, const char) __attribute__ ((always_inline));
83 inline void vec_dss (const char) __attribute__ ((always_inline));
84 inline void vec_dst (void *, int, const char) __attribute__ ((always_inline));
85 inline void vec_dstst (void *, int, const char) __attribute__ ((always_inline));
86 inline void vec_dststt (void *, int, const char) __attribute__ ((always_inline));
87 inline void vec_dstt (void *, int, const char) __attribute__ ((always_inline));
88 inline vector float vec_sld (vector float, vector float, const char) __attribute__ ((always_inline));
89 inline vector signed int vec_sld (vector signed int, vector signed int, const char) __attribute__ ((always_inline));
90 inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const char) __attribute__ ((always_inline));
91 inline vector signed short vec_sld (vector signed short, vector signed short, const char) __attribute__ ((always_inline));
92 inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const char) __attribute__ ((always_inline));
93 inline vector signed char vec_sld (vector signed char, vector signed char, const char) __attribute__ ((always_inline));
94 inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const char) __attribute__ ((always_inline));
95 inline vector signed char vec_splat (vector signed char, const char) __attribute__ ((always_inline));
96 inline vector unsigned char vec_splat (vector unsigned char, const char) __attribute__ ((always_inline));
97 inline vector signed short vec_splat (vector signed short, const char) __attribute__ ((always_inline));
98 inline vector unsigned short vec_splat (vector unsigned short, const char) __attribute__ ((always_inline));
99 inline vector float vec_splat (vector float, const char) __attribute__ ((always_inline));
100 inline vector signed int vec_splat (vector signed int, const char) __attribute__ ((always_inline));
101 inline vector unsigned int vec_splat (vector unsigned int, const char) __attribute__ ((always_inline));
102 inline vector signed char vec_splat_s8 (const char) __attribute__ ((always_inline));
103 inline vector signed short vec_splat_s16 (const char) __attribute__ ((always_inline));
104 inline vector signed int vec_splat_s32 (const char) __attribute__ ((always_inline));
105 inline vector unsigned char vec_splat_u8 (const char) __attribute__ ((always_inline));
106 inline vector unsigned short vec_splat_u16 (const char) __attribute__ ((always_inline));
107 inline vector unsigned int vec_splat_u32 (const char) __attribute__ ((always_inline));
111 inline vector signed char
112 vec_abs (vector signed char a1)
114 return __builtin_altivec_abs_v16qi (a1);
117 inline vector signed short
118 vec_abs (vector signed short a1)
120 return __builtin_altivec_abs_v8hi (a1);
123 inline vector signed int
124 vec_abs (vector signed int a1)
126 return __builtin_altivec_abs_v4si (a1);
130 vec_abs (vector float a1)
132 return __builtin_altivec_abs_v4sf (a1);
137 inline vector signed char
138 vec_abss (vector signed char a1)
140 return __builtin_altivec_abss_v16qi (a1);
143 inline vector signed short
144 vec_abss (vector signed short a1)
146 return __builtin_altivec_abss_v8hi (a1);
149 inline vector signed int
150 vec_abss (vector signed int a1)
152 return __builtin_altivec_abss_v4si (a1);
157 inline vector signed char
158 vec_add (vector signed char a1, vector signed char a2)
160 return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
163 inline vector unsigned char
164 vec_add (vector signed char a1, vector unsigned char a2)
166 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
169 inline vector unsigned char
170 vec_add (vector unsigned char a1, vector signed char a2)
172 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
175 inline vector unsigned char
176 vec_add (vector unsigned char a1, vector unsigned char a2)
178 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
181 inline vector signed short
182 vec_add (vector signed short a1, vector signed short a2)
184 return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
187 inline vector unsigned short
188 vec_add (vector signed short a1, vector unsigned short a2)
190 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
193 inline vector unsigned short
194 vec_add (vector unsigned short a1, vector signed short a2)
196 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
199 inline vector unsigned short
200 vec_add (vector unsigned short a1, vector unsigned short a2)
202 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
205 inline vector signed int
206 vec_add (vector signed int a1, vector signed int a2)
208 return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
211 inline vector unsigned int
212 vec_add (vector signed int a1, vector unsigned int a2)
214 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
217 inline vector unsigned int
218 vec_add (vector unsigned int a1, vector signed int a2)
220 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
223 inline vector unsigned int
224 vec_add (vector unsigned int a1, vector unsigned int a2)
226 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
230 vec_add (vector float a1, vector float a2)
232 return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
237 inline vector unsigned int
238 vec_addc (vector unsigned int a1, vector unsigned int a2)
240 return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2);
245 inline vector unsigned char
246 vec_adds (vector signed char a1, vector unsigned char a2)
248 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
251 inline vector unsigned char
252 vec_adds (vector unsigned char a1, vector signed char a2)
254 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
257 inline vector unsigned char
258 vec_adds (vector unsigned char a1, vector unsigned char a2)
260 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
263 inline vector signed char
264 vec_adds (vector signed char a1, vector signed char a2)
266 return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
269 inline vector unsigned short
270 vec_adds (vector signed short a1, vector unsigned short a2)
272 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
275 inline vector unsigned short
276 vec_adds (vector unsigned short a1, vector signed short a2)
278 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
281 inline vector unsigned short
282 vec_adds (vector unsigned short a1, vector unsigned short a2)
284 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
287 inline vector signed short
288 vec_adds (vector signed short a1, vector signed short a2)
290 return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
293 inline vector unsigned int
294 vec_adds (vector signed int a1, vector unsigned int a2)
296 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
299 inline vector unsigned int
300 vec_adds (vector unsigned int a1, vector signed int a2)
302 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
305 inline vector unsigned int
306 vec_adds (vector unsigned int a1, vector unsigned int a2)
308 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
311 inline vector signed int
312 vec_adds (vector signed int a1, vector signed int a2)
314 return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
320 vec_and (vector float a1, vector float a2)
322 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
326 vec_and (vector float a1, vector signed int a2)
328 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
332 vec_and (vector signed int a1, vector float a2)
334 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
337 inline vector signed int
338 vec_and (vector signed int a1, vector signed int a2)
340 return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
343 inline vector unsigned int
344 vec_and (vector signed int a1, vector unsigned int a2)
346 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
349 inline vector unsigned int
350 vec_and (vector unsigned int a1, vector signed int a2)
352 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
355 inline vector unsigned int
356 vec_and (vector unsigned int a1, vector unsigned int a2)
358 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
361 inline vector signed short
362 vec_and (vector signed short a1, vector signed short a2)
364 return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
367 inline vector unsigned short
368 vec_and (vector signed short a1, vector unsigned short a2)
370 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
373 inline vector unsigned short
374 vec_and (vector unsigned short a1, vector signed short a2)
376 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
379 inline vector unsigned short
380 vec_and (vector unsigned short a1, vector unsigned short a2)
382 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
385 inline vector signed char
386 vec_and (vector signed char a1, vector signed char a2)
388 return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
391 inline vector unsigned char
392 vec_and (vector signed char a1, vector unsigned char a2)
394 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
397 inline vector unsigned char
398 vec_and (vector unsigned char a1, vector signed char a2)
400 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
403 inline vector unsigned char
404 vec_and (vector unsigned char a1, vector unsigned char a2)
406 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
412 vec_andc (vector float a1, vector float a2)
414 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
418 vec_andc (vector float a1, vector signed int a2)
420 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
424 vec_andc (vector signed int a1, vector float a2)
426 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
429 inline vector signed int
430 vec_andc (vector signed int a1, vector signed int a2)
432 return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
435 inline vector unsigned int
436 vec_andc (vector signed int a1, vector unsigned int a2)
438 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
441 inline vector unsigned int
442 vec_andc (vector unsigned int a1, vector signed int a2)
444 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
447 inline vector unsigned int
448 vec_andc (vector unsigned int a1, vector unsigned int a2)
450 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
453 inline vector signed short
454 vec_andc (vector signed short a1, vector signed short a2)
456 return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
459 inline vector unsigned short
460 vec_andc (vector signed short a1, vector unsigned short a2)
462 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
465 inline vector unsigned short
466 vec_andc (vector unsigned short a1, vector signed short a2)
468 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
471 inline vector unsigned short
472 vec_andc (vector unsigned short a1, vector unsigned short a2)
474 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
477 inline vector signed char
478 vec_andc (vector signed char a1, vector signed char a2)
480 return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
483 inline vector unsigned char
484 vec_andc (vector signed char a1, vector unsigned char a2)
486 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
489 inline vector unsigned char
490 vec_andc (vector unsigned char a1, vector signed char a2)
492 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
495 inline vector unsigned char
496 vec_andc (vector unsigned char a1, vector unsigned char a2)
498 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
503 inline vector unsigned char
504 vec_avg (vector unsigned char a1, vector unsigned char a2)
506 return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
509 inline vector signed char
510 vec_avg (vector signed char a1, vector signed char a2)
512 return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
515 inline vector unsigned short
516 vec_avg (vector unsigned short a1, vector unsigned short a2)
518 return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
521 inline vector signed short
522 vec_avg (vector signed short a1, vector signed short a2)
524 return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
527 inline vector unsigned int
528 vec_avg (vector unsigned int a1, vector unsigned int a2)
530 return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
533 inline vector signed int
534 vec_avg (vector signed int a1, vector signed int a2)
536 return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
542 vec_ceil (vector float a1)
544 return (vector float) __builtin_altivec_vrfip ((vector float) a1);
549 inline vector signed int
550 vec_cmpb (vector float a1, vector float a2)
552 return (vector signed int) __builtin_altivec_vcmpbfp ((vector float) a1, (vector float) a2);
557 inline vector signed char
558 vec_cmpeq (vector signed char a1, vector signed char a2)
560 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
563 inline vector signed char
564 vec_cmpeq (vector unsigned char a1, vector unsigned char a2)
566 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
569 inline vector signed short
570 vec_cmpeq (vector signed short a1, vector signed short a2)
572 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
575 inline vector signed short
576 vec_cmpeq (vector unsigned short a1, vector unsigned short a2)
578 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
581 inline vector signed int
582 vec_cmpeq (vector signed int a1, vector signed int a2)
584 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
587 inline vector signed int
588 vec_cmpeq (vector unsigned int a1, vector unsigned int a2)
590 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
593 inline vector signed int
594 vec_cmpeq (vector float a1, vector float a2)
596 return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
601 inline vector signed int
602 vec_cmpge (vector float a1, vector float a2)
604 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
609 inline vector signed char
610 vec_cmpgt (vector unsigned char a1, vector unsigned char a2)
612 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
615 inline vector signed char
616 vec_cmpgt (vector signed char a1, vector signed char a2)
618 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
621 inline vector signed short
622 vec_cmpgt (vector unsigned short a1, vector unsigned short a2)
624 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
627 inline vector signed short
628 vec_cmpgt (vector signed short a1, vector signed short a2)
630 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
633 inline vector signed int
634 vec_cmpgt (vector unsigned int a1, vector unsigned int a2)
636 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
639 inline vector signed int
640 vec_cmpgt (vector signed int a1, vector signed int a2)
642 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
645 inline vector signed int
646 vec_cmpgt (vector float a1, vector float a2)
648 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
653 inline vector signed int
654 vec_cmple (vector float a1, vector float a2)
656 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
661 inline vector signed char
662 vec_cmplt (vector unsigned char a1, vector unsigned char a2)
664 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
667 inline vector signed char
668 vec_cmplt (vector signed char a1, vector signed char a2)
670 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
673 inline vector signed short
674 vec_cmplt (vector unsigned short a1, vector unsigned short a2)
676 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
679 inline vector signed short
680 vec_cmplt (vector signed short a1, vector signed short a2)
682 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
685 inline vector signed int
686 vec_cmplt (vector unsigned int a1, vector unsigned int a2)
688 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
691 inline vector signed int
692 vec_cmplt (vector signed int a1, vector signed int a2)
694 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
697 inline vector signed int
698 vec_cmplt (vector float a1, vector float a2)
700 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
706 vec_ctf (vector unsigned int a1, const char a2)
708 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
712 vec_vcfux (vector unsigned int a1, const char a2)
714 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
718 vec_ctf (vector signed int a1, const char a2)
720 return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
725 inline vector signed int
726 vec_cts (vector float a1, const char a2)
728 return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2);
733 inline vector unsigned int
734 vec_ctu (vector float a1, const char a2)
736 return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2);
742 vec_dss (const char a1)
744 __builtin_altivec_dss (a1);
752 __builtin_altivec_dssall ();
758 vec_dst (void *a1, int a2, const char a3)
760 __builtin_altivec_dst ((void *) a1, a2, a3);
766 vec_dstst (void *a1, int a2, const char a3)
768 __builtin_altivec_dstst ((void *) a1, a2, a3);
774 vec_dststt (void *a1, int a2, const char a3)
776 __builtin_altivec_dststt ((void *) a1, a2, a3);
782 vec_dstt (void *a1, int a2, const char a3)
784 __builtin_altivec_dstt ((void *) a1, a2, a3);
790 vec_expte (vector float a1)
792 return (vector float) __builtin_altivec_vexptefp ((vector float) a1);
798 vec_floor (vector float a1)
800 return (vector float) __builtin_altivec_vrfim ((vector float) a1);
806 vec_ld (int a1, vector float *a2)
808 return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
812 vec_ld (int a1, float *a2)
814 return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
817 inline vector signed int
818 vec_ld (int a1, vector signed int *a2)
820 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
823 inline vector signed int
824 vec_ld (int a1, signed int *a2)
826 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
829 inline vector unsigned int
830 vec_ld (int a1, vector unsigned int *a2)
832 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
835 inline vector unsigned int
836 vec_ld (int a1, unsigned int *a2)
838 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
841 inline vector signed short
842 vec_ld (int a1, vector signed short *a2)
844 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
847 inline vector signed short
848 vec_ld (int a1, signed short *a2)
850 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
853 inline vector unsigned short
854 vec_ld (int a1, vector unsigned short *a2)
856 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
859 inline vector unsigned short
860 vec_ld (int a1, unsigned short *a2)
862 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
865 inline vector signed char
866 vec_ld (int a1, vector signed char *a2)
868 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
871 inline vector signed char
872 vec_ld (int a1, signed char *a2)
874 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
877 inline vector unsigned char
878 vec_ld (int a1, vector unsigned char *a2)
880 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
883 inline vector unsigned char
884 vec_ld (int a1, unsigned char *a2)
886 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
891 inline vector signed char
892 vec_lde (int a1, signed char *a2)
894 return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
897 inline vector unsigned char
898 vec_lde (int a1, unsigned char *a2)
900 return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
903 inline vector signed short
904 vec_lde (int a1, signed short *a2)
906 return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
909 inline vector unsigned short
910 vec_lde (int a1, unsigned short *a2)
912 return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
916 vec_lde (int a1, float *a2)
918 return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
921 inline vector signed int
922 vec_lde (int a1, signed int *a2)
924 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
927 inline vector unsigned int
928 vec_lde (int a1, unsigned int *a2)
930 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
936 vec_ldl (int a1, vector float *a2)
938 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
942 vec_ldl (int a1, float *a2)
944 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
947 inline vector signed int
948 vec_ldl (int a1, vector signed int *a2)
950 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
953 inline vector signed int
954 vec_ldl (int a1, signed int *a2)
956 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
959 inline vector unsigned int
960 vec_ldl (int a1, vector unsigned int *a2)
962 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
965 inline vector unsigned int
966 vec_ldl (int a1, unsigned int *a2)
968 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
971 inline vector signed short
972 vec_ldl (int a1, vector signed short *a2)
974 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
977 inline vector signed short
978 vec_ldl (int a1, signed short *a2)
980 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
983 inline vector unsigned short
984 vec_ldl (int a1, vector unsigned short *a2)
986 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
989 inline vector unsigned short
990 vec_ldl (int a1, unsigned short *a2)
992 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
995 inline vector signed char
996 vec_ldl (int a1, vector signed char *a2)
998 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
1001 inline vector signed char
1002 vec_ldl (int a1, signed char *a2)
1004 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
1007 inline vector unsigned char
1008 vec_ldl (int a1, vector unsigned char *a2)
1010 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
1013 inline vector unsigned char
1014 vec_ldl (int a1, unsigned char *a2)
1016 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
1022 vec_loge (vector float a1)
1024 return (vector float) __builtin_altivec_vlogefp ((vector float) a1);
1029 inline vector unsigned char
1030 vec_lvsl (int a1, unsigned char *a2)
1032 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1035 inline vector unsigned char
1036 vec_lvsl (int a1, signed char *a2)
1038 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1041 inline vector unsigned char
1042 vec_lvsl (int a1, unsigned short *a2)
1044 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1047 inline vector unsigned char
1048 vec_lvsl (int a1, signed short *a2)
1050 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1053 inline vector unsigned char
1054 vec_lvsl (int a1, unsigned int *a2)
1056 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1059 inline vector unsigned char
1060 vec_lvsl (int a1, signed int *a2)
1062 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1065 inline vector unsigned char
1066 vec_lvsl (int a1, float *a2)
1068 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1073 inline vector unsigned char
1074 vec_lvsr (int a1, unsigned char *a2)
1076 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
1079 inline vector unsigned char
1080 vec_lvsr (int a1, signed char *a2)
1082 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
1085 inline vector unsigned char
1086 vec_lvsr (int a1, unsigned short *a2)
1088 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
1091 inline vector unsigned char
1092 vec_lvsr (int a1, signed short *a2)
1094 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
1097 inline vector unsigned char
1098 vec_lvsr (int a1, unsigned int *a2)
1100 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
1103 inline vector unsigned char
1104 vec_lvsr (int a1, signed int *a2)
1106 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
1109 inline vector unsigned char
1110 vec_lvsr (int a1, float *a2)
1112 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
1118 vec_madd (vector float a1, vector float a2, vector float a3)
1120 return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
1125 vec_vmaddfp (vector float a1, vector float a2, vector float a3)
1127 return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
1132 inline vector signed short
1133 vec_madds (vector signed short a1, vector signed short a2, vector signed short a3)
1135 return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
1140 inline vector unsigned char
1141 vec_max (vector signed char a1, vector unsigned char a2)
1143 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
1146 inline vector unsigned char
1147 vec_max (vector unsigned char a1, vector signed char a2)
1149 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
1152 inline vector unsigned char
1153 vec_max (vector unsigned char a1, vector unsigned char a2)
1155 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
1158 inline vector signed char
1159 vec_max (vector signed char a1, vector signed char a2)
1161 return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
1164 inline vector unsigned short
1165 vec_max (vector signed short a1, vector unsigned short a2)
1167 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
1170 inline vector unsigned short
1171 vec_max (vector unsigned short a1, vector signed short a2)
1173 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
1176 inline vector unsigned short
1177 vec_max (vector unsigned short a1, vector unsigned short a2)
1179 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
1182 inline vector signed short
1183 vec_max (vector signed short a1, vector signed short a2)
1185 return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
1188 inline vector unsigned int
1189 vec_max (vector signed int a1, vector unsigned int a2)
1191 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
1194 inline vector unsigned int
1195 vec_max (vector unsigned int a1, vector signed int a2)
1197 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
1200 inline vector unsigned int
1201 vec_max (vector unsigned int a1, vector unsigned int a2)
1203 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
1206 inline vector signed int
1207 vec_max (vector signed int a1, vector signed int a2)
1209 return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
1213 vec_max (vector float a1, vector float a2)
1215 return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
1220 inline vector signed char
1221 vec_mergeh (vector signed char a1, vector signed char a2)
1223 return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
1226 inline vector unsigned char
1227 vec_mergeh (vector unsigned char a1, vector unsigned char a2)
1229 return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
1232 inline vector signed short
1233 vec_mergeh (vector signed short a1, vector signed short a2)
1235 return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
1238 inline vector unsigned short
1239 vec_mergeh (vector unsigned short a1, vector unsigned short a2)
1241 return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
1245 vec_mergeh (vector float a1, vector float a2)
1247 return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
1250 inline vector signed int
1251 vec_mergeh (vector signed int a1, vector signed int a2)
1253 return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
1256 inline vector unsigned int
1257 vec_mergeh (vector unsigned int a1, vector unsigned int a2)
1259 return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
1264 inline vector signed char
1265 vec_mergel (vector signed char a1, vector signed char a2)
1267 return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
1270 inline vector unsigned char
1271 vec_mergel (vector unsigned char a1, vector unsigned char a2)
1273 return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
1276 inline vector signed short
1277 vec_mergel (vector signed short a1, vector signed short a2)
1279 return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
1282 inline vector unsigned short
1283 vec_mergel (vector unsigned short a1, vector unsigned short a2)
1285 return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
1289 vec_mergel (vector float a1, vector float a2)
1291 return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
1294 inline vector signed int
1295 vec_mergel (vector signed int a1, vector signed int a2)
1297 return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
1300 inline vector unsigned int
1301 vec_mergel (vector unsigned int a1, vector unsigned int a2)
1303 return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
1308 inline vector unsigned short
1311 return (vector unsigned short) __builtin_altivec_mfvscr ();
1316 inline vector unsigned char
1317 vec_min (vector signed char a1, vector unsigned char a2)
1319 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
1322 inline vector unsigned char
1323 vec_min (vector unsigned char a1, vector signed char a2)
1325 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
1328 inline vector unsigned char
1329 vec_min (vector unsigned char a1, vector unsigned char a2)
1331 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
1334 inline vector signed char
1335 vec_min (vector signed char a1, vector signed char a2)
1337 return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
1340 inline vector unsigned short
1341 vec_min (vector signed short a1, vector unsigned short a2)
1343 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
1346 inline vector unsigned short
1347 vec_min (vector unsigned short a1, vector signed short a2)
1349 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
1352 inline vector unsigned short
1353 vec_min (vector unsigned short a1, vector unsigned short a2)
1355 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
1358 inline vector signed short
1359 vec_min (vector signed short a1, vector signed short a2)
1361 return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
1364 inline vector unsigned int
1365 vec_min (vector signed int a1, vector unsigned int a2)
1367 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
1370 inline vector unsigned int
1371 vec_min (vector unsigned int a1, vector signed int a2)
1373 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
1376 inline vector unsigned int
1377 vec_min (vector unsigned int a1, vector unsigned int a2)
1379 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
1382 inline vector signed int
1383 vec_min (vector signed int a1, vector signed int a2)
1385 return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
1389 vec_min (vector float a1, vector float a2)
1391 return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
1396 inline vector signed short
1397 vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
1399 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
1402 inline vector signed short
1403 vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
1405 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
1408 inline vector signed short
1409 vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
1411 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
1414 inline vector unsigned short
1415 vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
1417 return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
1422 inline vector signed short
1423 vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
1425 return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
1430 inline vector unsigned int
1431 vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
1433 return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
1436 inline vector signed int
1437 vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
1439 return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
1442 inline vector unsigned int
1443 vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
1445 return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
1448 inline vector signed int
1449 vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
1451 return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
1456 inline vector unsigned int
1457 vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
1459 return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
1462 inline vector signed int
1463 vec_msums (vector signed short a1, vector signed short a2, vector signed int a3)
1465 return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
1471 vec_mtvscr (vector signed int a1)
1473 __builtin_altivec_mtvscr ((vector signed int) a1);
1477 vec_mtvscr (vector unsigned int a1)
1479 __builtin_altivec_mtvscr ((vector signed int) a1);
1483 vec_mtvscr (vector signed short a1)
1485 __builtin_altivec_mtvscr ((vector signed int) a1);
1489 vec_mtvscr (vector unsigned short a1)
1491 __builtin_altivec_mtvscr ((vector signed int) a1);
1495 vec_mtvscr (vector signed char a1)
1497 __builtin_altivec_mtvscr ((vector signed int) a1);
1501 vec_mtvscr (vector unsigned char a1)
1503 __builtin_altivec_mtvscr ((vector signed int) a1);
1508 inline vector unsigned short
1509 vec_mule (vector unsigned char a1, vector unsigned char a2)
1511 return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
1514 inline vector signed short
1515 vec_mule (vector signed char a1, vector signed char a2)
1517 return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2);
1520 inline vector unsigned int
1521 vec_mule (vector unsigned short a1, vector unsigned short a2)
1523 return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
1526 inline vector signed int
1527 vec_mule (vector signed short a1, vector signed short a2)
1529 return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
1534 inline vector unsigned short
1535 vec_mulo (vector unsigned char a1, vector unsigned char a2)
1537 return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
1540 inline vector signed short
1541 vec_mulo (vector signed char a1, vector signed char a2)
1543 return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
1546 inline vector unsigned int
1547 vec_mulo (vector unsigned short a1, vector unsigned short a2)
1549 return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
1552 inline vector signed int
1553 vec_mulo (vector signed short a1, vector signed short a2)
1555 return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
1561 vec_nmsub (vector float a1, vector float a2, vector float a3)
1563 return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3);
1569 vec_nor (vector float a1, vector float a2)
1571 return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
1574 inline vector signed int
1575 vec_nor (vector signed int a1, vector signed int a2)
1577 return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
1580 inline vector unsigned int
1581 vec_nor (vector unsigned int a1, vector unsigned int a2)
1583 return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
1586 inline vector signed short
1587 vec_nor (vector signed short a1, vector signed short a2)
1589 return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
1592 inline vector unsigned short
1593 vec_nor (vector unsigned short a1, vector unsigned short a2)
1595 return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
1598 inline vector signed char
1599 vec_nor (vector signed char a1, vector signed char a2)
1601 return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
1604 inline vector unsigned char
1605 vec_nor (vector unsigned char a1, vector unsigned char a2)
1607 return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
1613 vec_or (vector float a1, vector float a2)
1615 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1619 vec_or (vector float a1, vector signed int a2)
1621 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1625 vec_or (vector signed int a1, vector float a2)
1627 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1630 inline vector signed int
1631 vec_or (vector signed int a1, vector signed int a2)
1633 return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1636 inline vector unsigned int
1637 vec_or (vector signed int a1, vector unsigned int a2)
1639 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1642 inline vector unsigned int
1643 vec_or (vector unsigned int a1, vector signed int a2)
1645 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1648 inline vector unsigned int
1649 vec_or (vector unsigned int a1, vector unsigned int a2)
1651 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1654 inline vector signed short
1655 vec_or (vector signed short a1, vector signed short a2)
1657 return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1660 inline vector unsigned short
1661 vec_or (vector signed short a1, vector unsigned short a2)
1663 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1666 inline vector unsigned short
1667 vec_or (vector unsigned short a1, vector signed short a2)
1669 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1672 inline vector unsigned short
1673 vec_or (vector unsigned short a1, vector unsigned short a2)
1675 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1678 inline vector signed char
1679 vec_or (vector signed char a1, vector signed char a2)
1681 return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1684 inline vector unsigned char
1685 vec_or (vector signed char a1, vector unsigned char a2)
1687 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1690 inline vector unsigned char
1691 vec_or (vector unsigned char a1, vector signed char a2)
1693 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1696 inline vector unsigned char
1697 vec_or (vector unsigned char a1, vector unsigned char a2)
1699 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
1704 inline vector signed char
1705 vec_pack (vector signed short a1, vector signed short a2)
1707 return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
1710 inline vector unsigned char
1711 vec_pack (vector unsigned short a1, vector unsigned short a2)
1713 return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
1716 inline vector signed short
1717 vec_pack (vector signed int a1, vector signed int a2)
1719 return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
1722 inline vector unsigned short
1723 vec_pack (vector unsigned int a1, vector unsigned int a2)
1725 return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
1730 inline vector signed short
1731 vec_packpx (vector unsigned int a1, vector unsigned int a2)
1733 return (vector signed short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2);
1738 inline vector unsigned char
1739 vec_packs (vector unsigned short a1, vector unsigned short a2)
1741 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
1744 inline vector signed char
1745 vec_packs (vector signed short a1, vector signed short a2)
1747 return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
1750 inline vector unsigned short
1751 vec_packs (vector unsigned int a1, vector unsigned int a2)
1753 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
1756 inline vector signed short
1757 vec_packs (vector signed int a1, vector signed int a2)
1759 return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
1764 inline vector unsigned char
1765 vec_packsu (vector unsigned short a1, vector unsigned short a2)
1767 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
1770 inline vector unsigned char
1771 vec_packsu (vector signed short a1, vector signed short a2)
1773 return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
1776 inline vector unsigned short
1777 vec_packsu (vector unsigned int a1, vector unsigned int a2)
1779 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
1782 inline vector unsigned short
1783 vec_packsu (vector signed int a1, vector signed int a2)
1785 return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
1791 vec_perm (vector float a1, vector float a2, vector unsigned char a3)
1793 return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
1796 inline vector signed int
1797 vec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3)
1799 return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
1802 inline vector unsigned int
1803 vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3)
1805 return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
1808 inline vector signed short
1809 vec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3)
1811 return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
1814 inline vector unsigned short
1815 vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3)
1817 return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
1820 inline vector signed char
1821 vec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3)
1823 return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
1826 inline vector unsigned char
1827 vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
1829 return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
1835 vec_re (vector float a1)
1837 return (vector float) __builtin_altivec_vrefp ((vector float) a1);
1842 inline vector signed char
1843 vec_rl (vector signed char a1, vector unsigned char a2)
1845 return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
1848 inline vector unsigned char
1849 vec_rl (vector unsigned char a1, vector unsigned char a2)
1851 return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
1854 inline vector signed short
1855 vec_rl (vector signed short a1, vector unsigned short a2)
1857 return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
1860 inline vector unsigned short
1861 vec_rl (vector unsigned short a1, vector unsigned short a2)
1863 return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
1866 inline vector signed int
1867 vec_rl (vector signed int a1, vector unsigned int a2)
1869 return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
1872 inline vector unsigned int
1873 vec_rl (vector unsigned int a1, vector unsigned int a2)
1875 return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
1881 vec_round (vector float a1)
1883 return (vector float) __builtin_altivec_vrfin ((vector float) a1);
1889 vec_rsqrte (vector float a1)
1891 return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1);
1897 vec_sel (vector float a1, vector float a2, vector signed int a3)
1899 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1903 vec_sel (vector float a1, vector float a2, vector unsigned int a3)
1905 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1908 inline vector signed int
1909 vec_sel (vector signed int a1, vector signed int a2, vector signed int a3)
1911 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1914 inline vector signed int
1915 vec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3)
1917 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1920 inline vector unsigned int
1921 vec_sel (vector unsigned int a1, vector unsigned int a2, vector signed int a3)
1923 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1926 inline vector unsigned int
1927 vec_sel (vector unsigned int a1, vector unsigned int a2, vector unsigned int a3)
1929 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1932 inline vector signed short
1933 vec_sel (vector signed short a1, vector signed short a2, vector signed short a3)
1935 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1938 inline vector signed short
1939 vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3)
1941 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1944 inline vector unsigned short
1945 vec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3)
1947 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1950 inline vector unsigned short
1951 vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
1953 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1956 inline vector signed char
1957 vec_sel (vector signed char a1, vector signed char a2, vector signed char a3)
1959 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1962 inline vector signed char
1963 vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3)
1965 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1968 inline vector unsigned char
1969 vec_sel (vector unsigned char a1, vector unsigned char a2, vector signed char a3)
1971 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1974 inline vector unsigned char
1975 vec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
1977 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
1982 inline vector signed char
1983 vec_sl (vector signed char a1, vector unsigned char a2)
1985 return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
1988 inline vector unsigned char
1989 vec_sl (vector unsigned char a1, vector unsigned char a2)
1991 return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
1994 inline vector signed short
1995 vec_sl (vector signed short a1, vector unsigned short a2)
1997 return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
2000 inline vector unsigned short
2001 vec_sl (vector unsigned short a1, vector unsigned short a2)
2003 return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
2006 inline vector signed int
2007 vec_sl (vector signed int a1, vector unsigned int a2)
2009 return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
2012 inline vector unsigned int
2013 vec_sl (vector unsigned int a1, vector unsigned int a2)
2015 return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
2021 vec_sld (vector float a1, vector float a2, const char a3)
2023 return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
2027 vec_vsldoi (vector float a1, vector float a2, const char a3)
2029 return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
2032 inline vector signed int
2033 vec_sld (vector signed int a1, vector signed int a2, const char a3)
2035 return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
2038 inline vector unsigned int
2039 vec_sld (vector unsigned int a1, vector unsigned int a2, const char a3)
2041 return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
2044 inline vector signed short
2045 vec_sld (vector signed short a1, vector signed short a2, const char a3)
2047 return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
2050 inline vector unsigned short
2051 vec_sld (vector unsigned short a1, vector unsigned short a2, const char a3)
2053 return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
2056 inline vector signed char
2057 vec_sld (vector signed char a1, vector signed char a2, const char a3)
2059 return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
2062 inline vector unsigned char
2063 vec_sld (vector unsigned char a1, vector unsigned char a2, const char a3)
2065 return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
2070 inline vector signed int
2071 vec_sll (vector signed int a1, vector unsigned int a2)
2073 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2076 inline vector signed int
2077 vec_sll (vector signed int a1, vector unsigned short a2)
2079 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2082 inline vector signed int
2083 vec_sll (vector signed int a1, vector unsigned char a2)
2085 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2088 inline vector unsigned int
2089 vec_sll (vector unsigned int a1, vector unsigned int a2)
2091 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2094 inline vector unsigned int
2095 vec_sll (vector unsigned int a1, vector unsigned short a2)
2097 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2100 inline vector unsigned int
2101 vec_sll (vector unsigned int a1, vector unsigned char a2)
2103 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2106 inline vector signed short
2107 vec_sll (vector signed short a1, vector unsigned int a2)
2109 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2112 inline vector signed short
2113 vec_sll (vector signed short a1, vector unsigned short a2)
2115 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2118 inline vector signed short
2119 vec_sll (vector signed short a1, vector unsigned char a2)
2121 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2124 inline vector unsigned short
2125 vec_sll (vector unsigned short a1, vector unsigned int a2)
2127 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2130 inline vector unsigned short
2131 vec_sll (vector unsigned short a1, vector unsigned short a2)
2133 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2136 inline vector unsigned short
2137 vec_sll (vector unsigned short a1, vector unsigned char a2)
2139 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2142 inline vector signed char
2143 vec_sll (vector signed char a1, vector unsigned int a2)
2145 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2148 inline vector signed char
2149 vec_sll (vector signed char a1, vector unsigned short a2)
2151 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2154 inline vector signed char
2155 vec_sll (vector signed char a1, vector unsigned char a2)
2157 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2160 inline vector unsigned char
2161 vec_sll (vector unsigned char a1, vector unsigned int a2)
2163 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2166 inline vector unsigned char
2167 vec_sll (vector unsigned char a1, vector unsigned short a2)
2169 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2172 inline vector unsigned char
2173 vec_sll (vector unsigned char a1, vector unsigned char a2)
2175 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
2181 vec_slo (vector float a1, vector signed char a2)
2183 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2187 vec_slo (vector float a1, vector unsigned char a2)
2189 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2192 inline vector signed int
2193 vec_slo (vector signed int a1, vector signed char a2)
2195 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2198 inline vector signed int
2199 vec_slo (vector signed int a1, vector unsigned char a2)
2201 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2204 inline vector unsigned int
2205 vec_slo (vector unsigned int a1, vector signed char a2)
2207 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2210 inline vector unsigned int
2211 vec_slo (vector unsigned int a1, vector unsigned char a2)
2213 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2216 inline vector signed short
2217 vec_slo (vector signed short a1, vector signed char a2)
2219 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2222 inline vector signed short
2223 vec_slo (vector signed short a1, vector unsigned char a2)
2225 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2228 inline vector unsigned short
2229 vec_slo (vector unsigned short a1, vector signed char a2)
2231 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2234 inline vector unsigned short
2235 vec_slo (vector unsigned short a1, vector unsigned char a2)
2237 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2240 inline vector signed char
2241 vec_slo (vector signed char a1, vector signed char a2)
2243 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2246 inline vector signed char
2247 vec_slo (vector signed char a1, vector unsigned char a2)
2249 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2252 inline vector unsigned char
2253 vec_slo (vector unsigned char a1, vector signed char a2)
2255 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2258 inline vector unsigned char
2259 vec_slo (vector unsigned char a1, vector unsigned char a2)
2261 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
2266 inline vector signed char
2267 vec_splat (vector signed char a1, const char a2)
2269 return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
2272 inline vector unsigned char
2273 vec_splat (vector unsigned char a1, const char a2)
2275 return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
2278 inline vector signed short
2279 vec_splat (vector signed short a1, const char a2)
2281 return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
2284 inline vector unsigned short
2285 vec_splat (vector unsigned short a1, const char a2)
2287 return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
2291 vec_splat (vector float a1, const char a2)
2293 return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2);
2296 inline vector signed int
2297 vec_splat (vector signed int a1, const char a2)
2299 return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
2302 inline vector unsigned int
2303 vec_splat (vector unsigned int a1, const char a2)
2305 return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
2310 inline vector signed char
2311 vec_splat_s8 (const char a1)
2313 return (vector signed char) __builtin_altivec_vspltisb (a1);
2318 inline vector signed short
2319 vec_splat_s16 (const char a1)
2321 return (vector signed short) __builtin_altivec_vspltish (a1);
2326 inline vector signed int
2327 vec_splat_s32 (const char a1)
2329 return (vector signed int) __builtin_altivec_vspltisw (a1);
2334 inline vector unsigned char
2335 vec_splat_u8 (const char a1)
2337 return (vector unsigned char) __builtin_altivec_vspltisb (a1);
2342 inline vector unsigned short
2343 vec_splat_u16 (const char a1)
2345 return (vector unsigned short) __builtin_altivec_vspltish (a1);
2350 inline vector unsigned int
2351 vec_splat_u32 (const char a1)
2353 return (vector unsigned int) __builtin_altivec_vspltisw (a1);
2358 inline vector signed char
2359 vec_sr (vector signed char a1, vector unsigned char a2)
2361 return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
2364 inline vector unsigned char
2365 vec_sr (vector unsigned char a1, vector unsigned char a2)
2367 return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
2370 inline vector signed short
2371 vec_sr (vector signed short a1, vector unsigned short a2)
2373 return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
2376 inline vector unsigned short
2377 vec_sr (vector unsigned short a1, vector unsigned short a2)
2379 return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
2382 inline vector signed int
2383 vec_sr (vector signed int a1, vector unsigned int a2)
2385 return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
2388 inline vector unsigned int
2389 vec_sr (vector unsigned int a1, vector unsigned int a2)
2391 return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
2396 inline vector signed char
2397 vec_sra (vector signed char a1, vector unsigned char a2)
2399 return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
2402 inline vector unsigned char
2403 vec_sra (vector unsigned char a1, vector unsigned char a2)
2405 return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
2408 inline vector signed short
2409 vec_sra (vector signed short a1, vector unsigned short a2)
2411 return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
2414 inline vector unsigned short
2415 vec_sra (vector unsigned short a1, vector unsigned short a2)
2417 return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
2420 inline vector signed int
2421 vec_sra (vector signed int a1, vector unsigned int a2)
2423 return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
2426 inline vector unsigned int
2427 vec_sra (vector unsigned int a1, vector unsigned int a2)
2429 return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
2434 inline vector signed int
2435 vec_srl (vector signed int a1, vector unsigned int a2)
2437 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2440 inline vector signed int
2441 vec_srl (vector signed int a1, vector unsigned short a2)
2443 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2446 inline vector signed int
2447 vec_srl (vector signed int a1, vector unsigned char a2)
2449 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2452 inline vector unsigned int
2453 vec_srl (vector unsigned int a1, vector unsigned int a2)
2455 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2458 inline vector unsigned int
2459 vec_srl (vector unsigned int a1, vector unsigned short a2)
2461 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2464 inline vector unsigned int
2465 vec_srl (vector unsigned int a1, vector unsigned char a2)
2467 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2470 inline vector signed short
2471 vec_srl (vector signed short a1, vector unsigned int a2)
2473 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2476 inline vector signed short
2477 vec_srl (vector signed short a1, vector unsigned short a2)
2479 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2482 inline vector signed short
2483 vec_srl (vector signed short a1, vector unsigned char a2)
2485 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2488 inline vector unsigned short
2489 vec_srl (vector unsigned short a1, vector unsigned int a2)
2491 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2494 inline vector unsigned short
2495 vec_srl (vector unsigned short a1, vector unsigned short a2)
2497 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2500 inline vector unsigned short
2501 vec_srl (vector unsigned short a1, vector unsigned char a2)
2503 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2506 inline vector signed char
2507 vec_srl (vector signed char a1, vector unsigned int a2)
2509 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2512 inline vector signed char
2513 vec_srl (vector signed char a1, vector unsigned short a2)
2515 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2518 inline vector signed char
2519 vec_srl (vector signed char a1, vector unsigned char a2)
2521 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2524 inline vector unsigned char
2525 vec_srl (vector unsigned char a1, vector unsigned int a2)
2527 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2530 inline vector unsigned char
2531 vec_srl (vector unsigned char a1, vector unsigned short a2)
2533 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2536 inline vector unsigned char
2537 vec_srl (vector unsigned char a1, vector unsigned char a2)
2539 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
2545 vec_sro (vector float a1, vector signed char a2)
2547 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2551 vec_sro (vector float a1, vector unsigned char a2)
2553 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2556 inline vector signed int
2557 vec_sro (vector signed int a1, vector signed char a2)
2559 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2562 inline vector signed int
2563 vec_sro (vector signed int a1, vector unsigned char a2)
2565 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2568 inline vector unsigned int
2569 vec_sro (vector unsigned int a1, vector signed char a2)
2571 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2574 inline vector unsigned int
2575 vec_sro (vector unsigned int a1, vector unsigned char a2)
2577 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2580 inline vector signed short
2581 vec_sro (vector signed short a1, vector signed char a2)
2583 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2586 inline vector signed short
2587 vec_sro (vector signed short a1, vector unsigned char a2)
2589 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2592 inline vector unsigned short
2593 vec_sro (vector unsigned short a1, vector signed char a2)
2595 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2598 inline vector unsigned short
2599 vec_sro (vector unsigned short a1, vector unsigned char a2)
2601 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2604 inline vector signed char
2605 vec_sro (vector signed char a1, vector signed char a2)
2607 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2610 inline vector signed char
2611 vec_sro (vector signed char a1, vector unsigned char a2)
2613 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2616 inline vector unsigned char
2617 vec_sro (vector unsigned char a1, vector signed char a2)
2619 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2622 inline vector unsigned char
2623 vec_sro (vector unsigned char a1, vector unsigned char a2)
2625 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
2631 vec_st (vector float a1, int a2, void *a3)
2633 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
2637 vec_st (vector signed int a1, int a2, void *a3)
2639 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
2643 vec_st (vector unsigned int a1, int a2, void *a3)
2645 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
2649 vec_st (vector signed short a1, int a2, void *a3)
2651 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
2655 vec_st (vector unsigned short a1, int a2, void *a3)
2657 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
2661 vec_st (vector signed char a1, int a2, void *a3)
2663 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
2667 vec_st (vector unsigned char a1, int a2, void *a3)
2669 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
2675 vec_ste (vector signed char a1, int a2, void *a3)
2677 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
2681 vec_ste (vector unsigned char a1, int a2, void *a3)
2683 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
2687 vec_ste (vector signed short a1, int a2, void *a3)
2689 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
2693 vec_ste (vector unsigned short a1, int a2, void *a3)
2695 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
2699 vec_ste (vector float a1, int a2, void *a3)
2701 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
2705 vec_ste (vector signed int a1, int a2, void *a3)
2707 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
2711 vec_ste (vector unsigned int a1, int a2, void *a3)
2713 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
2719 vec_stl (vector float a1, int a2, void *a3)
2721 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
2725 vec_stl (vector signed int a1, int a2, void *a3)
2727 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
2731 vec_stl (vector unsigned int a1, int a2, void *a3)
2733 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
2737 vec_stl (vector signed short a1, int a2, void *a3)
2739 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
2743 vec_stl (vector unsigned short a1, int a2, void *a3)
2745 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
2749 vec_stl (vector signed char a1, int a2, void *a3)
2751 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
2755 vec_stl (vector unsigned char a1, int a2, void *a3)
2757 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
2762 inline vector signed char
2763 vec_sub (vector signed char a1, vector signed char a2)
2765 return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
2768 inline vector unsigned char
2769 vec_sub (vector signed char a1, vector unsigned char a2)
2771 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
2774 inline vector unsigned char
2775 vec_sub (vector unsigned char a1, vector signed char a2)
2777 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
2780 inline vector unsigned char
2781 vec_sub (vector unsigned char a1, vector unsigned char a2)
2783 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
2786 inline vector signed short
2787 vec_sub (vector signed short a1, vector signed short a2)
2789 return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
2792 inline vector unsigned short
2793 vec_sub (vector signed short a1, vector unsigned short a2)
2795 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
2798 inline vector unsigned short
2799 vec_sub (vector unsigned short a1, vector signed short a2)
2801 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
2804 inline vector unsigned short
2805 vec_sub (vector unsigned short a1, vector unsigned short a2)
2807 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
2810 inline vector signed int
2811 vec_sub (vector signed int a1, vector signed int a2)
2813 return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
2816 inline vector unsigned int
2817 vec_sub (vector signed int a1, vector unsigned int a2)
2819 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
2822 inline vector unsigned int
2823 vec_sub (vector unsigned int a1, vector signed int a2)
2825 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
2828 inline vector unsigned int
2829 vec_sub (vector unsigned int a1, vector unsigned int a2)
2831 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
2835 vec_sub (vector float a1, vector float a2)
2837 return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
2842 inline vector unsigned int
2843 vec_subc (vector unsigned int a1, vector unsigned int a2)
2845 return (vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) a1, (vector signed int) a2);
2850 inline vector unsigned char
2851 vec_subs (vector signed char a1, vector unsigned char a2)
2853 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
2856 inline vector unsigned char
2857 vec_subs (vector unsigned char a1, vector signed char a2)
2859 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
2862 inline vector unsigned char
2863 vec_subs (vector unsigned char a1, vector unsigned char a2)
2865 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
2868 inline vector signed char
2869 vec_subs (vector signed char a1, vector signed char a2)
2871 return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
2874 inline vector unsigned short
2875 vec_subs (vector signed short a1, vector unsigned short a2)
2877 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
2880 inline vector unsigned short
2881 vec_subs (vector unsigned short a1, vector signed short a2)
2883 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
2886 inline vector unsigned short
2887 vec_subs (vector unsigned short a1, vector unsigned short a2)
2889 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
2892 inline vector signed short
2893 vec_subs (vector signed short a1, vector signed short a2)
2895 return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
2898 inline vector unsigned int
2899 vec_subs (vector signed int a1, vector unsigned int a2)
2901 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
2904 inline vector unsigned int
2905 vec_subs (vector unsigned int a1, vector signed int a2)
2907 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
2910 inline vector unsigned int
2911 vec_subs (vector unsigned int a1, vector unsigned int a2)
2913 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
2916 inline vector signed int
2917 vec_subs (vector signed int a1, vector signed int a2)
2919 return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
2924 inline vector unsigned int
2925 vec_sum4s (vector unsigned char a1, vector unsigned int a2)
2927 return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
2930 inline vector signed int
2931 vec_sum4s (vector signed char a1, vector signed int a2)
2933 return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
2936 inline vector signed int
2937 vec_sum4s (vector signed short a1, vector signed int a2)
2939 return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
2944 inline vector signed int
2945 vec_sum2s (vector signed int a1, vector signed int a2)
2947 return (vector signed int) __builtin_altivec_vsum2sws ((vector signed int) a1, (vector signed int) a2);
2952 inline vector signed int
2953 vec_sums (vector signed int a1, vector signed int a2)
2955 return (vector signed int) __builtin_altivec_vsumsws ((vector signed int) a1, (vector signed int) a2);
2961 vec_trunc (vector float a1)
2963 return (vector float) __builtin_altivec_vrfiz ((vector float) a1);
2968 inline vector signed short
2969 vec_unpackh (vector signed char a1)
2971 return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
2974 inline vector signed int
2975 vec_unpackh (vector signed short a1)
2977 return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
2982 inline vector signed short
2983 vec_unpackl (vector signed char a1)
2985 return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
2988 inline vector signed int
2989 vec_unpackl (vector signed short a1)
2991 return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
2997 vec_xor (vector float a1, vector float a2)
2999 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3003 vec_xor (vector float a1, vector signed int a2)
3005 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3009 vec_xor (vector signed int a1, vector float a2)
3011 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3014 inline vector signed int
3015 vec_xor (vector signed int a1, vector signed int a2)
3017 return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3020 inline vector unsigned int
3021 vec_xor (vector signed int a1, vector unsigned int a2)
3023 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3026 inline vector unsigned int
3027 vec_xor (vector unsigned int a1, vector signed int a2)
3029 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3032 inline vector unsigned int
3033 vec_xor (vector unsigned int a1, vector unsigned int a2)
3035 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3038 inline vector signed short
3039 vec_xor (vector signed short a1, vector signed short a2)
3041 return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3044 inline vector unsigned short
3045 vec_xor (vector signed short a1, vector unsigned short a2)
3047 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3050 inline vector unsigned short
3051 vec_xor (vector unsigned short a1, vector signed short a2)
3053 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3056 inline vector unsigned short
3057 vec_xor (vector unsigned short a1, vector unsigned short a2)
3059 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3062 inline vector signed char
3063 vec_xor (vector signed char a1, vector signed char a2)
3065 return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3068 inline vector unsigned char
3069 vec_xor (vector signed char a1, vector unsigned char a2)
3071 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3074 inline vector unsigned char
3075 vec_xor (vector unsigned char a1, vector signed char a2)
3077 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3080 inline vector unsigned char
3081 vec_xor (vector unsigned char a1, vector unsigned char a2)
3083 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
3089 vec_all_eq (vector signed char a1, vector unsigned char a2)
3091 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2);
3095 vec_all_eq (vector signed char a1, vector signed char a2)
3097 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2);
3101 vec_all_eq (vector unsigned char a1, vector signed char a2)
3103 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
3107 vec_all_eq (vector unsigned char a1, vector unsigned char a2)
3109 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
3113 vec_all_eq (vector signed short a1, vector unsigned short a2)
3115 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
3119 vec_all_eq (vector signed short a1, vector signed short a2)
3121 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
3125 vec_all_eq (vector unsigned short a1, vector signed short a2)
3127 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
3131 vec_all_eq (vector unsigned short a1, vector unsigned short a2)
3133 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
3137 vec_all_eq (vector signed int a1, vector unsigned int a2)
3139 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
3143 vec_all_eq (vector signed int a1, vector signed int a2)
3145 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
3149 vec_all_eq (vector unsigned int a1, vector signed int a2)
3151 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
3155 vec_all_eq (vector unsigned int a1, vector unsigned int a2)
3157 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
3161 vec_all_eq (vector float a1, vector float a2)
3163 return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2);
3169 vec_all_ge (vector signed char a1, vector unsigned char a2)
3171 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
3175 vec_all_ge (vector unsigned char a1, vector signed char a2)
3177 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
3181 vec_all_ge (vector unsigned char a1, vector unsigned char a2)
3183 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
3187 vec_all_ge (vector signed char a1, vector signed char a2)
3189 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
3193 vec_all_ge (vector signed short a1, vector unsigned short a2)
3195 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
3199 vec_all_ge (vector unsigned short a1, vector signed short a2)
3201 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
3205 vec_all_ge (vector unsigned short a1, vector unsigned short a2)
3207 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
3211 vec_all_ge (vector signed short a1, vector signed short a2)
3213 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
3217 vec_all_ge (vector signed int a1, vector unsigned int a2)
3219 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
3223 vec_all_ge (vector unsigned int a1, vector signed int a2)
3225 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
3229 vec_all_ge (vector unsigned int a1, vector unsigned int a2)
3231 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
3235 vec_all_ge (vector signed int a1, vector signed int a2)
3237 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
3241 vec_all_ge (vector float a1, vector float a2)
3243 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2);
3249 vec_all_gt (vector signed char a1, vector unsigned char a2)
3251 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
3255 vec_all_gt (vector unsigned char a1, vector signed char a2)
3257 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
3261 vec_all_gt (vector unsigned char a1, vector unsigned char a2)
3263 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
3267 vec_all_gt (vector signed char a1, vector signed char a2)
3269 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
3273 vec_all_gt (vector signed short a1, vector unsigned short a2)
3275 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
3279 vec_all_gt (vector unsigned short a1, vector signed short a2)
3281 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
3285 vec_all_gt (vector unsigned short a1, vector unsigned short a2)
3287 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
3291 vec_all_gt (vector signed short a1, vector signed short a2)
3293 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
3297 vec_all_gt (vector signed int a1, vector unsigned int a2)
3299 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
3303 vec_all_gt (vector unsigned int a1, vector signed int a2)
3305 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
3309 vec_all_gt (vector unsigned int a1, vector unsigned int a2)
3311 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
3315 vec_all_gt (vector signed int a1, vector signed int a2)
3317 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
3321 vec_all_gt (vector float a1, vector float a2)
3323 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2);
3329 vec_all_in (vector float a1, vector float a2)
3331 return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2);
3337 vec_all_le (vector signed char a1, vector unsigned char a2)
3339 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
3343 vec_all_le (vector unsigned char a1, vector signed char a2)
3345 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
3349 vec_all_le (vector unsigned char a1, vector unsigned char a2)
3351 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
3355 vec_all_le (vector signed char a1, vector signed char a2)
3357 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
3361 vec_all_le (vector signed short a1, vector unsigned short a2)
3363 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
3367 vec_all_le (vector unsigned short a1, vector signed short a2)
3369 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
3373 vec_all_le (vector unsigned short a1, vector unsigned short a2)
3375 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
3379 vec_all_le (vector signed short a1, vector signed short a2)
3381 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
3385 vec_all_le (vector signed int a1, vector unsigned int a2)
3387 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
3391 vec_all_le (vector unsigned int a1, vector signed int a2)
3393 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
3397 vec_all_le (vector unsigned int a1, vector unsigned int a2)
3399 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
3403 vec_all_le (vector signed int a1, vector signed int a2)
3405 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
3409 vec_all_le (vector float a1, vector float a2)
3411 return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1);
3417 vec_all_lt (vector signed char a1, vector unsigned char a2)
3419 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
3423 vec_all_lt (vector unsigned char a1, vector signed char a2)
3425 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
3429 vec_all_lt (vector unsigned char a1, vector unsigned char a2)
3431 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
3435 vec_all_lt (vector signed char a1, vector signed char a2)
3437 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
3441 vec_all_lt (vector signed short a1, vector unsigned short a2)
3443 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
3447 vec_all_lt (vector unsigned short a1, vector signed short a2)
3449 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
3453 vec_all_lt (vector unsigned short a1, vector unsigned short a2)
3455 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
3459 vec_all_lt (vector signed short a1, vector signed short a2)
3461 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
3465 vec_all_lt (vector signed int a1, vector unsigned int a2)
3467 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
3471 vec_all_lt (vector unsigned int a1, vector signed int a2)
3473 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
3477 vec_all_lt (vector unsigned int a1, vector unsigned int a2)
3479 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
3483 vec_all_lt (vector signed int a1, vector signed int a2)
3485 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
3489 vec_all_lt (vector float a1, vector float a2)
3491 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1);
3497 vec_all_nan (vector float a1)
3499 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
3505 vec_all_ne (vector signed char a1, vector unsigned char a2)
3507 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
3511 vec_all_ne (vector signed char a1, vector signed char a2)
3513 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
3517 vec_all_ne (vector unsigned char a1, vector signed char a2)
3519 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
3523 vec_all_ne (vector unsigned char a1, vector unsigned char a2)
3525 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
3529 vec_all_ne (vector signed short a1, vector unsigned short a2)
3531 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
3535 vec_all_ne (vector signed short a1, vector signed short a2)
3537 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
3541 vec_all_ne (vector unsigned short a1, vector signed short a2)
3543 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
3547 vec_all_ne (vector unsigned short a1, vector unsigned short a2)
3549 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
3553 vec_all_ne (vector signed int a1, vector unsigned int a2)
3555 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
3559 vec_all_ne (vector signed int a1, vector signed int a2)
3561 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
3565 vec_all_ne (vector unsigned int a1, vector signed int a2)
3567 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
3571 vec_all_ne (vector unsigned int a1, vector unsigned int a2)
3573 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
3577 vec_all_ne (vector float a1, vector float a2)
3579 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2);
3585 vec_all_nge (vector float a1, vector float a2)
3587 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2);
3593 vec_all_ngt (vector float a1, vector float a2)
3595 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2);
3601 vec_all_nle (vector float a1, vector float a2)
3603 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1);
3609 vec_all_nlt (vector float a1, vector float a2)
3611 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1);
3614 /* vec_all_numeric */
3617 vec_all_numeric (vector float a1)
3619 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
3625 vec_any_eq (vector signed char a1, vector unsigned char a2)
3627 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
3631 vec_any_eq (vector signed char a1, vector signed char a2)
3633 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
3637 vec_any_eq (vector unsigned char a1, vector signed char a2)
3639 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
3643 vec_any_eq (vector unsigned char a1, vector unsigned char a2)
3645 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
3649 vec_any_eq (vector signed short a1, vector unsigned short a2)
3651 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
3655 vec_any_eq (vector signed short a1, vector signed short a2)
3657 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
3661 vec_any_eq (vector unsigned short a1, vector signed short a2)
3663 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
3667 vec_any_eq (vector unsigned short a1, vector unsigned short a2)
3669 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
3673 vec_any_eq (vector signed int a1, vector unsigned int a2)
3675 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
3679 vec_any_eq (vector signed int a1, vector signed int a2)
3681 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
3685 vec_any_eq (vector unsigned int a1, vector signed int a2)
3687 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
3691 vec_any_eq (vector unsigned int a1, vector unsigned int a2)
3693 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
3697 vec_any_eq (vector float a1, vector float a2)
3699 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2);
3705 vec_any_ge (vector signed char a1, vector unsigned char a2)
3707 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
3711 vec_any_ge (vector unsigned char a1, vector signed char a2)
3713 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
3717 vec_any_ge (vector unsigned char a1, vector unsigned char a2)
3719 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
3723 vec_any_ge (vector signed char a1, vector signed char a2)
3725 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
3729 vec_any_ge (vector signed short a1, vector unsigned short a2)
3731 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
3735 vec_any_ge (vector unsigned short a1, vector signed short a2)
3737 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
3741 vec_any_ge (vector unsigned short a1, vector unsigned short a2)
3743 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
3747 vec_any_ge (vector signed short a1, vector signed short a2)
3749 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
3753 vec_any_ge (vector signed int a1, vector unsigned int a2)
3755 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
3759 vec_any_ge (vector unsigned int a1, vector signed int a2)
3761 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
3765 vec_any_ge (vector unsigned int a1, vector unsigned int a2)
3767 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
3771 vec_any_ge (vector signed int a1, vector signed int a2)
3773 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
3777 vec_any_ge (vector float a1, vector float a2)
3779 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2);
3785 vec_any_gt (vector signed char a1, vector unsigned char a2)
3787 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
3791 vec_any_gt (vector unsigned char a1, vector signed char a2)
3793 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
3797 vec_any_gt (vector unsigned char a1, vector unsigned char a2)
3799 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
3803 vec_any_gt (vector signed char a1, vector signed char a2)
3805 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
3809 vec_any_gt (vector signed short a1, vector unsigned short a2)
3811 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
3815 vec_any_gt (vector unsigned short a1, vector signed short a2)
3817 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
3821 vec_any_gt (vector unsigned short a1, vector unsigned short a2)
3823 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
3827 vec_any_gt (vector signed short a1, vector signed short a2)
3829 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
3833 vec_any_gt (vector signed int a1, vector unsigned int a2)
3835 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
3839 vec_any_gt (vector unsigned int a1, vector signed int a2)
3841 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
3845 vec_any_gt (vector unsigned int a1, vector unsigned int a2)
3847 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
3851 vec_any_gt (vector signed int a1, vector signed int a2)
3853 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
3857 vec_any_gt (vector float a1, vector float a2)
3859 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2);
3865 vec_any_le (vector signed char a1, vector unsigned char a2)
3867 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
3871 vec_any_le (vector unsigned char a1, vector signed char a2)
3873 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
3877 vec_any_le (vector unsigned char a1, vector unsigned char a2)
3879 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
3883 vec_any_le (vector signed char a1, vector signed char a2)
3885 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
3889 vec_any_le (vector signed short a1, vector unsigned short a2)
3891 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
3895 vec_any_le (vector unsigned short a1, vector signed short a2)
3897 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
3901 vec_any_le (vector unsigned short a1, vector unsigned short a2)
3903 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
3907 vec_any_le (vector signed short a1, vector signed short a2)
3909 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
3913 vec_any_le (vector signed int a1, vector unsigned int a2)
3915 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
3919 vec_any_le (vector unsigned int a1, vector signed int a2)
3921 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
3925 vec_any_le (vector unsigned int a1, vector unsigned int a2)
3927 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
3931 vec_any_le (vector signed int a1, vector signed int a2)
3933 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
3937 vec_any_le (vector float a1, vector float a2)
3939 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1);
3945 vec_any_lt (vector signed char a1, vector unsigned char a2)
3947 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
3951 vec_any_lt (vector unsigned char a1, vector signed char a2)
3953 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
3957 vec_any_lt (vector unsigned char a1, vector unsigned char a2)
3959 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
3963 vec_any_lt (vector signed char a1, vector signed char a2)
3965 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
3969 vec_any_lt (vector signed short a1, vector unsigned short a2)
3971 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
3975 vec_any_lt (vector unsigned short a1, vector signed short a2)
3977 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
3981 vec_any_lt (vector unsigned short a1, vector unsigned short a2)
3983 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
3987 vec_any_lt (vector signed short a1, vector signed short a2)
3989 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
3993 vec_any_lt (vector signed int a1, vector unsigned int a2)
3995 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
3999 vec_any_lt (vector unsigned int a1, vector signed int a2)
4001 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
4005 vec_any_lt (vector unsigned int a1, vector unsigned int a2)
4007 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
4011 vec_any_lt (vector signed int a1, vector signed int a2)
4013 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
4017 vec_any_lt (vector float a1, vector float a2)
4019 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1);
4025 vec_any_nan (vector float a1)
4027 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1);
4033 vec_any_ne (vector signed char a1, vector unsigned char a2)
4035 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
4039 vec_any_ne (vector signed char a1, vector signed char a2)
4041 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
4045 vec_any_ne (vector unsigned char a1, vector signed char a2)
4047 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
4051 vec_any_ne (vector unsigned char a1, vector unsigned char a2)
4053 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
4057 vec_any_ne (vector signed short a1, vector unsigned short a2)
4059 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
4063 vec_any_ne (vector signed short a1, vector signed short a2)
4065 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
4069 vec_any_ne (vector unsigned short a1, vector signed short a2)
4071 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
4075 vec_any_ne (vector unsigned short a1, vector unsigned short a2)
4077 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
4081 vec_any_ne (vector signed int a1, vector unsigned int a2)
4083 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
4087 vec_any_ne (vector signed int a1, vector signed int a2)
4089 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
4093 vec_any_ne (vector unsigned int a1, vector signed int a2)
4095 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
4099 vec_any_ne (vector unsigned int a1, vector unsigned int a2)
4101 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
4105 vec_any_ne (vector float a1, vector float a2)
4107 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2);
4113 vec_any_nge (vector float a1, vector float a2)
4115 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2);
4121 vec_any_ngt (vector float a1, vector float a2)
4123 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2);
4129 vec_any_nle (vector float a1, vector float a2)
4131 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1);
4137 vec_any_nlt (vector float a1, vector float a2)
4139 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1);
4142 /* vec_any_numeric */
4145 vec_any_numeric (vector float a1)
4147 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1);
4153 vec_any_out (vector float a1, vector float a2)
4155 return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2);
4160 template<typename _Tp>
4161 struct __vec_step_help
4163 // All proper vector types will specialize _S_elem.
4167 struct __vec_step_help<vector signed short>
4169 static const int _S_elem = 8;
4173 struct __vec_step_help<vector unsigned short>
4175 static const int _S_elem = 8;
4179 struct __vec_step_help<vector signed int>
4181 static const int _S_elem = 4;
4185 struct __vec_step_help<vector unsigned int>
4187 static const int _S_elem = 4;
4191 struct __vec_step_help<vector unsigned char>
4193 static const int _S_elem = 16;
4197 struct __vec_step_help<vector signed char>
4199 static const int _S_elem = 16;
4203 struct __vec_step_help<vector float>
4205 static const int _S_elem = 4;
4208 #define vec_step(t) __vec_step_help<t>::_S_elem
4212 /* "... and so I think no man in a century will suffer as greatly as
4215 #define vec_abs(a) \
4216 __ch (__un_args_eq (vector signed char, (a)), \
4217 ((vector signed char) __builtin_altivec_abs_v16qi ((vector signed char) (a))), \
4218 __ch (__un_args_eq (vector signed short, (a)), \
4219 ((vector signed short) __builtin_altivec_abs_v8hi ((vector signed short) (a))), \
4220 __ch (__un_args_eq (vector signed int, (a)), \
4221 ((vector signed int) __builtin_altivec_abs_v4si ((vector signed int) (a))), \
4222 __ch (__un_args_eq (vector float, (a)), \
4223 ((vector float) __builtin_altivec_abs_v4sf ((vector float) (a))), \
4224 __altivec_link_error_invalid_argument ()))))
4226 #define vec_abss(a) \
4227 __ch (__un_args_eq (vector signed char, (a)), \
4228 ((vector signed char) __builtin_altivec_abss_v16qi ((vector signed char) (a))), \
4229 __ch (__un_args_eq (vector signed short, (a)), \
4230 ((vector signed short) __builtin_altivec_abss_v8hi ((vector signed short) (a))), \
4231 __ch (__un_args_eq (vector signed int, (a)), \
4232 ((vector signed int) __builtin_altivec_abss_v4si ((vector signed int) (a))), \
4233 __altivec_link_error_invalid_argument ())))
4235 #define vec_step(t) \
4236 __ch (__builtin_types_compatible_p ((t), vector signed int), 4, \
4237 __ch (__builtin_types_compatible_p ((t), vector unsigned int), 4, \
4238 __ch (__builtin_types_compatible_p ((t), vector signed short), 8, \
4239 __ch (__builtin_types_compatible_p ((t), vector unsigned short), 8, \
4240 __ch (__builtin_types_compatible_p ((t), vector signed char), 16, \
4241 __ch (__builtin_types_compatible_p ((t), vector unsigned char), 16, \
4242 __ch (__builtin_types_compatible_p ((t), vector float), 4, \
4243 __altivec_link_error_invalid_argument ())))))))
4245 #define vec_add(a1, a2) \
4246 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4247 ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
4248 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
4249 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
4250 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
4251 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
4252 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4253 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
4254 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4255 ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
4256 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4257 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
4258 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
4259 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
4260 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4261 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
4262 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4263 ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
4264 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
4265 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
4266 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
4267 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
4268 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4269 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
4270 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4271 ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
4272 __altivec_link_error_invalid_argument ())))))))))))))
4274 #define vec_addc(a1, a2) \
4275 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4276 ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
4277 __altivec_link_error_invalid_argument ())
4279 #define vec_vaddcuw(a1, a2) \
4280 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4281 ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
4282 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4283 ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
4284 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4285 ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int ) (a1), (vector signed int ) (a2))), \
4286 __altivec_link_error_invalid_argument ())))
4288 #define vec_adds(a1, a2) \
4289 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
4290 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
4291 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
4292 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
4293 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4294 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
4295 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4296 ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
4297 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4298 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
4299 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
4300 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
4301 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4302 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
4303 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4304 ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
4305 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
4306 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
4307 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
4308 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
4309 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4310 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
4311 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4312 ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
4313 __altivec_link_error_invalid_argument ()))))))))))))
4315 #define vec_and(a1, a2) \
4316 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4317 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4318 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
4319 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4320 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
4321 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4322 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4323 ((vector signed int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4324 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
4325 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4326 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
4327 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4328 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4329 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4330 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4331 ((vector signed short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4332 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4333 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4334 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
4335 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4336 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4337 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4338 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4339 ((vector signed char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4340 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
4341 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4342 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
4343 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4344 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4345 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
4346 __altivec_link_error_invalid_argument ())))))))))))))))
4348 #define vec_andc(a1, a2) \
4349 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4350 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4351 __ch (__bin_args_eq (vector float, (a1), vector unsigned int, (a2)), \
4352 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4353 __ch (__bin_args_eq (vector unsigned int, (a1), vector float, (a2)), \
4354 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4355 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4356 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4357 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
4358 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4359 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4360 ((vector signed int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4361 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
4362 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4363 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4364 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4365 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4366 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4367 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4368 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4369 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
4370 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4371 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4372 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4373 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4374 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4375 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4376 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4377 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
4378 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4379 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4380 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4381 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4382 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4383 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
4384 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4385 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
4386 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4387 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4388 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4389 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4390 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4391 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
4392 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
4393 __altivec_link_error_invalid_argument ()))))))))))))))))))))))
4395 #define vec_avg(a1, a2) \
4396 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4397 ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
4398 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4399 ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
4400 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4401 ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
4402 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4403 ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
4404 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4405 ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
4406 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4407 ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
4408 __altivec_link_error_invalid_argument ()))))))
4410 #define vec_ceil(a1) __builtin_altivec_vrfip ((a1))
4412 #define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2))
4414 #define vec_cmpeq(a1, a2) \
4415 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4416 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
4417 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4418 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
4419 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4420 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
4421 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4422 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
4423 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4424 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
4425 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4426 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
4427 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4428 ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
4429 __altivec_link_error_invalid_argument ())))))))
4431 #define vec_cmpge(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
4433 #define vec_cmpgt(a1, a2) \
4434 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4435 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
4436 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4437 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
4438 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4439 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
4440 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4441 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
4442 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4443 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
4444 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4445 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
4446 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4447 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
4448 __altivec_link_error_invalid_argument ())))))))
4450 #define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
4452 #define vec_cmplt(a1, a2) \
4453 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4454 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
4455 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4456 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
4457 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4458 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
4459 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4460 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
4461 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4462 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
4463 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4464 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
4465 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4466 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
4467 __altivec_link_error_invalid_argument ())))))))
4469 #define vec_ctf(a1, a2) \
4470 __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
4471 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
4472 __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
4473 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
4474 __altivec_link_error_invalid_argument ()))
4476 #define vec_vcfux(a1, a2) __builtin_altivec_vcfux ((vector signed int)(a1), (a2))
4478 #define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
4480 #define vec_ctu(a1, a2) __builtin_altivec_vctuxs ((a1), (a2))
4482 #define vec_dss(a1) __builtin_altivec_dss ((a1))
4484 #define vec_dssall() __builtin_altivec_dssall ()
4486 #define vec_dst(a1, a2, a3) __builtin_altivec_dst ((a1), (a2), (a3))
4488 #define vec_dstst(a1, a2, a3) __builtin_altivec_dstst ((a1), (a2), (a3))
4490 #define vec_dststt(a1, a2, a3) __builtin_altivec_dststt ((a1), (a2), (a3))
4492 #define vec_dstt(a1, a2, a3) __builtin_altivec_dstt ((a1), (a2), (a3))
4494 #define vec_expte(a1) __builtin_altivec_vexptefp ((a1))
4496 #define vec_vexptefp(a1) \
4497 __ch (__un_args_eq (vector float, (a1)), \
4498 ((vector float) __builtin_altivec_vexptefp ((a1))), \
4499 __altivec_link_error_invalid_argument ())
4501 #define vec_floor(a1) __builtin_altivec_vrfim (a1)
4503 #define vec_ld(a, b) \
4504 __ch (__un_args_eq (vector unsigned char *, (b)), \
4505 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
4506 __ch (__un_args_eq (vector unsigned char [], (b)), \
4507 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
4508 __ch (__un_args_eq (unsigned char *, (b)), \
4509 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
4510 __ch (__un_args_eq (unsigned char [], (b)), \
4511 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
4512 __ch (__un_args_eq (vector signed char *, (b)), \
4513 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
4514 __ch (__un_args_eq (vector signed char [], (b)), \
4515 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
4516 __ch (__un_args_eq (signed char *, (b)), \
4517 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
4518 __ch (__un_args_eq (signed char [], (b)), \
4519 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
4520 __ch (__un_args_eq (vector unsigned short *, (b)), \
4521 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
4522 __ch (__un_args_eq (vector unsigned short [], (b)), \
4523 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
4524 __ch (__un_args_eq (unsigned short *, (b)), \
4525 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
4526 __ch (__un_args_eq (unsigned short [], (b)), \
4527 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
4528 __ch (__un_args_eq (vector signed short *, (b)), \
4529 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
4530 __ch (__un_args_eq (vector signed short [], (b)), \
4531 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
4532 __ch (__un_args_eq (signed short *, (b)), \
4533 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
4534 __ch (__un_args_eq (signed short [], (b)), \
4535 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
4536 __ch (__un_args_eq (vector unsigned int *, (b)), \
4537 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
4538 __ch (__un_args_eq (vector unsigned int [], (b)), \
4539 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
4540 __ch (__un_args_eq (unsigned int *, (b)), \
4541 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
4542 __ch (__un_args_eq (unsigned int [], (b)), \
4543 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
4544 __ch (__un_args_eq (vector signed int *, (b)), \
4545 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
4546 __ch (__un_args_eq (vector signed int [], (b)), \
4547 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
4548 __ch (__un_args_eq (signed int *, (b)), \
4549 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
4550 __ch (__un_args_eq (signed int [], (b)), \
4551 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
4552 __ch (__un_args_eq (vector float *, (b)), \
4553 ((vector float) __builtin_altivec_lvx ((a), (b))), \
4554 __ch (__un_args_eq (vector float [], (b)), \
4555 ((vector float) __builtin_altivec_lvx ((a), (b))), \
4556 __ch (__un_args_eq (float *, (b)), \
4557 ((vector float) __builtin_altivec_lvx ((a), (b))), \
4558 __ch (__un_args_eq (float [], (b)), \
4559 ((vector float) __builtin_altivec_lvx ((a), (b))), \
4560 __altivec_link_error_invalid_argument ()))))))))))))))))))))))))))))
4562 #define vec_lde(a, b) \
4563 __ch (__un_args_eq (unsigned char *, (b)), \
4564 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
4565 __ch (__un_args_eq (unsigned char [], (b)), \
4566 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
4567 __ch (__un_args_eq (signed char *, (b)), \
4568 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
4569 __ch (__un_args_eq (signed char [], (b)), \
4570 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
4571 __ch (__un_args_eq (unsigned short *, (b)), \
4572 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
4573 __ch (__un_args_eq (unsigned short [], (b)), \
4574 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
4575 __ch (__un_args_eq (signed short *, (b)), \
4576 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
4577 __ch (__un_args_eq (signed short [], (b)), \
4578 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
4579 __ch (__un_args_eq (unsigned int *, (b)), \
4580 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
4581 __ch (__un_args_eq (unsigned int [], (b)), \
4582 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
4583 __ch (__un_args_eq (signed int *, (b)), \
4584 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
4585 __ch (__un_args_eq (signed int [], (b)), \
4586 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
4587 __altivec_link_error_invalid_argument ()))))))))))))
4589 #define vec_ldl(a, b) \
4590 __ch (__un_args_eq (vector unsigned char *, (b)), \
4591 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
4592 __ch (__un_args_eq (vector unsigned char [], (b)), \
4593 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
4594 __ch (__un_args_eq (unsigned char *, (b)), \
4595 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
4596 __ch (__un_args_eq (unsigned char [], (b)), \
4597 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
4598 __ch (__un_args_eq (vector signed char *, (b)), \
4599 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
4600 __ch (__un_args_eq (vector signed char [], (b)), \
4601 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
4602 __ch (__un_args_eq (signed char *, (b)), \
4603 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
4604 __ch (__un_args_eq (signed char [], (b)), \
4605 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
4606 __ch (__un_args_eq (vector unsigned short *, (b)), \
4607 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
4608 __ch (__un_args_eq (vector unsigned short [], (b)), \
4609 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
4610 __ch (__un_args_eq (unsigned short *, (b)), \
4611 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
4612 __ch (__un_args_eq (unsigned short [], (b)), \
4613 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
4614 __ch (__un_args_eq (vector signed short *, (b)), \
4615 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
4616 __ch (__un_args_eq (vector signed short [], (b)), \
4617 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
4618 __ch (__un_args_eq (signed short *, (b)), \
4619 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
4620 __ch (__un_args_eq (signed short [], (b)), \
4621 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
4622 __ch (__un_args_eq (vector unsigned int *, (b)), \
4623 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
4624 __ch (__un_args_eq (vector unsigned int [], (b)), \
4625 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
4626 __ch (__un_args_eq (unsigned int *, (b)), \
4627 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
4628 __ch (__un_args_eq (unsigned int [], (b)), \
4629 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
4630 __ch (__un_args_eq (vector signed int *, (b)), \
4631 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
4632 __ch (__un_args_eq (vector signed int [], (b)), \
4633 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
4634 __ch (__un_args_eq (signed int *, (b)), \
4635 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
4636 __ch (__un_args_eq (signed int [], (b)), \
4637 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
4638 __ch (__un_args_eq (vector float *, (b)), \
4639 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
4640 __ch (__un_args_eq (vector float [], (b)), \
4641 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
4642 __ch (__un_args_eq (float *, (b)), \
4643 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
4644 __ch (__un_args_eq (float [], (b)), \
4645 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
4646 __altivec_link_error_invalid_argument ()))))))))))))))))))))))))))))
4648 #define vec_loge(a1) __builtin_altivec_vlogefp ((a1))
4650 #define vec_lvsl(a1, a2) ((vector unsigned char) __builtin_altivec_lvsl ((a1), (a2)))
4652 #define vec_lvsr(a1, a2) ((vector unsigned char) __builtin_altivec_lvsr ((a1), (a2)))
4654 #define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3)))
4656 #define vec_vmaddfp(a1, a2, a3) ((vector float)(__builtin_altivec_vmaddfp ((a1), (a2), (a3))))
4658 #define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))
4660 #define vec_max(a1, a2) \
4661 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
4662 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
4663 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
4664 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
4665 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4666 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
4667 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4668 ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
4669 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4670 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
4671 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
4672 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
4673 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4674 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
4675 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4676 ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
4677 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
4678 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
4679 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
4680 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
4681 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4682 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
4683 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4684 ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
4685 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4686 ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
4687 __altivec_link_error_invalid_argument ())))))))))))))
4689 #define vec_mergeh(a1, a2) \
4690 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4691 ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
4692 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4693 ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
4694 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4695 ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
4696 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4697 ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
4698 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4699 ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
4700 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4701 ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
4702 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4703 ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
4704 __altivec_link_error_invalid_argument ())))))))
4706 #define vec_mergel(a1, a2) \
4707 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4708 ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
4709 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4710 ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
4711 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4712 ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
4713 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4714 ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
4715 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4716 ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
4717 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4718 ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
4719 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4720 ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
4721 __altivec_link_error_invalid_argument ())))))))
4723 #define vec_mfvscr() (((vector unsigned short) __builtin_altivec_mfvscr ()))
4725 #define vec_min(a1, a2) \
4726 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
4727 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
4728 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
4729 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
4730 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4731 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
4732 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4733 ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
4734 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4735 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
4736 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
4737 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
4738 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4739 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
4740 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4741 ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
4742 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
4743 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
4744 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
4745 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
4746 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4747 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
4748 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4749 ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
4750 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4751 ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
4752 __altivec_link_error_invalid_argument ())))))))))))))
4754 #define vec_mladd(a1, a2, a3) \
4755 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
4756 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
4757 __ch (__tern_args_eq (vector signed short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
4758 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
4759 __ch (__tern_args_eq (vector unsigned short, (a1), vector signed short, (a2), vector signed short, (a3)), \
4760 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
4761 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
4762 ((vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
4763 __altivec_link_error_invalid_argument ()))))
4765 #define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs ((a1), (a2), (a3))
4767 #define vec_msum(a1, a2, a3) \
4768 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
4769 ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
4770 __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
4771 ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
4772 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
4773 ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
4774 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
4775 ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
4776 __altivec_link_error_invalid_argument ()))))
4778 #define vec_msums(a1, a2, a3) \
4779 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
4780 ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
4781 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
4782 ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
4783 __altivec_link_error_invalid_argument ()))
4785 #define vec_mtvscr(a1) \
4786 __ch (__un_args_eq (vector signed int, (a1)), \
4787 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
4788 __ch (__un_args_eq (vector unsigned int, (a1)), \
4789 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
4790 __ch (__un_args_eq (vector signed short, (a1)), \
4791 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
4792 __ch (__un_args_eq (vector unsigned short, (a1)), \
4793 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
4794 __ch (__un_args_eq (vector signed char, (a1)), \
4795 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
4796 __ch (__un_args_eq (vector unsigned char, (a1)), \
4797 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
4798 __altivec_link_error_invalid_argument ()))))))
4800 #define vec_mule(a1, a2) \
4801 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4802 ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
4803 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4804 ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
4805 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4806 ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
4807 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4808 ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
4809 __altivec_link_error_invalid_argument ()))))
4811 #define vec_mulo(a1, a2) \
4812 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4813 ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
4814 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4815 ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
4816 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4817 ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
4818 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4819 ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
4820 __altivec_link_error_invalid_argument ()))))
4822 #define vec_nmsub(a1, a2, a3) \
4823 __ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \
4824 ((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \
4825 __altivec_link_error_invalid_argument ())
4827 #define vec_nor(a1, a2) \
4828 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4829 ((vector float) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
4830 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4831 ((vector signed int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
4832 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4833 ((vector unsigned int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
4834 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4835 ((vector signed short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
4836 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4837 ((vector unsigned short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
4838 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4839 ((vector signed char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
4840 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4841 ((vector unsigned char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
4842 __altivec_link_error_invalid_argument ())))))))
4844 #define vec_or(a1, a2) \
4845 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
4846 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4847 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
4848 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4849 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
4850 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4851 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4852 ((vector signed int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4853 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
4854 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4855 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
4856 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4857 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4858 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4859 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4860 ((vector signed short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4861 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4862 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4863 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
4864 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4865 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4866 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4867 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
4868 ((vector signed char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4869 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
4870 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4871 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
4872 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4873 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4874 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
4875 __altivec_link_error_invalid_argument ())))))))))))))))
4877 #define vec_pack(a1, a2) \
4878 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4879 ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
4880 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4881 ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
4882 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4883 ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
4884 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4885 ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
4886 __altivec_link_error_invalid_argument ()))))
4888 #define vec_packpx(a1, a2) __builtin_altivec_vpkpx ((a1), (a2))
4890 #define vec_packs(a1, a2) \
4891 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4892 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
4893 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4894 ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
4895 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4896 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
4897 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4898 ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
4899 __altivec_link_error_invalid_argument ()))))
4901 #define vec_packsu(a1, a2) \
4902 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4903 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
4904 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
4905 ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
4906 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4907 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
4908 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
4909 ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
4910 __altivec_link_error_invalid_argument ()))))
4912 #define vec_perm(a1, a2, a3) \
4913 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \
4914 ((vector float) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
4915 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned char, (a3)), \
4916 ((vector signed int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
4917 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned char, (a3)), \
4918 ((vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
4919 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned char, (a3)), \
4920 ((vector signed short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
4921 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned char, (a3)), \
4922 ((vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
4923 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
4924 ((vector signed char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
4925 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
4926 ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
4927 __altivec_link_error_invalid_argument ())))))))
4929 #define vec_vperm(a1, a2, a3) \
4930 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
4931 ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
4932 __altivec_link_error_invalid_argument ())
4934 #define vec_re(a1) __builtin_altivec_vrefp ((a1))
4936 #define vec_vrefp(a1) __builtin_altivec_vrefp ((a1))
4938 #define vec_rl(a1, a2) \
4939 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
4940 ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
4941 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4942 ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
4943 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4944 ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
4945 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4946 ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
4947 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
4948 ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
4949 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
4950 ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
4951 __altivec_link_error_invalid_argument ()))))))
4953 #define vec_round(a1) __builtin_altivec_vrfin ((a1))
4955 #define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1))
4957 #define vec_sel(a1, a2, a3) \
4958 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector signed int, (a3)), \
4959 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4960 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned int, (a3)), \
4961 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4962 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector signed int, (a3)), \
4963 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4964 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned int, (a3)), \
4965 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4966 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector signed int, (a3)), \
4967 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4968 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned int, (a3)), \
4969 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4970 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
4971 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4972 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned short, (a3)), \
4973 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4974 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector signed short, (a3)), \
4975 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4976 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
4977 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4978 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector signed char, (a3)), \
4979 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4980 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
4981 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4982 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector signed char, (a3)), \
4983 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4984 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
4985 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
4986 __altivec_link_error_invalid_argument ()))))))))))))))
4988 #define vec_sl(a1, a2) \
4989 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
4990 ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
4991 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
4992 ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
4993 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
4994 ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
4995 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
4996 ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
4997 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
4998 ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
4999 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5000 ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
5001 __altivec_link_error_invalid_argument ()))))))
5003 #define vec_vsldoi(a1,a2,a3) ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3)))
5005 #define vec_sld(a1, a2, a3) \
5006 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \
5007 ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
5008 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), int, (a3)), \
5009 ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
5010 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), int, (a3)), \
5011 ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
5012 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), int, (a3)), \
5013 ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
5014 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), int, (a3)), \
5015 ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
5016 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), int, (a3)), \
5017 ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
5018 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), int, (a3)), \
5019 ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
5020 __altivec_link_error_invalid_argument ())))))))
5022 #define vec_sll(a1, a2) \
5023 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5024 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5025 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
5026 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5027 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
5028 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5029 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5030 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5031 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
5032 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5033 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
5034 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5035 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
5036 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5037 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5038 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5039 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
5040 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5041 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
5042 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5043 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5044 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5045 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
5046 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5047 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
5048 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5049 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
5050 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5051 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5052 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5053 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
5054 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5055 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
5056 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5057 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5058 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
5059 __altivec_link_error_invalid_argument ()))))))))))))))))))
5061 #define vec_slo(a1, a2) \
5062 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
5063 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5064 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
5065 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5066 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
5067 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5068 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
5069 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5070 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
5071 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5072 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
5073 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5074 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
5075 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5076 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
5077 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5078 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
5079 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5080 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
5081 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5082 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5083 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5084 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5085 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5086 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5087 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5088 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5089 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
5090 __altivec_link_error_invalid_argument ()))))))))))))))
5092 #define vec_splat(a1, a2) \
5093 __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
5094 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
5095 __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
5096 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
5097 __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
5098 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
5099 __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
5100 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
5101 __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
5102 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
5103 __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
5104 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
5105 __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
5106 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
5107 __altivec_link_error_invalid_argument ())))))))
5109 #define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1))
5111 #define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1))
5113 #define vec_splat_s32(a1) __builtin_altivec_vspltisw ((a1))
5115 #define vec_splat_u8(a1) ((vector unsigned char) __builtin_altivec_vspltisb ((a1)))
5117 #define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish ((a1)))
5119 #define vec_splat_u32(a1) ((vector unsigned int) __builtin_altivec_vspltisw ((a1)))
5121 #define vec_sr(a1, a2) \
5122 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5123 ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
5124 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5125 ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
5126 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5127 ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
5128 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5129 ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
5130 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5131 ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
5132 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5133 ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
5134 __altivec_link_error_invalid_argument ()))))))
5136 #define vec_sra(a1, a2) \
5137 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5138 ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
5139 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5140 ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
5141 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5142 ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
5143 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5144 ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
5145 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5146 ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
5147 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5148 ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
5149 __altivec_link_error_invalid_argument ()))))))
5151 #define vec_srl(a1, a2) \
5152 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5153 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5154 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
5155 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5156 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
5157 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5158 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5159 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5160 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
5161 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5162 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
5163 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5164 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
5165 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5166 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5167 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5168 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
5169 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5170 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
5171 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5172 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5173 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5174 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
5175 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5176 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
5177 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5178 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
5179 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5180 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5181 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5182 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
5183 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5184 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
5185 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5186 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5187 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
5188 __altivec_link_error_invalid_argument ()))))))))))))))))))
5190 #define vec_sro(a1, a2) \
5191 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
5192 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5193 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
5194 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5195 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
5196 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5197 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
5198 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5199 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
5200 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5201 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
5202 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5203 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
5204 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5205 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
5206 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5207 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
5208 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5209 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
5210 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5211 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5212 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5213 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5214 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5215 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5216 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5217 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5218 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
5219 __altivec_link_error_invalid_argument ()))))))))))))))
5221 #define vec_st(a1, a2, a3) \
5222 __builtin_altivec_stvx ((vector signed int) (a1), (a2), (a3))
5224 #define vec_stl(a1, a2, a3) \
5225 __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (a3))
5227 #define vec_ste(a, b, c) \
5228 __ch (__un_args_eq (vector unsigned char, (a)), \
5229 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
5230 __ch (__un_args_eq (vector signed char, (a)), \
5231 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
5232 __ch (__un_args_eq (vector unsigned short, (a)), \
5233 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
5234 __ch (__un_args_eq (vector signed short, (a)), \
5235 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
5236 __ch (__un_args_eq (vector unsigned int, (a)), \
5237 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
5238 __ch (__un_args_eq (vector signed int, (a)), \
5239 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
5240 __ch (__un_args_eq (vector float, (a)), \
5241 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
5242 __altivec_link_error_invalid_argument ())))))))
5244 #define vec_sub(a1, a2) \
5245 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5246 ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
5247 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5248 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
5249 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5250 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
5251 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5252 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
5253 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5254 ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
5255 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5256 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
5257 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5258 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
5259 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5260 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
5261 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5262 ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
5263 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5264 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
5265 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5266 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
5267 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5268 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
5269 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5270 ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
5271 __altivec_link_error_invalid_argument ())))))))))))))
5273 #define vec_subc(a1, a2) ((vector unsigned int) __builtin_altivec_vsubcuw ((vector unsigned int) (a1), (vector unsigned int) (a2)))
5275 #define vec_subs(a1, a2) \
5276 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5277 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
5278 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5279 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
5280 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5281 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
5282 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5283 ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
5284 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5285 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
5286 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5287 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
5288 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5289 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
5290 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5291 ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
5292 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5293 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
5294 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5295 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
5296 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5297 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
5298 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5299 ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
5300 __altivec_link_error_invalid_argument ()))))))))))))
5302 #define vec_sum4s(a1, a2) \
5303 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
5304 ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
5305 __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
5306 ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
5307 __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
5308 ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
5309 __altivec_link_error_invalid_argument ())))
5311 #define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2))
5313 #define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2))
5315 #define vec_trunc(a1) __builtin_altivec_vrfiz ((a1))
5317 #define vec_unpackh(a1) \
5318 __ch (__un_args_eq (vector signed char, (a1)), \
5319 ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
5320 __ch (__un_args_eq (vector signed short, (a1)), \
5321 ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
5322 __ch (__un_args_eq (vector signed short, (a1)), \
5323 ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
5324 __altivec_link_error_invalid_argument ())))
5326 #define vec_unpackl(a1) \
5327 __ch (__un_args_eq (vector signed char, (a1)), \
5328 ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
5329 __ch (__un_args_eq (vector signed short, (a1)), \
5330 ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
5331 __ch (__un_args_eq (vector signed short, (a1)), \
5332 ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
5333 __altivec_link_error_invalid_argument ())))
5335 #define vec_xor(a1, a2) \
5336 __ch (__bin_args_eq (vector float, ((a1)), vector float, ((a2))), \
5337 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5338 __ch (__bin_args_eq (vector float, ((a1)), vector unsigned int, ((a2))), \
5339 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5340 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector float, ((a2))), \
5341 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5342 __ch (__bin_args_eq (vector signed int, ((a1)), vector signed int, ((a2))), \
5343 ((vector signed int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5344 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector unsigned int, ((a2))), \
5345 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5346 __ch (__bin_args_eq (vector signed int, ((a1)), vector unsigned int, ((a2))), \
5347 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5348 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector signed int, ((a2))), \
5349 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5350 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector unsigned int, ((a2))), \
5351 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5352 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
5353 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5354 __ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \
5355 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5356 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \
5357 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5358 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
5359 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5360 __ch (__bin_args_eq (vector signed short, ((a1)), vector signed short, ((a2))), \
5361 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5362 __ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \
5363 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5364 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \
5365 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5366 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
5367 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5368 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \
5369 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5370 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
5371 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5372 __ch (__bin_args_eq (vector signed char, ((a1)), vector signed char, ((a2))), \
5373 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5374 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \
5375 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5376 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
5377 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5378 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector signed char, ((a2))), \
5379 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
5380 __altivec_link_error_invalid_argument ()))))))))))))))))))))))
5384 #define vec_all_eq(a1, a2) \
5385 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5386 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
5387 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5388 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
5389 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5390 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
5391 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5392 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
5393 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5394 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
5395 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5396 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
5397 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5398 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
5399 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5400 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
5401 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5402 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
5403 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5404 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
5405 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5406 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
5407 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5408 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
5409 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5410 __builtin_altivec_vcmpeqfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
5411 __altivec_link_error_invalid_argument ())))))))))))))
5413 #define vec_all_ge(a1, a2) \
5414 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5415 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
5416 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5417 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
5418 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5419 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
5420 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5421 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
5422 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5423 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
5424 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5425 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
5426 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5427 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
5428 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5429 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
5430 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5431 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
5432 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5433 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
5434 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5435 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
5436 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5437 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
5438 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5439 __builtin_altivec_vcmpgefp_p (__CR6_EQ, (vector float) (a1), (vector float) (a2)), \
5440 __altivec_link_error_invalid_argument ())))))))))))))
5442 #define vec_all_gt(a1, a2) \
5443 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5444 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
5445 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5446 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
5447 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5448 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
5449 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5450 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
5451 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5452 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
5453 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5454 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
5455 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5456 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
5457 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5458 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
5459 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5460 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
5461 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5462 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
5463 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5464 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
5465 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5466 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
5467 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5468 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
5469 __altivec_link_error_invalid_argument ())))))))))))))
5471 #define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2))
5473 #define vec_all_le(a1, a2) \
5474 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5475 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
5476 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5477 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
5478 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5479 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
5480 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5481 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
5482 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5483 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
5484 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5485 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
5486 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5487 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
5488 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5489 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
5490 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5491 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
5492 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5493 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
5494 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5495 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
5496 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5497 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
5498 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5499 __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
5500 __altivec_link_error_invalid_argument ())))))))))))))
5502 #define vec_all_lt(a1, a2) \
5503 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5504 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
5505 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5506 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
5507 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5508 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
5509 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5510 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
5511 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5512 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
5513 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5514 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
5515 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5516 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
5517 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5518 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
5519 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5520 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
5521 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5522 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
5523 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5524 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
5525 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5526 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
5527 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5528 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
5529 __altivec_link_error_invalid_argument ())))))))))))))
5531 #define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
5533 #define vec_all_ne(a1, a2) \
5534 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5535 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
5536 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5537 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
5538 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5539 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
5540 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5541 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
5542 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5543 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
5544 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5545 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
5546 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5547 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
5548 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5549 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
5550 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5551 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
5552 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5553 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
5554 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5555 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
5556 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5557 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
5558 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5559 __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (vector float) (a1), (vector float) (a2)), \
5560 __altivec_link_error_invalid_argument ())))))))))))))
5562 #define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2))
5564 #define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2))
5566 #define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1))
5568 #define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1))
5570 #define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
5572 #define vec_any_eq(a1, a2) \
5573 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5574 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5575 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5576 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5577 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5578 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5579 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5580 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5581 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5582 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5583 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5584 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5585 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5586 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5587 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5588 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5589 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5590 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5591 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5592 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5593 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5594 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5595 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5596 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5597 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5598 __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
5599 __altivec_link_error_invalid_argument ())))))))))))))
5601 #define vec_any_ge(a1, a2) \
5602 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5603 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
5604 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5605 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
5606 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5607 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
5608 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5609 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
5610 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5611 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
5612 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5613 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
5614 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5615 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
5616 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5617 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
5618 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5619 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
5620 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5621 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
5622 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5623 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
5624 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5625 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
5626 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5627 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
5628 __altivec_link_error_invalid_argument ())))))))))))))
5630 #define vec_any_gt(a1, a2) \
5631 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5632 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5633 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5634 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5635 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5636 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5637 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5638 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5639 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5640 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5641 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5642 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5643 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5644 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5645 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5646 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5647 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5648 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5649 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5650 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5651 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5652 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5653 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5654 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5655 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5656 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
5657 __altivec_link_error_invalid_argument ())))))))))))))
5659 #define vec_any_le(a1, a2) \
5660 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5661 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5662 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5663 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5664 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5665 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5666 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5667 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5668 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5669 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5670 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5671 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5672 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5673 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5674 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5675 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5676 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5677 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5678 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5679 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5680 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5681 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5682 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5683 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5684 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5685 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
5686 __altivec_link_error_invalid_argument ())))))))))))))
5688 #define vec_any_lt(a1, a2) \
5689 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5690 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
5691 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5692 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
5693 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5694 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
5695 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5696 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
5697 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5698 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
5699 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5700 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
5701 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5702 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
5703 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5704 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
5705 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5706 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
5707 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5708 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
5709 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5710 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
5711 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5712 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
5713 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5714 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
5715 __altivec_link_error_invalid_argument ())))))))))))))
5717 #define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1)
5719 #define vec_any_ne(a1, a2) \
5720 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
5721 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5722 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
5723 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5724 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
5725 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5726 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
5727 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
5728 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
5729 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5730 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
5731 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5732 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
5733 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5734 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
5735 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
5736 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
5737 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5738 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
5739 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5740 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
5741 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5742 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
5743 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
5744 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
5745 __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (vector float) (a1), (vector float) (a2)), \
5746 __altivec_link_error_invalid_argument ())))))))))))))
5748 #define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2))
5750 #define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2))
5752 #define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1))
5754 #define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1))
5756 #define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1))
5758 #define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2))
5760 #endif /* __cplusplus */
5762 #endif /* _ALTIVEC_H */