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
48 #define pixel unsigned short
49 #define __pixel unsigned short
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)
75 /* These are easy... Same exact arguments. */
77 #define vec_vaddcuw vec_addc
78 #define vec_vand vec_and
79 #define vec_vandc vec_andc
80 #define vec_vrfip vec_ceil
81 #define vec_vcmpbfp vec_cmpb
82 #define vec_vcmpgefp vec_cmpge
83 #define vec_vctsxs vec_cts
84 #define vec_vctuxs vec_ctu
85 #define vec_vexptefp vec_expte
86 #define vec_vrfim vec_floor
87 #define vec_lvx vec_ld
88 #define vec_lvxl vec_ldl
89 #define vec_vlogefp vec_loge
90 #define vec_vmaddfp vec_madd
91 #define vec_vmhaddshs vec_madds
92 #define vec_vmladduhm vec_mladd
93 #define vec_vmhraddshs vec_mradds
94 #define vec_vnmsubfp vec_nmsub
95 #define vec_vnor vec_nor
96 #define vec_vor vec_or
97 #define vec_vpkpx vec_packpx
98 #define vec_vperm vec_perm
99 #define vec_vrefp vec_re
100 #define vec_vrfin vec_round
101 #define vec_vrsqrtefp vec_rsqrte
102 #define vec_vsel vec_sel
103 #define vec_vsldoi vec_sld
104 #define vec_vsl vec_sll
105 #define vec_vslo vec_slo
106 #define vec_vspltisb vec_splat_s8
107 #define vec_vspltish vec_splat_s16
108 #define vec_vspltisw vec_splat_s32
109 #define vec_vsr vec_srl
110 #define vec_vsro vec_sro
111 #define vec_stvx vec_st
112 #define vec_stvxl vec_stl
113 #define vec_vsubcuw vec_subc
114 #define vec_vsum2sws vec_sum2s
115 #define vec_vsumsws vec_sums
116 #define vec_vrfiz vec_trunc
117 #define vec_vxor vec_xor
121 /* Prototypes for builtins that take literals and must always be
123 inline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline));
124 inline vector float vec_ctf (vector signed int, const char) __attribute__ ((always_inline));
125 inline vector float vec_vcfsx (vector signed int a1, const char a2) __attribute__ ((always_inline));
126 inline vector float vec_vcfux (vector unsigned int a1, const char a2) __attribute__ ((always_inline));
127 inline vector signed int vec_cts (vector float, const char) __attribute__ ((always_inline));
128 inline vector unsigned int vec_ctu (vector float, const char) __attribute__ ((always_inline));
129 inline void vec_dss (const char) __attribute__ ((always_inline));
131 inline void vec_dst (vector unsigned char *, int, const char) __attribute__ ((always_inline));
132 inline void vec_dst (vector signed char *, int, const char) __attribute__ ((always_inline));
133 inline void vec_dst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
134 inline void vec_dst (vector signed short *, int, const char) __attribute__ ((always_inline));
135 inline void vec_dst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
136 inline void vec_dst (vector signed int *, int, const char) __attribute__ ((always_inline));
137 inline void vec_dst (vector float *, int, const char) __attribute__ ((always_inline));
138 inline void vec_dst (unsigned char *, int, const char) __attribute__ ((always_inline));
139 inline void vec_dst (signed char *, int, const char) __attribute__ ((always_inline));
140 inline void vec_dst (unsigned short *, int, const char) __attribute__ ((always_inline));
141 inline void vec_dst (signed short *, int, const char) __attribute__ ((always_inline));
142 inline void vec_dst (unsigned int *, int, const char) __attribute__ ((always_inline));
143 inline void vec_dst (signed int *, int, const char) __attribute__ ((always_inline));
144 inline void vec_dst (unsigned long *, int, const char) __attribute__ ((always_inline));
145 inline void vec_dst (signed long *, int, const char) __attribute__ ((always_inline));
146 inline void vec_dst (float *, int, const char) __attribute__ ((always_inline));
148 inline void vec_dstst (vector unsigned char *, int, const char) __attribute__ ((always_inline));
149 inline void vec_dstst (vector signed char *, int, const char) __attribute__ ((always_inline));
150 inline void vec_dstst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
151 inline void vec_dstst (vector signed short *, int, const char) __attribute__ ((always_inline));
152 inline void vec_dstst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
153 inline void vec_dstst (vector signed int *, int, const char) __attribute__ ((always_inline));
154 inline void vec_dstst (vector float *, int, const char) __attribute__ ((always_inline));
155 inline void vec_dstst (unsigned char *, int, const char) __attribute__ ((always_inline));
156 inline void vec_dstst (signed char *, int, const char) __attribute__ ((always_inline));
157 inline void vec_dstst (unsigned short *, int, const char) __attribute__ ((always_inline));
158 inline void vec_dstst (signed short *, int, const char) __attribute__ ((always_inline));
159 inline void vec_dstst (unsigned int *, int, const char) __attribute__ ((always_inline));
160 inline void vec_dstst (signed int *, int, const char) __attribute__ ((always_inline));
161 inline void vec_dstst (unsigned long *, int, const char) __attribute__ ((always_inline));
162 inline void vec_dstst (signed long *, int, const char) __attribute__ ((always_inline));
163 inline void vec_dstst (float *, int, const char) __attribute__ ((always_inline));
165 inline void vec_dststt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
166 inline void vec_dststt (vector signed char *, int, const char) __attribute__ ((always_inline));
167 inline void vec_dststt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
168 inline void vec_dststt (vector signed short *, int, const char) __attribute__ ((always_inline));
169 inline void vec_dststt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
170 inline void vec_dststt (vector signed int *, int, const char) __attribute__ ((always_inline));
171 inline void vec_dststt (vector float *, int, const char) __attribute__ ((always_inline));
172 inline void vec_dststt (unsigned char *, int, const char) __attribute__ ((always_inline));
173 inline void vec_dststt (signed char *, int, const char) __attribute__ ((always_inline));
174 inline void vec_dststt (unsigned short *, int, const char) __attribute__ ((always_inline));
175 inline void vec_dststt (signed short *, int, const char) __attribute__ ((always_inline));
176 inline void vec_dststt (unsigned int *, int, const char) __attribute__ ((always_inline));
177 inline void vec_dststt (signed int *, int, const char) __attribute__ ((always_inline));
178 inline void vec_dststt (unsigned long *, int, const char) __attribute__ ((always_inline));
179 inline void vec_dststt (signed long *, int, const char) __attribute__ ((always_inline));
180 inline void vec_dststt (float *, int, const char) __attribute__ ((always_inline));
182 inline void vec_dstt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
183 inline void vec_dstt (vector signed char *, int, const char) __attribute__ ((always_inline));
184 inline void vec_dstt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
185 inline void vec_dstt (vector signed short *, int, const char) __attribute__ ((always_inline));
186 inline void vec_dstt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
187 inline void vec_dstt (vector signed int *, int, const char) __attribute__ ((always_inline));
188 inline void vec_dstt (vector float *, int, const char) __attribute__ ((always_inline));
189 inline void vec_dstt (unsigned char *, int, const char) __attribute__ ((always_inline));
190 inline void vec_dstt (signed char *, int, const char) __attribute__ ((always_inline));
191 inline void vec_dstt (unsigned short *, int, const char) __attribute__ ((always_inline));
192 inline void vec_dstt (signed short *, int, const char) __attribute__ ((always_inline));
193 inline void vec_dstt (unsigned int *, int, const char) __attribute__ ((always_inline));
194 inline void vec_dstt (signed int *, int, const char) __attribute__ ((always_inline));
195 inline void vec_dstt (unsigned long *, int, const char) __attribute__ ((always_inline));
196 inline void vec_dstt (signed long *, int, const char) __attribute__ ((always_inline));
197 inline void vec_dstt (float *, int, const char) __attribute__ ((always_inline));
199 inline vector float vec_sld (vector float, vector float, const char) __attribute__ ((always_inline));
200 inline vector signed int vec_sld (vector signed int, vector signed int, const char) __attribute__ ((always_inline));
201 inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const char) __attribute__ ((always_inline));
202 inline vector signed short vec_sld (vector signed short, vector signed short, const char) __attribute__ ((always_inline));
203 inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const char) __attribute__ ((always_inline));
204 inline vector signed char vec_sld (vector signed char, vector signed char, const char) __attribute__ ((always_inline));
205 inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const char) __attribute__ ((always_inline));
206 inline vector signed char vec_splat (vector signed char, const char) __attribute__ ((always_inline));
207 inline vector unsigned char vec_splat (vector unsigned char, const char) __attribute__ ((always_inline));
208 inline vector signed short vec_splat (vector signed short, const char) __attribute__ ((always_inline));
209 inline vector unsigned short vec_splat (vector unsigned short, const char) __attribute__ ((always_inline));
210 inline vector float vec_splat (vector float, const char) __attribute__ ((always_inline));
211 inline vector signed int vec_splat (vector signed int, const char) __attribute__ ((always_inline));
212 inline vector unsigned int vec_splat (vector unsigned int, const char) __attribute__ ((always_inline));
213 inline vector signed char vec_splat_s8 (const char) __attribute__ ((always_inline));
214 inline vector signed short vec_splat_s16 (const char) __attribute__ ((always_inline));
215 inline vector signed int vec_splat_s32 (const char) __attribute__ ((always_inline));
216 inline vector unsigned char vec_splat_u8 (const char) __attribute__ ((always_inline));
217 inline vector unsigned short vec_splat_u16 (const char) __attribute__ ((always_inline));
218 inline vector unsigned int vec_splat_u32 (const char) __attribute__ ((always_inline));
219 inline vector float vec_vspltw (vector float a1, const char a2) __attribute__ ((always_inline));
220 inline vector signed int vec_vspltw (vector signed int a1, const char a2) __attribute__ ((always_inline));
221 inline vector unsigned int vec_vspltw (vector unsigned int a1, const char a2) __attribute__ ((always_inline));
222 inline vector signed short vec_vsplth (vector signed short a1, const char a2) __attribute__ ((always_inline));
223 inline vector unsigned short vec_vsplth (vector unsigned short a1, const char a2) __attribute__ ((always_inline));
224 inline vector signed char vec_vspltb (vector signed char a1, const char a2) __attribute__ ((always_inline));
225 inline vector unsigned char vec_vspltb (vector unsigned char a1, const char a2) __attribute__ ((always_inline));
229 inline vector signed char
230 vec_abs (vector signed char a1)
232 return __builtin_altivec_abs_v16qi (a1);
235 inline vector signed short
236 vec_abs (vector signed short a1)
238 return __builtin_altivec_abs_v8hi (a1);
241 inline vector signed int
242 vec_abs (vector signed int a1)
244 return __builtin_altivec_abs_v4si (a1);
248 vec_abs (vector float a1)
250 return __builtin_altivec_abs_v4sf (a1);
255 inline vector signed char
256 vec_abss (vector signed char a1)
258 return __builtin_altivec_abss_v16qi (a1);
261 inline vector signed short
262 vec_abss (vector signed short a1)
264 return __builtin_altivec_abss_v8hi (a1);
267 inline vector signed int
268 vec_abss (vector signed int a1)
270 return __builtin_altivec_abss_v4si (a1);
275 inline vector signed char
276 vec_add (vector signed char a1, vector signed char a2)
278 return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
281 inline vector unsigned char
282 vec_add (vector signed char a1, vector unsigned char a2)
284 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
287 inline vector unsigned char
288 vec_add (vector unsigned char a1, vector signed char a2)
290 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
293 inline vector unsigned char
294 vec_add (vector unsigned char a1, vector unsigned char a2)
296 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
299 inline vector signed short
300 vec_add (vector signed short a1, vector signed short a2)
302 return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
305 inline vector unsigned short
306 vec_add (vector signed short a1, vector unsigned short a2)
308 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
311 inline vector unsigned short
312 vec_add (vector unsigned short a1, vector signed short a2)
314 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
317 inline vector unsigned short
318 vec_add (vector unsigned short a1, vector unsigned short a2)
320 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
323 inline vector signed int
324 vec_add (vector signed int a1, vector signed int a2)
326 return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
329 inline vector unsigned int
330 vec_add (vector signed int a1, vector unsigned int a2)
332 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
335 inline vector unsigned int
336 vec_add (vector unsigned int a1, vector signed int a2)
338 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
341 inline vector unsigned int
342 vec_add (vector unsigned int a1, vector unsigned int a2)
344 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
348 vec_add (vector float a1, vector float a2)
350 return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
356 vec_vaddfp (vector float a1, vector float a2)
358 return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
363 inline vector signed int
364 vec_vadduwm (vector signed int a1, vector signed int a2)
366 return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
369 inline vector unsigned int
370 vec_vadduwm (vector signed int a1, vector unsigned int a2)
372 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
375 inline vector unsigned int
376 vec_vadduwm (vector unsigned int a1, vector signed int a2)
378 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
381 inline vector unsigned int
382 vec_vadduwm (vector unsigned int a1, vector unsigned int a2)
384 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
389 inline vector signed short
390 vec_vadduhm (vector signed short a1, vector signed short a2)
392 return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
395 inline vector unsigned short
396 vec_vadduhm (vector signed short a1, vector unsigned short a2)
398 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
401 inline vector unsigned short
402 vec_vadduhm (vector unsigned short a1, vector signed short a2)
404 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
407 inline vector unsigned short
408 vec_vadduhm (vector unsigned short a1, vector unsigned short a2)
410 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
415 inline vector signed char
416 vec_vaddubm (vector signed char a1, vector signed char a2)
418 return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
421 inline vector unsigned char
422 vec_vaddubm (vector signed char a1, vector unsigned char a2)
424 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
427 inline vector unsigned char
428 vec_vaddubm (vector unsigned char a1, vector signed char a2)
430 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
433 inline vector unsigned char
434 vec_vaddubm (vector unsigned char a1, vector unsigned char a2)
436 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
441 inline vector unsigned int
442 vec_addc (vector unsigned int a1, vector unsigned int a2)
444 return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2);
449 inline vector unsigned char
450 vec_adds (vector signed char a1, vector unsigned char a2)
452 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
455 inline vector unsigned char
456 vec_adds (vector unsigned char a1, vector signed char a2)
458 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
461 inline vector unsigned char
462 vec_adds (vector unsigned char a1, vector unsigned char a2)
464 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
467 inline vector signed char
468 vec_adds (vector signed char a1, vector signed char a2)
470 return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
473 inline vector unsigned short
474 vec_adds (vector signed short a1, vector unsigned short a2)
476 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
479 inline vector unsigned short
480 vec_adds (vector unsigned short a1, vector signed short a2)
482 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
485 inline vector unsigned short
486 vec_adds (vector unsigned short a1, vector unsigned short a2)
488 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
491 inline vector signed short
492 vec_adds (vector signed short a1, vector signed short a2)
494 return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
497 inline vector unsigned int
498 vec_adds (vector signed int a1, vector unsigned int a2)
500 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
503 inline vector unsigned int
504 vec_adds (vector unsigned int a1, vector signed int a2)
506 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
509 inline vector unsigned int
510 vec_adds (vector unsigned int a1, vector unsigned int a2)
512 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
515 inline vector signed int
516 vec_adds (vector signed int a1, vector signed int a2)
518 return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
523 inline vector signed int
524 vec_vaddsws (vector signed int a1, vector signed int a2)
526 return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
531 inline vector unsigned int
532 vec_vadduws (vector signed int a1, vector unsigned int a2)
534 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
537 inline vector unsigned int
538 vec_vadduws (vector unsigned int a1, vector signed int a2)
540 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
543 inline vector unsigned int
544 vec_vadduws (vector unsigned int a1, vector unsigned int a2)
546 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
550 inline vector signed short
551 vec_vaddshs (vector signed short a1, vector signed short a2)
553 return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
558 inline vector unsigned short
559 vec_vadduhs (vector signed short a1, vector unsigned short a2)
561 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
564 inline vector unsigned short
565 vec_vadduhs (vector unsigned short a1, vector signed short a2)
567 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
570 inline vector unsigned short
571 vec_vadduhs (vector unsigned short a1, vector unsigned short a2)
573 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
578 inline vector signed char
579 vec_vaddsbs (vector signed char a1, vector signed char a2)
581 return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
586 inline vector unsigned char
587 vec_vaddubs (vector signed char a1, vector unsigned char a2)
589 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
592 inline vector unsigned char
593 vec_vaddubs (vector unsigned char a1, vector signed char a2)
595 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
598 inline vector unsigned char
599 vec_vaddubs (vector unsigned char a1, vector unsigned char a2)
601 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
607 vec_and (vector float a1, vector float a2)
609 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
613 vec_and (vector float a1, vector signed int a2)
615 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
619 vec_and (vector signed int a1, vector float a2)
621 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
624 inline vector signed int
625 vec_and (vector signed int a1, vector signed int a2)
627 return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
630 inline vector unsigned int
631 vec_and (vector signed int a1, vector unsigned int a2)
633 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
636 inline vector unsigned int
637 vec_and (vector unsigned int a1, vector signed int a2)
639 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
642 inline vector unsigned int
643 vec_and (vector unsigned int a1, vector unsigned int a2)
645 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
648 inline vector signed short
649 vec_and (vector signed short a1, vector signed short a2)
651 return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
654 inline vector unsigned short
655 vec_and (vector signed short a1, vector unsigned short a2)
657 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
660 inline vector unsigned short
661 vec_and (vector unsigned short a1, vector signed short a2)
663 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
666 inline vector unsigned short
667 vec_and (vector unsigned short a1, vector unsigned short a2)
669 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
672 inline vector signed char
673 vec_and (vector signed char a1, vector signed char a2)
675 return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
678 inline vector unsigned char
679 vec_and (vector signed char a1, vector unsigned char a2)
681 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
684 inline vector unsigned char
685 vec_and (vector unsigned char a1, vector signed char a2)
687 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
690 inline vector unsigned char
691 vec_and (vector unsigned char a1, vector unsigned char a2)
693 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
699 vec_andc (vector float a1, vector float a2)
701 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
705 vec_andc (vector float a1, vector signed int a2)
707 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
711 vec_andc (vector signed int a1, vector float a2)
713 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
716 inline vector signed int
717 vec_andc (vector signed int a1, vector signed int a2)
719 return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
722 inline vector unsigned int
723 vec_andc (vector signed int a1, vector unsigned int a2)
725 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
728 inline vector unsigned int
729 vec_andc (vector unsigned int a1, vector signed int a2)
731 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
734 inline vector unsigned int
735 vec_andc (vector unsigned int a1, vector unsigned int a2)
737 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
740 inline vector signed short
741 vec_andc (vector signed short a1, vector signed short a2)
743 return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
746 inline vector unsigned short
747 vec_andc (vector signed short a1, vector unsigned short a2)
749 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
752 inline vector unsigned short
753 vec_andc (vector unsigned short a1, vector signed short a2)
755 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
758 inline vector unsigned short
759 vec_andc (vector unsigned short a1, vector unsigned short a2)
761 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
764 inline vector signed char
765 vec_andc (vector signed char a1, vector signed char a2)
767 return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
770 inline vector unsigned char
771 vec_andc (vector signed char a1, vector unsigned char a2)
773 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
776 inline vector unsigned char
777 vec_andc (vector unsigned char a1, vector signed char a2)
779 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
782 inline vector unsigned char
783 vec_andc (vector unsigned char a1, vector unsigned char a2)
785 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
790 inline vector unsigned char
791 vec_avg (vector unsigned char a1, vector unsigned char a2)
793 return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
796 inline vector signed char
797 vec_avg (vector signed char a1, vector signed char a2)
799 return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
802 inline vector unsigned short
803 vec_avg (vector unsigned short a1, vector unsigned short a2)
805 return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
808 inline vector signed short
809 vec_avg (vector signed short a1, vector signed short a2)
811 return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
814 inline vector unsigned int
815 vec_avg (vector unsigned int a1, vector unsigned int a2)
817 return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
820 inline vector signed int
821 vec_avg (vector signed int a1, vector signed int a2)
823 return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
828 inline vector signed int
829 vec_vavgsw (vector signed int a1, vector signed int a2)
831 return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
836 inline vector unsigned int
837 vec_vavguw (vector unsigned int a1, vector unsigned int a2)
839 return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
844 inline vector signed short
845 vec_vavgsh (vector signed short a1, vector signed short a2)
847 return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
852 inline vector unsigned short
853 vec_vavguh (vector unsigned short a1, vector unsigned short a2)
855 return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
860 inline vector signed char
861 vec_vavgsb (vector signed char a1, vector signed char a2)
863 return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
868 inline vector unsigned char
869 vec_vavgub (vector unsigned char a1, vector unsigned char a2)
871 return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
877 vec_ceil (vector float a1)
879 return (vector float) __builtin_altivec_vrfip ((vector float) a1);
884 inline vector signed int
885 vec_cmpb (vector float a1, vector float a2)
887 return (vector signed int) __builtin_altivec_vcmpbfp ((vector float) a1, (vector float) a2);
892 inline vector signed char
893 vec_cmpeq (vector signed char a1, vector signed char a2)
895 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
898 inline vector signed char
899 vec_cmpeq (vector unsigned char a1, vector unsigned char a2)
901 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
904 inline vector signed short
905 vec_cmpeq (vector signed short a1, vector signed short a2)
907 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
910 inline vector signed short
911 vec_cmpeq (vector unsigned short a1, vector unsigned short a2)
913 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
916 inline vector signed int
917 vec_cmpeq (vector signed int a1, vector signed int a2)
919 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
922 inline vector signed int
923 vec_cmpeq (vector unsigned int a1, vector unsigned int a2)
925 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
928 inline vector signed int
929 vec_cmpeq (vector float a1, vector float a2)
931 return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
936 inline vector signed int
937 vec_vcmpeqfp (vector float a1, vector float a2)
939 return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
944 inline vector signed int
945 vec_vcmpequw (vector signed int a1, vector signed int a2)
947 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
950 inline vector signed int
951 vec_vcmpequw (vector unsigned int a1, vector unsigned int a2)
953 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
958 inline vector signed short
959 vec_vcmpequh (vector signed short a1, vector signed short a2)
961 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
964 inline vector signed short
965 vec_vcmpequh (vector unsigned short a1, vector unsigned short a2)
967 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
972 inline vector signed char
973 vec_vcmpequb (vector signed char a1, vector signed char a2)
975 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
978 inline vector signed char
979 vec_vcmpequb (vector unsigned char a1, vector unsigned char a2)
981 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
986 inline vector signed int
987 vec_cmpge (vector float a1, vector float a2)
989 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
994 inline vector signed char
995 vec_cmpgt (vector unsigned char a1, vector unsigned char a2)
997 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
1000 inline vector signed char
1001 vec_cmpgt (vector signed char a1, vector signed char a2)
1003 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
1006 inline vector signed short
1007 vec_cmpgt (vector unsigned short a1, vector unsigned short a2)
1009 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
1012 inline vector signed short
1013 vec_cmpgt (vector signed short a1, vector signed short a2)
1015 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
1018 inline vector signed int
1019 vec_cmpgt (vector unsigned int a1, vector unsigned int a2)
1021 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
1024 inline vector signed int
1025 vec_cmpgt (vector signed int a1, vector signed int a2)
1027 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
1030 inline vector signed int
1031 vec_cmpgt (vector float a1, vector float a2)
1033 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
1038 inline vector signed int
1039 vec_vcmpgtfp (vector float a1, vector float a2)
1041 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
1046 inline vector signed int
1047 vec_vcmpgtsw (vector signed int a1, vector signed int a2)
1049 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
1054 inline vector signed int
1055 vec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2)
1057 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
1062 inline vector signed short
1063 vec_cmpgtsh (vector signed short a1, vector signed short a2)
1065 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
1070 inline vector signed short
1071 vec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2)
1073 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
1078 inline vector signed char
1079 vec_vcmpgtsb (vector signed char a1, vector signed char a2)
1081 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
1086 inline vector signed char
1087 vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2)
1089 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
1094 inline vector signed int
1095 vec_cmple (vector float a1, vector float a2)
1097 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
1102 inline vector signed char
1103 vec_cmplt (vector unsigned char a1, vector unsigned char a2)
1105 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a2, (vector signed char) a1);
1108 inline vector signed char
1109 vec_cmplt (vector signed char a1, vector signed char a2)
1111 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a2, (vector signed char) a1);
1114 inline vector signed short
1115 vec_cmplt (vector unsigned short a1, vector unsigned short a2)
1117 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a2, (vector signed short) a1);
1120 inline vector signed short
1121 vec_cmplt (vector signed short a1, vector signed short a2)
1123 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a2, (vector signed short) a1);
1126 inline vector signed int
1127 vec_cmplt (vector unsigned int a1, vector unsigned int a2)
1129 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a2, (vector signed int) a1);
1132 inline vector signed int
1133 vec_cmplt (vector signed int a1, vector signed int a2)
1135 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a2, (vector signed int) a1);
1138 inline vector signed int
1139 vec_cmplt (vector float a1, vector float a2)
1141 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a2, (vector float) a1);
1147 vec_ctf (vector unsigned int a1, const char a2)
1149 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
1153 vec_ctf (vector signed int a1, const char a2)
1155 return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
1161 vec_vcfsx (vector signed int a1, const char a2)
1163 return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
1169 vec_vcfux (vector unsigned int a1, const char a2)
1171 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
1176 inline vector signed int
1177 vec_cts (vector float a1, const char a2)
1179 return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2);
1184 inline vector unsigned int
1185 vec_ctu (vector float a1, const char a2)
1187 return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2);
1193 vec_dss (const char a1)
1195 __builtin_altivec_dss (a1);
1203 __builtin_altivec_dssall ();
1209 vec_dst (vector unsigned char *a1, int a2, const char a3)
1211 __builtin_altivec_dst ((void *) a1, a2, a3);
1215 vec_dst (vector signed char *a1, int a2, const char a3)
1217 __builtin_altivec_dst ((void *) a1, a2, a3);
1221 vec_dst (vector unsigned short *a1, int a2, const char a3)
1223 __builtin_altivec_dst ((void *) a1, a2, a3);
1227 vec_dst (vector signed short *a1, int a2, const char a3)
1229 __builtin_altivec_dst ((void *) a1, a2, a3);
1233 vec_dst (vector unsigned int *a1, int a2, const char a3)
1235 __builtin_altivec_dst ((void *) a1, a2, a3);
1239 vec_dst (vector signed int *a1, int a2, const char a3)
1241 __builtin_altivec_dst ((void *) a1, a2, a3);
1245 vec_dst (vector float *a1, int a2, const char a3)
1247 __builtin_altivec_dst ((void *) a1, a2, a3);
1251 vec_dst (unsigned char *a1, int a2, const char a3)
1253 __builtin_altivec_dst ((void *) a1, a2, a3);
1257 vec_dst (signed char *a1, int a2, const char a3)
1259 __builtin_altivec_dst ((void *) a1, a2, a3);
1263 vec_dst (unsigned short *a1, int a2, const char a3)
1265 __builtin_altivec_dst ((void *) a1, a2, a3);
1269 vec_dst (signed short *a1, int a2, const char a3)
1271 __builtin_altivec_dst ((void *) a1, a2, a3);
1275 vec_dst (unsigned int *a1, int a2, const char a3)
1277 __builtin_altivec_dst ((void *) a1, a2, a3);
1281 vec_dst (signed int *a1, int a2, const char a3)
1283 __builtin_altivec_dst ((void *) a1, a2, a3);
1287 vec_dst (unsigned long *a1, int a2, const char a3)
1289 __builtin_altivec_dst ((void *) a1, a2, a3);
1293 vec_dst (signed long *a1, int a2, const char a3)
1295 __builtin_altivec_dst ((void *) a1, a2, a3);
1299 vec_dst (float *a1, int a2, const char a3)
1301 __builtin_altivec_dst ((void *) a1, a2, a3);
1307 vec_dstst (vector unsigned char *a1, int a2, const char a3)
1309 __builtin_altivec_dstst ((void *) a1, a2, a3);
1313 vec_dstst (vector signed char *a1, int a2, const char a3)
1315 __builtin_altivec_dstst ((void *) a1, a2, a3);
1319 vec_dstst (vector unsigned short *a1, int a2, const char a3)
1321 __builtin_altivec_dstst ((void *) a1, a2, a3);
1325 vec_dstst (vector signed short *a1, int a2, const char a3)
1327 __builtin_altivec_dstst ((void *) a1, a2, a3);
1331 vec_dstst (vector unsigned int *a1, int a2, const char a3)
1333 __builtin_altivec_dstst ((void *) a1, a2, a3);
1337 vec_dstst (vector signed int *a1, int a2, const char a3)
1339 __builtin_altivec_dstst ((void *) a1, a2, a3);
1343 vec_dstst (vector float *a1, int a2, const char a3)
1345 __builtin_altivec_dstst ((void *) a1, a2, a3);
1349 vec_dstst (unsigned char *a1, int a2, const char a3)
1351 __builtin_altivec_dstst ((void *) a1, a2, a3);
1355 vec_dstst (signed char *a1, int a2, const char a3)
1357 __builtin_altivec_dstst ((void *) a1, a2, a3);
1361 vec_dstst (unsigned short *a1, int a2, const char a3)
1363 __builtin_altivec_dstst ((void *) a1, a2, a3);
1367 vec_dstst (signed short *a1, int a2, const char a3)
1369 __builtin_altivec_dstst ((void *) a1, a2, a3);
1373 vec_dstst (unsigned int *a1, int a2, const char a3)
1375 __builtin_altivec_dstst ((void *) a1, a2, a3);
1379 vec_dstst (signed int *a1, int a2, const char a3)
1381 __builtin_altivec_dstst ((void *) a1, a2, a3);
1385 vec_dstst (unsigned long *a1, int a2, const char a3)
1387 __builtin_altivec_dstst ((void *) a1, a2, a3);
1391 vec_dstst (signed long *a1, int a2, const char a3)
1393 __builtin_altivec_dstst ((void *) a1, a2, a3);
1397 vec_dstst (float *a1, int a2, const char a3)
1399 __builtin_altivec_dstst ((void *) a1, a2, a3);
1405 vec_dststt (vector unsigned char *a1, int a2, const char a3)
1407 __builtin_altivec_dststt ((void *) a1, a2, a3);
1411 vec_dststt (vector signed char *a1, int a2, const char a3)
1413 __builtin_altivec_dststt ((void *) a1, a2, a3);
1417 vec_dststt (vector unsigned short *a1, int a2, const char a3)
1419 __builtin_altivec_dststt ((void *) a1, a2, a3);
1423 vec_dststt (vector signed short *a1, int a2, const char a3)
1425 __builtin_altivec_dststt ((void *) a1, a2, a3);
1429 vec_dststt (vector unsigned int *a1, int a2, const char a3)
1431 __builtin_altivec_dststt ((void *) a1, a2, a3);
1435 vec_dststt (vector signed int *a1, int a2, const char a3)
1437 __builtin_altivec_dststt ((void *) a1, a2, a3);
1441 vec_dststt (vector float *a1, int a2, const char a3)
1443 __builtin_altivec_dststt ((void *) a1, a2, a3);
1447 vec_dststt (unsigned char *a1, int a2, const char a3)
1449 __builtin_altivec_dststt ((void *) a1, a2, a3);
1453 vec_dststt (signed char *a1, int a2, const char a3)
1455 __builtin_altivec_dststt ((void *) a1, a2, a3);
1459 vec_dststt (unsigned short *a1, int a2, const char a3)
1461 __builtin_altivec_dststt ((void *) a1, a2, a3);
1465 vec_dststt (signed short *a1, int a2, const char a3)
1467 __builtin_altivec_dststt ((void *) a1, a2, a3);
1471 vec_dststt (unsigned int *a1, int a2, const char a3)
1473 __builtin_altivec_dststt ((void *) a1, a2, a3);
1477 vec_dststt (signed int *a1, int a2, const char a3)
1479 __builtin_altivec_dststt ((void *) a1, a2, a3);
1483 vec_dststt (unsigned long *a1, int a2, const char a3)
1485 __builtin_altivec_dststt ((void *) a1, a2, a3);
1489 vec_dststt (signed long *a1, int a2, const char a3)
1491 __builtin_altivec_dststt ((void *) a1, a2, a3);
1495 vec_dststt (float *a1, int a2, const char a3)
1497 __builtin_altivec_dststt ((void *) a1, a2, a3);
1503 vec_dstt (vector unsigned char *a1, int a2, const char a3)
1505 __builtin_altivec_dstt ((void *) a1, a2, a3);
1509 vec_dstt (vector signed char *a1, int a2, const char a3)
1511 __builtin_altivec_dstt ((void *) a1, a2, a3);
1515 vec_dstt (vector unsigned short *a1, int a2, const char a3)
1517 __builtin_altivec_dstt ((void *) a1, a2, a3);
1521 vec_dstt (vector signed short *a1, int a2, const char a3)
1523 __builtin_altivec_dstt ((void *) a1, a2, a3);
1527 vec_dstt (vector unsigned int *a1, int a2, const char a3)
1529 __builtin_altivec_dstt ((void *) a1, a2, a3);
1533 vec_dstt (vector signed int *a1, int a2, const char a3)
1535 __builtin_altivec_dstt ((void *) a1, a2, a3);
1539 vec_dstt (vector float *a1, int a2, const char a3)
1541 __builtin_altivec_dstt ((void *) a1, a2, a3);
1545 vec_dstt (unsigned char *a1, int a2, const char a3)
1547 __builtin_altivec_dstt ((void *) a1, a2, a3);
1551 vec_dstt (signed char *a1, int a2, const char a3)
1553 __builtin_altivec_dstt ((void *) a1, a2, a3);
1557 vec_dstt (unsigned short *a1, int a2, const char a3)
1559 __builtin_altivec_dstt ((void *) a1, a2, a3);
1563 vec_dstt (signed short *a1, int a2, const char a3)
1565 __builtin_altivec_dstt ((void *) a1, a2, a3);
1569 vec_dstt (unsigned int *a1, int a2, const char a3)
1571 __builtin_altivec_dstt ((void *) a1, a2, a3);
1575 vec_dstt (signed int *a1, int a2, const char a3)
1577 __builtin_altivec_dstt ((void *) a1, a2, a3);
1581 vec_dstt (unsigned long *a1, int a2, const char a3)
1583 __builtin_altivec_dstt ((void *) a1, a2, a3);
1587 vec_dstt (signed long *a1, int a2, const char a3)
1589 __builtin_altivec_dstt ((void *) a1, a2, a3);
1593 vec_dstt (float *a1, int a2, const char a3)
1595 __builtin_altivec_dstt ((void *) a1, a2, a3);
1601 vec_expte (vector float a1)
1603 return (vector float) __builtin_altivec_vexptefp ((vector float) a1);
1609 vec_floor (vector float a1)
1611 return (vector float) __builtin_altivec_vrfim ((vector float) a1);
1617 vec_ld (int a1, vector float *a2)
1619 return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
1623 vec_ld (int a1, float *a2)
1625 return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
1628 inline vector signed int
1629 vec_ld (int a1, vector signed int *a2)
1631 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1634 inline vector signed int
1635 vec_ld (int a1, signed int *a2)
1637 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1640 inline vector signed int
1641 vec_ld (int a1, signed long *a2)
1643 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1646 inline vector unsigned int
1647 vec_ld (int a1, vector unsigned int *a2)
1649 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
1652 inline vector unsigned int
1653 vec_ld (int a1, unsigned int *a2)
1655 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
1658 inline vector unsigned int
1659 vec_ld (int a1, unsigned long *a2)
1661 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
1664 inline vector signed short
1665 vec_ld (int a1, vector signed short *a2)
1667 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
1670 inline vector signed short
1671 vec_ld (int a1, signed short *a2)
1673 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
1676 inline vector unsigned short
1677 vec_ld (int a1, vector unsigned short *a2)
1679 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
1682 inline vector unsigned short
1683 vec_ld (int a1, unsigned short *a2)
1685 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
1688 inline vector signed char
1689 vec_ld (int a1, vector signed char *a2)
1691 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
1694 inline vector signed char
1695 vec_ld (int a1, signed char *a2)
1697 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
1700 inline vector unsigned char
1701 vec_ld (int a1, vector unsigned char *a2)
1703 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
1706 inline vector unsigned char
1707 vec_ld (int a1, unsigned char *a2)
1709 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
1714 inline vector signed char
1715 vec_lde (int a1, signed char *a2)
1717 return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
1720 inline vector unsigned char
1721 vec_lde (int a1, unsigned char *a2)
1723 return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
1726 inline vector signed short
1727 vec_lde (int a1, signed short *a2)
1729 return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
1732 inline vector unsigned short
1733 vec_lde (int a1, unsigned short *a2)
1735 return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
1739 vec_lde (int a1, float *a2)
1741 return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
1744 inline vector signed int
1745 vec_lde (int a1, signed int *a2)
1747 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1750 inline vector unsigned int
1751 vec_lde (int a1, unsigned int *a2)
1753 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1756 inline vector signed int
1757 vec_lde (int a1, signed long *a2)
1759 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1762 inline vector unsigned int
1763 vec_lde (int a1, unsigned long *a2)
1765 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1771 vec_lvewx (int a1, float *a2)
1773 return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
1776 inline vector signed int
1777 vec_lvewx (int a1, signed int *a2)
1779 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1782 inline vector unsigned int
1783 vec_lvewx (int a1, unsigned int *a2)
1785 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1788 inline vector signed int
1789 vec_lvewx (int a1, signed long *a2)
1791 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1794 inline vector unsigned int
1795 vec_lvewx (int a1, unsigned long *a2)
1797 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1802 inline vector signed short
1803 vec_lvehx (int a1, signed short *a2)
1805 return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
1808 inline vector unsigned short
1809 vec_lvehx (int a1, unsigned short *a2)
1811 return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
1816 inline vector signed char
1817 vec_lvebx (int a1, signed char *a2)
1819 return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
1822 inline vector unsigned char
1823 vec_lvebx (int a1, unsigned char *a2)
1825 return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
1831 vec_ldl (int a1, vector float *a2)
1833 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
1837 vec_ldl (int a1, float *a2)
1839 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
1842 inline vector signed int
1843 vec_ldl (int a1, vector signed int *a2)
1845 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
1848 inline vector signed int
1849 vec_ldl (int a1, signed int *a2)
1851 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
1854 inline vector signed int
1855 vec_ldl (int a1, signed long *a2)
1857 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
1860 inline vector unsigned int
1861 vec_ldl (int a1, vector unsigned int *a2)
1863 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
1866 inline vector unsigned int
1867 vec_ldl (int a1, unsigned int *a2)
1869 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
1872 inline vector unsigned int
1873 vec_ldl (int a1, unsigned long *a2)
1875 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
1878 inline vector signed short
1879 vec_ldl (int a1, vector signed short *a2)
1881 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
1884 inline vector signed short
1885 vec_ldl (int a1, signed short *a2)
1887 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
1890 inline vector unsigned short
1891 vec_ldl (int a1, vector unsigned short *a2)
1893 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
1896 inline vector unsigned short
1897 vec_ldl (int a1, unsigned short *a2)
1899 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
1902 inline vector signed char
1903 vec_ldl (int a1, vector signed char *a2)
1905 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
1908 inline vector signed char
1909 vec_ldl (int a1, signed char *a2)
1911 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
1914 inline vector unsigned char
1915 vec_ldl (int a1, vector unsigned char *a2)
1917 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
1920 inline vector unsigned char
1921 vec_ldl (int a1, unsigned char *a2)
1923 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
1929 vec_loge (vector float a1)
1931 return (vector float) __builtin_altivec_vlogefp ((vector float) a1);
1936 inline vector unsigned char
1937 vec_lvsl (int a1, unsigned char *a2)
1939 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1942 inline vector unsigned char
1943 vec_lvsl (int a1, signed char *a2)
1945 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1948 inline vector unsigned char
1949 vec_lvsl (int a1, unsigned short *a2)
1951 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1954 inline vector unsigned char
1955 vec_lvsl (int a1, signed short *a2)
1957 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1960 inline vector unsigned char
1961 vec_lvsl (int a1, unsigned int *a2)
1963 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1966 inline vector unsigned char
1967 vec_lvsl (int a1, signed int *a2)
1969 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1972 inline vector unsigned char
1973 vec_lvsl (int a1, unsigned long *a2)
1975 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1978 inline vector unsigned char
1979 vec_lvsl (int a1, signed long *a2)
1981 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1984 inline vector unsigned char
1985 vec_lvsl (int a1, float *a2)
1987 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1992 inline vector unsigned char
1993 vec_lvsr (int a1, unsigned char *a2)
1995 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
1998 inline vector unsigned char
1999 vec_lvsr (int a1, signed char *a2)
2001 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2004 inline vector unsigned char
2005 vec_lvsr (int a1, unsigned short *a2)
2007 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2010 inline vector unsigned char
2011 vec_lvsr (int a1, signed short *a2)
2013 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2016 inline vector unsigned char
2017 vec_lvsr (int a1, unsigned int *a2)
2019 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2022 inline vector unsigned char
2023 vec_lvsr (int a1, signed int *a2)
2025 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2028 inline vector unsigned char
2029 vec_lvsr (int a1, unsigned long *a2)
2031 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2034 inline vector unsigned char
2035 vec_lvsr (int a1, signed long *a2)
2037 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2040 inline vector unsigned char
2041 vec_lvsr (int a1, float *a2)
2043 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2049 vec_madd (vector float a1, vector float a2, vector float a3)
2051 return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
2057 inline vector signed short
2058 vec_madds (vector signed short a1, vector signed short a2, vector signed short a3)
2060 return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2065 inline vector unsigned char
2066 vec_max (vector signed char a1, vector unsigned char a2)
2068 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2071 inline vector unsigned char
2072 vec_max (vector unsigned char a1, vector signed char a2)
2074 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2077 inline vector unsigned char
2078 vec_max (vector unsigned char a1, vector unsigned char a2)
2080 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2083 inline vector signed char
2084 vec_max (vector signed char a1, vector signed char a2)
2086 return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2089 inline vector unsigned short
2090 vec_max (vector signed short a1, vector unsigned short a2)
2092 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2095 inline vector unsigned short
2096 vec_max (vector unsigned short a1, vector signed short a2)
2098 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2101 inline vector unsigned short
2102 vec_max (vector unsigned short a1, vector unsigned short a2)
2104 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2107 inline vector signed short
2108 vec_max (vector signed short a1, vector signed short a2)
2110 return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2113 inline vector unsigned int
2114 vec_max (vector signed int a1, vector unsigned int a2)
2116 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2119 inline vector unsigned int
2120 vec_max (vector unsigned int a1, vector signed int a2)
2122 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2125 inline vector unsigned int
2126 vec_max (vector unsigned int a1, vector unsigned int a2)
2128 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2131 inline vector signed int
2132 vec_max (vector signed int a1, vector signed int a2)
2134 return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2138 vec_max (vector float a1, vector float a2)
2140 return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
2146 vec_vmaxfp (vector float a1, vector float a2)
2148 return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
2153 inline vector signed int
2154 vec_vmaxsw (vector signed int a1, vector signed int a2)
2156 return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2161 inline vector unsigned int
2162 vec_vmaxuw (vector signed int a1, vector unsigned int a2)
2164 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2167 inline vector unsigned int
2168 vec_vmaxuw (vector unsigned int a1, vector signed int a2)
2170 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2173 inline vector unsigned int
2174 vec_vmaxuw (vector unsigned int a1, vector unsigned int a2)
2176 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2181 inline vector signed short
2182 vec_vmaxsh (vector signed short a1, vector signed short a2)
2184 return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2189 inline vector unsigned short
2190 vec_vmaxuh (vector signed short a1, vector unsigned short a2)
2192 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2195 inline vector unsigned short
2196 vec_vmaxuh (vector unsigned short a1, vector signed short a2)
2198 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2201 inline vector unsigned short
2202 vec_vmaxuh (vector unsigned short a1, vector unsigned short a2)
2204 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2209 inline vector signed char
2210 vec_vmaxsb (vector signed char a1, vector signed char a2)
2212 return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2217 inline vector unsigned char
2218 vec_vmaxub (vector signed char a1, vector unsigned char a2)
2220 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2223 inline vector unsigned char
2224 vec_vmaxub (vector unsigned char a1, vector signed char a2)
2226 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2229 inline vector unsigned char
2230 vec_vmaxub (vector unsigned char a1, vector unsigned char a2)
2232 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2237 inline vector signed char
2238 vec_mergeh (vector signed char a1, vector signed char a2)
2240 return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2243 inline vector unsigned char
2244 vec_mergeh (vector unsigned char a1, vector unsigned char a2)
2246 return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2249 inline vector signed short
2250 vec_mergeh (vector signed short a1, vector signed short a2)
2252 return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2255 inline vector unsigned short
2256 vec_mergeh (vector unsigned short a1, vector unsigned short a2)
2258 return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2262 vec_mergeh (vector float a1, vector float a2)
2264 return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2267 inline vector signed int
2268 vec_mergeh (vector signed int a1, vector signed int a2)
2270 return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2273 inline vector unsigned int
2274 vec_mergeh (vector unsigned int a1, vector unsigned int a2)
2276 return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2282 vec_vmrghw (vector float a1, vector float a2)
2284 return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2287 inline vector signed int
2288 vec_vmrghw (vector signed int a1, vector signed int a2)
2290 return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2293 inline vector unsigned int
2294 vec_vmrghw (vector unsigned int a1, vector unsigned int a2)
2296 return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2301 inline vector signed short
2302 vec_vmrghh (vector signed short a1, vector signed short a2)
2304 return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2307 inline vector unsigned short
2308 vec_vmrghh (vector unsigned short a1, vector unsigned short a2)
2310 return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2315 inline vector signed char
2316 vec_vmrghb (vector signed char a1, vector signed char a2)
2318 return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2321 inline vector unsigned char
2322 vec_vmrghb (vector unsigned char a1, vector unsigned char a2)
2324 return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2329 inline vector signed char
2330 vec_mergel (vector signed char a1, vector signed char a2)
2332 return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2335 inline vector unsigned char
2336 vec_mergel (vector unsigned char a1, vector unsigned char a2)
2338 return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2341 inline vector signed short
2342 vec_mergel (vector signed short a1, vector signed short a2)
2344 return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2347 inline vector unsigned short
2348 vec_mergel (vector unsigned short a1, vector unsigned short a2)
2350 return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2354 vec_mergel (vector float a1, vector float a2)
2356 return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2359 inline vector signed int
2360 vec_mergel (vector signed int a1, vector signed int a2)
2362 return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2365 inline vector unsigned int
2366 vec_mergel (vector unsigned int a1, vector unsigned int a2)
2368 return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2374 vec_vmrglw (vector float a1, vector float a2)
2376 return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2379 inline vector signed int
2380 vec_vmrglw (vector signed int a1, vector signed int a2)
2382 return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2385 inline vector unsigned int
2386 vec_vmrglw (vector unsigned int a1, vector unsigned int a2)
2388 return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2393 inline vector signed short
2394 vec_vmrglh (vector signed short a1, vector signed short a2)
2396 return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2399 inline vector unsigned short
2400 vec_vmrglh (vector unsigned short a1, vector unsigned short a2)
2402 return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2407 inline vector signed char
2408 vec_vmrglb (vector signed char a1, vector signed char a2)
2410 return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2413 inline vector unsigned char
2414 vec_vmrglb (vector unsigned char a1, vector unsigned char a2)
2416 return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2421 inline vector unsigned short
2424 return (vector unsigned short) __builtin_altivec_mfvscr ();
2429 inline vector unsigned char
2430 vec_min (vector signed char a1, vector unsigned char a2)
2432 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2435 inline vector unsigned char
2436 vec_min (vector unsigned char a1, vector signed char a2)
2438 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2441 inline vector unsigned char
2442 vec_min (vector unsigned char a1, vector unsigned char a2)
2444 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2447 inline vector signed char
2448 vec_min (vector signed char a1, vector signed char a2)
2450 return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
2453 inline vector unsigned short
2454 vec_min (vector signed short a1, vector unsigned short a2)
2456 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2459 inline vector unsigned short
2460 vec_min (vector unsigned short a1, vector signed short a2)
2462 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2465 inline vector unsigned short
2466 vec_min (vector unsigned short a1, vector unsigned short a2)
2468 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2471 inline vector signed short
2472 vec_min (vector signed short a1, vector signed short a2)
2474 return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
2477 inline vector unsigned int
2478 vec_min (vector signed int a1, vector unsigned int a2)
2480 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2483 inline vector unsigned int
2484 vec_min (vector unsigned int a1, vector signed int a2)
2486 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2489 inline vector unsigned int
2490 vec_min (vector unsigned int a1, vector unsigned int a2)
2492 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2495 inline vector signed int
2496 vec_min (vector signed int a1, vector signed int a2)
2498 return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
2502 vec_min (vector float a1, vector float a2)
2504 return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
2510 vec_vminfp (vector float a1, vector float a2)
2512 return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
2517 inline vector signed int
2518 vec_vminsw (vector signed int a1, vector signed int a2)
2520 return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
2525 inline vector unsigned int
2526 vec_vminuw (vector signed int a1, vector unsigned int a2)
2528 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2531 inline vector unsigned int
2532 vec_vminuw (vector unsigned int a1, vector signed int a2)
2534 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2537 inline vector unsigned int
2538 vec_vminuw (vector unsigned int a1, vector unsigned int a2)
2540 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2545 inline vector signed short
2546 vec_vminsh (vector signed short a1, vector signed short a2)
2548 return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
2553 inline vector unsigned short
2554 vec_vminuh (vector signed short a1, vector unsigned short a2)
2556 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2559 inline vector unsigned short
2560 vec_vminuh (vector unsigned short a1, vector signed short a2)
2562 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2565 inline vector unsigned short
2566 vec_vminuh (vector unsigned short a1, vector unsigned short a2)
2568 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2573 inline vector signed char
2574 vec_vminsb (vector signed char a1, vector signed char a2)
2576 return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
2581 inline vector unsigned char
2582 vec_vminub (vector signed char a1, vector unsigned char a2)
2584 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2587 inline vector unsigned char
2588 vec_vminub (vector unsigned char a1, vector signed char a2)
2590 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2593 inline vector unsigned char
2594 vec_vminub (vector unsigned char a1, vector unsigned char a2)
2596 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2601 inline vector signed short
2602 vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
2604 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2607 inline vector signed short
2608 vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
2610 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2613 inline vector signed short
2614 vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
2616 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2619 inline vector unsigned short
2620 vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
2622 return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2627 inline vector signed short
2628 vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
2630 return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2635 inline vector unsigned int
2636 vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
2638 return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2641 inline vector signed int
2642 vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
2644 return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2647 inline vector unsigned int
2648 vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2650 return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2653 inline vector signed int
2654 vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
2656 return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2661 inline vector signed int
2662 vec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3)
2664 return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2669 inline vector unsigned int
2670 vec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2672 return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2677 inline vector signed int
2678 vec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3)
2680 return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2685 inline vector unsigned int
2686 vec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
2688 return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2693 inline vector unsigned int
2694 vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2696 return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2699 inline vector signed int
2700 vec_msums (vector signed short a1, vector signed short a2, vector signed int a3)
2702 return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2707 inline vector signed int
2708 vec_vmsumshs (vector signed short a1, vector signed short a2, vector signed int a3)
2710 return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2715 inline vector unsigned int
2716 vec_vmsumuhs (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2718 return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2724 vec_mtvscr (vector signed int a1)
2726 __builtin_altivec_mtvscr ((vector signed int) a1);
2730 vec_mtvscr (vector unsigned int a1)
2732 __builtin_altivec_mtvscr ((vector signed int) a1);
2736 vec_mtvscr (vector signed short a1)
2738 __builtin_altivec_mtvscr ((vector signed int) a1);
2742 vec_mtvscr (vector unsigned short a1)
2744 __builtin_altivec_mtvscr ((vector signed int) a1);
2748 vec_mtvscr (vector signed char a1)
2750 __builtin_altivec_mtvscr ((vector signed int) a1);
2754 vec_mtvscr (vector unsigned char a1)
2756 __builtin_altivec_mtvscr ((vector signed int) a1);
2761 inline vector unsigned short
2762 vec_mule (vector unsigned char a1, vector unsigned char a2)
2764 return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
2767 inline vector signed short
2768 vec_mule (vector signed char a1, vector signed char a2)
2770 return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2);
2773 inline vector unsigned int
2774 vec_mule (vector unsigned short a1, vector unsigned short a2)
2776 return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
2779 inline vector signed int
2780 vec_mule (vector signed short a1, vector signed short a2)
2782 return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
2787 inline vector signed int
2788 vec_vmulesh (vector signed short a1, vector signed short a2)
2790 return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
2795 inline vector unsigned int
2796 vec_vmuleuh (vector unsigned short a1, vector unsigned short a2)
2798 return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
2802 inline vector unsigned short
2803 vec_vmuleub (vector unsigned char a1, vector unsigned char a2)
2805 return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
2810 inline vector unsigned short
2811 vec_mulo (vector unsigned char a1, vector unsigned char a2)
2813 return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
2816 inline vector signed short
2817 vec_mulo (vector signed char a1, vector signed char a2)
2819 return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
2822 inline vector unsigned int
2823 vec_mulo (vector unsigned short a1, vector unsigned short a2)
2825 return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
2828 inline vector signed int
2829 vec_mulo (vector signed short a1, vector signed short a2)
2831 return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
2836 inline vector signed int
2837 vec_vmulosh (vector signed short a1, vector signed short a2)
2839 return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
2844 inline vector unsigned int
2845 vec_vmulouh (vector unsigned short a1, vector unsigned short a2)
2847 return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
2852 inline vector signed short
2853 vec_vmulosb (vector signed char a1, vector signed char a2)
2855 return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
2860 inline vector unsigned short
2861 vec_vmuloub (vector unsigned char a1, vector unsigned char a2)
2863 return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
2869 vec_nmsub (vector float a1, vector float a2, vector float a3)
2871 return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3);
2877 vec_nor (vector float a1, vector float a2)
2879 return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2882 inline vector signed int
2883 vec_nor (vector signed int a1, vector signed int a2)
2885 return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2888 inline vector unsigned int
2889 vec_nor (vector unsigned int a1, vector unsigned int a2)
2891 return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2894 inline vector signed short
2895 vec_nor (vector signed short a1, vector signed short a2)
2897 return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2900 inline vector unsigned short
2901 vec_nor (vector unsigned short a1, vector unsigned short a2)
2903 return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2906 inline vector signed char
2907 vec_nor (vector signed char a1, vector signed char a2)
2909 return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2912 inline vector unsigned char
2913 vec_nor (vector unsigned char a1, vector unsigned char a2)
2915 return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2921 vec_or (vector float a1, vector float a2)
2923 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2927 vec_or (vector float a1, vector signed int a2)
2929 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2933 vec_or (vector signed int a1, vector float a2)
2935 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2938 inline vector signed int
2939 vec_or (vector signed int a1, vector signed int a2)
2941 return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2944 inline vector unsigned int
2945 vec_or (vector signed int a1, vector unsigned int a2)
2947 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2950 inline vector unsigned int
2951 vec_or (vector unsigned int a1, vector signed int a2)
2953 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2956 inline vector unsigned int
2957 vec_or (vector unsigned int a1, vector unsigned int a2)
2959 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2962 inline vector signed short
2963 vec_or (vector signed short a1, vector signed short a2)
2965 return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2968 inline vector unsigned short
2969 vec_or (vector signed short a1, vector unsigned short a2)
2971 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2974 inline vector unsigned short
2975 vec_or (vector unsigned short a1, vector signed short a2)
2977 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2980 inline vector unsigned short
2981 vec_or (vector unsigned short a1, vector unsigned short a2)
2983 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2986 inline vector signed char
2987 vec_or (vector signed char a1, vector signed char a2)
2989 return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2992 inline vector unsigned char
2993 vec_or (vector signed char a1, vector unsigned char a2)
2995 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2998 inline vector unsigned char
2999 vec_or (vector unsigned char a1, vector signed char a2)
3001 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3004 inline vector unsigned char
3005 vec_or (vector unsigned char a1, vector unsigned char a2)
3007 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3012 inline vector signed char
3013 vec_pack (vector signed short a1, vector signed short a2)
3015 return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3018 inline vector unsigned char
3019 vec_pack (vector unsigned short a1, vector unsigned short a2)
3021 return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3024 inline vector signed short
3025 vec_pack (vector signed int a1, vector signed int a2)
3027 return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3030 inline vector unsigned short
3031 vec_pack (vector unsigned int a1, vector unsigned int a2)
3033 return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3038 inline vector signed short
3039 vec_vpkuwum (vector signed int a1, vector signed int a2)
3041 return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3044 inline vector unsigned short
3045 vec_vpkuwum (vector unsigned int a1, vector unsigned int a2)
3047 return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3052 inline vector signed char
3053 vec_vpkuhum (vector signed short a1, vector signed short a2)
3055 return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3058 inline vector unsigned char
3059 vec_vpkuhum (vector unsigned short a1, vector unsigned short a2)
3061 return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3066 inline vector unsigned short
3067 vec_packpx (vector unsigned int a1, vector unsigned int a2)
3069 return (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2);
3074 inline vector unsigned char
3075 vec_packs (vector unsigned short a1, vector unsigned short a2)
3077 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3080 inline vector signed char
3081 vec_packs (vector signed short a1, vector signed short a2)
3083 return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
3086 inline vector unsigned short
3087 vec_packs (vector unsigned int a1, vector unsigned int a2)
3089 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3092 inline vector signed short
3093 vec_packs (vector signed int a1, vector signed int a2)
3095 return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
3100 inline vector signed short
3101 vec_vpkswss (vector signed int a1, vector signed int a2)
3103 return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
3108 inline vector unsigned short
3109 vec_vpkuwus (vector unsigned int a1, vector unsigned int a2)
3111 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3116 inline vector signed char
3117 vec_vpkshss (vector signed short a1, vector signed short a2)
3119 return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
3124 inline vector unsigned char
3125 vec_vpkuhus (vector unsigned short a1, vector unsigned short a2)
3127 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3132 inline vector unsigned char
3133 vec_packsu (vector unsigned short a1, vector unsigned short a2)
3135 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3138 inline vector unsigned char
3139 vec_packsu (vector signed short a1, vector signed short a2)
3141 return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
3144 inline vector unsigned short
3145 vec_packsu (vector unsigned int a1, vector unsigned int a2)
3147 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3150 inline vector unsigned short
3151 vec_packsu (vector signed int a1, vector signed int a2)
3153 return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
3158 inline vector unsigned short
3159 vec_vpkswus (vector signed int a1, vector signed int a2)
3161 return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
3166 inline vector unsigned char
3167 vec_vpkshus (vector signed short a1, vector signed short a2)
3169 return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
3175 vec_perm (vector float a1, vector float a2, vector unsigned char a3)
3177 return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3180 inline vector signed int
3181 vec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3)
3183 return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3186 inline vector unsigned int
3187 vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3)
3189 return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3192 inline vector signed short
3193 vec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3)
3195 return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3198 inline vector unsigned short
3199 vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3)
3201 return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3204 inline vector signed char
3205 vec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3)
3207 return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3210 inline vector unsigned char
3211 vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
3213 return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3219 vec_re (vector float a1)
3221 return (vector float) __builtin_altivec_vrefp ((vector float) a1);
3226 inline vector signed char
3227 vec_rl (vector signed char a1, vector unsigned char a2)
3229 return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3232 inline vector unsigned char
3233 vec_rl (vector unsigned char a1, vector unsigned char a2)
3235 return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3238 inline vector signed short
3239 vec_rl (vector signed short a1, vector unsigned short a2)
3241 return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3244 inline vector unsigned short
3245 vec_rl (vector unsigned short a1, vector unsigned short a2)
3247 return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3250 inline vector signed int
3251 vec_rl (vector signed int a1, vector unsigned int a2)
3253 return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3256 inline vector unsigned int
3257 vec_rl (vector unsigned int a1, vector unsigned int a2)
3259 return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3264 inline vector signed int
3265 vec_vrlw (vector signed int a1, vector unsigned int a2)
3267 return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3270 inline vector unsigned int
3271 vec_vrlw (vector unsigned int a1, vector unsigned int a2)
3273 return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3278 inline vector signed short
3279 vec_vrlh (vector signed short a1, vector unsigned short a2)
3281 return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3284 inline vector unsigned short
3285 vec_vrlh (vector unsigned short a1, vector unsigned short a2)
3287 return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3292 inline vector signed char
3293 vec_vrlb (vector signed char a1, vector unsigned char a2)
3295 return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3298 inline vector unsigned char
3299 vec_vrlb (vector unsigned char a1, vector unsigned char a2)
3301 return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3307 vec_round (vector float a1)
3309 return (vector float) __builtin_altivec_vrfin ((vector float) a1);
3315 vec_rsqrte (vector float a1)
3317 return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1);
3323 vec_sel (vector float a1, vector float a2, vector signed int a3)
3325 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3329 vec_sel (vector float a1, vector float a2, vector unsigned int a3)
3331 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3334 inline vector signed int
3335 vec_sel (vector signed int a1, vector signed int a2, vector signed int a3)
3337 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3340 inline vector signed int
3341 vec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3)
3343 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3346 inline vector unsigned int
3347 vec_sel (vector unsigned int a1, vector unsigned int a2, vector signed int a3)
3349 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3352 inline vector unsigned int
3353 vec_sel (vector unsigned int a1, vector unsigned int a2, vector unsigned int a3)
3355 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3358 inline vector signed short
3359 vec_sel (vector signed short a1, vector signed short a2, vector signed short a3)
3361 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3364 inline vector signed short
3365 vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3)
3367 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3370 inline vector unsigned short
3371 vec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3)
3373 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3376 inline vector unsigned short
3377 vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
3379 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3382 inline vector signed char
3383 vec_sel (vector signed char a1, vector signed char a2, vector signed char a3)
3385 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3388 inline vector signed char
3389 vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3)
3391 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3394 inline vector unsigned char
3395 vec_sel (vector unsigned char a1, vector unsigned char a2, vector signed char a3)
3397 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3400 inline vector unsigned char
3401 vec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
3403 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3408 inline vector signed char
3409 vec_sl (vector signed char a1, vector unsigned char a2)
3411 return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3414 inline vector unsigned char
3415 vec_sl (vector unsigned char a1, vector unsigned char a2)
3417 return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3420 inline vector signed short
3421 vec_sl (vector signed short a1, vector unsigned short a2)
3423 return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3426 inline vector unsigned short
3427 vec_sl (vector unsigned short a1, vector unsigned short a2)
3429 return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3432 inline vector signed int
3433 vec_sl (vector signed int a1, vector unsigned int a2)
3435 return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3438 inline vector unsigned int
3439 vec_sl (vector unsigned int a1, vector unsigned int a2)
3441 return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3446 inline vector signed int
3447 vec_vslw (vector signed int a1, vector unsigned int a2)
3449 return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3452 inline vector unsigned int
3453 vec_vslw (vector unsigned int a1, vector unsigned int a2)
3455 return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3460 inline vector signed short
3461 vec_vslh (vector signed short a1, vector unsigned short a2)
3463 return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3466 inline vector unsigned short
3467 vec_vslh (vector unsigned short a1, vector unsigned short a2)
3469 return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3474 inline vector signed char
3475 vec_vslb (vector signed char a1, vector unsigned char a2)
3477 return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3480 inline vector unsigned char
3481 vec_vslb (vector unsigned char a1, vector unsigned char a2)
3483 return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3489 vec_sld (vector float a1, vector float a2, const char a3)
3491 return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3494 inline vector signed int
3495 vec_sld (vector signed int a1, vector signed int a2, const char a3)
3497 return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3500 inline vector unsigned int
3501 vec_sld (vector unsigned int a1, vector unsigned int a2, const char a3)
3503 return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3506 inline vector signed short
3507 vec_sld (vector signed short a1, vector signed short a2, const char a3)
3509 return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3512 inline vector unsigned short
3513 vec_sld (vector unsigned short a1, vector unsigned short a2, const char a3)
3515 return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3518 inline vector signed char
3519 vec_sld (vector signed char a1, vector signed char a2, const char a3)
3521 return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3524 inline vector unsigned char
3525 vec_sld (vector unsigned char a1, vector unsigned char a2, const char a3)
3527 return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3532 inline vector signed int
3533 vec_sll (vector signed int a1, vector unsigned int a2)
3535 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3538 inline vector signed int
3539 vec_sll (vector signed int a1, vector unsigned short a2)
3541 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3544 inline vector signed int
3545 vec_sll (vector signed int a1, vector unsigned char a2)
3547 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3550 inline vector unsigned int
3551 vec_sll (vector unsigned int a1, vector unsigned int a2)
3553 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3556 inline vector unsigned int
3557 vec_sll (vector unsigned int a1, vector unsigned short a2)
3559 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3562 inline vector unsigned int
3563 vec_sll (vector unsigned int a1, vector unsigned char a2)
3565 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3568 inline vector signed short
3569 vec_sll (vector signed short a1, vector unsigned int a2)
3571 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3574 inline vector signed short
3575 vec_sll (vector signed short a1, vector unsigned short a2)
3577 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3580 inline vector signed short
3581 vec_sll (vector signed short a1, vector unsigned char a2)
3583 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3586 inline vector unsigned short
3587 vec_sll (vector unsigned short a1, vector unsigned int a2)
3589 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3592 inline vector unsigned short
3593 vec_sll (vector unsigned short a1, vector unsigned short a2)
3595 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3598 inline vector unsigned short
3599 vec_sll (vector unsigned short a1, vector unsigned char a2)
3601 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3604 inline vector signed char
3605 vec_sll (vector signed char a1, vector unsigned int a2)
3607 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3610 inline vector signed char
3611 vec_sll (vector signed char a1, vector unsigned short a2)
3613 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3616 inline vector signed char
3617 vec_sll (vector signed char a1, vector unsigned char a2)
3619 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3622 inline vector unsigned char
3623 vec_sll (vector unsigned char a1, vector unsigned int a2)
3625 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3628 inline vector unsigned char
3629 vec_sll (vector unsigned char a1, vector unsigned short a2)
3631 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3634 inline vector unsigned char
3635 vec_sll (vector unsigned char a1, vector unsigned char a2)
3637 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3643 vec_slo (vector float a1, vector signed char a2)
3645 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3649 vec_slo (vector float a1, vector unsigned char a2)
3651 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3654 inline vector signed int
3655 vec_slo (vector signed int a1, vector signed char a2)
3657 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3660 inline vector signed int
3661 vec_slo (vector signed int a1, vector unsigned char a2)
3663 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3666 inline vector unsigned int
3667 vec_slo (vector unsigned int a1, vector signed char a2)
3669 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3672 inline vector unsigned int
3673 vec_slo (vector unsigned int a1, vector unsigned char a2)
3675 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3678 inline vector signed short
3679 vec_slo (vector signed short a1, vector signed char a2)
3681 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3684 inline vector signed short
3685 vec_slo (vector signed short a1, vector unsigned char a2)
3687 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3690 inline vector unsigned short
3691 vec_slo (vector unsigned short a1, vector signed char a2)
3693 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3696 inline vector unsigned short
3697 vec_slo (vector unsigned short a1, vector unsigned char a2)
3699 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3702 inline vector signed char
3703 vec_slo (vector signed char a1, vector signed char a2)
3705 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3708 inline vector signed char
3709 vec_slo (vector signed char a1, vector unsigned char a2)
3711 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3714 inline vector unsigned char
3715 vec_slo (vector unsigned char a1, vector signed char a2)
3717 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3720 inline vector unsigned char
3721 vec_slo (vector unsigned char a1, vector unsigned char a2)
3723 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3728 inline vector signed char
3729 vec_splat (vector signed char a1, const char a2)
3731 return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
3734 inline vector unsigned char
3735 vec_splat (vector unsigned char a1, const char a2)
3737 return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
3740 inline vector signed short
3741 vec_splat (vector signed short a1, const char a2)
3743 return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
3746 inline vector unsigned short
3747 vec_splat (vector unsigned short a1, const char a2)
3749 return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
3753 vec_splat (vector float a1, const char a2)
3755 return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3758 inline vector signed int
3759 vec_splat (vector signed int a1, const char a2)
3761 return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3764 inline vector unsigned int
3765 vec_splat (vector unsigned int a1, const char a2)
3767 return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3773 vec_vspltw (vector float a1, const char a2)
3775 return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3778 inline vector signed int
3779 vec_vspltw (vector signed int a1, const char a2)
3781 return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3784 inline vector unsigned int
3785 vec_vspltw (vector unsigned int a1, const char a2)
3787 return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3792 inline vector signed short
3793 vec_vsplth (vector signed short a1, const char a2)
3795 return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
3798 inline vector unsigned short
3799 vec_vsplth (vector unsigned short a1, const char a2)
3801 return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
3806 inline vector signed char
3807 vec_vspltb (vector signed char a1, const char a2)
3809 return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
3812 inline vector unsigned char
3813 vec_vspltb (vector unsigned char a1, const char a2)
3815 return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
3820 inline vector signed char
3821 vec_splat_s8 (const char a1)
3823 return (vector signed char) __builtin_altivec_vspltisb (a1);
3828 inline vector signed short
3829 vec_splat_s16 (const char a1)
3831 return (vector signed short) __builtin_altivec_vspltish (a1);
3836 inline vector signed int
3837 vec_splat_s32 (const char a1)
3839 return (vector signed int) __builtin_altivec_vspltisw (a1);
3844 inline vector unsigned char
3845 vec_splat_u8 (const char a1)
3847 return (vector unsigned char) __builtin_altivec_vspltisb (a1);
3852 inline vector unsigned short
3853 vec_splat_u16 (const char a1)
3855 return (vector unsigned short) __builtin_altivec_vspltish (a1);
3860 inline vector unsigned int
3861 vec_splat_u32 (const char a1)
3863 return (vector unsigned int) __builtin_altivec_vspltisw (a1);
3868 inline vector signed char
3869 vec_sr (vector signed char a1, vector unsigned char a2)
3871 return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3874 inline vector unsigned char
3875 vec_sr (vector unsigned char a1, vector unsigned char a2)
3877 return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3880 inline vector signed short
3881 vec_sr (vector signed short a1, vector unsigned short a2)
3883 return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3886 inline vector unsigned short
3887 vec_sr (vector unsigned short a1, vector unsigned short a2)
3889 return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3892 inline vector signed int
3893 vec_sr (vector signed int a1, vector unsigned int a2)
3895 return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3898 inline vector unsigned int
3899 vec_sr (vector unsigned int a1, vector unsigned int a2)
3901 return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3906 inline vector signed int
3907 vec_vsrw (vector signed int a1, vector unsigned int a2)
3909 return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3912 inline vector unsigned int
3913 vec_vsrw (vector unsigned int a1, vector unsigned int a2)
3915 return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3920 inline vector signed short
3921 vec_vsrh (vector signed short a1, vector unsigned short a2)
3923 return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3926 inline vector unsigned short
3927 vec_vsrh (vector unsigned short a1, vector unsigned short a2)
3929 return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3934 inline vector signed char
3935 vec_vsrb (vector signed char a1, vector unsigned char a2)
3937 return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3940 inline vector unsigned char
3941 vec_vsrb (vector unsigned char a1, vector unsigned char a2)
3943 return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3948 inline vector signed char
3949 vec_sra (vector signed char a1, vector unsigned char a2)
3951 return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
3954 inline vector unsigned char
3955 vec_sra (vector unsigned char a1, vector unsigned char a2)
3957 return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
3960 inline vector signed short
3961 vec_sra (vector signed short a1, vector unsigned short a2)
3963 return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
3966 inline vector unsigned short
3967 vec_sra (vector unsigned short a1, vector unsigned short a2)
3969 return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
3972 inline vector signed int
3973 vec_sra (vector signed int a1, vector unsigned int a2)
3975 return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3978 inline vector unsigned int
3979 vec_sra (vector unsigned int a1, vector unsigned int a2)
3981 return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3986 inline vector signed int
3987 vec_vsraw (vector signed int a1, vector unsigned int a2)
3989 return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3992 inline vector unsigned int
3993 vec_vsraw (vector unsigned int a1, vector unsigned int a2)
3995 return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
4000 inline vector signed short
4001 vec_vsrah (vector signed short a1, vector unsigned short a2)
4003 return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
4006 inline vector unsigned short
4007 vec_vsrah (vector unsigned short a1, vector unsigned short a2)
4009 return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
4014 inline vector signed char
4015 vec_vsrab (vector signed char a1, vector unsigned char a2)
4017 return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
4020 inline vector unsigned char
4021 vec_vsrab (vector unsigned char a1, vector unsigned char a2)
4023 return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
4028 inline vector signed int
4029 vec_srl (vector signed int a1, vector unsigned int a2)
4031 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4034 inline vector signed int
4035 vec_srl (vector signed int a1, vector unsigned short a2)
4037 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4040 inline vector signed int
4041 vec_srl (vector signed int a1, vector unsigned char a2)
4043 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4046 inline vector unsigned int
4047 vec_srl (vector unsigned int a1, vector unsigned int a2)
4049 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4052 inline vector unsigned int
4053 vec_srl (vector unsigned int a1, vector unsigned short a2)
4055 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4058 inline vector unsigned int
4059 vec_srl (vector unsigned int a1, vector unsigned char a2)
4061 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4064 inline vector signed short
4065 vec_srl (vector signed short a1, vector unsigned int a2)
4067 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4070 inline vector signed short
4071 vec_srl (vector signed short a1, vector unsigned short a2)
4073 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4076 inline vector signed short
4077 vec_srl (vector signed short a1, vector unsigned char a2)
4079 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4082 inline vector unsigned short
4083 vec_srl (vector unsigned short a1, vector unsigned int a2)
4085 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4088 inline vector unsigned short
4089 vec_srl (vector unsigned short a1, vector unsigned short a2)
4091 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4094 inline vector unsigned short
4095 vec_srl (vector unsigned short a1, vector unsigned char a2)
4097 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4100 inline vector signed char
4101 vec_srl (vector signed char a1, vector unsigned int a2)
4103 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4106 inline vector signed char
4107 vec_srl (vector signed char a1, vector unsigned short a2)
4109 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4112 inline vector signed char
4113 vec_srl (vector signed char a1, vector unsigned char a2)
4115 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4118 inline vector unsigned char
4119 vec_srl (vector unsigned char a1, vector unsigned int a2)
4121 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4124 inline vector unsigned char
4125 vec_srl (vector unsigned char a1, vector unsigned short a2)
4127 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4130 inline vector unsigned char
4131 vec_srl (vector unsigned char a1, vector unsigned char a2)
4133 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4139 vec_sro (vector float a1, vector signed char a2)
4141 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4145 vec_sro (vector float a1, vector unsigned char a2)
4147 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4150 inline vector signed int
4151 vec_sro (vector signed int a1, vector signed char a2)
4153 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4156 inline vector signed int
4157 vec_sro (vector signed int a1, vector unsigned char a2)
4159 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4162 inline vector unsigned int
4163 vec_sro (vector unsigned int a1, vector signed char a2)
4165 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4168 inline vector unsigned int
4169 vec_sro (vector unsigned int a1, vector unsigned char a2)
4171 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4174 inline vector signed short
4175 vec_sro (vector signed short a1, vector signed char a2)
4177 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4180 inline vector signed short
4181 vec_sro (vector signed short a1, vector unsigned char a2)
4183 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4186 inline vector unsigned short
4187 vec_sro (vector unsigned short a1, vector signed char a2)
4189 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4192 inline vector unsigned short
4193 vec_sro (vector unsigned short a1, vector unsigned char a2)
4195 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4198 inline vector signed char
4199 vec_sro (vector signed char a1, vector signed char a2)
4201 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4204 inline vector signed char
4205 vec_sro (vector signed char a1, vector unsigned char a2)
4207 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4210 inline vector unsigned char
4211 vec_sro (vector unsigned char a1, vector signed char a2)
4213 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4216 inline vector unsigned char
4217 vec_sro (vector unsigned char a1, vector unsigned char a2)
4219 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4225 vec_st (vector float a1, int a2, void *a3)
4227 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4231 vec_st (vector signed int a1, int a2, void *a3)
4233 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4237 vec_st (vector unsigned int a1, int a2, void *a3)
4239 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4243 vec_st (vector signed short a1, int a2, void *a3)
4245 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4249 vec_st (vector unsigned short a1, int a2, void *a3)
4251 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4255 vec_st (vector signed char a1, int a2, void *a3)
4257 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4261 vec_st (vector unsigned char a1, int a2, void *a3)
4263 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4269 vec_ste (vector signed char a1, int a2, void *a3)
4271 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4275 vec_ste (vector unsigned char a1, int a2, void *a3)
4277 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4281 vec_ste (vector signed short a1, int a2, void *a3)
4283 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4287 vec_ste (vector unsigned short a1, int a2, void *a3)
4289 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4293 vec_ste (vector float a1, int a2, void *a3)
4295 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4299 vec_ste (vector signed int a1, int a2, void *a3)
4301 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4305 vec_ste (vector unsigned int a1, int a2, void *a3)
4307 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4313 vec_stvewx (vector float a1, int a2, void *a3)
4315 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4319 vec_stvewx (vector signed int a1, int a2, void *a3)
4321 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4325 vec_stvewx (vector unsigned int a1, int a2, void *a3)
4327 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4333 vec_stvehx (vector signed short a1, int a2, void *a3)
4335 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4339 vec_stvehx (vector unsigned short a1, int a2, void *a3)
4341 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4347 vec_stvebx (vector signed char a1, int a2, void *a3)
4349 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4353 vec_stvebx (vector unsigned char a1, int a2, void *a3)
4355 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4361 vec_stl (vector float a1, int a2, void *a3)
4363 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4367 vec_stl (vector signed int a1, int a2, void *a3)
4369 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4373 vec_stl (vector unsigned int a1, int a2, void *a3)
4375 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4379 vec_stl (vector signed short a1, int a2, void *a3)
4381 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4385 vec_stl (vector unsigned short a1, int a2, void *a3)
4387 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4391 vec_stl (vector signed char a1, int a2, void *a3)
4393 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4397 vec_stl (vector unsigned char a1, int a2, void *a3)
4399 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4404 inline vector signed char
4405 vec_sub (vector signed char a1, vector signed char a2)
4407 return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4410 inline vector unsigned char
4411 vec_sub (vector signed char a1, vector unsigned char a2)
4413 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4416 inline vector unsigned char
4417 vec_sub (vector unsigned char a1, vector signed char a2)
4419 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4422 inline vector unsigned char
4423 vec_sub (vector unsigned char a1, vector unsigned char a2)
4425 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4428 inline vector signed short
4429 vec_sub (vector signed short a1, vector signed short a2)
4431 return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4434 inline vector unsigned short
4435 vec_sub (vector signed short a1, vector unsigned short a2)
4437 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4440 inline vector unsigned short
4441 vec_sub (vector unsigned short a1, vector signed short a2)
4443 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4446 inline vector unsigned short
4447 vec_sub (vector unsigned short a1, vector unsigned short a2)
4449 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4452 inline vector signed int
4453 vec_sub (vector signed int a1, vector signed int a2)
4455 return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4458 inline vector unsigned int
4459 vec_sub (vector signed int a1, vector unsigned int a2)
4461 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4464 inline vector unsigned int
4465 vec_sub (vector unsigned int a1, vector signed int a2)
4467 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4470 inline vector unsigned int
4471 vec_sub (vector unsigned int a1, vector unsigned int a2)
4473 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4477 vec_sub (vector float a1, vector float a2)
4479 return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
4485 vec_vsubfp (vector float a1, vector float a2)
4487 return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
4492 inline vector signed int
4493 vec_vsubuwm (vector signed int a1, vector signed int a2)
4495 return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4498 inline vector unsigned int
4499 vec_vsubuwm (vector signed int a1, vector unsigned int a2)
4501 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4504 inline vector unsigned int
4505 vec_vsubuwm (vector unsigned int a1, vector signed int a2)
4507 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4510 inline vector unsigned int
4511 vec_vsubuwm (vector unsigned int a1, vector unsigned int a2)
4513 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4518 inline vector signed short
4519 vec_vsubuhm (vector signed short a1, vector signed short a2)
4521 return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4524 inline vector unsigned short
4525 vec_vsubuhm (vector signed short a1, vector unsigned short a2)
4527 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4530 inline vector unsigned short
4531 vec_vsubuhm (vector unsigned short a1, vector signed short a2)
4533 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4536 inline vector unsigned short
4537 vec_vsubuhm (vector unsigned short a1, vector unsigned short a2)
4539 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4544 inline vector signed char
4545 vec_vsububm (vector signed char a1, vector signed char a2)
4547 return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4550 inline vector unsigned char
4551 vec_vsububm (vector signed char a1, vector unsigned char a2)
4553 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4556 inline vector unsigned char
4557 vec_vsububm (vector unsigned char a1, vector signed char a2)
4559 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4562 inline vector unsigned char
4563 vec_vsububm (vector unsigned char a1, vector unsigned char a2)
4565 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4570 inline vector unsigned int
4571 vec_subc (vector unsigned int a1, vector unsigned int a2)
4573 return (vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) a1, (vector signed int) a2);
4578 inline vector unsigned char
4579 vec_subs (vector signed char a1, vector unsigned char a2)
4581 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4584 inline vector unsigned char
4585 vec_subs (vector unsigned char a1, vector signed char a2)
4587 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4590 inline vector unsigned char
4591 vec_subs (vector unsigned char a1, vector unsigned char a2)
4593 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4596 inline vector signed char
4597 vec_subs (vector signed char a1, vector signed char a2)
4599 return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
4602 inline vector unsigned short
4603 vec_subs (vector signed short a1, vector unsigned short a2)
4605 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4608 inline vector unsigned short
4609 vec_subs (vector unsigned short a1, vector signed short a2)
4611 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4614 inline vector unsigned short
4615 vec_subs (vector unsigned short a1, vector unsigned short a2)
4617 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4620 inline vector signed short
4621 vec_subs (vector signed short a1, vector signed short a2)
4623 return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
4626 inline vector unsigned int
4627 vec_subs (vector signed int a1, vector unsigned int a2)
4629 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4632 inline vector unsigned int
4633 vec_subs (vector unsigned int a1, vector signed int a2)
4635 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4638 inline vector unsigned int
4639 vec_subs (vector unsigned int a1, vector unsigned int a2)
4641 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4644 inline vector signed int
4645 vec_subs (vector signed int a1, vector signed int a2)
4647 return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
4652 inline vector signed int
4653 vec_vsubsws (vector signed int a1, vector signed int a2)
4655 return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
4660 inline vector unsigned int
4661 vec_vsubuws (vector signed int a1, vector unsigned int a2)
4663 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4666 inline vector unsigned int
4667 vec_vsubuws (vector unsigned int a1, vector signed int a2)
4669 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4672 inline vector unsigned int
4673 vec_vsubuws (vector unsigned int a1, vector unsigned int a2)
4675 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4680 inline vector signed short
4681 vec_vsubshs (vector signed short a1, vector signed short a2)
4683 return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
4688 inline vector unsigned short
4689 vec_vsubuhs (vector signed short a1, vector unsigned short a2)
4691 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4694 inline vector unsigned short
4695 vec_vsubuhs (vector unsigned short a1, vector signed short a2)
4697 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4702 inline vector unsigned short
4703 vec_vsubsuhs (vector signed short a1, vector unsigned short a2)
4705 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4708 inline vector unsigned short
4709 vec_vsubsuhs (vector unsigned short a1, vector signed short a2)
4711 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4714 inline vector unsigned short
4715 vec_vsubsuhs (vector unsigned short a1, vector unsigned short a2)
4717 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4722 inline vector signed char
4723 vec_vsubsbs (vector signed char a1, vector signed char a2)
4725 return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
4730 inline vector unsigned char
4731 vec_vsubsubs (vector signed char a1, vector unsigned char a2)
4733 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4736 inline vector unsigned char
4737 vec_vsubsubs (vector unsigned char a1, vector signed char a2)
4739 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4742 inline vector unsigned char
4743 vec_vsubsubs (vector unsigned char a1, vector unsigned char a2)
4745 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4750 inline vector unsigned int
4751 vec_sum4s (vector unsigned char a1, vector unsigned int a2)
4753 return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
4756 inline vector signed int
4757 vec_sum4s (vector signed char a1, vector signed int a2)
4759 return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
4762 inline vector signed int
4763 vec_sum4s (vector signed short a1, vector signed int a2)
4765 return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
4770 inline vector signed int
4771 vec_vsum4shss (vector signed short a1, vector signed int a2)
4773 return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
4778 inline vector signed int
4779 vec_vsum4sbs (vector signed char a1, vector signed int a2)
4781 return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
4786 inline vector unsigned int
4787 vec_vsum4ubs (vector unsigned char a1, vector unsigned int a2)
4789 return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
4794 inline vector signed int
4795 vec_sum2s (vector signed int a1, vector signed int a2)
4797 return (vector signed int) __builtin_altivec_vsum2sws ((vector signed int) a1, (vector signed int) a2);
4802 inline vector signed int
4803 vec_sums (vector signed int a1, vector signed int a2)
4805 return (vector signed int) __builtin_altivec_vsumsws ((vector signed int) a1, (vector signed int) a2);
4811 vec_trunc (vector float a1)
4813 return (vector float) __builtin_altivec_vrfiz ((vector float) a1);
4818 inline vector signed short
4819 vec_unpackh (vector signed char a1)
4821 return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
4824 inline vector signed int
4825 vec_unpackh (vector signed short a1)
4827 return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
4830 inline vector unsigned int
4831 vec_unpackh (vector unsigned short a1)
4833 return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
4838 inline vector signed int
4839 vec_vupkhsh (vector signed short a1)
4841 return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
4846 inline vector unsigned int
4847 vec_vupkhpx (vector unsigned short a1)
4849 return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
4854 inline vector signed short
4855 vec_vupkhsb (vector signed char a1)
4857 return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
4862 inline vector signed short
4863 vec_unpackl (vector signed char a1)
4865 return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
4868 inline vector unsigned int
4869 vec_unpackl (vector unsigned short a1)
4871 return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
4874 inline vector signed int
4875 vec_unpackl (vector signed short a1)
4877 return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
4882 inline vector unsigned int
4883 vec_vupklpx (vector unsigned short a1)
4885 return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
4890 inline vector signed int
4891 vec_vupklsh (vector signed short a1)
4893 return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
4898 inline vector signed short
4899 vec_vupklsb (vector signed char a1)
4901 return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
4907 vec_xor (vector float a1, vector float a2)
4909 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4913 vec_xor (vector float a1, vector signed int a2)
4915 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4919 vec_xor (vector signed int a1, vector float a2)
4921 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4924 inline vector signed int
4925 vec_xor (vector signed int a1, vector signed int a2)
4927 return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4930 inline vector unsigned int
4931 vec_xor (vector signed int a1, vector unsigned int a2)
4933 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4936 inline vector unsigned int
4937 vec_xor (vector unsigned int a1, vector signed int a2)
4939 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4942 inline vector unsigned int
4943 vec_xor (vector unsigned int a1, vector unsigned int a2)
4945 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4948 inline vector signed short
4949 vec_xor (vector signed short a1, vector signed short a2)
4951 return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4954 inline vector unsigned short
4955 vec_xor (vector signed short a1, vector unsigned short a2)
4957 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4960 inline vector unsigned short
4961 vec_xor (vector unsigned short a1, vector signed short a2)
4963 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4966 inline vector unsigned short
4967 vec_xor (vector unsigned short a1, vector unsigned short a2)
4969 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4972 inline vector signed char
4973 vec_xor (vector signed char a1, vector signed char a2)
4975 return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4978 inline vector unsigned char
4979 vec_xor (vector signed char a1, vector unsigned char a2)
4981 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4984 inline vector unsigned char
4985 vec_xor (vector unsigned char a1, vector signed char a2)
4987 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4990 inline vector unsigned char
4991 vec_xor (vector unsigned char a1, vector unsigned char a2)
4993 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4999 vec_all_eq (vector signed char a1, vector unsigned char a2)
5001 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2);
5005 vec_all_eq (vector signed char a1, vector signed char a2)
5007 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2);
5011 vec_all_eq (vector unsigned char a1, vector signed char a2)
5013 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5017 vec_all_eq (vector unsigned char a1, vector unsigned char a2)
5019 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5023 vec_all_eq (vector signed short a1, vector unsigned short a2)
5025 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5029 vec_all_eq (vector signed short a1, vector signed short a2)
5031 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5035 vec_all_eq (vector unsigned short a1, vector signed short a2)
5037 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5041 vec_all_eq (vector unsigned short a1, vector unsigned short a2)
5043 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5047 vec_all_eq (vector signed int a1, vector unsigned int a2)
5049 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5053 vec_all_eq (vector signed int a1, vector signed int a2)
5055 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5059 vec_all_eq (vector unsigned int a1, vector signed int a2)
5061 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5065 vec_all_eq (vector unsigned int a1, vector unsigned int a2)
5067 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5071 vec_all_eq (vector float a1, vector float a2)
5073 return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2);
5079 vec_all_ge (vector signed char a1, vector unsigned char a2)
5081 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5085 vec_all_ge (vector unsigned char a1, vector signed char a2)
5087 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5091 vec_all_ge (vector unsigned char a1, vector unsigned char a2)
5093 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5097 vec_all_ge (vector signed char a1, vector signed char a2)
5099 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5103 vec_all_ge (vector signed short a1, vector unsigned short a2)
5105 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5109 vec_all_ge (vector unsigned short a1, vector signed short a2)
5111 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5115 vec_all_ge (vector unsigned short a1, vector unsigned short a2)
5117 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5121 vec_all_ge (vector signed short a1, vector signed short a2)
5123 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5127 vec_all_ge (vector signed int a1, vector unsigned int a2)
5129 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5133 vec_all_ge (vector unsigned int a1, vector signed int a2)
5135 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5139 vec_all_ge (vector unsigned int a1, vector unsigned int a2)
5141 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5145 vec_all_ge (vector signed int a1, vector signed int a2)
5147 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5151 vec_all_ge (vector float a1, vector float a2)
5153 return __builtin_altivec_vcmpgefp_p (__CR6_LT, a1, a2);
5159 vec_all_gt (vector signed char a1, vector unsigned char a2)
5161 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5165 vec_all_gt (vector unsigned char a1, vector signed char a2)
5167 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5171 vec_all_gt (vector unsigned char a1, vector unsigned char a2)
5173 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5177 vec_all_gt (vector signed char a1, vector signed char a2)
5179 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5183 vec_all_gt (vector signed short a1, vector unsigned short a2)
5185 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5189 vec_all_gt (vector unsigned short a1, vector signed short a2)
5191 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5195 vec_all_gt (vector unsigned short a1, vector unsigned short a2)
5197 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5201 vec_all_gt (vector signed short a1, vector signed short a2)
5203 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5207 vec_all_gt (vector signed int a1, vector unsigned int a2)
5209 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5213 vec_all_gt (vector unsigned int a1, vector signed int a2)
5215 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5219 vec_all_gt (vector unsigned int a1, vector unsigned int a2)
5221 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5225 vec_all_gt (vector signed int a1, vector signed int a2)
5227 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5231 vec_all_gt (vector float a1, vector float a2)
5233 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2);
5239 vec_all_in (vector float a1, vector float a2)
5241 return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2);
5247 vec_all_le (vector signed char a1, vector unsigned char a2)
5249 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5253 vec_all_le (vector unsigned char a1, vector signed char a2)
5255 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5259 vec_all_le (vector unsigned char a1, vector unsigned char a2)
5261 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5265 vec_all_le (vector signed char a1, vector signed char a2)
5267 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5271 vec_all_le (vector signed short a1, vector unsigned short a2)
5273 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5277 vec_all_le (vector unsigned short a1, vector signed short a2)
5279 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5283 vec_all_le (vector unsigned short a1, vector unsigned short a2)
5285 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5289 vec_all_le (vector signed short a1, vector signed short a2)
5291 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5295 vec_all_le (vector signed int a1, vector unsigned int a2)
5297 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5301 vec_all_le (vector unsigned int a1, vector signed int a2)
5303 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5307 vec_all_le (vector unsigned int a1, vector unsigned int a2)
5309 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5313 vec_all_le (vector signed int a1, vector signed int a2)
5315 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5319 vec_all_le (vector float a1, vector float a2)
5321 return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1);
5327 vec_all_lt (vector signed char a1, vector unsigned char a2)
5329 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5333 vec_all_lt (vector unsigned char a1, vector signed char a2)
5335 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5339 vec_all_lt (vector unsigned char a1, vector unsigned char a2)
5341 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5345 vec_all_lt (vector signed char a1, vector signed char a2)
5347 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5351 vec_all_lt (vector signed short a1, vector unsigned short a2)
5353 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5357 vec_all_lt (vector unsigned short a1, vector signed short a2)
5359 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5363 vec_all_lt (vector unsigned short a1, vector unsigned short a2)
5365 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5369 vec_all_lt (vector signed short a1, vector signed short a2)
5371 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5375 vec_all_lt (vector signed int a1, vector unsigned int a2)
5377 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5381 vec_all_lt (vector unsigned int a1, vector signed int a2)
5383 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5387 vec_all_lt (vector unsigned int a1, vector unsigned int a2)
5389 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5393 vec_all_lt (vector signed int a1, vector signed int a2)
5395 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5399 vec_all_lt (vector float a1, vector float a2)
5401 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1);
5407 vec_all_nan (vector float a1)
5409 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
5415 vec_all_ne (vector signed char a1, vector unsigned char a2)
5417 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5421 vec_all_ne (vector signed char a1, vector signed char a2)
5423 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5427 vec_all_ne (vector unsigned char a1, vector signed char a2)
5429 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5433 vec_all_ne (vector unsigned char a1, vector unsigned char a2)
5435 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5439 vec_all_ne (vector signed short a1, vector unsigned short a2)
5441 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5445 vec_all_ne (vector signed short a1, vector signed short a2)
5447 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5451 vec_all_ne (vector unsigned short a1, vector signed short a2)
5453 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5457 vec_all_ne (vector unsigned short a1, vector unsigned short a2)
5459 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5463 vec_all_ne (vector signed int a1, vector unsigned int a2)
5465 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5469 vec_all_ne (vector signed int a1, vector signed int a2)
5471 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5475 vec_all_ne (vector unsigned int a1, vector signed int a2)
5477 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5481 vec_all_ne (vector unsigned int a1, vector unsigned int a2)
5483 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5487 vec_all_ne (vector float a1, vector float a2)
5489 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2);
5495 vec_all_nge (vector float a1, vector float a2)
5497 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2);
5503 vec_all_ngt (vector float a1, vector float a2)
5505 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2);
5511 vec_all_nle (vector float a1, vector float a2)
5513 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1);
5519 vec_all_nlt (vector float a1, vector float a2)
5521 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1);
5524 /* vec_all_numeric */
5527 vec_all_numeric (vector float a1)
5529 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
5535 vec_any_eq (vector signed char a1, vector unsigned char a2)
5537 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5541 vec_any_eq (vector signed char a1, vector signed char a2)
5543 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5547 vec_any_eq (vector unsigned char a1, vector signed char a2)
5549 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5553 vec_any_eq (vector unsigned char a1, vector unsigned char a2)
5555 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5559 vec_any_eq (vector signed short a1, vector unsigned short a2)
5561 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5565 vec_any_eq (vector signed short a1, vector signed short a2)
5567 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5571 vec_any_eq (vector unsigned short a1, vector signed short a2)
5573 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5577 vec_any_eq (vector unsigned short a1, vector unsigned short a2)
5579 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5583 vec_any_eq (vector signed int a1, vector unsigned int a2)
5585 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5589 vec_any_eq (vector signed int a1, vector signed int a2)
5591 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5595 vec_any_eq (vector unsigned int a1, vector signed int a2)
5597 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5601 vec_any_eq (vector unsigned int a1, vector unsigned int a2)
5603 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5607 vec_any_eq (vector float a1, vector float a2)
5609 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2);
5615 vec_any_ge (vector signed char a1, vector unsigned char a2)
5617 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5621 vec_any_ge (vector unsigned char a1, vector signed char a2)
5623 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5627 vec_any_ge (vector unsigned char a1, vector unsigned char a2)
5629 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5633 vec_any_ge (vector signed char a1, vector signed char a2)
5635 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5639 vec_any_ge (vector signed short a1, vector unsigned short a2)
5641 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5645 vec_any_ge (vector unsigned short a1, vector signed short a2)
5647 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5651 vec_any_ge (vector unsigned short a1, vector unsigned short a2)
5653 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5657 vec_any_ge (vector signed short a1, vector signed short a2)
5659 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5663 vec_any_ge (vector signed int a1, vector unsigned int a2)
5665 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5669 vec_any_ge (vector unsigned int a1, vector signed int a2)
5671 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5675 vec_any_ge (vector unsigned int a1, vector unsigned int a2)
5677 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5681 vec_any_ge (vector signed int a1, vector signed int a2)
5683 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5687 vec_any_ge (vector float a1, vector float a2)
5689 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2);
5695 vec_any_gt (vector signed char a1, vector unsigned char a2)
5697 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5701 vec_any_gt (vector unsigned char a1, vector signed char a2)
5703 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5707 vec_any_gt (vector unsigned char a1, vector unsigned char a2)
5709 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5713 vec_any_gt (vector signed char a1, vector signed char a2)
5715 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5719 vec_any_gt (vector signed short a1, vector unsigned short a2)
5721 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5725 vec_any_gt (vector unsigned short a1, vector signed short a2)
5727 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5731 vec_any_gt (vector unsigned short a1, vector unsigned short a2)
5733 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5737 vec_any_gt (vector signed short a1, vector signed short a2)
5739 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5743 vec_any_gt (vector signed int a1, vector unsigned int a2)
5745 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5749 vec_any_gt (vector unsigned int a1, vector signed int a2)
5751 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5755 vec_any_gt (vector unsigned int a1, vector unsigned int a2)
5757 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5761 vec_any_gt (vector signed int a1, vector signed int a2)
5763 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5767 vec_any_gt (vector float a1, vector float a2)
5769 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2);
5775 vec_any_le (vector signed char a1, vector unsigned char a2)
5777 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5781 vec_any_le (vector unsigned char a1, vector signed char a2)
5783 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5787 vec_any_le (vector unsigned char a1, vector unsigned char a2)
5789 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5793 vec_any_le (vector signed char a1, vector signed char a2)
5795 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5799 vec_any_le (vector signed short a1, vector unsigned short a2)
5801 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5805 vec_any_le (vector unsigned short a1, vector signed short a2)
5807 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5811 vec_any_le (vector unsigned short a1, vector unsigned short a2)
5813 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5817 vec_any_le (vector signed short a1, vector signed short a2)
5819 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5823 vec_any_le (vector signed int a1, vector unsigned int a2)
5825 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5829 vec_any_le (vector unsigned int a1, vector signed int a2)
5831 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5835 vec_any_le (vector unsigned int a1, vector unsigned int a2)
5837 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5841 vec_any_le (vector signed int a1, vector signed int a2)
5843 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5847 vec_any_le (vector float a1, vector float a2)
5849 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a2, a1);
5855 vec_any_lt (vector signed char a1, vector unsigned char a2)
5857 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5861 vec_any_lt (vector unsigned char a1, vector signed char a2)
5863 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5867 vec_any_lt (vector unsigned char a1, vector unsigned char a2)
5869 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5873 vec_any_lt (vector signed char a1, vector signed char a2)
5875 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5879 vec_any_lt (vector signed short a1, vector unsigned short a2)
5881 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5885 vec_any_lt (vector unsigned short a1, vector signed short a2)
5887 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5891 vec_any_lt (vector unsigned short a1, vector unsigned short a2)
5893 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5897 vec_any_lt (vector signed short a1, vector signed short a2)
5899 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5903 vec_any_lt (vector signed int a1, vector unsigned int a2)
5905 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5909 vec_any_lt (vector unsigned int a1, vector signed int a2)
5911 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5915 vec_any_lt (vector unsigned int a1, vector unsigned int a2)
5917 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5921 vec_any_lt (vector signed int a1, vector signed int a2)
5923 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5927 vec_any_lt (vector float a1, vector float a2)
5929 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1);
5935 vec_any_nan (vector float a1)
5937 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1);
5943 vec_any_ne (vector signed char a1, vector unsigned char a2)
5945 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5949 vec_any_ne (vector signed char a1, vector signed char a2)
5951 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5955 vec_any_ne (vector unsigned char a1, vector signed char a2)
5957 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5961 vec_any_ne (vector unsigned char a1, vector unsigned char a2)
5963 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5967 vec_any_ne (vector signed short a1, vector unsigned short a2)
5969 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5973 vec_any_ne (vector signed short a1, vector signed short a2)
5975 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5979 vec_any_ne (vector unsigned short a1, vector signed short a2)
5981 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5985 vec_any_ne (vector unsigned short a1, vector unsigned short a2)
5987 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5991 vec_any_ne (vector signed int a1, vector unsigned int a2)
5993 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5997 vec_any_ne (vector signed int a1, vector signed int a2)
5999 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
6003 vec_any_ne (vector unsigned int a1, vector signed int a2)
6005 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
6009 vec_any_ne (vector unsigned int a1, vector unsigned int a2)
6011 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
6015 vec_any_ne (vector float a1, vector float a2)
6017 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2);
6023 vec_any_nge (vector float a1, vector float a2)
6025 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2);
6031 vec_any_ngt (vector float a1, vector float a2)
6033 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2);
6039 vec_any_nle (vector float a1, vector float a2)
6041 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1);
6047 vec_any_nlt (vector float a1, vector float a2)
6049 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1);
6052 /* vec_any_numeric */
6055 vec_any_numeric (vector float a1)
6057 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1);
6063 vec_any_out (vector float a1, vector float a2)
6065 return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2);
6070 template<typename _Tp>
6071 struct __vec_step_help
6073 // All proper vector types will specialize _S_elem.
6077 struct __vec_step_help<vector signed short>
6079 static const int _S_elem = 8;
6083 struct __vec_step_help<vector unsigned short>
6085 static const int _S_elem = 8;
6089 struct __vec_step_help<vector signed int>
6091 static const int _S_elem = 4;
6095 struct __vec_step_help<vector unsigned int>
6097 static const int _S_elem = 4;
6101 struct __vec_step_help<vector unsigned char>
6103 static const int _S_elem = 16;
6107 struct __vec_step_help<vector signed char>
6109 static const int _S_elem = 16;
6113 struct __vec_step_help<vector float>
6115 static const int _S_elem = 4;
6118 #define vec_step(t) __vec_step_help<typeof(t)>::_S_elem
6122 /* "... and so I think no man in a century will suffer as greatly as
6125 #define vec_abs(a) \
6126 __ch (__un_args_eq (vector signed char, (a)), \
6127 ((vector signed char) __builtin_altivec_abs_v16qi ((vector signed char) (a))), \
6128 __ch (__un_args_eq (vector signed short, (a)), \
6129 ((vector signed short) __builtin_altivec_abs_v8hi ((vector signed short) (a))), \
6130 __ch (__un_args_eq (vector signed int, (a)), \
6131 ((vector signed int) __builtin_altivec_abs_v4si ((vector signed int) (a))), \
6132 __ch (__un_args_eq (vector float, (a)), \
6133 ((vector float) __builtin_altivec_abs_v4sf ((vector float) (a))), \
6134 __altivec_link_error_invalid_argument ()))))
6136 #define vec_abss(a) \
6137 __ch (__un_args_eq (vector signed char, (a)), \
6138 ((vector signed char) __builtin_altivec_abss_v16qi ((vector signed char) (a))), \
6139 __ch (__un_args_eq (vector signed short, (a)), \
6140 ((vector signed short) __builtin_altivec_abss_v8hi ((vector signed short) (a))), \
6141 __ch (__un_args_eq (vector signed int, (a)), \
6142 ((vector signed int) __builtin_altivec_abss_v4si ((vector signed int) (a))), \
6143 __altivec_link_error_invalid_argument ())))
6145 #define vec_step(t) \
6146 __ch (__builtin_types_compatible_p (typeof (t), vector signed int), 4, \
6147 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned int), 4, \
6148 __ch (__builtin_types_compatible_p (typeof (t), vector signed short), 8, \
6149 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned short), 8, \
6150 __ch (__builtin_types_compatible_p (typeof (t), vector signed char), 16, \
6151 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned char), 16, \
6152 __ch (__builtin_types_compatible_p (typeof (t), vector float), 4, \
6153 __altivec_link_error_invalid_argument ())))))))
6155 #define vec_vaddubm(a1, a2) \
6156 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6157 ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6158 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6159 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6160 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6161 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6162 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6163 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6164 __altivec_link_error_invalid_argument ()))))
6166 #define vec_vadduhm(a1, a2) \
6167 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6168 ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6169 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6170 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6171 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6172 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6173 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6174 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6175 __altivec_link_error_invalid_argument ()))))
6177 #define vec_vadduwm(a1, a2) \
6178 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6179 ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6180 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6181 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6182 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6183 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6184 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6185 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6186 __altivec_link_error_invalid_argument ()))))
6188 #define vec_vaddfp(a1, a2) \
6189 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6190 ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
6191 __altivec_link_error_invalid_argument ())
6193 #define vec_add(a1, a2) \
6194 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6195 ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6196 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6197 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6198 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6199 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6200 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6201 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6202 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6203 ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6204 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6205 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6206 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6207 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6208 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6209 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6210 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6211 ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6212 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6213 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6214 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6215 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6216 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6217 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6218 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6219 ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
6220 __altivec_link_error_invalid_argument ())))))))))))))
6222 #define vec_addc(a1, a2) \
6223 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6224 ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
6225 __altivec_link_error_invalid_argument ())
6227 #define vec_adds(a1, a2) \
6228 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6229 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6230 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6231 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6232 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6233 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6234 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6235 ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
6236 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6237 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6238 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6239 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6240 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6241 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6242 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6243 ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
6244 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6245 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6246 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6247 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6248 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6249 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6250 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6251 ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
6252 __altivec_link_error_invalid_argument ()))))))))))))
6254 #define vec_vaddsws(a1, a2) \
6255 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6256 ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
6257 __altivec_link_error_invalid_argument ())
6259 #define vec_vadduws(a1, a2) \
6260 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6261 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6262 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6263 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6264 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6265 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6266 __altivec_link_error_invalid_argument ())))
6268 #define vec_vaddshs(a1, a2) \
6269 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6270 ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
6271 __altivec_link_error_invalid_argument ())
6273 #define vec_vadduhs(a1, a2) \
6274 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6275 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6276 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6277 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6278 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6279 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6280 __altivec_link_error_invalid_argument ())))
6282 #define vec_vaddsbs(a1, a2) \
6283 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6284 ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
6285 __altivec_link_error_invalid_argument ())
6287 #define vec_vaddubs(a1, a2) \
6288 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6289 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6290 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6291 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6292 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6293 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6294 __altivec_link_error_invalid_argument ())))
6296 #define vec_and(a1, a2) \
6297 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6298 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6299 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
6300 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6301 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
6302 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6303 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6304 ((vector signed int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6305 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6306 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6307 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6308 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6309 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6310 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6311 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6312 ((vector signed short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6313 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6314 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6315 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6316 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6317 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6318 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6319 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6320 ((vector signed char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6321 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6322 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6323 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6324 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6325 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6326 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6327 __altivec_link_error_invalid_argument ())))))))))))))))
6329 #define vec_andc(a1, a2) \
6330 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6331 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6332 __ch (__bin_args_eq (vector float, (a1), vector unsigned int, (a2)), \
6333 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6334 __ch (__bin_args_eq (vector unsigned int, (a1), vector float, (a2)), \
6335 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6336 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
6337 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6338 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
6339 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6340 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6341 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6342 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6343 ((vector signed int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6344 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6345 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6346 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6347 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6348 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6349 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6350 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6351 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6352 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6353 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6354 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6355 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6356 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6357 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6358 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6359 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6360 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6361 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6362 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6363 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6364 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6365 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6366 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6367 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6368 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6369 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6370 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6371 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6372 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6373 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6374 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6375 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6376 __altivec_link_error_invalid_argument ())))))))))))))))))))))))
6378 #define vec_avg(a1, a2) \
6379 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6380 ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
6381 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6382 ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
6383 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6384 ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
6385 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6386 ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
6387 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6388 ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
6389 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6390 ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
6391 __altivec_link_error_invalid_argument ()))))))
6393 #define vec_vavgsw(a1, a2) \
6394 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6395 ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
6396 __altivec_link_error_invalid_argument ())
6398 #define vec_vavguw(a1, a2) \
6399 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6400 ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
6401 __altivec_link_error_invalid_argument ())
6403 #define vec_vavgsh(a1, a2) \
6404 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6405 ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
6406 __altivec_link_error_invalid_argument ())
6408 #define vec_vavguh(a1, a2) \
6409 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6410 ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
6411 __altivec_link_error_invalid_argument ())
6413 #define vec_vavgsb(a1, a2) \
6414 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6415 ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
6416 __altivec_link_error_invalid_argument ())
6418 #define vec_vavgub(a1, a2) \
6419 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6420 ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
6421 __altivec_link_error_invalid_argument ())
6423 #define vec_ceil(a1) __builtin_altivec_vrfip ((a1))
6425 #define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2))
6427 #define vec_cmpeq(a1, a2) \
6428 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6429 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6430 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6431 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6432 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6433 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6434 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6435 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6436 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6437 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6438 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6439 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6440 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6441 ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
6442 __altivec_link_error_invalid_argument ())))))))
6444 #define vec_vcmpeqfp(a1, a2) \
6445 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6446 ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
6447 __altivec_link_error_invalid_argument ())
6449 #define vec_vcmpequw(a1, a2) \
6450 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6451 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6452 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6453 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6454 __altivec_link_error_invalid_argument ()))
6456 #define vec_vcmpequh(a1, a2) \
6457 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6458 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6459 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6460 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6461 __altivec_link_error_invalid_argument ()))
6463 #define vec_vcmpequb(a1, a2) \
6464 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6465 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6466 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6467 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6468 __altivec_link_error_invalid_argument ()))
6470 #define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2))
6472 #define vec_cmpgt(a1, a2) \
6473 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6474 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
6475 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6476 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
6477 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6478 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
6479 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6480 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
6481 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6482 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
6483 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6484 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
6485 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6486 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
6487 __altivec_link_error_invalid_argument ())))))))
6489 #define vec_vcmpgtfp(a1, a2) \
6490 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6491 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
6492 __altivec_link_error_invalid_argument ())
6494 #define vec_vcmpgtsw(a1, a2) \
6495 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6496 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
6497 __altivec_link_error_invalid_argument ())
6499 #define vec_vcmpgtuw(a1, a2) \
6500 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6501 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
6502 __altivec_link_error_invalid_argument ())
6504 #define vec_vcmpgtsh(a1, a2) \
6505 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6506 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
6507 __altivec_link_error_invalid_argument ())
6509 #define vec_vcmpgtuh(a1, a2) \
6510 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6511 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
6512 __altivec_link_error_invalid_argument ())
6514 #define vec_vcmpgtsb(a1, a2) \
6515 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6516 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
6517 __altivec_link_error_invalid_argument ())
6519 #define vec_vcmpgtub(a1, a2) \
6520 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6521 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
6522 __altivec_link_error_invalid_argument ())
6524 #define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
6526 #define vec_cmplt(a2, a1) \
6527 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6528 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
6529 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6530 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
6531 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6532 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
6533 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6534 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
6535 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6536 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
6537 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6538 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
6539 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6540 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
6541 __altivec_link_error_invalid_argument ())))))))
6543 #define vec_ctf(a1, a2) \
6544 __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
6545 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6546 __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
6547 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6548 __ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
6549 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6550 __ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
6551 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6552 __altivec_link_error_invalid_argument ()))))
6554 #define vec_vcfsx(a1, a2) \
6555 __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
6556 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6557 __ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
6558 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6559 __altivec_link_error_invalid_argument ()))
6561 #define vec_vcfux(a1, a2) \
6562 __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
6563 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6564 __ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
6565 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6566 __altivec_link_error_invalid_argument ()))
6568 #define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
6570 #define vec_ctu(a1, a2) (vector unsigned int) __builtin_altivec_vctuxs ((a1), (a2))
6572 #define vec_dss(a1) __builtin_altivec_dss ((a1))
6574 #define vec_dssall() __builtin_altivec_dssall ()
6576 #define vec_dst(a1, a2, a3) \
6577 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6578 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6579 __ch (__un_args_eq (vector signed char, *(a1)), \
6580 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6581 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6582 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6583 __ch (__un_args_eq (vector signed short, *(a1)), \
6584 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6585 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6586 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6587 __ch (__un_args_eq (vector signed int, *(a1)), \
6588 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6589 __ch (__un_args_eq (vector float, *(a1)), \
6590 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6591 __ch (__un_args_eq (unsigned char, *(a1)), \
6592 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6593 __ch (__un_args_eq (signed char, *(a1)), \
6594 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6595 __ch (__un_args_eq (unsigned short, *(a1)), \
6596 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6597 __ch (__un_args_eq (signed short, *(a1)), \
6598 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6599 __ch (__un_args_eq (unsigned int, *(a1)), \
6600 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6601 __ch (__un_args_eq (signed int, *(a1)), \
6602 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6603 __ch (__un_args_eq (unsigned long, *(a1)), \
6604 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6605 __ch (__un_args_eq (signed long, *(a1)), \
6606 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6607 __ch (__un_args_eq (float, *(a1)), \
6608 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6609 __altivec_link_error_invalid_argument ()))))))))))))))))
6611 #define vec_dstst(a1, a2, a3) \
6612 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6613 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6614 __ch (__un_args_eq (vector signed char, *(a1)), \
6615 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6616 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6617 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6618 __ch (__un_args_eq (vector signed short, *(a1)), \
6619 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6620 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6621 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6622 __ch (__un_args_eq (vector signed int, *(a1)), \
6623 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6624 __ch (__un_args_eq (vector float, *(a1)), \
6625 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6626 __ch (__un_args_eq (unsigned char, *(a1)), \
6627 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6628 __ch (__un_args_eq (signed char, *(a1)), \
6629 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6630 __ch (__un_args_eq (unsigned short, *(a1)), \
6631 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6632 __ch (__un_args_eq (signed short, *(a1)), \
6633 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6634 __ch (__un_args_eq (unsigned int, *(a1)), \
6635 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6636 __ch (__un_args_eq (signed int, *(a1)), \
6637 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6638 __ch (__un_args_eq (unsigned long, *(a1)), \
6639 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6640 __ch (__un_args_eq (signed long, *(a1)), \
6641 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6642 __ch (__un_args_eq (float, *(a1)), \
6643 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6644 __altivec_link_error_invalid_argument ()))))))))))))))))
6646 #define vec_dststt(a1, a2, a3) \
6647 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6648 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6649 __ch (__un_args_eq (vector signed char, *(a1)), \
6650 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6651 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6652 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6653 __ch (__un_args_eq (vector signed short, *(a1)), \
6654 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6655 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6656 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6657 __ch (__un_args_eq (vector signed int, *(a1)), \
6658 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6659 __ch (__un_args_eq (vector float, *(a1)), \
6660 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6661 __ch (__un_args_eq (unsigned char, *(a1)), \
6662 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6663 __ch (__un_args_eq (signed char, *(a1)), \
6664 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6665 __ch (__un_args_eq (unsigned short, *(a1)), \
6666 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6667 __ch (__un_args_eq (signed short, *(a1)), \
6668 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6669 __ch (__un_args_eq (unsigned int, *(a1)), \
6670 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6671 __ch (__un_args_eq (signed int, *(a1)), \
6672 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6673 __ch (__un_args_eq (unsigned long, *(a1)), \
6674 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6675 __ch (__un_args_eq (signed long, *(a1)), \
6676 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6677 __ch (__un_args_eq (float, *(a1)), \
6678 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6679 __altivec_link_error_invalid_argument ()))))))))))))))))
6681 #define vec_dstt(a1, a2, a3) \
6682 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6683 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6684 __ch (__un_args_eq (vector signed char, *(a1)), \
6685 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6686 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6687 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6688 __ch (__un_args_eq (vector signed short, *(a1)), \
6689 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6690 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6691 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6692 __ch (__un_args_eq (vector signed int, *(a1)), \
6693 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6694 __ch (__un_args_eq (vector float, *(a1)), \
6695 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6696 __ch (__un_args_eq (unsigned char, *(a1)), \
6697 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6698 __ch (__un_args_eq (signed char, *(a1)), \
6699 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6700 __ch (__un_args_eq (unsigned short, *(a1)), \
6701 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6702 __ch (__un_args_eq (signed short, *(a1)), \
6703 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6704 __ch (__un_args_eq (unsigned int, *(a1)), \
6705 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6706 __ch (__un_args_eq (signed int, *(a1)), \
6707 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6708 __ch (__un_args_eq (unsigned long, *(a1)), \
6709 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6710 __ch (__un_args_eq (signed long, *(a1)), \
6711 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6712 __ch (__un_args_eq (float, *(a1)), \
6713 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6714 __altivec_link_error_invalid_argument ()))))))))))))))))
6716 #define vec_expte(a1) __builtin_altivec_vexptefp ((a1))
6718 #define vec_floor(a1) __builtin_altivec_vrfim (a1)
6720 #define vec_ld(a, b) \
6721 __ch (__un_args_eq (vector unsigned char, *(b)), \
6722 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
6723 __ch (__un_args_eq (unsigned char, *(b)), \
6724 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
6725 __ch (__un_args_eq (vector signed char, *(b)), \
6726 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
6727 __ch (__un_args_eq (signed char, *(b)), \
6728 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
6729 __ch (__un_args_eq (vector unsigned short, *(b)), \
6730 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
6731 __ch (__un_args_eq (unsigned short, *(b)), \
6732 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
6733 __ch (__un_args_eq (vector signed short, *(b)), \
6734 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
6735 __ch (__un_args_eq (signed short, *(b)), \
6736 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
6737 __ch (__un_args_eq (vector unsigned int, *(b)), \
6738 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
6739 __ch (__un_args_eq (unsigned int, *(b)), \
6740 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
6741 __ch (__un_args_eq (unsigned long, *(b)), \
6742 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
6743 __ch (__un_args_eq (vector signed int, *(b)), \
6744 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
6745 __ch (__un_args_eq (signed int, *(b)), \
6746 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
6747 __ch (__un_args_eq (signed long, *(b)), \
6748 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
6749 __ch (__un_args_eq (vector float, *(b)), \
6750 ((vector float) __builtin_altivec_lvx ((a), (b))), \
6751 __ch (__un_args_eq (float, *(b)), \
6752 ((vector float) __builtin_altivec_lvx ((a), (b))), \
6753 __altivec_link_error_invalid_argument ()))))))))))))))))
6755 #define vec_lde(a, b) \
6756 __ch (__un_args_eq (unsigned char, *(b)), \
6757 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
6758 __ch (__un_args_eq (signed char, *(b)), \
6759 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
6760 __ch (__un_args_eq (unsigned short, *(b)), \
6761 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
6762 __ch (__un_args_eq (signed short, *(b)), \
6763 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
6764 __ch (__un_args_eq (unsigned long, *(b)), \
6765 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6766 __ch (__un_args_eq (signed long, *(b)), \
6767 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6768 __ch (__un_args_eq (unsigned int, *(b)), \
6769 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6770 __ch (__un_args_eq (signed int, *(b)), \
6771 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6772 __ch (__un_args_eq (float, *(b)), \
6773 ((vector float) __builtin_altivec_lvewx ((a), (b))), \
6774 __altivec_link_error_invalid_argument ())))))))))
6776 #define vec_lvewx(a, b) \
6777 __ch (__un_args_eq (unsigned int, *(b)), \
6778 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6779 __ch (__un_args_eq (signed int, *(b)), \
6780 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6781 __ch (__un_args_eq (unsigned long, *(b)), \
6782 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6783 __ch (__un_args_eq (signed long, *(b)), \
6784 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6785 __ch (__un_args_eq (float, *(b)), \
6786 ((vector float) __builtin_altivec_lvewx ((a), (b))), \
6787 __altivec_link_error_invalid_argument ())))))
6789 #define vec_lvehx(a, b) \
6790 __ch (__un_args_eq (unsigned short, *(b)), \
6791 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
6792 __ch (__un_args_eq (signed short, *(b)), \
6793 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
6794 __altivec_link_error_invalid_argument ()))
6796 #define vec_lvebx(a, b) \
6797 __ch (__un_args_eq (unsigned char, *(b)), \
6798 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
6799 __ch (__un_args_eq (signed char, *(b)), \
6800 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
6801 __altivec_link_error_invalid_argument ()))
6803 #define vec_ldl(a, b) \
6804 __ch (__un_args_eq (vector unsigned char, *(b)), \
6805 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
6806 __ch (__un_args_eq (unsigned char, *(b)), \
6807 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
6808 __ch (__un_args_eq (vector signed char, *(b)), \
6809 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
6810 __ch (__un_args_eq (signed char, *(b)), \
6811 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
6812 __ch (__un_args_eq (vector unsigned short, *(b)), \
6813 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
6814 __ch (__un_args_eq (unsigned short, *(b)), \
6815 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
6816 __ch (__un_args_eq (vector signed short, *(b)), \
6817 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
6818 __ch (__un_args_eq (signed short, *(b)), \
6819 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
6820 __ch (__un_args_eq (vector unsigned int, *(b)), \
6821 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
6822 __ch (__un_args_eq (unsigned int, *(b)), \
6823 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
6824 __ch (__un_args_eq (unsigned long, *(b)), \
6825 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
6826 __ch (__un_args_eq (vector signed int, *(b)), \
6827 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
6828 __ch (__un_args_eq (signed int, *(b)), \
6829 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
6830 __ch (__un_args_eq (signed long, *(b)), \
6831 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
6832 __ch (__un_args_eq (vector float, *(b)), \
6833 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
6834 __ch (__un_args_eq (float, *(b)), \
6835 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
6836 __altivec_link_error_invalid_argument ()))))))))))))))))
6838 #define vec_loge(a1) __builtin_altivec_vlogefp ((a1))
6840 #define vec_lvsl(a1, a2) \
6841 __ch (__un_args_eq (unsigned char, *(a2)), \
6842 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6843 __ch (__un_args_eq (signed char, *(a2)), \
6844 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6845 __ch (__un_args_eq (unsigned short, *(a2)), \
6846 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6847 __ch (__un_args_eq (signed short, *(a2)), \
6848 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6849 __ch (__un_args_eq (unsigned int, *(a2)), \
6850 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6851 __ch (__un_args_eq (signed int, *(a2)), \
6852 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6853 __ch (__un_args_eq (unsigned long, *(a2)), \
6854 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6855 __ch (__un_args_eq (signed long, *(a2)), \
6856 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6857 __ch (__un_args_eq (float, *(a2)), \
6858 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6859 __altivec_link_error_invalid_argument ())))))))))
6861 #define vec_lvsr(a1, a2) \
6862 __ch (__un_args_eq (unsigned char, *(a2)), \
6863 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6864 __ch (__un_args_eq (signed char, *(a2)), \
6865 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6866 __ch (__un_args_eq (unsigned short, *(a2)), \
6867 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6868 __ch (__un_args_eq (signed short, *(a2)), \
6869 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6870 __ch (__un_args_eq (unsigned int, *(a2)), \
6871 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6872 __ch (__un_args_eq (signed int, *(a2)), \
6873 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6874 __ch (__un_args_eq (unsigned long, *(a2)), \
6875 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6876 __ch (__un_args_eq (signed long, *(a2)), \
6877 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6878 __ch (__un_args_eq (float, *(a2)), \
6879 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6880 __altivec_link_error_invalid_argument ())))))))))
6882 #define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3)))
6884 #define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))
6886 #define vec_max(a1, a2) \
6887 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6888 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6889 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6890 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6891 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6892 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6893 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6894 ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
6895 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6896 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6897 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6898 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6899 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6900 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6901 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6902 ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
6903 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6904 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6905 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6906 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6907 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6908 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6909 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6910 ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
6911 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6912 ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
6913 __altivec_link_error_invalid_argument ())))))))))))))
6915 #define vec_vmaxfp(a1, a2) \
6916 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6917 ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
6918 __altivec_link_error_invalid_argument ())
6920 #define vec_vmaxsw(a1, a2) \
6921 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6922 ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
6923 __altivec_link_error_invalid_argument ())
6925 #define vec_vmaxuw(a1, a2) \
6926 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6927 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6928 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6929 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6930 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6931 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6932 __altivec_link_error_invalid_argument ())))
6934 #define vec_vmaxsh(a1, a2) \
6935 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6936 ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
6937 __altivec_link_error_invalid_argument ())
6939 #define vec_vmaxuh(a1, a2) \
6940 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6941 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6942 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6943 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6944 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6945 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6946 __altivec_link_error_invalid_argument ())))
6948 #define vec_vmaxsb(a1, a2) \
6949 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6950 ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
6951 __altivec_link_error_invalid_argument ())
6953 #define vec_vmaxub(a1, a2) \
6954 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6955 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6956 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6957 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6958 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6959 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6960 __altivec_link_error_invalid_argument ())))
6962 #define vec_mergeh(a1, a2) \
6963 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6964 ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
6965 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6966 ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
6967 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6968 ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6969 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6970 ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6971 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6972 ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6973 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6974 ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6975 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6976 ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6977 __altivec_link_error_invalid_argument ())))))))
6979 #define vec_vmrghw(a1, a2) \
6980 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6981 ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6982 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6983 ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6984 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6985 ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6986 __altivec_link_error_invalid_argument ())))
6988 #define vec_vmrghh(a1, a2) \
6989 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6990 ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6991 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6992 ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6993 __altivec_link_error_invalid_argument ()))
6995 #define vec_vmrghb(a1, a2) \
6996 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6997 ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
6998 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6999 ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
7000 __altivec_link_error_invalid_argument ()))
7002 #define vec_mergel(a1, a2) \
7003 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7004 ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7005 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7006 ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7007 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7008 ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7009 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7010 ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7011 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7012 ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7013 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7014 ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7015 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7016 ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7017 __altivec_link_error_invalid_argument ())))))))
7019 #define vec_vmrglw(a1, a2) \
7020 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7021 ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7022 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7023 ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7024 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7025 ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7026 __altivec_link_error_invalid_argument ())))
7028 #define vec_vmrglh(a1, a2) \
7029 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7030 ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7031 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7032 ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7033 __altivec_link_error_invalid_argument ()))
7035 #define vec_vmrglb(a1, a2) \
7036 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7037 ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7038 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7039 ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7040 __altivec_link_error_invalid_argument ()))
7042 #define vec_mfvscr() (((vector unsigned short) __builtin_altivec_mfvscr ()))
7044 #define vec_min(a1, a2) \
7045 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7046 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7047 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7048 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7049 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7050 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7051 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7052 ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
7053 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7054 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7055 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7056 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7057 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7058 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7059 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7060 ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
7061 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7062 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7063 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7064 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7065 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7066 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7067 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7068 ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
7069 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7070 ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
7071 __altivec_link_error_invalid_argument ())))))))))))))
7073 #define vec_vminfp(a1, a2) \
7074 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7075 ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
7076 __altivec_link_error_invalid_argument ())
7078 #define vec_vminsw(a1, a2) \
7079 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7080 ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
7081 __altivec_link_error_invalid_argument ())
7083 #define vec_vminuw(a1, a2) \
7084 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7085 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7086 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7087 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7088 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7089 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7090 __altivec_link_error_invalid_argument ())))
7092 #define vec_vminsh(a1, a2) \
7093 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7094 ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
7095 __altivec_link_error_invalid_argument ())
7097 #define vec_vminuh(a1, a2) \
7098 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7099 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7100 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7101 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7102 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7103 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7104 __altivec_link_error_invalid_argument ())))
7106 #define vec_vminsb(a1, a2) \
7107 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7108 ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
7109 __altivec_link_error_invalid_argument ())
7111 #define vec_vminub(a1, a2) \
7112 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7113 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7114 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7115 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7116 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7117 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7118 __altivec_link_error_invalid_argument ())))
7120 #define vec_mladd(a1, a2, a3) \
7121 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
7122 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7123 __ch (__tern_args_eq (vector signed short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
7124 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7125 __ch (__tern_args_eq (vector unsigned short, (a1), vector signed short, (a2), vector signed short, (a3)), \
7126 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7127 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
7128 ((vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7129 __altivec_link_error_invalid_argument ()))))
7131 #define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs ((a1), (a2), (a3))
7133 #define vec_msum(a1, a2, a3) \
7134 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
7135 ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7136 __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
7137 ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7138 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7139 ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7140 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7141 ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7142 __altivec_link_error_invalid_argument ()))))
7144 #define vec_vmsumshm(a1, a2, a3) \
7145 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7146 ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7147 __altivec_link_error_invalid_argument ())
7149 #define vec_vmsumuhm(a1, a2, a3) \
7150 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7151 ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7152 __altivec_link_error_invalid_argument ())
7154 #define vec_vmsummbm(a1, a2, a3) \
7155 __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
7156 ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7157 __altivec_link_error_invalid_argument ())
7159 #define vec_vmsumubm(a1, a2, a3) \
7160 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
7161 ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7162 __altivec_link_error_invalid_argument ())
7164 #define vec_msums(a1, a2, a3) \
7165 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7166 ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7167 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7168 ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7169 __altivec_link_error_invalid_argument ()))
7171 #define vec_vmsumshs(a1, a2, a3) \
7172 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7173 ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7174 __altivec_link_error_invalid_argument ())
7176 #define vec_vmsumuhs(a1, a2, a3) \
7177 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7178 ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7179 __altivec_link_error_invalid_argument ())
7181 #define vec_mtvscr(a1) \
7182 __ch (__un_args_eq (vector signed int, (a1)), \
7183 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7184 __ch (__un_args_eq (vector unsigned int, (a1)), \
7185 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7186 __ch (__un_args_eq (vector signed short, (a1)), \
7187 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7188 __ch (__un_args_eq (vector unsigned short, (a1)), \
7189 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7190 __ch (__un_args_eq (vector signed char, (a1)), \
7191 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7192 __ch (__un_args_eq (vector unsigned char, (a1)), \
7193 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7194 __altivec_link_error_invalid_argument ()))))))
7196 #define vec_mule(a1, a2) \
7197 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7198 ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
7199 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7200 ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
7201 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7202 ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
7203 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7204 ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
7205 __altivec_link_error_invalid_argument ()))))
7207 #define vec_vmulesh(a1, a2) \
7208 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7209 ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
7210 __altivec_link_error_invalid_argument ())
7212 #define vec_vmuleuh(a1, a2) \
7213 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7214 ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
7215 __altivec_link_error_invalid_argument ())
7217 #define vec_vmulesb(a1, a2) \
7218 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7219 ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
7220 __altivec_link_error_invalid_argument ())
7222 #define vec_vmuleub(a1, a2) \
7223 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7224 ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
7225 __altivec_link_error_invalid_argument ())
7227 #define vec_mulo(a1, a2) \
7228 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7229 ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
7230 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7231 ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
7232 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7233 ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
7234 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7235 ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
7236 __altivec_link_error_invalid_argument ()))))
7238 #define vec_vmulosh(a1, a2) \
7239 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7240 ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
7241 __altivec_link_error_invalid_argument ())
7243 #define vec_vmulouh(a1, a2) \
7244 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7245 ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
7246 __altivec_link_error_invalid_argument ())
7248 #define vec_vmulosb(a1, a2) \
7249 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7250 ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
7251 __altivec_link_error_invalid_argument ())
7253 #define vec_vmuloub(a1, a2) \
7254 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7255 ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
7256 __altivec_link_error_invalid_argument ())
7258 #define vec_nmsub(a1, a2, a3) \
7259 __ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \
7260 ((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \
7261 __altivec_link_error_invalid_argument ())
7263 #define vec_nor(a1, a2) \
7264 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7265 ((vector float) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7266 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7267 ((vector signed int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7268 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7269 ((vector unsigned int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7270 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7271 ((vector signed short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7272 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7273 ((vector unsigned short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7274 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7275 ((vector signed char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7276 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7277 ((vector unsigned char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7278 __altivec_link_error_invalid_argument ())))))))
7280 #define vec_or(a1, a2) \
7281 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7282 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7283 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
7284 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7285 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
7286 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7287 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7288 ((vector signed int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7289 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7290 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7291 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7292 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7293 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7294 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7295 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7296 ((vector signed short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7297 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7298 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7299 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7300 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7301 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7302 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7303 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7304 ((vector signed char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7305 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7306 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7307 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7308 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7309 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7310 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7311 __altivec_link_error_invalid_argument ())))))))))))))))
7313 #define vec_pack(a1, a2) \
7314 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7315 ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7316 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7317 ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7318 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7319 ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7320 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7321 ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7322 __altivec_link_error_invalid_argument ()))))
7324 #define vec_vpkuwum(a1, a2) \
7325 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7326 ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7327 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7328 ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7329 __altivec_link_error_invalid_argument ()))
7331 #define vec_vpkuhum(a1, a2) \
7332 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7333 ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7334 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7335 ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7336 __altivec_link_error_invalid_argument ()))
7338 #define vec_packpx(a1, a2) \
7339 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7340 (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) (a1), (vector signed int) (a2)), \
7341 __altivec_link_error_invalid_argument ())
7343 #define vec_packs(a1, a2) \
7344 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7345 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
7346 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7347 ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
7348 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7349 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
7350 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7351 ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
7352 __altivec_link_error_invalid_argument ()))))
7354 #define vec_vpkswss(a1, a2) \
7355 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7356 ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
7357 __altivec_link_error_invalid_argument ())
7359 #define vec_vpkuwus(a1, a2) \
7360 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7361 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
7362 __altivec_link_error_invalid_argument ())
7364 #define vec_vpkshss(a1, a2) \
7365 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7366 ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
7367 __altivec_link_error_invalid_argument ())
7369 #define vec_vpkuhus(a1, a2) \
7370 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7371 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
7372 __altivec_link_error_invalid_argument ())
7374 #define vec_packsu(a1, a2) \
7375 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7376 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
7377 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7378 ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
7379 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7380 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
7381 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7382 ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
7383 __altivec_link_error_invalid_argument ()))))
7385 #define vec_vpkswus(a1, a2) \
7386 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7387 ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
7388 __altivec_link_error_invalid_argument ())
7390 #define vec_vpkshus(a1, a2) \
7391 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7392 ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
7393 __altivec_link_error_invalid_argument ())
7395 #define vec_perm(a1, a2, a3) \
7396 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \
7397 ((vector float) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7398 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned char, (a3)), \
7399 ((vector signed int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7400 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned char, (a3)), \
7401 ((vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7402 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned char, (a3)), \
7403 ((vector signed short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7404 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned char, (a3)), \
7405 ((vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7406 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
7407 ((vector signed char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7408 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
7409 ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7410 __altivec_link_error_invalid_argument ())))))))
7412 #define vec_re(a1) __builtin_altivec_vrefp ((a1))
7414 #define vec_rl(a1, a2) \
7415 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7416 ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7417 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7418 ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7419 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7420 ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7421 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7422 ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7423 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7424 ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7425 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7426 ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7427 __altivec_link_error_invalid_argument ()))))))
7429 #define vec_vrlw(a1, a2) \
7430 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7431 ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7432 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7433 ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7434 __altivec_link_error_invalid_argument ()))
7436 #define vec_vrlh(a1, a2) \
7437 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7438 ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7439 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7440 ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7441 __altivec_link_error_invalid_argument ()))
7443 #define vec_vrlb(a1, a2) \
7444 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7445 ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7446 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7447 ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7448 __altivec_link_error_invalid_argument ()))
7450 #define vec_round(a1) __builtin_altivec_vrfin ((a1))
7452 #define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1))
7454 #define vec_sel(a1, a2, a3) \
7455 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector signed int, (a3)), \
7456 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7457 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned int, (a3)), \
7458 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7459 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector signed int, (a3)), \
7460 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7461 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned int, (a3)), \
7462 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7463 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector signed int, (a3)), \
7464 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7465 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned int, (a3)), \
7466 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7467 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
7468 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7469 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned short, (a3)), \
7470 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7471 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector signed short, (a3)), \
7472 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7473 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
7474 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7475 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector signed char, (a3)), \
7476 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7477 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
7478 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7479 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector signed char, (a3)), \
7480 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7481 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
7482 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7483 __altivec_link_error_invalid_argument ()))))))))))))))
7485 #define vec_sl(a1, a2) \
7486 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7487 ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7488 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7489 ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7490 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7491 ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7492 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7493 ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7494 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7495 ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7496 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7497 ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7498 __altivec_link_error_invalid_argument ()))))))
7500 #define vec_vslw(a1, a2) \
7501 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7502 ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7503 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7504 ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7505 __altivec_link_error_invalid_argument ()))
7507 #define vec_vslh(a1, a2) \
7508 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7509 ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7510 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7511 ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7512 __altivec_link_error_invalid_argument ()))
7514 #define vec_vslb(a1, a2) \
7515 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7516 ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7517 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7518 ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7519 __altivec_link_error_invalid_argument ()))
7521 #define vec_sld(a1, a2, a3) \
7522 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \
7523 ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7524 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), unsigned int, (a3)), \
7525 ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7526 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), int, (a3)), \
7527 ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7528 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), unsigned int, (a3)), \
7529 ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7530 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), int, (a3)), \
7531 ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7532 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), unsigned int, (a3)), \
7533 ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7534 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), int, (a3)), \
7535 ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7536 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), unsigned int, (a3)), \
7537 ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7538 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), int, (a3)), \
7539 ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7540 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), unsigned int, (a3)), \
7541 ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7542 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), int, (a3)), \
7543 ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7544 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), unsigned int, (a3)), \
7545 ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7546 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), int, (a3)), \
7547 ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7548 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), unsigned int, (a3)), \
7549 ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7550 __altivec_link_error_invalid_argument ()))))))))))))))
7552 #define vec_sll(a1, a2) \
7553 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7554 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7555 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
7556 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7557 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7558 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7559 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7560 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7561 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
7562 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7563 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7564 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7565 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
7566 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7567 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7568 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7569 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7570 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7571 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
7572 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7573 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7574 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7575 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7576 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7577 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
7578 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7579 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
7580 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7581 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7582 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7583 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
7584 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7585 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
7586 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7587 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7588 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7589 __altivec_link_error_invalid_argument ()))))))))))))))))))
7591 #define vec_slo(a1, a2) \
7592 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
7593 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7594 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
7595 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7596 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
7597 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7598 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7599 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7600 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
7601 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7602 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7603 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7604 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
7605 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7606 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7607 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7608 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
7609 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7610 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7611 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7612 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7613 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7614 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7615 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7616 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7617 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7618 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7619 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7620 __altivec_link_error_invalid_argument ()))))))))))))))
7622 #define vec_splat(a1, a2) \
7623 __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
7624 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7625 __ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \
7626 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7627 __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
7628 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7629 __ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \
7630 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7631 __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
7632 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7633 __ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \
7634 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7635 __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
7636 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7637 __ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \
7638 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7639 __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
7640 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7641 __ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \
7642 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7643 __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
7644 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7645 __ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \
7646 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7647 __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
7648 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7649 __ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
7650 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7651 __altivec_link_error_invalid_argument ()))))))))))))))
7653 #define vec_vspltw(a1, a2) \
7654 __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
7655 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7656 __ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \
7657 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7658 __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
7659 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7660 __ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \
7661 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7662 __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
7663 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7664 __ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
7665 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7666 __altivec_link_error_invalid_argument ()))))))
7668 #define vec_vsplth(a1, a2) \
7669 __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
7670 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7671 __ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \
7672 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7673 __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
7674 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7675 __ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \
7676 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7677 __altivec_link_error_invalid_argument ()))))
7679 #define vec_vspltb(a1, a2) \
7680 __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
7681 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7682 __ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \
7683 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7684 __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
7685 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7686 __ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \
7687 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7688 __altivec_link_error_invalid_argument ()))))
7690 #define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1))
7692 #define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1))
7694 #define vec_splat_s32(a1) __builtin_altivec_vspltisw ((a1))
7696 #define vec_splat_u8(a1) ((vector unsigned char) __builtin_altivec_vspltisb ((a1)))
7698 #define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish ((a1)))
7700 #define vec_splat_u32(a1) ((vector unsigned int) __builtin_altivec_vspltisw ((a1)))
7702 #define vec_sr(a1, a2) \
7703 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7704 ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7705 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7706 ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7707 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7708 ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7709 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7710 ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7711 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7712 ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7713 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7714 ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7715 __altivec_link_error_invalid_argument ()))))))
7717 #define vec_vsrw(a1, a2) \
7718 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7719 ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7720 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7721 ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7722 __altivec_link_error_invalid_argument ()))
7724 #define vec_vsrh(a1, a2) \
7725 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7726 ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7727 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7728 ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7729 __altivec_link_error_invalid_argument ()))
7731 #define vec_vsrb(a1, a2) \
7732 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7733 ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7734 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7735 ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7736 __altivec_link_error_invalid_argument ()))
7738 #define vec_sra(a1, a2) \
7739 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7740 ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7741 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7742 ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7743 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7744 ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7745 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7746 ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7747 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7748 ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7749 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7750 ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7751 __altivec_link_error_invalid_argument ()))))))
7753 #define vec_vsraw(a1, a2) \
7754 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7755 ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7756 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7757 ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7758 __altivec_link_error_invalid_argument ()))
7760 #define vec_vsrah(a1, a2) \
7761 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7762 ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7763 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7764 ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7765 __altivec_link_error_invalid_argument ()))
7767 #define vec_vsrab(a1, a2) \
7768 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7769 ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7770 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7771 ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7772 __altivec_link_error_invalid_argument ()))
7774 #define vec_srl(a1, a2) \
7775 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7776 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7777 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
7778 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7779 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7780 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7781 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7782 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7783 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
7784 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7785 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7786 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7787 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
7788 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7789 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7790 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7791 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7792 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7793 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
7794 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7795 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7796 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7797 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7798 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7799 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
7800 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7801 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
7802 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7803 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7804 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7805 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
7806 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7807 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
7808 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7809 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7810 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7811 __altivec_link_error_invalid_argument ()))))))))))))))))))
7813 #define vec_sro(a1, a2) \
7814 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
7815 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7816 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
7817 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7818 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
7819 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7820 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7821 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7822 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
7823 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7824 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7825 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7826 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
7827 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7828 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7829 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7830 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
7831 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7832 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7833 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7834 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7835 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7836 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7837 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7838 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7839 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7840 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7841 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7842 __altivec_link_error_invalid_argument ()))))))))))))))
7844 #define vec_st(a1, a2, a3) \
7845 __builtin_altivec_stvx ((vector signed int) (a1), (a2), (a3))
7847 #define vec_stl(a1, a2, a3) \
7848 __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (a3))
7850 #define vec_ste(a, b, c) \
7851 __ch (__un_args_eq (vector unsigned char, (a)), \
7852 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7853 __ch (__un_args_eq (vector signed char, (a)), \
7854 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7855 __ch (__un_args_eq (vector unsigned short, (a)), \
7856 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7857 __ch (__un_args_eq (vector signed short, (a)), \
7858 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7859 __ch (__un_args_eq (vector unsigned int, (a)), \
7860 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7861 __ch (__un_args_eq (vector signed int, (a)), \
7862 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7863 __ch (__un_args_eq (vector float, (a)), \
7864 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7865 __altivec_link_error_invalid_argument ())))))))
7867 #define vec_stvewx(a, b, c) \
7868 __ch (__un_args_eq (vector unsigned int, (a)), \
7869 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7870 __ch (__un_args_eq (vector signed int, (a)), \
7871 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7872 __ch (__un_args_eq (vector float, (a)), \
7873 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7874 __altivec_link_error_invalid_argument ())))
7876 #define vec_stvehx(a, b, c) \
7877 __ch (__un_args_eq (vector unsigned short, (a)), \
7878 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7879 __ch (__un_args_eq (vector signed short, (a)), \
7880 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7881 __altivec_link_error_invalid_argument ()))
7883 #define vec_stvebx(a, b, c) \
7884 __ch (__un_args_eq (vector unsigned char, (a)), \
7885 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7886 __ch (__un_args_eq (vector signed char, (a)), \
7887 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7888 __altivec_link_error_invalid_argument ()))
7890 #define vec_sub(a1, a2) \
7891 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7892 ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7893 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7894 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7895 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7896 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7897 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7898 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7899 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7900 ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7901 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7902 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7903 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7904 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7905 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7906 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7907 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7908 ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7909 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7910 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7911 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7912 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7913 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7914 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7915 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7916 ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
7917 __altivec_link_error_invalid_argument ())))))))))))))
7919 #define vec_vsubfp(a1, a2) \
7920 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7921 ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
7922 __altivec_link_error_invalid_argument ())
7924 #define vec_vsubuwm(a1, a2) \
7925 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7926 ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7927 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7928 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7929 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7930 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7931 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7932 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7933 __altivec_link_error_invalid_argument ()))))
7935 #define vec_vsubuhm(a1, a2) \
7936 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7937 ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7938 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7939 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7940 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7941 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7942 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7943 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7944 __altivec_link_error_invalid_argument ()))))
7946 #define vec_vsububm(a1, a2) \
7947 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7948 ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7949 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7950 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7951 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7952 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7953 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7954 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7955 __altivec_link_error_invalid_argument ()))))
7957 #define vec_subc(a1, a2) \
7958 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7959 ((vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) (a1), (vector signed int) (a2))), \
7960 __altivec_link_error_invalid_argument ())
7962 #define vec_subs(a1, a2) \
7963 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7964 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
7965 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7966 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
7967 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7968 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
7969 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7970 ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
7971 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7972 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
7973 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7974 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
7975 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7976 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
7977 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7978 ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
7979 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7980 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7981 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7982 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7983 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7984 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7985 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7986 ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
7987 __altivec_link_error_invalid_argument ()))))))))))))
7989 #define vec_vsubsws(a1, a2) \
7990 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7991 ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
7992 __altivec_link_error_invalid_argument ())
7994 #define vec_vsubuws(a1, a2) \
7995 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7996 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7997 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7998 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7999 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8000 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
8001 __altivec_link_error_invalid_argument ())))
8003 #define vec_vsubshs(a1, a2) \
8004 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8005 ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
8006 __altivec_link_error_invalid_argument ())
8008 #define vec_vsubuhs(a1, a2) \
8009 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8010 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
8011 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8012 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
8013 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8014 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
8015 __altivec_link_error_invalid_argument ())))
8017 #define vec_vsubsbs(a1, a2) \
8018 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8019 ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
8020 __altivec_link_error_invalid_argument ())
8022 #define vec_vsububs(a1, a2) \
8023 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8024 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
8025 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8026 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
8027 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8028 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
8029 __altivec_link_error_invalid_argument ())))
8031 #define vec_sum4s(a1, a2) \
8032 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
8033 ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
8034 __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
8035 ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
8036 __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
8037 ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
8038 __altivec_link_error_invalid_argument ())))
8040 #define vec_vsum4shs(a1, a2) \
8041 __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
8042 ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
8043 __altivec_link_error_invalid_argument ())
8045 #define vec_vsum4sbs(a1, a2) \
8046 __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
8047 ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
8048 __altivec_link_error_invalid_argument ())
8050 #define vec_vsum4ubs(a1, a2) \
8051 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
8052 ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
8053 __altivec_link_error_invalid_argument ())
8055 #define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2))
8057 #define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2))
8059 #define vec_trunc(a1) __builtin_altivec_vrfiz ((a1))
8061 #define vec_unpackh(a1) \
8062 __ch (__un_args_eq (vector signed char, (a1)), \
8063 ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
8064 __ch (__un_args_eq (vector unsigned short, (a1)), \
8065 ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
8066 __ch (__un_args_eq (vector signed short, (a1)), \
8067 ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
8068 __altivec_link_error_invalid_argument ())))
8070 #define vec_vupkhsh(a1) \
8071 __ch (__un_args_eq (vector signed short, (a1)), \
8072 ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
8073 __altivec_link_error_invalid_argument ())
8075 #define vec_vupkhpx(a1) \
8076 __ch (__un_args_eq (vector unsigned short, (a1)), \
8077 ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
8078 __altivec_link_error_invalid_argument ())
8080 #define vec_vupkhsb(a1) \
8081 __ch (__un_args_eq (vector signed char, (a1)), \
8082 ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
8083 __altivec_link_error_invalid_argument ())
8085 #define vec_unpackl(a1) \
8086 __ch (__un_args_eq (vector signed char, (a1)), \
8087 ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
8088 __ch (__un_args_eq (vector unsigned short, (a1)), \
8089 ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
8090 __ch (__un_args_eq (vector signed short, (a1)), \
8091 ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
8092 __altivec_link_error_invalid_argument ())))
8094 #define vec_vupklsh(a1) \
8095 __ch (__un_args_eq (vector signed short, (a1)), \
8096 ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
8097 __altivec_link_error_invalid_argument ())
8099 #define vec_vupklpx(a1) \
8100 __ch (__un_args_eq (vector unsigned short, (a1)), \
8101 ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
8102 __altivec_link_error_invalid_argument ())
8104 #define vec_vupklsb(a1) \
8105 __ch (__un_args_eq (vector signed char, (a1)), \
8106 ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
8107 __altivec_link_error_invalid_argument ())
8109 #define vec_xor(a1, a2) \
8110 __ch (__bin_args_eq (vector float, ((a1)), vector float, ((a2))), \
8111 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8112 __ch (__bin_args_eq (vector float, ((a1)), vector unsigned int, ((a2))), \
8113 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8114 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector float, ((a2))), \
8115 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8116 __ch (__bin_args_eq (vector signed int, ((a1)), vector float, ((a2))), \
8117 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8118 __ch (__bin_args_eq (vector float, ((a1)), vector signed int, ((a2))), \
8119 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8120 __ch (__bin_args_eq (vector signed int, ((a1)), vector signed int, ((a2))), \
8121 ((vector signed int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8122 __ch (__bin_args_eq (vector signed int, ((a1)), vector unsigned int, ((a2))), \
8123 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8124 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector signed int, ((a2))), \
8125 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8126 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector unsigned int, ((a2))), \
8127 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8128 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
8129 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8130 __ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \
8131 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8132 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \
8133 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8134 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
8135 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8136 __ch (__bin_args_eq (vector signed short, ((a1)), vector signed short, ((a2))), \
8137 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8138 __ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \
8139 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8140 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \
8141 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8142 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
8143 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8144 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \
8145 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8146 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
8147 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8148 __ch (__bin_args_eq (vector signed char, ((a1)), vector signed char, ((a2))), \
8149 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8150 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \
8151 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8152 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
8153 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8154 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector signed char, ((a2))), \
8155 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8156 __altivec_link_error_invalid_argument ())))))))))))))))))))))))
8160 #define vec_all_eq(a1, a2) \
8161 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8162 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8163 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8164 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8165 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8166 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8167 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8168 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8169 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8170 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8171 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8172 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8173 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8174 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8175 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8176 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8177 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8178 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8179 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8180 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8181 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8182 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8183 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8184 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8185 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8186 __builtin_altivec_vcmpeqfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
8187 __altivec_link_error_invalid_argument ())))))))))))))
8189 #define vec_all_ge(a1, a2) \
8190 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8191 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8192 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8193 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8194 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8195 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8196 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8197 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8198 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8199 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8200 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8201 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8202 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8203 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8204 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8205 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8206 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8207 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8208 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8209 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8210 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8211 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8212 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8213 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8214 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8215 __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
8216 __altivec_link_error_invalid_argument ())))))))))))))
8218 #define vec_all_gt(a1, a2) \
8219 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8220 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8221 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8222 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8223 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8224 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8225 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8226 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8227 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8228 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8229 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8230 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8231 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8232 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8233 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8234 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8235 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8236 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8237 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8238 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8239 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8240 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8241 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8242 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8243 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8244 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
8245 __altivec_link_error_invalid_argument ())))))))))))))
8247 #define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2))
8249 #define vec_all_le(a1, a2) \
8250 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8251 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8252 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8253 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8254 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8255 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8256 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8257 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8258 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8259 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8260 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8261 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8262 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8263 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8264 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8265 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8266 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8267 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8268 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8269 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8270 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8271 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8272 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8273 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8274 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8275 __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
8276 __altivec_link_error_invalid_argument ())))))))))))))
8278 #define vec_all_lt(a1, a2) \
8279 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8280 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8281 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8282 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8283 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8284 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8285 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8286 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8287 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8288 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8289 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8290 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8291 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8292 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8293 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8294 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8295 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8296 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8297 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8298 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8299 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8300 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8301 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8302 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8303 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8304 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
8305 __altivec_link_error_invalid_argument ())))))))))))))
8307 #define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
8309 #define vec_all_ne(a1, a2) \
8310 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8311 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8312 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8313 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8314 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8315 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8316 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8317 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8318 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8319 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8320 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8321 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8322 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8323 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8324 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8325 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8326 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8327 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8328 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8329 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8330 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8331 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8332 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8333 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8334 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8335 __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (vector float) (a1), (vector float) (a2)), \
8336 __altivec_link_error_invalid_argument ())))))))))))))
8338 #define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2))
8340 #define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2))
8342 #define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1))
8344 #define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1))
8346 #define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
8348 #define vec_any_eq(a1, a2) \
8349 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8350 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8351 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8352 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8353 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8354 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8355 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8356 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8357 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8358 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8359 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8360 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8361 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8362 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8363 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8364 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8365 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8366 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8367 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8368 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8369 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8370 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8371 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8372 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8373 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8374 __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
8375 __altivec_link_error_invalid_argument ())))))))))))))
8377 #define vec_any_ge(a1, a2) \
8378 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8379 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8380 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8381 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8382 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8383 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8384 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8385 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8386 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8387 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8388 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8389 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8390 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8391 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8392 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8393 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8394 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8395 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8396 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8397 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8398 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8399 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8400 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8401 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8402 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8403 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
8404 __altivec_link_error_invalid_argument ())))))))))))))
8406 #define vec_any_gt(a1, a2) \
8407 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8408 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8409 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8410 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8411 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8412 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8413 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8414 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8415 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8416 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8417 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8418 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8419 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8420 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8421 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8422 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8423 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8424 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8425 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8426 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8427 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8428 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8429 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8430 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8431 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8432 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
8433 __altivec_link_error_invalid_argument ())))))))))))))
8435 #define vec_any_le(a1, a2) \
8436 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8437 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8438 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8439 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8440 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8441 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8442 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8443 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8444 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8445 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8446 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8447 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8448 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8449 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8450 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8451 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8452 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8453 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8454 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8455 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8456 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8457 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8458 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8459 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8460 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8461 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
8462 __altivec_link_error_invalid_argument ())))))))))))))
8464 #define vec_any_lt(a1, a2) \
8465 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8466 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8467 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8468 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8469 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8470 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8471 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8472 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8473 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8474 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8475 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8476 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8477 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8478 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8479 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8480 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8481 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8482 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8483 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8484 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8485 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8486 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8487 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8488 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8489 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8490 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
8491 __altivec_link_error_invalid_argument ())))))))))))))
8493 #define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1)
8495 #define vec_any_ne(a1, a2) \
8496 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8497 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8498 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8499 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8500 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8501 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8502 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8503 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8504 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8505 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8506 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8507 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8508 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8509 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8510 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8511 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8512 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8513 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8514 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8515 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8516 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8517 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8518 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8519 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8520 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8521 __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (vector float) (a1), (vector float) (a2)), \
8522 __altivec_link_error_invalid_argument ())))))))))))))
8524 #define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2))
8526 #define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2))
8528 #define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1))
8530 #define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1))
8532 #define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1))
8534 #define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2))
8536 #endif /* __cplusplus */
8538 #endif /* _ALTIVEC_H */