This commit was manufactured by cvs2svn to create branch
[official-gcc.git] / gcc / config / rs6000 / altivec.h
blob1bd8f4549ca7d3066900dd3537301f486c4d526a
1 /* PowerPC AltiVec include file.
2 Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
3 Contributed by Aldy Hernandez (aldyh@redhat.com).
5 This file is part of GCC.
7 GCC is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published
9 by the Free Software Foundation; either version 2, or (at your
10 option) any later version.
12 GCC is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GCC; see the file COPYING. If not, write to the
19 Free Software Foundation, 59 Temple Place - Suite 330, Boston,
20 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
27 Public License. */
29 /* Implemented to conform to the specification included in the AltiVec
30 Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0). */
32 #ifndef _ALTIVEC_H
33 #define _ALTIVEC_H 1
35 /* Required by Motorola specs. */
36 #define __VEC__ 10206
38 #ifndef __ALTIVEC__
39 #define __ALTIVEC__ 1
40 #endif
42 #define __vector __attribute__((vector_size(16)))
44 /* You are allowed to undef this for C++ compatibility. */
45 #define vector __vector
47 #define bool signed
48 #define pixel unsigned short
49 #define __pixel unsigned short
51 /* Dummy prototype. */
52 extern int __altivec_link_error_invalid_argument ();
54 /* Helper macros. */
56 #define __CR6_EQ 0
57 #define __CR6_EQ_REV 1
58 #define __CR6_LT 2
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
119 #ifdef __cplusplus
121 extern "C++" {
123 /* Prototypes for builtins that take literals and must always be
124 inlined. */
125 inline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline));
126 inline vector float vec_ctf (vector signed int, const char) __attribute__ ((always_inline));
127 inline vector float vec_vcfsx (vector signed int a1, const char a2) __attribute__ ((always_inline));
128 inline vector float vec_vcfux (vector unsigned int a1, const char a2) __attribute__ ((always_inline));
129 inline vector signed int vec_cts (vector float, const char) __attribute__ ((always_inline));
130 inline vector unsigned int vec_ctu (vector float, const char) __attribute__ ((always_inline));
131 inline void vec_dss (const char) __attribute__ ((always_inline));
133 inline void vec_dst (vector unsigned char *, int, const char) __attribute__ ((always_inline));
134 inline void vec_dst (vector signed char *, int, const char) __attribute__ ((always_inline));
135 inline void vec_dst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
136 inline void vec_dst (vector signed short *, int, const char) __attribute__ ((always_inline));
137 inline void vec_dst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
138 inline void vec_dst (vector signed int *, int, const char) __attribute__ ((always_inline));
139 inline void vec_dst (vector float *, int, const char) __attribute__ ((always_inline));
140 inline void vec_dst (unsigned char *, int, const char) __attribute__ ((always_inline));
141 inline void vec_dst (signed char *, int, const char) __attribute__ ((always_inline));
142 inline void vec_dst (unsigned short *, int, const char) __attribute__ ((always_inline));
143 inline void vec_dst (signed short *, int, const char) __attribute__ ((always_inline));
144 inline void vec_dst (unsigned int *, int, const char) __attribute__ ((always_inline));
145 inline void vec_dst (signed int *, int, const char) __attribute__ ((always_inline));
146 inline void vec_dst (unsigned long *, int, const char) __attribute__ ((always_inline));
147 inline void vec_dst (signed long *, int, const char) __attribute__ ((always_inline));
148 inline void vec_dst (float *, int, const char) __attribute__ ((always_inline));
150 inline void vec_dstst (vector unsigned char *, int, const char) __attribute__ ((always_inline));
151 inline void vec_dstst (vector signed char *, int, const char) __attribute__ ((always_inline));
152 inline void vec_dstst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
153 inline void vec_dstst (vector signed short *, int, const char) __attribute__ ((always_inline));
154 inline void vec_dstst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
155 inline void vec_dstst (vector signed int *, int, const char) __attribute__ ((always_inline));
156 inline void vec_dstst (vector float *, int, const char) __attribute__ ((always_inline));
157 inline void vec_dstst (unsigned char *, int, const char) __attribute__ ((always_inline));
158 inline void vec_dstst (signed char *, int, const char) __attribute__ ((always_inline));
159 inline void vec_dstst (unsigned short *, int, const char) __attribute__ ((always_inline));
160 inline void vec_dstst (signed short *, int, const char) __attribute__ ((always_inline));
161 inline void vec_dstst (unsigned int *, int, const char) __attribute__ ((always_inline));
162 inline void vec_dstst (signed int *, int, const char) __attribute__ ((always_inline));
163 inline void vec_dstst (unsigned long *, int, const char) __attribute__ ((always_inline));
164 inline void vec_dstst (signed long *, int, const char) __attribute__ ((always_inline));
165 inline void vec_dstst (float *, int, const char) __attribute__ ((always_inline));
167 inline void vec_dststt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
168 inline void vec_dststt (vector signed char *, int, const char) __attribute__ ((always_inline));
169 inline void vec_dststt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
170 inline void vec_dststt (vector signed short *, int, const char) __attribute__ ((always_inline));
171 inline void vec_dststt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
172 inline void vec_dststt (vector signed int *, int, const char) __attribute__ ((always_inline));
173 inline void vec_dststt (vector float *, int, const char) __attribute__ ((always_inline));
174 inline void vec_dststt (unsigned char *, int, const char) __attribute__ ((always_inline));
175 inline void vec_dststt (signed char *, int, const char) __attribute__ ((always_inline));
176 inline void vec_dststt (unsigned short *, int, const char) __attribute__ ((always_inline));
177 inline void vec_dststt (signed short *, int, const char) __attribute__ ((always_inline));
178 inline void vec_dststt (unsigned int *, int, const char) __attribute__ ((always_inline));
179 inline void vec_dststt (signed int *, int, const char) __attribute__ ((always_inline));
180 inline void vec_dststt (unsigned long *, int, const char) __attribute__ ((always_inline));
181 inline void vec_dststt (signed long *, int, const char) __attribute__ ((always_inline));
182 inline void vec_dststt (float *, int, const char) __attribute__ ((always_inline));
184 inline void vec_dstt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
185 inline void vec_dstt (vector signed char *, int, const char) __attribute__ ((always_inline));
186 inline void vec_dstt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
187 inline void vec_dstt (vector signed short *, int, const char) __attribute__ ((always_inline));
188 inline void vec_dstt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
189 inline void vec_dstt (vector signed int *, int, const char) __attribute__ ((always_inline));
190 inline void vec_dstt (vector float *, int, const char) __attribute__ ((always_inline));
191 inline void vec_dstt (unsigned char *, int, const char) __attribute__ ((always_inline));
192 inline void vec_dstt (signed char *, int, const char) __attribute__ ((always_inline));
193 inline void vec_dstt (unsigned short *, int, const char) __attribute__ ((always_inline));
194 inline void vec_dstt (signed short *, int, const char) __attribute__ ((always_inline));
195 inline void vec_dstt (unsigned int *, int, const char) __attribute__ ((always_inline));
196 inline void vec_dstt (signed int *, int, const char) __attribute__ ((always_inline));
197 inline void vec_dstt (unsigned long *, int, const char) __attribute__ ((always_inline));
198 inline void vec_dstt (signed long *, int, const char) __attribute__ ((always_inline));
199 inline void vec_dstt (float *, int, const char) __attribute__ ((always_inline));
201 inline vector float vec_sld (vector float, vector float, const char) __attribute__ ((always_inline));
202 inline vector signed int vec_sld (vector signed int, vector signed int, const char) __attribute__ ((always_inline));
203 inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const char) __attribute__ ((always_inline));
204 inline vector signed short vec_sld (vector signed short, vector signed short, const char) __attribute__ ((always_inline));
205 inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const char) __attribute__ ((always_inline));
206 inline vector signed char vec_sld (vector signed char, vector signed char, const char) __attribute__ ((always_inline));
207 inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const char) __attribute__ ((always_inline));
208 inline vector signed char vec_splat (vector signed char, const char) __attribute__ ((always_inline));
209 inline vector unsigned char vec_splat (vector unsigned char, const char) __attribute__ ((always_inline));
210 inline vector signed short vec_splat (vector signed short, const char) __attribute__ ((always_inline));
211 inline vector unsigned short vec_splat (vector unsigned short, const char) __attribute__ ((always_inline));
212 inline vector float vec_splat (vector float, const char) __attribute__ ((always_inline));
213 inline vector signed int vec_splat (vector signed int, const char) __attribute__ ((always_inline));
214 inline vector unsigned int vec_splat (vector unsigned int, const char) __attribute__ ((always_inline));
215 inline vector signed char vec_splat_s8 (const char) __attribute__ ((always_inline));
216 inline vector signed short vec_splat_s16 (const char) __attribute__ ((always_inline));
217 inline vector signed int vec_splat_s32 (const char) __attribute__ ((always_inline));
218 inline vector unsigned char vec_splat_u8 (const char) __attribute__ ((always_inline));
219 inline vector unsigned short vec_splat_u16 (const char) __attribute__ ((always_inline));
220 inline vector unsigned int vec_splat_u32 (const char) __attribute__ ((always_inline));
221 inline vector float vec_vspltw (vector float a1, const char a2) __attribute__ ((always_inline));
222 inline vector signed int vec_vspltw (vector signed int a1, const char a2) __attribute__ ((always_inline));
223 inline vector unsigned int vec_vspltw (vector unsigned int a1, const char a2) __attribute__ ((always_inline));
224 inline vector signed short vec_vsplth (vector signed short a1, const char a2) __attribute__ ((always_inline));
225 inline vector unsigned short vec_vsplth (vector unsigned short a1, const char a2) __attribute__ ((always_inline));
226 inline vector signed char vec_vspltb (vector signed char a1, const char a2) __attribute__ ((always_inline));
227 inline vector unsigned char vec_vspltb (vector unsigned char a1, const char a2) __attribute__ ((always_inline));
229 /* vec_abs */
231 inline vector signed char
232 vec_abs (vector signed char a1)
234 return __builtin_altivec_abs_v16qi (a1);
237 inline vector signed short
238 vec_abs (vector signed short a1)
240 return __builtin_altivec_abs_v8hi (a1);
243 inline vector signed int
244 vec_abs (vector signed int a1)
246 return __builtin_altivec_abs_v4si (a1);
249 inline vector float
250 vec_abs (vector float a1)
252 return __builtin_altivec_abs_v4sf (a1);
255 /* vec_abss */
257 inline vector signed char
258 vec_abss (vector signed char a1)
260 return __builtin_altivec_abss_v16qi (a1);
263 inline vector signed short
264 vec_abss (vector signed short a1)
266 return __builtin_altivec_abss_v8hi (a1);
269 inline vector signed int
270 vec_abss (vector signed int a1)
272 return __builtin_altivec_abss_v4si (a1);
275 /* vec_add */
277 inline vector signed char
278 vec_add (vector signed char a1, vector signed char a2)
280 return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
283 inline vector unsigned char
284 vec_add (vector signed char a1, vector unsigned char a2)
286 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
289 inline vector unsigned char
290 vec_add (vector unsigned char a1, vector signed char a2)
292 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
295 inline vector unsigned char
296 vec_add (vector unsigned char a1, vector unsigned char a2)
298 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
301 inline vector signed short
302 vec_add (vector signed short a1, vector signed short a2)
304 return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
307 inline vector unsigned short
308 vec_add (vector signed short a1, vector unsigned short a2)
310 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
313 inline vector unsigned short
314 vec_add (vector unsigned short a1, vector signed short a2)
316 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
319 inline vector unsigned short
320 vec_add (vector unsigned short a1, vector unsigned short a2)
322 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
325 inline vector signed int
326 vec_add (vector signed int a1, vector signed int a2)
328 return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
331 inline vector unsigned int
332 vec_add (vector signed int a1, vector unsigned int a2)
334 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
337 inline vector unsigned int
338 vec_add (vector unsigned int a1, vector signed int a2)
340 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
343 inline vector unsigned int
344 vec_add (vector unsigned int a1, vector unsigned int a2)
346 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
349 inline vector float
350 vec_add (vector float a1, vector float a2)
352 return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
355 /* vec_vaddfp */
357 inline vector float
358 vec_vaddfp (vector float a1, vector float a2)
360 return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
363 /* vec_vadduwm */
365 inline vector signed int
366 vec_vadduwm (vector signed int a1, vector signed int a2)
368 return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
371 inline vector unsigned int
372 vec_vadduwm (vector signed int a1, vector unsigned int a2)
374 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
377 inline vector unsigned int
378 vec_vadduwm (vector unsigned int a1, vector signed int a2)
380 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
383 inline vector unsigned int
384 vec_vadduwm (vector unsigned int a1, vector unsigned int a2)
386 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
389 /* vec_vadduhm */
391 inline vector signed short
392 vec_vadduhm (vector signed short a1, vector signed short a2)
394 return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
397 inline vector unsigned short
398 vec_vadduhm (vector signed short a1, vector unsigned short a2)
400 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
403 inline vector unsigned short
404 vec_vadduhm (vector unsigned short a1, vector signed short a2)
406 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
409 inline vector unsigned short
410 vec_vadduhm (vector unsigned short a1, vector unsigned short a2)
412 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
415 /* vec_vaddubm */
417 inline vector signed char
418 vec_vaddubm (vector signed char a1, vector signed char a2)
420 return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
423 inline vector unsigned char
424 vec_vaddubm (vector signed char a1, vector unsigned char a2)
426 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
429 inline vector unsigned char
430 vec_vaddubm (vector unsigned char a1, vector signed char a2)
432 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
435 inline vector unsigned char
436 vec_vaddubm (vector unsigned char a1, vector unsigned char a2)
438 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
441 /* vec_addc */
443 inline vector unsigned int
444 vec_addc (vector unsigned int a1, vector unsigned int a2)
446 return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2);
449 /* vec_adds */
451 inline vector unsigned char
452 vec_adds (vector signed char a1, vector unsigned char a2)
454 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
457 inline vector unsigned char
458 vec_adds (vector unsigned char a1, vector signed char a2)
460 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
463 inline vector unsigned char
464 vec_adds (vector unsigned char a1, vector unsigned char a2)
466 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
469 inline vector signed char
470 vec_adds (vector signed char a1, vector signed char a2)
472 return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
475 inline vector unsigned short
476 vec_adds (vector signed short a1, vector unsigned short a2)
478 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
481 inline vector unsigned short
482 vec_adds (vector unsigned short a1, vector signed short a2)
484 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
487 inline vector unsigned short
488 vec_adds (vector unsigned short a1, vector unsigned short a2)
490 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
493 inline vector signed short
494 vec_adds (vector signed short a1, vector signed short a2)
496 return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
499 inline vector unsigned int
500 vec_adds (vector signed int a1, vector unsigned int a2)
502 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
505 inline vector unsigned int
506 vec_adds (vector unsigned int a1, vector signed int a2)
508 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
511 inline vector unsigned int
512 vec_adds (vector unsigned int a1, vector unsigned int a2)
514 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
517 inline vector signed int
518 vec_adds (vector signed int a1, vector signed int a2)
520 return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
523 /* vec_vaddsws */
525 inline vector signed int
526 vec_vaddsws (vector signed int a1, vector signed int a2)
528 return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
531 /* vec_vadduws */
533 inline vector unsigned int
534 vec_vadduws (vector signed int a1, vector unsigned int a2)
536 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
539 inline vector unsigned int
540 vec_vadduws (vector unsigned int a1, vector signed int a2)
542 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
545 inline vector unsigned int
546 vec_vadduws (vector unsigned int a1, vector unsigned int a2)
548 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
551 /* vec_vaddshs */
552 inline vector signed short
553 vec_vaddshs (vector signed short a1, vector signed short a2)
555 return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
558 /* vec_vadduhs */
560 inline vector unsigned short
561 vec_vadduhs (vector signed short a1, vector unsigned short a2)
563 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
566 inline vector unsigned short
567 vec_vadduhs (vector unsigned short a1, vector signed short a2)
569 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
572 inline vector unsigned short
573 vec_vadduhs (vector unsigned short a1, vector unsigned short a2)
575 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
578 /* vec_vaddsbs */
580 inline vector signed char
581 vec_vaddsbs (vector signed char a1, vector signed char a2)
583 return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
586 /* vec_vaddubs */
588 inline vector unsigned char
589 vec_vaddubs (vector signed char a1, vector unsigned char a2)
591 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
594 inline vector unsigned char
595 vec_vaddubs (vector unsigned char a1, vector signed char a2)
597 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
600 inline vector unsigned char
601 vec_vaddubs (vector unsigned char a1, vector unsigned char a2)
603 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
606 /* vec_and */
608 inline vector float
609 vec_and (vector float a1, vector float a2)
611 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
614 inline vector float
615 vec_and (vector float a1, vector signed int a2)
617 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
620 inline vector float
621 vec_and (vector signed int a1, vector float a2)
623 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
626 inline vector signed int
627 vec_and (vector signed int a1, vector signed int a2)
629 return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
632 inline vector unsigned int
633 vec_and (vector signed int a1, vector unsigned int a2)
635 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
638 inline vector unsigned int
639 vec_and (vector unsigned int a1, vector signed int a2)
641 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
644 inline vector unsigned int
645 vec_and (vector unsigned int a1, vector unsigned int a2)
647 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
650 inline vector signed short
651 vec_and (vector signed short a1, vector signed short a2)
653 return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
656 inline vector unsigned short
657 vec_and (vector signed short a1, vector unsigned short a2)
659 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
662 inline vector unsigned short
663 vec_and (vector unsigned short a1, vector signed short a2)
665 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
668 inline vector unsigned short
669 vec_and (vector unsigned short a1, vector unsigned short a2)
671 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
674 inline vector signed char
675 vec_and (vector signed char a1, vector signed char a2)
677 return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
680 inline vector unsigned char
681 vec_and (vector signed char a1, vector unsigned char a2)
683 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
686 inline vector unsigned char
687 vec_and (vector unsigned char a1, vector signed char a2)
689 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
692 inline vector unsigned char
693 vec_and (vector unsigned char a1, vector unsigned char a2)
695 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
698 /* vec_andc */
700 inline vector float
701 vec_andc (vector float a1, vector float a2)
703 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
706 inline vector float
707 vec_andc (vector float a1, vector signed int a2)
709 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
712 inline vector float
713 vec_andc (vector signed int a1, vector float a2)
715 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
718 inline vector signed int
719 vec_andc (vector signed int a1, vector signed int a2)
721 return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
724 inline vector unsigned int
725 vec_andc (vector signed int a1, vector unsigned int a2)
727 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
730 inline vector unsigned int
731 vec_andc (vector unsigned int a1, vector signed int a2)
733 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
736 inline vector unsigned int
737 vec_andc (vector unsigned int a1, vector unsigned int a2)
739 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
742 inline vector signed short
743 vec_andc (vector signed short a1, vector signed short a2)
745 return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
748 inline vector unsigned short
749 vec_andc (vector signed short a1, vector unsigned short a2)
751 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
754 inline vector unsigned short
755 vec_andc (vector unsigned short a1, vector signed short a2)
757 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
760 inline vector unsigned short
761 vec_andc (vector unsigned short a1, vector unsigned short a2)
763 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
766 inline vector signed char
767 vec_andc (vector signed char a1, vector signed char a2)
769 return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
772 inline vector unsigned char
773 vec_andc (vector signed char a1, vector unsigned char a2)
775 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
778 inline vector unsigned char
779 vec_andc (vector unsigned char a1, vector signed char a2)
781 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
784 inline vector unsigned char
785 vec_andc (vector unsigned char a1, vector unsigned char a2)
787 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
790 /* vec_avg */
792 inline vector unsigned char
793 vec_avg (vector unsigned char a1, vector unsigned char a2)
795 return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
798 inline vector signed char
799 vec_avg (vector signed char a1, vector signed char a2)
801 return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
804 inline vector unsigned short
805 vec_avg (vector unsigned short a1, vector unsigned short a2)
807 return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
810 inline vector signed short
811 vec_avg (vector signed short a1, vector signed short a2)
813 return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
816 inline vector unsigned int
817 vec_avg (vector unsigned int a1, vector unsigned int a2)
819 return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
822 inline vector signed int
823 vec_avg (vector signed int a1, vector signed int a2)
825 return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
828 /* vec_vavgsw */
830 inline vector signed int
831 vec_vavgsw (vector signed int a1, vector signed int a2)
833 return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
836 /* vec_vavguw */
838 inline vector unsigned int
839 vec_vavguw (vector unsigned int a1, vector unsigned int a2)
841 return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
844 /* vec_vavgsh */
846 inline vector signed short
847 vec_vavgsh (vector signed short a1, vector signed short a2)
849 return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
852 /* vec_vavguh */
854 inline vector unsigned short
855 vec_vavguh (vector unsigned short a1, vector unsigned short a2)
857 return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
860 /* vec_vavgsb */
862 inline vector signed char
863 vec_vavgsb (vector signed char a1, vector signed char a2)
865 return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
868 /* vec_vavgub */
870 inline vector unsigned char
871 vec_vavgub (vector unsigned char a1, vector unsigned char a2)
873 return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
876 /* vec_ceil */
878 inline vector float
879 vec_ceil (vector float a1)
881 return (vector float) __builtin_altivec_vrfip ((vector float) a1);
884 /* vec_cmpb */
886 inline vector signed int
887 vec_cmpb (vector float a1, vector float a2)
889 return (vector signed int) __builtin_altivec_vcmpbfp ((vector float) a1, (vector float) a2);
892 /* vec_cmpeq */
894 inline vector signed char
895 vec_cmpeq (vector signed char a1, vector signed char a2)
897 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
900 inline vector signed char
901 vec_cmpeq (vector unsigned char a1, vector unsigned char a2)
903 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
906 inline vector signed short
907 vec_cmpeq (vector signed short a1, vector signed short a2)
909 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
912 inline vector signed short
913 vec_cmpeq (vector unsigned short a1, vector unsigned short a2)
915 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
918 inline vector signed int
919 vec_cmpeq (vector signed int a1, vector signed int a2)
921 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
924 inline vector signed int
925 vec_cmpeq (vector unsigned int a1, vector unsigned int a2)
927 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
930 inline vector signed int
931 vec_cmpeq (vector float a1, vector float a2)
933 return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
936 /* vec_vcmpeqfp */
938 inline vector signed int
939 vec_vcmpeqfp (vector float a1, vector float a2)
941 return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
944 /* vec_vcmpequw */
946 inline vector signed int
947 vec_vcmpequw (vector signed int a1, vector signed int a2)
949 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
952 inline vector signed int
953 vec_vcmpequw (vector unsigned int a1, vector unsigned int a2)
955 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
958 /* vec_vcmpequh */
960 inline vector signed short
961 vec_vcmpequh (vector signed short a1, vector signed short a2)
963 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
966 inline vector signed short
967 vec_vcmpequh (vector unsigned short a1, vector unsigned short a2)
969 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
972 /* vec_vcmpequb */
974 inline vector signed char
975 vec_vcmpequb (vector signed char a1, vector signed char a2)
977 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
980 inline vector signed char
981 vec_vcmpequb (vector unsigned char a1, vector unsigned char a2)
983 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
986 /* vec_cmpge */
988 inline vector signed int
989 vec_cmpge (vector float a1, vector float a2)
991 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
994 /* vec_cmpgt */
996 inline vector signed char
997 vec_cmpgt (vector unsigned char a1, vector unsigned char a2)
999 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
1002 inline vector signed char
1003 vec_cmpgt (vector signed char a1, vector signed char a2)
1005 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
1008 inline vector signed short
1009 vec_cmpgt (vector unsigned short a1, vector unsigned short a2)
1011 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
1014 inline vector signed short
1015 vec_cmpgt (vector signed short a1, vector signed short a2)
1017 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
1020 inline vector signed int
1021 vec_cmpgt (vector unsigned int a1, vector unsigned int a2)
1023 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
1026 inline vector signed int
1027 vec_cmpgt (vector signed int a1, vector signed int a2)
1029 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
1032 inline vector signed int
1033 vec_cmpgt (vector float a1, vector float a2)
1035 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
1038 /* vec_vcmpgtfp */
1040 inline vector signed int
1041 vec_vcmpgtfp (vector float a1, vector float a2)
1043 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
1046 /* vec_vcmpgtsw */
1048 inline vector signed int
1049 vec_vcmpgtsw (vector signed int a1, vector signed int a2)
1051 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
1054 /* vec_vcmpgtuw */
1056 inline vector signed int
1057 vec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2)
1059 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
1062 /* vec_vcmpgtsh */
1064 inline vector signed short
1065 vec_cmpgtsh (vector signed short a1, vector signed short a2)
1067 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
1070 /* vec_vcmpgtuh */
1072 inline vector signed short
1073 vec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2)
1075 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
1078 /* vec_vcmpgtsb */
1080 inline vector signed char
1081 vec_vcmpgtsb (vector signed char a1, vector signed char a2)
1083 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
1086 /* vec_vcmpgtub */
1088 inline vector signed char
1089 vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2)
1091 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
1094 /* vec_cmple */
1096 inline vector signed int
1097 vec_cmple (vector float a1, vector float a2)
1099 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a2, (vector float) a1);
1102 /* vec_cmplt */
1104 inline vector signed char
1105 vec_cmplt (vector unsigned char a1, vector unsigned char a2)
1107 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a2, (vector signed char) a1);
1110 inline vector signed char
1111 vec_cmplt (vector signed char a1, vector signed char a2)
1113 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a2, (vector signed char) a1);
1116 inline vector signed short
1117 vec_cmplt (vector unsigned short a1, vector unsigned short a2)
1119 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a2, (vector signed short) a1);
1122 inline vector signed short
1123 vec_cmplt (vector signed short a1, vector signed short a2)
1125 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a2, (vector signed short) a1);
1128 inline vector signed int
1129 vec_cmplt (vector unsigned int a1, vector unsigned int a2)
1131 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a2, (vector signed int) a1);
1134 inline vector signed int
1135 vec_cmplt (vector signed int a1, vector signed int a2)
1137 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a2, (vector signed int) a1);
1140 inline vector signed int
1141 vec_cmplt (vector float a1, vector float a2)
1143 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a2, (vector float) a1);
1146 /* vec_ctf */
1148 inline vector float
1149 vec_ctf (vector unsigned int a1, const char a2)
1151 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
1154 inline vector float
1155 vec_ctf (vector signed int a1, const char a2)
1157 return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
1160 /* vec_vcfsx */
1162 inline vector float
1163 vec_vcfsx (vector signed int a1, const char a2)
1165 return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
1168 /* vec_vcfux */
1170 inline vector float
1171 vec_vcfux (vector unsigned int a1, const char a2)
1173 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
1176 /* vec_cts */
1178 inline vector signed int
1179 vec_cts (vector float a1, const char a2)
1181 return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2);
1184 /* vec_ctu */
1186 inline vector unsigned int
1187 vec_ctu (vector float a1, const char a2)
1189 return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2);
1192 /* vec_dss */
1194 inline void
1195 vec_dss (const char a1)
1197 __builtin_altivec_dss (a1);
1200 /* vec_dssall */
1202 inline void
1203 vec_dssall (void)
1205 __builtin_altivec_dssall ();
1208 /* vec_dst */
1210 inline void
1211 vec_dst (vector unsigned char *a1, int a2, const char a3)
1213 __builtin_altivec_dst ((void *) a1, a2, a3);
1216 inline void
1217 vec_dst (vector signed char *a1, int a2, const char a3)
1219 __builtin_altivec_dst ((void *) a1, a2, a3);
1222 inline void
1223 vec_dst (vector unsigned short *a1, int a2, const char a3)
1225 __builtin_altivec_dst ((void *) a1, a2, a3);
1228 inline void
1229 vec_dst (vector signed short *a1, int a2, const char a3)
1231 __builtin_altivec_dst ((void *) a1, a2, a3);
1234 inline void
1235 vec_dst (vector unsigned int *a1, int a2, const char a3)
1237 __builtin_altivec_dst ((void *) a1, a2, a3);
1240 inline void
1241 vec_dst (vector signed int *a1, int a2, const char a3)
1243 __builtin_altivec_dst ((void *) a1, a2, a3);
1246 inline void
1247 vec_dst (vector float *a1, int a2, const char a3)
1249 __builtin_altivec_dst ((void *) a1, a2, a3);
1252 inline void
1253 vec_dst (unsigned char *a1, int a2, const char a3)
1255 __builtin_altivec_dst ((void *) a1, a2, a3);
1258 inline void
1259 vec_dst (signed char *a1, int a2, const char a3)
1261 __builtin_altivec_dst ((void *) a1, a2, a3);
1264 inline void
1265 vec_dst (unsigned short *a1, int a2, const char a3)
1267 __builtin_altivec_dst ((void *) a1, a2, a3);
1270 inline void
1271 vec_dst (signed short *a1, int a2, const char a3)
1273 __builtin_altivec_dst ((void *) a1, a2, a3);
1276 inline void
1277 vec_dst (unsigned int *a1, int a2, const char a3)
1279 __builtin_altivec_dst ((void *) a1, a2, a3);
1282 inline void
1283 vec_dst (signed int *a1, int a2, const char a3)
1285 __builtin_altivec_dst ((void *) a1, a2, a3);
1288 inline void
1289 vec_dst (unsigned long *a1, int a2, const char a3)
1291 __builtin_altivec_dst ((void *) a1, a2, a3);
1294 inline void
1295 vec_dst (signed long *a1, int a2, const char a3)
1297 __builtin_altivec_dst ((void *) a1, a2, a3);
1300 inline void
1301 vec_dst (float *a1, int a2, const char a3)
1303 __builtin_altivec_dst ((void *) a1, a2, a3);
1306 /* vec_dstst */
1308 inline void
1309 vec_dstst (vector unsigned char *a1, int a2, const char a3)
1311 __builtin_altivec_dstst ((void *) a1, a2, a3);
1314 inline void
1315 vec_dstst (vector signed char *a1, int a2, const char a3)
1317 __builtin_altivec_dstst ((void *) a1, a2, a3);
1320 inline void
1321 vec_dstst (vector unsigned short *a1, int a2, const char a3)
1323 __builtin_altivec_dstst ((void *) a1, a2, a3);
1326 inline void
1327 vec_dstst (vector signed short *a1, int a2, const char a3)
1329 __builtin_altivec_dstst ((void *) a1, a2, a3);
1332 inline void
1333 vec_dstst (vector unsigned int *a1, int a2, const char a3)
1335 __builtin_altivec_dstst ((void *) a1, a2, a3);
1338 inline void
1339 vec_dstst (vector signed int *a1, int a2, const char a3)
1341 __builtin_altivec_dstst ((void *) a1, a2, a3);
1344 inline void
1345 vec_dstst (vector float *a1, int a2, const char a3)
1347 __builtin_altivec_dstst ((void *) a1, a2, a3);
1350 inline void
1351 vec_dstst (unsigned char *a1, int a2, const char a3)
1353 __builtin_altivec_dstst ((void *) a1, a2, a3);
1356 inline void
1357 vec_dstst (signed char *a1, int a2, const char a3)
1359 __builtin_altivec_dstst ((void *) a1, a2, a3);
1362 inline void
1363 vec_dstst (unsigned short *a1, int a2, const char a3)
1365 __builtin_altivec_dstst ((void *) a1, a2, a3);
1368 inline void
1369 vec_dstst (signed short *a1, int a2, const char a3)
1371 __builtin_altivec_dstst ((void *) a1, a2, a3);
1374 inline void
1375 vec_dstst (unsigned int *a1, int a2, const char a3)
1377 __builtin_altivec_dstst ((void *) a1, a2, a3);
1380 inline void
1381 vec_dstst (signed int *a1, int a2, const char a3)
1383 __builtin_altivec_dstst ((void *) a1, a2, a3);
1386 inline void
1387 vec_dstst (unsigned long *a1, int a2, const char a3)
1389 __builtin_altivec_dstst ((void *) a1, a2, a3);
1392 inline void
1393 vec_dstst (signed long *a1, int a2, const char a3)
1395 __builtin_altivec_dstst ((void *) a1, a2, a3);
1398 inline void
1399 vec_dstst (float *a1, int a2, const char a3)
1401 __builtin_altivec_dstst ((void *) a1, a2, a3);
1404 /* vec_dststt */
1406 inline void
1407 vec_dststt (vector unsigned char *a1, int a2, const char a3)
1409 __builtin_altivec_dststt ((void *) a1, a2, a3);
1412 inline void
1413 vec_dststt (vector signed char *a1, int a2, const char a3)
1415 __builtin_altivec_dststt ((void *) a1, a2, a3);
1418 inline void
1419 vec_dststt (vector unsigned short *a1, int a2, const char a3)
1421 __builtin_altivec_dststt ((void *) a1, a2, a3);
1424 inline void
1425 vec_dststt (vector signed short *a1, int a2, const char a3)
1427 __builtin_altivec_dststt ((void *) a1, a2, a3);
1430 inline void
1431 vec_dststt (vector unsigned int *a1, int a2, const char a3)
1433 __builtin_altivec_dststt ((void *) a1, a2, a3);
1436 inline void
1437 vec_dststt (vector signed int *a1, int a2, const char a3)
1439 __builtin_altivec_dststt ((void *) a1, a2, a3);
1442 inline void
1443 vec_dststt (vector float *a1, int a2, const char a3)
1445 __builtin_altivec_dststt ((void *) a1, a2, a3);
1448 inline void
1449 vec_dststt (unsigned char *a1, int a2, const char a3)
1451 __builtin_altivec_dststt ((void *) a1, a2, a3);
1454 inline void
1455 vec_dststt (signed char *a1, int a2, const char a3)
1457 __builtin_altivec_dststt ((void *) a1, a2, a3);
1460 inline void
1461 vec_dststt (unsigned short *a1, int a2, const char a3)
1463 __builtin_altivec_dststt ((void *) a1, a2, a3);
1466 inline void
1467 vec_dststt (signed short *a1, int a2, const char a3)
1469 __builtin_altivec_dststt ((void *) a1, a2, a3);
1472 inline void
1473 vec_dststt (unsigned int *a1, int a2, const char a3)
1475 __builtin_altivec_dststt ((void *) a1, a2, a3);
1478 inline void
1479 vec_dststt (signed int *a1, int a2, const char a3)
1481 __builtin_altivec_dststt ((void *) a1, a2, a3);
1484 inline void
1485 vec_dststt (unsigned long *a1, int a2, const char a3)
1487 __builtin_altivec_dststt ((void *) a1, a2, a3);
1490 inline void
1491 vec_dststt (signed long *a1, int a2, const char a3)
1493 __builtin_altivec_dststt ((void *) a1, a2, a3);
1496 inline void
1497 vec_dststt (float *a1, int a2, const char a3)
1499 __builtin_altivec_dststt ((void *) a1, a2, a3);
1502 /* vec_dstt */
1504 inline void
1505 vec_dstt (vector unsigned char *a1, int a2, const char a3)
1507 __builtin_altivec_dstt ((void *) a1, a2, a3);
1510 inline void
1511 vec_dstt (vector signed char *a1, int a2, const char a3)
1513 __builtin_altivec_dstt ((void *) a1, a2, a3);
1516 inline void
1517 vec_dstt (vector unsigned short *a1, int a2, const char a3)
1519 __builtin_altivec_dstt ((void *) a1, a2, a3);
1522 inline void
1523 vec_dstt (vector signed short *a1, int a2, const char a3)
1525 __builtin_altivec_dstt ((void *) a1, a2, a3);
1528 inline void
1529 vec_dstt (vector unsigned int *a1, int a2, const char a3)
1531 __builtin_altivec_dstt ((void *) a1, a2, a3);
1534 inline void
1535 vec_dstt (vector signed int *a1, int a2, const char a3)
1537 __builtin_altivec_dstt ((void *) a1, a2, a3);
1540 inline void
1541 vec_dstt (vector float *a1, int a2, const char a3)
1543 __builtin_altivec_dstt ((void *) a1, a2, a3);
1546 inline void
1547 vec_dstt (unsigned char *a1, int a2, const char a3)
1549 __builtin_altivec_dstt ((void *) a1, a2, a3);
1552 inline void
1553 vec_dstt (signed char *a1, int a2, const char a3)
1555 __builtin_altivec_dstt ((void *) a1, a2, a3);
1558 inline void
1559 vec_dstt (unsigned short *a1, int a2, const char a3)
1561 __builtin_altivec_dstt ((void *) a1, a2, a3);
1564 inline void
1565 vec_dstt (signed short *a1, int a2, const char a3)
1567 __builtin_altivec_dstt ((void *) a1, a2, a3);
1570 inline void
1571 vec_dstt (unsigned int *a1, int a2, const char a3)
1573 __builtin_altivec_dstt ((void *) a1, a2, a3);
1576 inline void
1577 vec_dstt (signed int *a1, int a2, const char a3)
1579 __builtin_altivec_dstt ((void *) a1, a2, a3);
1582 inline void
1583 vec_dstt (unsigned long *a1, int a2, const char a3)
1585 __builtin_altivec_dstt ((void *) a1, a2, a3);
1588 inline void
1589 vec_dstt (signed long *a1, int a2, const char a3)
1591 __builtin_altivec_dstt ((void *) a1, a2, a3);
1594 inline void
1595 vec_dstt (float *a1, int a2, const char a3)
1597 __builtin_altivec_dstt ((void *) a1, a2, a3);
1600 /* vec_expte */
1602 inline vector float
1603 vec_expte (vector float a1)
1605 return (vector float) __builtin_altivec_vexptefp ((vector float) a1);
1608 /* vec_floor */
1610 inline vector float
1611 vec_floor (vector float a1)
1613 return (vector float) __builtin_altivec_vrfim ((vector float) a1);
1616 /* vec_ld */
1618 inline vector float
1619 vec_ld (int a1, vector float *a2)
1621 return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
1624 inline vector float
1625 vec_ld (int a1, float *a2)
1627 return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
1630 inline vector signed int
1631 vec_ld (int a1, vector signed int *a2)
1633 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1636 inline vector signed int
1637 vec_ld (int a1, signed int *a2)
1639 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1642 inline vector signed int
1643 vec_ld (int a1, signed long *a2)
1645 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1648 inline vector unsigned int
1649 vec_ld (int a1, vector unsigned int *a2)
1651 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
1654 inline vector unsigned int
1655 vec_ld (int a1, unsigned int *a2)
1657 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
1660 inline vector unsigned int
1661 vec_ld (int a1, unsigned long *a2)
1663 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
1666 inline vector signed short
1667 vec_ld (int a1, vector signed short *a2)
1669 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
1672 inline vector signed short
1673 vec_ld (int a1, signed short *a2)
1675 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
1678 inline vector unsigned short
1679 vec_ld (int a1, vector unsigned short *a2)
1681 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
1684 inline vector unsigned short
1685 vec_ld (int a1, unsigned short *a2)
1687 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
1690 inline vector signed char
1691 vec_ld (int a1, vector signed char *a2)
1693 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
1696 inline vector signed char
1697 vec_ld (int a1, signed char *a2)
1699 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
1702 inline vector unsigned char
1703 vec_ld (int a1, vector unsigned char *a2)
1705 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
1708 inline vector unsigned char
1709 vec_ld (int a1, unsigned char *a2)
1711 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
1714 /* vec_lde */
1716 inline vector signed char
1717 vec_lde (int a1, signed char *a2)
1719 return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
1722 inline vector unsigned char
1723 vec_lde (int a1, unsigned char *a2)
1725 return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
1728 inline vector signed short
1729 vec_lde (int a1, signed short *a2)
1731 return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
1734 inline vector unsigned short
1735 vec_lde (int a1, unsigned short *a2)
1737 return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
1740 inline vector float
1741 vec_lde (int a1, float *a2)
1743 return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
1746 inline vector signed int
1747 vec_lde (int a1, signed int *a2)
1749 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1752 inline vector unsigned int
1753 vec_lde (int a1, unsigned int *a2)
1755 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1758 inline vector signed int
1759 vec_lde (int a1, signed long *a2)
1761 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1764 inline vector unsigned int
1765 vec_lde (int a1, unsigned long *a2)
1767 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1770 /* vec_lvewx */
1772 inline vector float
1773 vec_lvewx (int a1, float *a2)
1775 return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
1778 inline vector signed int
1779 vec_lvewx (int a1, signed int *a2)
1781 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1784 inline vector unsigned int
1785 vec_lvewx (int a1, unsigned int *a2)
1787 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1790 inline vector signed int
1791 vec_lvewx (int a1, signed long *a2)
1793 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1796 inline vector unsigned int
1797 vec_lvewx (int a1, unsigned long *a2)
1799 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1802 /* vec_lvehx */
1804 inline vector signed short
1805 vec_lvehx (int a1, signed short *a2)
1807 return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
1810 inline vector unsigned short
1811 vec_lvehx (int a1, unsigned short *a2)
1813 return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
1816 /* vec_lvebx */
1818 inline vector signed char
1819 vec_lvebx (int a1, signed char *a2)
1821 return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
1824 inline vector unsigned char
1825 vec_lvebx (int a1, unsigned char *a2)
1827 return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
1830 /* vec_ldl */
1832 inline vector float
1833 vec_ldl (int a1, vector float *a2)
1835 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
1838 inline vector float
1839 vec_ldl (int a1, float *a2)
1841 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
1844 inline vector signed int
1845 vec_ldl (int a1, vector signed int *a2)
1847 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
1850 inline vector signed int
1851 vec_ldl (int a1, signed int *a2)
1853 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
1856 inline vector signed int
1857 vec_ldl (int a1, signed long *a2)
1859 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
1862 inline vector unsigned int
1863 vec_ldl (int a1, vector unsigned int *a2)
1865 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
1868 inline vector unsigned int
1869 vec_ldl (int a1, unsigned int *a2)
1871 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
1874 inline vector unsigned int
1875 vec_ldl (int a1, unsigned long *a2)
1877 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
1880 inline vector signed short
1881 vec_ldl (int a1, vector signed short *a2)
1883 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
1886 inline vector signed short
1887 vec_ldl (int a1, signed short *a2)
1889 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
1892 inline vector unsigned short
1893 vec_ldl (int a1, vector unsigned short *a2)
1895 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
1898 inline vector unsigned short
1899 vec_ldl (int a1, unsigned short *a2)
1901 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
1904 inline vector signed char
1905 vec_ldl (int a1, vector signed char *a2)
1907 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
1910 inline vector signed char
1911 vec_ldl (int a1, signed char *a2)
1913 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
1916 inline vector unsigned char
1917 vec_ldl (int a1, vector unsigned char *a2)
1919 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
1922 inline vector unsigned char
1923 vec_ldl (int a1, unsigned char *a2)
1925 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
1928 /* vec_loge */
1930 inline vector float
1931 vec_loge (vector float a1)
1933 return (vector float) __builtin_altivec_vlogefp ((vector float) a1);
1936 /* vec_lvsl */
1938 inline vector unsigned char
1939 vec_lvsl (int a1, unsigned char *a2)
1941 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1944 inline vector unsigned char
1945 vec_lvsl (int a1, signed char *a2)
1947 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1950 inline vector unsigned char
1951 vec_lvsl (int a1, unsigned short *a2)
1953 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1956 inline vector unsigned char
1957 vec_lvsl (int a1, signed short *a2)
1959 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1962 inline vector unsigned char
1963 vec_lvsl (int a1, unsigned int *a2)
1965 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1968 inline vector unsigned char
1969 vec_lvsl (int a1, signed int *a2)
1971 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1974 inline vector unsigned char
1975 vec_lvsl (int a1, unsigned long *a2)
1977 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1980 inline vector unsigned char
1981 vec_lvsl (int a1, signed long *a2)
1983 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1986 inline vector unsigned char
1987 vec_lvsl (int a1, float *a2)
1989 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1992 /* vec_lvsr */
1994 inline vector unsigned char
1995 vec_lvsr (int a1, unsigned char *a2)
1997 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2000 inline vector unsigned char
2001 vec_lvsr (int a1, signed char *a2)
2003 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2006 inline vector unsigned char
2007 vec_lvsr (int a1, unsigned short *a2)
2009 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2012 inline vector unsigned char
2013 vec_lvsr (int a1, signed short *a2)
2015 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2018 inline vector unsigned char
2019 vec_lvsr (int a1, unsigned int *a2)
2021 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2024 inline vector unsigned char
2025 vec_lvsr (int a1, signed int *a2)
2027 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2030 inline vector unsigned char
2031 vec_lvsr (int a1, unsigned long *a2)
2033 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2036 inline vector unsigned char
2037 vec_lvsr (int a1, signed long *a2)
2039 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2042 inline vector unsigned char
2043 vec_lvsr (int a1, float *a2)
2045 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2048 /* vec_madd */
2050 inline vector float
2051 vec_madd (vector float a1, vector float a2, vector float a3)
2053 return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
2057 /* vec_madds */
2059 inline vector signed short
2060 vec_madds (vector signed short a1, vector signed short a2, vector signed short a3)
2062 return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2065 /* vec_max */
2067 inline vector unsigned char
2068 vec_max (vector signed char a1, vector unsigned char a2)
2070 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2073 inline vector unsigned char
2074 vec_max (vector unsigned char a1, vector signed char a2)
2076 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2079 inline vector unsigned char
2080 vec_max (vector unsigned char a1, vector unsigned char a2)
2082 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2085 inline vector signed char
2086 vec_max (vector signed char a1, vector signed char a2)
2088 return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2091 inline vector unsigned short
2092 vec_max (vector signed short a1, vector unsigned short a2)
2094 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2097 inline vector unsigned short
2098 vec_max (vector unsigned short a1, vector signed short a2)
2100 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2103 inline vector unsigned short
2104 vec_max (vector unsigned short a1, vector unsigned short a2)
2106 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2109 inline vector signed short
2110 vec_max (vector signed short a1, vector signed short a2)
2112 return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2115 inline vector unsigned int
2116 vec_max (vector signed int a1, vector unsigned int a2)
2118 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2121 inline vector unsigned int
2122 vec_max (vector unsigned int a1, vector signed int a2)
2124 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2127 inline vector unsigned int
2128 vec_max (vector unsigned int a1, vector unsigned int a2)
2130 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2133 inline vector signed int
2134 vec_max (vector signed int a1, vector signed int a2)
2136 return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2139 inline vector float
2140 vec_max (vector float a1, vector float a2)
2142 return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
2145 /* vec_vmaxfp */
2147 inline vector float
2148 vec_vmaxfp (vector float a1, vector float a2)
2150 return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
2153 /* vec_vmaxsw */
2155 inline vector signed int
2156 vec_vmaxsw (vector signed int a1, vector signed int a2)
2158 return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2161 /* vec_vmaxuw */
2163 inline vector unsigned int
2164 vec_vmaxuw (vector signed int a1, vector unsigned int a2)
2166 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2169 inline vector unsigned int
2170 vec_vmaxuw (vector unsigned int a1, vector signed int a2)
2172 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2175 inline vector unsigned int
2176 vec_vmaxuw (vector unsigned int a1, vector unsigned int a2)
2178 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2181 /* vec_vmaxsh */
2183 inline vector signed short
2184 vec_vmaxsh (vector signed short a1, vector signed short a2)
2186 return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2189 /* vec_vmaxuh */
2191 inline vector unsigned short
2192 vec_vmaxuh (vector signed short a1, vector unsigned short a2)
2194 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2197 inline vector unsigned short
2198 vec_vmaxuh (vector unsigned short a1, vector signed short a2)
2200 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2203 inline vector unsigned short
2204 vec_vmaxuh (vector unsigned short a1, vector unsigned short a2)
2206 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2209 /* vec_vmaxsb */
2211 inline vector signed char
2212 vec_vmaxsb (vector signed char a1, vector signed char a2)
2214 return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2217 /* vec_vmaxub */
2219 inline vector unsigned char
2220 vec_vmaxub (vector signed char a1, vector unsigned char a2)
2222 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2225 inline vector unsigned char
2226 vec_vmaxub (vector unsigned char a1, vector signed char a2)
2228 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2231 inline vector unsigned char
2232 vec_vmaxub (vector unsigned char a1, vector unsigned char a2)
2234 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2237 /* vec_mergeh */
2239 inline vector signed char
2240 vec_mergeh (vector signed char a1, vector signed char a2)
2242 return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2245 inline vector unsigned char
2246 vec_mergeh (vector unsigned char a1, vector unsigned char a2)
2248 return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2251 inline vector signed short
2252 vec_mergeh (vector signed short a1, vector signed short a2)
2254 return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2257 inline vector unsigned short
2258 vec_mergeh (vector unsigned short a1, vector unsigned short a2)
2260 return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2263 inline vector float
2264 vec_mergeh (vector float a1, vector float a2)
2266 return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2269 inline vector signed int
2270 vec_mergeh (vector signed int a1, vector signed int a2)
2272 return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2275 inline vector unsigned int
2276 vec_mergeh (vector unsigned int a1, vector unsigned int a2)
2278 return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2281 /* vec_vmrghw */
2283 inline vector float
2284 vec_vmrghw (vector float a1, vector float a2)
2286 return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2289 inline vector signed int
2290 vec_vmrghw (vector signed int a1, vector signed int a2)
2292 return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2295 inline vector unsigned int
2296 vec_vmrghw (vector unsigned int a1, vector unsigned int a2)
2298 return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2301 /* vec_vmrghh */
2303 inline vector signed short
2304 vec_vmrghh (vector signed short a1, vector signed short a2)
2306 return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2309 inline vector unsigned short
2310 vec_vmrghh (vector unsigned short a1, vector unsigned short a2)
2312 return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2315 /* vec_vmrghb */
2317 inline vector signed char
2318 vec_vmrghb (vector signed char a1, vector signed char a2)
2320 return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2323 inline vector unsigned char
2324 vec_vmrghb (vector unsigned char a1, vector unsigned char a2)
2326 return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2329 /* vec_mergel */
2331 inline vector signed char
2332 vec_mergel (vector signed char a1, vector signed char a2)
2334 return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2337 inline vector unsigned char
2338 vec_mergel (vector unsigned char a1, vector unsigned char a2)
2340 return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2343 inline vector signed short
2344 vec_mergel (vector signed short a1, vector signed short a2)
2346 return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2349 inline vector unsigned short
2350 vec_mergel (vector unsigned short a1, vector unsigned short a2)
2352 return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2355 inline vector float
2356 vec_mergel (vector float a1, vector float a2)
2358 return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2361 inline vector signed int
2362 vec_mergel (vector signed int a1, vector signed int a2)
2364 return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2367 inline vector unsigned int
2368 vec_mergel (vector unsigned int a1, vector unsigned int a2)
2370 return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2373 /* vec_vmrglw */
2375 inline vector float
2376 vec_vmrglw (vector float a1, vector float a2)
2378 return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2381 inline vector signed int
2382 vec_vmrglw (vector signed int a1, vector signed int a2)
2384 return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2387 inline vector unsigned int
2388 vec_vmrglw (vector unsigned int a1, vector unsigned int a2)
2390 return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2393 /* vec_vmrglh */
2395 inline vector signed short
2396 vec_vmrglh (vector signed short a1, vector signed short a2)
2398 return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2401 inline vector unsigned short
2402 vec_vmrglh (vector unsigned short a1, vector unsigned short a2)
2404 return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2407 /* vec_vmrglb */
2409 inline vector signed char
2410 vec_vmrglb (vector signed char a1, vector signed char a2)
2412 return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2415 inline vector unsigned char
2416 vec_vmrglb (vector unsigned char a1, vector unsigned char a2)
2418 return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2421 /* vec_mfvscr */
2423 inline vector unsigned short
2424 vec_mfvscr (void)
2426 return (vector unsigned short) __builtin_altivec_mfvscr ();
2429 /* vec_min */
2431 inline vector unsigned char
2432 vec_min (vector signed char a1, vector unsigned char a2)
2434 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2437 inline vector unsigned char
2438 vec_min (vector unsigned char a1, vector signed char a2)
2440 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2443 inline vector unsigned char
2444 vec_min (vector unsigned char a1, vector unsigned char a2)
2446 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2449 inline vector signed char
2450 vec_min (vector signed char a1, vector signed char a2)
2452 return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
2455 inline vector unsigned short
2456 vec_min (vector signed short a1, vector unsigned short a2)
2458 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2461 inline vector unsigned short
2462 vec_min (vector unsigned short a1, vector signed short a2)
2464 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2467 inline vector unsigned short
2468 vec_min (vector unsigned short a1, vector unsigned short a2)
2470 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2473 inline vector signed short
2474 vec_min (vector signed short a1, vector signed short a2)
2476 return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
2479 inline vector unsigned int
2480 vec_min (vector signed int a1, vector unsigned int a2)
2482 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2485 inline vector unsigned int
2486 vec_min (vector unsigned int a1, vector signed int a2)
2488 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2491 inline vector unsigned int
2492 vec_min (vector unsigned int a1, vector unsigned int a2)
2494 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2497 inline vector signed int
2498 vec_min (vector signed int a1, vector signed int a2)
2500 return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
2503 inline vector float
2504 vec_min (vector float a1, vector float a2)
2506 return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
2509 /* vec_vminfp */
2511 inline vector float
2512 vec_vminfp (vector float a1, vector float a2)
2514 return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
2517 /* vec_vminsw */
2519 inline vector signed int
2520 vec_vminsw (vector signed int a1, vector signed int a2)
2522 return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
2525 /* vec_vminuw */
2527 inline vector unsigned int
2528 vec_vminuw (vector signed int a1, vector unsigned int a2)
2530 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2533 inline vector unsigned int
2534 vec_vminuw (vector unsigned int a1, vector signed int a2)
2536 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2539 inline vector unsigned int
2540 vec_vminuw (vector unsigned int a1, vector unsigned int a2)
2542 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2545 /* vec_vminsh */
2547 inline vector signed short
2548 vec_vminsh (vector signed short a1, vector signed short a2)
2550 return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
2553 /* vec_vminuh */
2555 inline vector unsigned short
2556 vec_vminuh (vector signed short a1, vector unsigned short a2)
2558 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2561 inline vector unsigned short
2562 vec_vminuh (vector unsigned short a1, vector signed short a2)
2564 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2567 inline vector unsigned short
2568 vec_vminuh (vector unsigned short a1, vector unsigned short a2)
2570 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2573 /* vec_vminsb */
2575 inline vector signed char
2576 vec_vminsb (vector signed char a1, vector signed char a2)
2578 return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
2581 /* vec_vminub */
2583 inline vector unsigned char
2584 vec_vminub (vector signed char a1, vector unsigned char a2)
2586 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2589 inline vector unsigned char
2590 vec_vminub (vector unsigned char a1, vector signed char a2)
2592 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2595 inline vector unsigned char
2596 vec_vminub (vector unsigned char a1, vector unsigned char a2)
2598 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2601 /* vec_mladd */
2603 inline vector signed short
2604 vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
2606 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2609 inline vector signed short
2610 vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
2612 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2615 inline vector signed short
2616 vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
2618 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2621 inline vector unsigned short
2622 vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
2624 return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2627 /* vec_mradds */
2629 inline vector signed short
2630 vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
2632 return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2635 /* vec_msum */
2637 inline vector unsigned int
2638 vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
2640 return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2643 inline vector signed int
2644 vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
2646 return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2649 inline vector unsigned int
2650 vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2652 return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2655 inline vector signed int
2656 vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
2658 return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2661 /* vec_vmsumshm */
2663 inline vector signed int
2664 vec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3)
2666 return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2669 /* vec_vmsumuhm */
2671 inline vector unsigned int
2672 vec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2674 return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2677 /* vec_vmsummbm */
2679 inline vector signed int
2680 vec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3)
2682 return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2685 /* vec_vmsumubm */
2687 inline vector unsigned int
2688 vec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
2690 return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2693 /* vec_msums */
2695 inline vector unsigned int
2696 vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2698 return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2701 inline vector signed int
2702 vec_msums (vector signed short a1, vector signed short a2, vector signed int a3)
2704 return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2707 /* vec_vmsumshs */
2709 inline vector signed int
2710 vec_vmsumshs (vector signed short a1, vector signed short a2, vector signed int a3)
2712 return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2715 /* vec_vmsumuhs */
2717 inline vector unsigned int
2718 vec_vmsumuhs (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2720 return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2723 /* vec_mtvscr */
2725 inline void
2726 vec_mtvscr (vector signed int a1)
2728 __builtin_altivec_mtvscr ((vector signed int) a1);
2731 inline void
2732 vec_mtvscr (vector unsigned int a1)
2734 __builtin_altivec_mtvscr ((vector signed int) a1);
2737 inline void
2738 vec_mtvscr (vector signed short a1)
2740 __builtin_altivec_mtvscr ((vector signed int) a1);
2743 inline void
2744 vec_mtvscr (vector unsigned short a1)
2746 __builtin_altivec_mtvscr ((vector signed int) a1);
2749 inline void
2750 vec_mtvscr (vector signed char a1)
2752 __builtin_altivec_mtvscr ((vector signed int) a1);
2755 inline void
2756 vec_mtvscr (vector unsigned char a1)
2758 __builtin_altivec_mtvscr ((vector signed int) a1);
2761 /* vec_mule */
2763 inline vector unsigned short
2764 vec_mule (vector unsigned char a1, vector unsigned char a2)
2766 return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
2769 inline vector signed short
2770 vec_mule (vector signed char a1, vector signed char a2)
2772 return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2);
2775 inline vector unsigned int
2776 vec_mule (vector unsigned short a1, vector unsigned short a2)
2778 return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
2781 inline vector signed int
2782 vec_mule (vector signed short a1, vector signed short a2)
2784 return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
2787 /* vec_vmulesh */
2789 inline vector signed int
2790 vec_vmulesh (vector signed short a1, vector signed short a2)
2792 return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
2795 /* vec_vmuleuh */
2797 inline vector unsigned int
2798 vec_vmuleuh (vector unsigned short a1, vector unsigned short a2)
2800 return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
2803 /* vec_vmuleub */
2804 inline vector unsigned short
2805 vec_vmuleub (vector unsigned char a1, vector unsigned char a2)
2807 return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
2810 /* vec_mulo */
2812 inline vector unsigned short
2813 vec_mulo (vector unsigned char a1, vector unsigned char a2)
2815 return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
2818 inline vector signed short
2819 vec_mulo (vector signed char a1, vector signed char a2)
2821 return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
2824 inline vector unsigned int
2825 vec_mulo (vector unsigned short a1, vector unsigned short a2)
2827 return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
2830 inline vector signed int
2831 vec_mulo (vector signed short a1, vector signed short a2)
2833 return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
2836 /* vec_vmulosh */
2838 inline vector signed int
2839 vec_vmulosh (vector signed short a1, vector signed short a2)
2841 return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
2844 /* vec_vmulouh */
2846 inline vector unsigned int
2847 vec_vmulouh (vector unsigned short a1, vector unsigned short a2)
2849 return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
2852 /* vec_vmulosb */
2854 inline vector signed short
2855 vec_vmulosb (vector signed char a1, vector signed char a2)
2857 return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
2860 /* vec_vmuloub */
2862 inline vector unsigned short
2863 vec_vmuloub (vector unsigned char a1, vector unsigned char a2)
2865 return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
2868 /* vec_nmsub */
2870 inline vector float
2871 vec_nmsub (vector float a1, vector float a2, vector float a3)
2873 return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3);
2876 /* vec_nor */
2878 inline vector float
2879 vec_nor (vector float a1, vector float a2)
2881 return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2884 inline vector signed int
2885 vec_nor (vector signed int a1, vector signed int a2)
2887 return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2890 inline vector unsigned int
2891 vec_nor (vector unsigned int a1, vector unsigned int a2)
2893 return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2896 inline vector signed short
2897 vec_nor (vector signed short a1, vector signed short a2)
2899 return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2902 inline vector unsigned short
2903 vec_nor (vector unsigned short a1, vector unsigned short a2)
2905 return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2908 inline vector signed char
2909 vec_nor (vector signed char a1, vector signed char a2)
2911 return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2914 inline vector unsigned char
2915 vec_nor (vector unsigned char a1, vector unsigned char a2)
2917 return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2920 /* vec_or */
2922 inline vector float
2923 vec_or (vector float a1, vector float a2)
2925 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2928 inline vector float
2929 vec_or (vector float a1, vector signed int a2)
2931 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2934 inline vector float
2935 vec_or (vector signed int a1, vector float a2)
2937 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2940 inline vector signed int
2941 vec_or (vector signed int a1, vector signed int a2)
2943 return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2946 inline vector unsigned int
2947 vec_or (vector signed int a1, vector unsigned int a2)
2949 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2952 inline vector unsigned int
2953 vec_or (vector unsigned int a1, vector signed int a2)
2955 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2958 inline vector unsigned int
2959 vec_or (vector unsigned int a1, vector unsigned int a2)
2961 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2964 inline vector signed short
2965 vec_or (vector signed short a1, vector signed short a2)
2967 return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2970 inline vector unsigned short
2971 vec_or (vector signed short a1, vector unsigned short a2)
2973 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2976 inline vector unsigned short
2977 vec_or (vector unsigned short a1, vector signed short a2)
2979 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2982 inline vector unsigned short
2983 vec_or (vector unsigned short a1, vector unsigned short a2)
2985 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2988 inline vector signed char
2989 vec_or (vector signed char a1, vector signed char a2)
2991 return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2994 inline vector unsigned char
2995 vec_or (vector signed char a1, vector unsigned char a2)
2997 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3000 inline vector unsigned char
3001 vec_or (vector unsigned char a1, vector signed char a2)
3003 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3006 inline vector unsigned char
3007 vec_or (vector unsigned char a1, vector unsigned char a2)
3009 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3012 /* vec_pack */
3014 inline vector signed char
3015 vec_pack (vector signed short a1, vector signed short a2)
3017 return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3020 inline vector unsigned char
3021 vec_pack (vector unsigned short a1, vector unsigned short a2)
3023 return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3026 inline vector signed short
3027 vec_pack (vector signed int a1, vector signed int a2)
3029 return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3032 inline vector unsigned short
3033 vec_pack (vector unsigned int a1, vector unsigned int a2)
3035 return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3038 /* vec_vpkuwum */
3040 inline vector signed short
3041 vec_vpkuwum (vector signed int a1, vector signed int a2)
3043 return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3046 inline vector unsigned short
3047 vec_vpkuwum (vector unsigned int a1, vector unsigned int a2)
3049 return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3052 /* vec_vpkuhum */
3054 inline vector signed char
3055 vec_vpkuhum (vector signed short a1, vector signed short a2)
3057 return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3060 inline vector unsigned char
3061 vec_vpkuhum (vector unsigned short a1, vector unsigned short a2)
3063 return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3066 /* vec_packpx */
3068 inline vector unsigned short
3069 vec_packpx (vector unsigned int a1, vector unsigned int a2)
3071 return (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2);
3074 /* vec_packs */
3076 inline vector unsigned char
3077 vec_packs (vector unsigned short a1, vector unsigned short a2)
3079 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3082 inline vector signed char
3083 vec_packs (vector signed short a1, vector signed short a2)
3085 return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
3088 inline vector unsigned short
3089 vec_packs (vector unsigned int a1, vector unsigned int a2)
3091 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3094 inline vector signed short
3095 vec_packs (vector signed int a1, vector signed int a2)
3097 return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
3100 /* vec_vpkswss */
3102 inline vector signed short
3103 vec_vpkswss (vector signed int a1, vector signed int a2)
3105 return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
3108 /* vec_vpkuwus */
3110 inline vector unsigned short
3111 vec_vpkuwus (vector unsigned int a1, vector unsigned int a2)
3113 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3116 /* vec_vpkshss */
3118 inline vector signed char
3119 vec_vpkshss (vector signed short a1, vector signed short a2)
3121 return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
3124 /* vec_vpkuhus */
3126 inline vector unsigned char
3127 vec_vpkuhus (vector unsigned short a1, vector unsigned short a2)
3129 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3132 /* vec_packsu */
3134 inline vector unsigned char
3135 vec_packsu (vector unsigned short a1, vector unsigned short a2)
3137 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3140 inline vector unsigned char
3141 vec_packsu (vector signed short a1, vector signed short a2)
3143 return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
3146 inline vector unsigned short
3147 vec_packsu (vector unsigned int a1, vector unsigned int a2)
3149 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3152 inline vector unsigned short
3153 vec_packsu (vector signed int a1, vector signed int a2)
3155 return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
3158 /* vec_vpkswus */
3160 inline vector unsigned short
3161 vec_vpkswus (vector signed int a1, vector signed int a2)
3163 return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
3166 /* vec_vpkshus */
3168 inline vector unsigned char
3169 vec_vpkshus (vector signed short a1, vector signed short a2)
3171 return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
3174 /* vec_perm */
3176 inline vector float
3177 vec_perm (vector float a1, vector float a2, vector unsigned char a3)
3179 return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3182 inline vector signed int
3183 vec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3)
3185 return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3188 inline vector unsigned int
3189 vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3)
3191 return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3194 inline vector signed short
3195 vec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3)
3197 return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3200 inline vector unsigned short
3201 vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3)
3203 return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3206 inline vector signed char
3207 vec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3)
3209 return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3212 inline vector unsigned char
3213 vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
3215 return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3218 /* vec_re */
3220 inline vector float
3221 vec_re (vector float a1)
3223 return (vector float) __builtin_altivec_vrefp ((vector float) a1);
3226 /* vec_rl */
3228 inline vector signed char
3229 vec_rl (vector signed char a1, vector unsigned char a2)
3231 return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3234 inline vector unsigned char
3235 vec_rl (vector unsigned char a1, vector unsigned char a2)
3237 return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3240 inline vector signed short
3241 vec_rl (vector signed short a1, vector unsigned short a2)
3243 return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3246 inline vector unsigned short
3247 vec_rl (vector unsigned short a1, vector unsigned short a2)
3249 return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3252 inline vector signed int
3253 vec_rl (vector signed int a1, vector unsigned int a2)
3255 return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3258 inline vector unsigned int
3259 vec_rl (vector unsigned int a1, vector unsigned int a2)
3261 return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3264 /* vec_vrlw */
3266 inline vector signed int
3267 vec_vrlw (vector signed int a1, vector unsigned int a2)
3269 return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3272 inline vector unsigned int
3273 vec_vrlw (vector unsigned int a1, vector unsigned int a2)
3275 return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3278 /* vec_vrlh */
3280 inline vector signed short
3281 vec_vrlh (vector signed short a1, vector unsigned short a2)
3283 return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3286 inline vector unsigned short
3287 vec_vrlh (vector unsigned short a1, vector unsigned short a2)
3289 return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3292 /* vec_vrlb */
3294 inline vector signed char
3295 vec_vrlb (vector signed char a1, vector unsigned char a2)
3297 return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3300 inline vector unsigned char
3301 vec_vrlb (vector unsigned char a1, vector unsigned char a2)
3303 return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3306 /* vec_round */
3308 inline vector float
3309 vec_round (vector float a1)
3311 return (vector float) __builtin_altivec_vrfin ((vector float) a1);
3314 /* vec_rsqrte */
3316 inline vector float
3317 vec_rsqrte (vector float a1)
3319 return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1);
3322 /* vec_sel */
3324 inline vector float
3325 vec_sel (vector float a1, vector float a2, vector signed int a3)
3327 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3330 inline vector float
3331 vec_sel (vector float a1, vector float a2, vector unsigned int a3)
3333 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3336 inline vector signed int
3337 vec_sel (vector signed int a1, vector signed int a2, vector signed int a3)
3339 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3342 inline vector signed int
3343 vec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3)
3345 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3348 inline vector unsigned int
3349 vec_sel (vector unsigned int a1, vector unsigned int a2, vector signed int a3)
3351 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3354 inline vector unsigned int
3355 vec_sel (vector unsigned int a1, vector unsigned int a2, vector unsigned int a3)
3357 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3360 inline vector signed short
3361 vec_sel (vector signed short a1, vector signed short a2, vector signed short a3)
3363 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3366 inline vector signed short
3367 vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3)
3369 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3372 inline vector unsigned short
3373 vec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3)
3375 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3378 inline vector unsigned short
3379 vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
3381 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3384 inline vector signed char
3385 vec_sel (vector signed char a1, vector signed char a2, vector signed char a3)
3387 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3390 inline vector signed char
3391 vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3)
3393 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3396 inline vector unsigned char
3397 vec_sel (vector unsigned char a1, vector unsigned char a2, vector signed char a3)
3399 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3402 inline vector unsigned char
3403 vec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
3405 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3408 /* vec_sl */
3410 inline vector signed char
3411 vec_sl (vector signed char a1, vector unsigned char a2)
3413 return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3416 inline vector unsigned char
3417 vec_sl (vector unsigned char a1, vector unsigned char a2)
3419 return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3422 inline vector signed short
3423 vec_sl (vector signed short a1, vector unsigned short a2)
3425 return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3428 inline vector unsigned short
3429 vec_sl (vector unsigned short a1, vector unsigned short a2)
3431 return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3434 inline vector signed int
3435 vec_sl (vector signed int a1, vector unsigned int a2)
3437 return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3440 inline vector unsigned int
3441 vec_sl (vector unsigned int a1, vector unsigned int a2)
3443 return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3446 /* vec_vslw */
3448 inline vector signed int
3449 vec_vslw (vector signed int a1, vector unsigned int a2)
3451 return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3454 inline vector unsigned int
3455 vec_vslw (vector unsigned int a1, vector unsigned int a2)
3457 return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3460 /* vec_vslh */
3462 inline vector signed short
3463 vec_vslh (vector signed short a1, vector unsigned short a2)
3465 return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3468 inline vector unsigned short
3469 vec_vslh (vector unsigned short a1, vector unsigned short a2)
3471 return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3474 /* vec_vslb */
3476 inline vector signed char
3477 vec_vslb (vector signed char a1, vector unsigned char a2)
3479 return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3482 inline vector unsigned char
3483 vec_vslb (vector unsigned char a1, vector unsigned char a2)
3485 return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3488 /* vec_sld */
3490 inline vector float
3491 vec_sld (vector float a1, vector float a2, const char a3)
3493 return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3496 inline vector signed int
3497 vec_sld (vector signed int a1, vector signed int a2, const char a3)
3499 return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3502 inline vector unsigned int
3503 vec_sld (vector unsigned int a1, vector unsigned int a2, const char a3)
3505 return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3508 inline vector signed short
3509 vec_sld (vector signed short a1, vector signed short a2, const char a3)
3511 return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3514 inline vector unsigned short
3515 vec_sld (vector unsigned short a1, vector unsigned short a2, const char a3)
3517 return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3520 inline vector signed char
3521 vec_sld (vector signed char a1, vector signed char a2, const char a3)
3523 return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3526 inline vector unsigned char
3527 vec_sld (vector unsigned char a1, vector unsigned char a2, const char a3)
3529 return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3532 /* vec_sll */
3534 inline vector signed int
3535 vec_sll (vector signed int a1, vector unsigned int a2)
3537 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3540 inline vector signed int
3541 vec_sll (vector signed int a1, vector unsigned short a2)
3543 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3546 inline vector signed int
3547 vec_sll (vector signed int a1, vector unsigned char a2)
3549 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3552 inline vector unsigned int
3553 vec_sll (vector unsigned int a1, vector unsigned int a2)
3555 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3558 inline vector unsigned int
3559 vec_sll (vector unsigned int a1, vector unsigned short a2)
3561 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3564 inline vector unsigned int
3565 vec_sll (vector unsigned int a1, vector unsigned char a2)
3567 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3570 inline vector signed short
3571 vec_sll (vector signed short a1, vector unsigned int a2)
3573 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3576 inline vector signed short
3577 vec_sll (vector signed short a1, vector unsigned short a2)
3579 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3582 inline vector signed short
3583 vec_sll (vector signed short a1, vector unsigned char a2)
3585 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3588 inline vector unsigned short
3589 vec_sll (vector unsigned short a1, vector unsigned int a2)
3591 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3594 inline vector unsigned short
3595 vec_sll (vector unsigned short a1, vector unsigned short a2)
3597 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3600 inline vector unsigned short
3601 vec_sll (vector unsigned short a1, vector unsigned char a2)
3603 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3606 inline vector signed char
3607 vec_sll (vector signed char a1, vector unsigned int a2)
3609 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3612 inline vector signed char
3613 vec_sll (vector signed char a1, vector unsigned short a2)
3615 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3618 inline vector signed char
3619 vec_sll (vector signed char a1, vector unsigned char a2)
3621 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3624 inline vector unsigned char
3625 vec_sll (vector unsigned char a1, vector unsigned int a2)
3627 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3630 inline vector unsigned char
3631 vec_sll (vector unsigned char a1, vector unsigned short a2)
3633 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3636 inline vector unsigned char
3637 vec_sll (vector unsigned char a1, vector unsigned char a2)
3639 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3642 /* vec_slo */
3644 inline vector float
3645 vec_slo (vector float a1, vector signed char a2)
3647 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3650 inline vector float
3651 vec_slo (vector float a1, vector unsigned char a2)
3653 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3656 inline vector signed int
3657 vec_slo (vector signed int a1, vector signed char a2)
3659 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3662 inline vector signed int
3663 vec_slo (vector signed int a1, vector unsigned char a2)
3665 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3668 inline vector unsigned int
3669 vec_slo (vector unsigned int a1, vector signed char a2)
3671 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3674 inline vector unsigned int
3675 vec_slo (vector unsigned int a1, vector unsigned char a2)
3677 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3680 inline vector signed short
3681 vec_slo (vector signed short a1, vector signed char a2)
3683 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3686 inline vector signed short
3687 vec_slo (vector signed short a1, vector unsigned char a2)
3689 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3692 inline vector unsigned short
3693 vec_slo (vector unsigned short a1, vector signed char a2)
3695 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3698 inline vector unsigned short
3699 vec_slo (vector unsigned short a1, vector unsigned char a2)
3701 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3704 inline vector signed char
3705 vec_slo (vector signed char a1, vector signed char a2)
3707 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3710 inline vector signed char
3711 vec_slo (vector signed char a1, vector unsigned char a2)
3713 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3716 inline vector unsigned char
3717 vec_slo (vector unsigned char a1, vector signed char a2)
3719 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3722 inline vector unsigned char
3723 vec_slo (vector unsigned char a1, vector unsigned char a2)
3725 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3728 /* vec_splat */
3730 inline vector signed char
3731 vec_splat (vector signed char a1, const char a2)
3733 return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
3736 inline vector unsigned char
3737 vec_splat (vector unsigned char a1, const char a2)
3739 return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
3742 inline vector signed short
3743 vec_splat (vector signed short a1, const char a2)
3745 return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
3748 inline vector unsigned short
3749 vec_splat (vector unsigned short a1, const char a2)
3751 return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
3754 inline vector float
3755 vec_splat (vector float a1, const char a2)
3757 return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3760 inline vector signed int
3761 vec_splat (vector signed int a1, const char a2)
3763 return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3766 inline vector unsigned int
3767 vec_splat (vector unsigned int a1, const char a2)
3769 return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3772 /* vec_vspltw */
3774 inline vector float
3775 vec_vspltw (vector float a1, const char a2)
3777 return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3780 inline vector signed int
3781 vec_vspltw (vector signed int a1, const char a2)
3783 return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3786 inline vector unsigned int
3787 vec_vspltw (vector unsigned int a1, const char a2)
3789 return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
3792 /* vec_vsplth */
3794 inline vector signed short
3795 vec_vsplth (vector signed short a1, const char a2)
3797 return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
3800 inline vector unsigned short
3801 vec_vsplth (vector unsigned short a1, const char a2)
3803 return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
3806 /* vec_vspltb */
3808 inline vector signed char
3809 vec_vspltb (vector signed char a1, const char a2)
3811 return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
3814 inline vector unsigned char
3815 vec_vspltb (vector unsigned char a1, const char a2)
3817 return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
3820 /* vec_splat_s8 */
3822 inline vector signed char
3823 vec_splat_s8 (const char a1)
3825 return (vector signed char) __builtin_altivec_vspltisb (a1);
3828 /* vec_splat_s16 */
3830 inline vector signed short
3831 vec_splat_s16 (const char a1)
3833 return (vector signed short) __builtin_altivec_vspltish (a1);
3836 /* vec_splat_s32 */
3838 inline vector signed int
3839 vec_splat_s32 (const char a1)
3841 return (vector signed int) __builtin_altivec_vspltisw (a1);
3844 /* vec_splat_u8 */
3846 inline vector unsigned char
3847 vec_splat_u8 (const char a1)
3849 return (vector unsigned char) __builtin_altivec_vspltisb (a1);
3852 /* vec_splat_u16 */
3854 inline vector unsigned short
3855 vec_splat_u16 (const char a1)
3857 return (vector unsigned short) __builtin_altivec_vspltish (a1);
3860 /* vec_splat_u32 */
3862 inline vector unsigned int
3863 vec_splat_u32 (const char a1)
3865 return (vector unsigned int) __builtin_altivec_vspltisw (a1);
3868 /* vec_sr */
3870 inline vector signed char
3871 vec_sr (vector signed char a1, vector unsigned char a2)
3873 return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3876 inline vector unsigned char
3877 vec_sr (vector unsigned char a1, vector unsigned char a2)
3879 return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3882 inline vector signed short
3883 vec_sr (vector signed short a1, vector unsigned short a2)
3885 return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3888 inline vector unsigned short
3889 vec_sr (vector unsigned short a1, vector unsigned short a2)
3891 return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3894 inline vector signed int
3895 vec_sr (vector signed int a1, vector unsigned int a2)
3897 return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3900 inline vector unsigned int
3901 vec_sr (vector unsigned int a1, vector unsigned int a2)
3903 return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3906 /* vec_vsrw */
3908 inline vector signed int
3909 vec_vsrw (vector signed int a1, vector unsigned int a2)
3911 return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3914 inline vector unsigned int
3915 vec_vsrw (vector unsigned int a1, vector unsigned int a2)
3917 return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3920 /* vec_vsrh */
3922 inline vector signed short
3923 vec_vsrh (vector signed short a1, vector unsigned short a2)
3925 return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3928 inline vector unsigned short
3929 vec_vsrh (vector unsigned short a1, vector unsigned short a2)
3931 return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3934 /* vec_vsrb */
3936 inline vector signed char
3937 vec_vsrb (vector signed char a1, vector unsigned char a2)
3939 return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3942 inline vector unsigned char
3943 vec_vsrb (vector unsigned char a1, vector unsigned char a2)
3945 return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3948 /* vec_sra */
3950 inline vector signed char
3951 vec_sra (vector signed char a1, vector unsigned char a2)
3953 return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
3956 inline vector unsigned char
3957 vec_sra (vector unsigned char a1, vector unsigned char a2)
3959 return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
3962 inline vector signed short
3963 vec_sra (vector signed short a1, vector unsigned short a2)
3965 return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
3968 inline vector unsigned short
3969 vec_sra (vector unsigned short a1, vector unsigned short a2)
3971 return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
3974 inline vector signed int
3975 vec_sra (vector signed int a1, vector unsigned int a2)
3977 return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3980 inline vector unsigned int
3981 vec_sra (vector unsigned int a1, vector unsigned int a2)
3983 return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3986 /* vec_vsraw */
3988 inline vector signed int
3989 vec_vsraw (vector signed int a1, vector unsigned int a2)
3991 return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3994 inline vector unsigned int
3995 vec_vsraw (vector unsigned int a1, vector unsigned int a2)
3997 return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
4000 /* vec_vsrah */
4002 inline vector signed short
4003 vec_vsrah (vector signed short a1, vector unsigned short a2)
4005 return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
4008 inline vector unsigned short
4009 vec_vsrah (vector unsigned short a1, vector unsigned short a2)
4011 return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
4014 /* vec_vsrab */
4016 inline vector signed char
4017 vec_vsrab (vector signed char a1, vector unsigned char a2)
4019 return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
4022 inline vector unsigned char
4023 vec_vsrab (vector unsigned char a1, vector unsigned char a2)
4025 return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
4028 /* vec_srl */
4030 inline vector signed int
4031 vec_srl (vector signed int a1, vector unsigned int a2)
4033 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4036 inline vector signed int
4037 vec_srl (vector signed int a1, vector unsigned short a2)
4039 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4042 inline vector signed int
4043 vec_srl (vector signed int a1, vector unsigned char a2)
4045 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4048 inline vector unsigned int
4049 vec_srl (vector unsigned int a1, vector unsigned int a2)
4051 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4054 inline vector unsigned int
4055 vec_srl (vector unsigned int a1, vector unsigned short a2)
4057 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4060 inline vector unsigned int
4061 vec_srl (vector unsigned int a1, vector unsigned char a2)
4063 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4066 inline vector signed short
4067 vec_srl (vector signed short a1, vector unsigned int a2)
4069 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4072 inline vector signed short
4073 vec_srl (vector signed short a1, vector unsigned short a2)
4075 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4078 inline vector signed short
4079 vec_srl (vector signed short a1, vector unsigned char a2)
4081 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4084 inline vector unsigned short
4085 vec_srl (vector unsigned short a1, vector unsigned int a2)
4087 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4090 inline vector unsigned short
4091 vec_srl (vector unsigned short a1, vector unsigned short a2)
4093 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4096 inline vector unsigned short
4097 vec_srl (vector unsigned short a1, vector unsigned char a2)
4099 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4102 inline vector signed char
4103 vec_srl (vector signed char a1, vector unsigned int a2)
4105 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4108 inline vector signed char
4109 vec_srl (vector signed char a1, vector unsigned short a2)
4111 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4114 inline vector signed char
4115 vec_srl (vector signed char a1, vector unsigned char a2)
4117 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4120 inline vector unsigned char
4121 vec_srl (vector unsigned char a1, vector unsigned int a2)
4123 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4126 inline vector unsigned char
4127 vec_srl (vector unsigned char a1, vector unsigned short a2)
4129 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4132 inline vector unsigned char
4133 vec_srl (vector unsigned char a1, vector unsigned char a2)
4135 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4138 /* vec_sro */
4140 inline vector float
4141 vec_sro (vector float a1, vector signed char a2)
4143 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4146 inline vector float
4147 vec_sro (vector float a1, vector unsigned char a2)
4149 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4152 inline vector signed int
4153 vec_sro (vector signed int a1, vector signed char a2)
4155 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4158 inline vector signed int
4159 vec_sro (vector signed int a1, vector unsigned char a2)
4161 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4164 inline vector unsigned int
4165 vec_sro (vector unsigned int a1, vector signed char a2)
4167 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4170 inline vector unsigned int
4171 vec_sro (vector unsigned int a1, vector unsigned char a2)
4173 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4176 inline vector signed short
4177 vec_sro (vector signed short a1, vector signed char a2)
4179 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4182 inline vector signed short
4183 vec_sro (vector signed short a1, vector unsigned char a2)
4185 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4188 inline vector unsigned short
4189 vec_sro (vector unsigned short a1, vector signed char a2)
4191 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4194 inline vector unsigned short
4195 vec_sro (vector unsigned short a1, vector unsigned char a2)
4197 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4200 inline vector signed char
4201 vec_sro (vector signed char a1, vector signed char a2)
4203 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4206 inline vector signed char
4207 vec_sro (vector signed char a1, vector unsigned char a2)
4209 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4212 inline vector unsigned char
4213 vec_sro (vector unsigned char a1, vector signed char a2)
4215 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4218 inline vector unsigned char
4219 vec_sro (vector unsigned char a1, vector unsigned char a2)
4221 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4224 /* vec_st */
4226 inline void
4227 vec_st (vector float a1, int a2, void *a3)
4229 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4232 inline void
4233 vec_st (vector signed int a1, int a2, void *a3)
4235 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4238 inline void
4239 vec_st (vector unsigned int a1, int a2, void *a3)
4241 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4244 inline void
4245 vec_st (vector signed short a1, int a2, void *a3)
4247 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4250 inline void
4251 vec_st (vector unsigned short a1, int a2, void *a3)
4253 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4256 inline void
4257 vec_st (vector signed char a1, int a2, void *a3)
4259 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4262 inline void
4263 vec_st (vector unsigned char a1, int a2, void *a3)
4265 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4268 /* vec_ste */
4270 inline void
4271 vec_ste (vector signed char a1, int a2, void *a3)
4273 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4276 inline void
4277 vec_ste (vector unsigned char a1, int a2, void *a3)
4279 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4282 inline void
4283 vec_ste (vector signed short a1, int a2, void *a3)
4285 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4288 inline void
4289 vec_ste (vector unsigned short a1, int a2, void *a3)
4291 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4294 inline void
4295 vec_ste (vector float a1, int a2, void *a3)
4297 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4300 inline void
4301 vec_ste (vector signed int a1, int a2, void *a3)
4303 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4306 inline void
4307 vec_ste (vector unsigned int a1, int a2, void *a3)
4309 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4312 /* vec_stvewx */
4314 inline void
4315 vec_stvewx (vector float a1, int a2, void *a3)
4317 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4320 inline void
4321 vec_stvewx (vector signed int a1, int a2, void *a3)
4323 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4326 inline void
4327 vec_stvewx (vector unsigned int a1, int a2, void *a3)
4329 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4332 /* vec_stvehx */
4334 inline void
4335 vec_stvehx (vector signed short a1, int a2, void *a3)
4337 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4340 inline void
4341 vec_stvehx (vector unsigned short a1, int a2, void *a3)
4343 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4346 /* vec_stvebx */
4348 inline void
4349 vec_stvebx (vector signed char a1, int a2, void *a3)
4351 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4354 inline void
4355 vec_stvebx (vector unsigned char a1, int a2, void *a3)
4357 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4360 /* vec_stl */
4362 inline void
4363 vec_stl (vector float a1, int a2, void *a3)
4365 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4368 inline void
4369 vec_stl (vector signed int a1, int a2, void *a3)
4371 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4374 inline void
4375 vec_stl (vector unsigned int a1, int a2, void *a3)
4377 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4380 inline void
4381 vec_stl (vector signed short a1, int a2, void *a3)
4383 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4386 inline void
4387 vec_stl (vector unsigned short a1, int a2, void *a3)
4389 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4392 inline void
4393 vec_stl (vector signed char a1, int a2, void *a3)
4395 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4398 inline void
4399 vec_stl (vector unsigned char a1, int a2, void *a3)
4401 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4404 /* vec_sub */
4406 inline vector signed char
4407 vec_sub (vector signed char a1, vector signed char a2)
4409 return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4412 inline vector unsigned char
4413 vec_sub (vector signed char a1, vector unsigned char a2)
4415 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4418 inline vector unsigned char
4419 vec_sub (vector unsigned char a1, vector signed char a2)
4421 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4424 inline vector unsigned char
4425 vec_sub (vector unsigned char a1, vector unsigned char a2)
4427 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4430 inline vector signed short
4431 vec_sub (vector signed short a1, vector signed short a2)
4433 return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4436 inline vector unsigned short
4437 vec_sub (vector signed short a1, vector unsigned short a2)
4439 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4442 inline vector unsigned short
4443 vec_sub (vector unsigned short a1, vector signed short a2)
4445 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4448 inline vector unsigned short
4449 vec_sub (vector unsigned short a1, vector unsigned short a2)
4451 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4454 inline vector signed int
4455 vec_sub (vector signed int a1, vector signed int a2)
4457 return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4460 inline vector unsigned int
4461 vec_sub (vector signed int a1, vector unsigned int a2)
4463 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4466 inline vector unsigned int
4467 vec_sub (vector unsigned int a1, vector signed int a2)
4469 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4472 inline vector unsigned int
4473 vec_sub (vector unsigned int a1, vector unsigned int a2)
4475 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4478 inline vector float
4479 vec_sub (vector float a1, vector float a2)
4481 return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
4484 /* vec_vsubfp */
4486 inline vector float
4487 vec_vsubfp (vector float a1, vector float a2)
4489 return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
4492 /* vec_vsubuwm */
4494 inline vector signed int
4495 vec_vsubuwm (vector signed int a1, vector signed int a2)
4497 return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4500 inline vector unsigned int
4501 vec_vsubuwm (vector signed int a1, vector unsigned int a2)
4503 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4506 inline vector unsigned int
4507 vec_vsubuwm (vector unsigned int a1, vector signed int a2)
4509 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4512 inline vector unsigned int
4513 vec_vsubuwm (vector unsigned int a1, vector unsigned int a2)
4515 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4518 /* vec_vsubuhm */
4520 inline vector signed short
4521 vec_vsubuhm (vector signed short a1, vector signed short a2)
4523 return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4526 inline vector unsigned short
4527 vec_vsubuhm (vector signed short a1, vector unsigned short a2)
4529 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4532 inline vector unsigned short
4533 vec_vsubuhm (vector unsigned short a1, vector signed short a2)
4535 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4538 inline vector unsigned short
4539 vec_vsubuhm (vector unsigned short a1, vector unsigned short a2)
4541 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4544 /* vec_vsububm */
4546 inline vector signed char
4547 vec_vsububm (vector signed char a1, vector signed char a2)
4549 return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4552 inline vector unsigned char
4553 vec_vsububm (vector signed char a1, vector unsigned char a2)
4555 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4558 inline vector unsigned char
4559 vec_vsububm (vector unsigned char a1, vector signed char a2)
4561 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4564 inline vector unsigned char
4565 vec_vsububm (vector unsigned char a1, vector unsigned char a2)
4567 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4570 /* vec_subc */
4572 inline vector unsigned int
4573 vec_subc (vector unsigned int a1, vector unsigned int a2)
4575 return (vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) a1, (vector signed int) a2);
4578 /* vec_subs */
4580 inline vector unsigned char
4581 vec_subs (vector signed char a1, vector unsigned char a2)
4583 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4586 inline vector unsigned char
4587 vec_subs (vector unsigned char a1, vector signed char a2)
4589 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4592 inline vector unsigned char
4593 vec_subs (vector unsigned char a1, vector unsigned char a2)
4595 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4598 inline vector signed char
4599 vec_subs (vector signed char a1, vector signed char a2)
4601 return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
4604 inline vector unsigned short
4605 vec_subs (vector signed short a1, vector unsigned short a2)
4607 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4610 inline vector unsigned short
4611 vec_subs (vector unsigned short a1, vector signed short a2)
4613 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4616 inline vector unsigned short
4617 vec_subs (vector unsigned short a1, vector unsigned short a2)
4619 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4622 inline vector signed short
4623 vec_subs (vector signed short a1, vector signed short a2)
4625 return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
4628 inline vector unsigned int
4629 vec_subs (vector signed int a1, vector unsigned int a2)
4631 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4634 inline vector unsigned int
4635 vec_subs (vector unsigned int a1, vector signed int a2)
4637 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4640 inline vector unsigned int
4641 vec_subs (vector unsigned int a1, vector unsigned int a2)
4643 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4646 inline vector signed int
4647 vec_subs (vector signed int a1, vector signed int a2)
4649 return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
4652 /* vec_vsubsws */
4654 inline vector signed int
4655 vec_vsubsws (vector signed int a1, vector signed int a2)
4657 return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
4660 /* vec_vsubuws */
4662 inline vector unsigned int
4663 vec_vsubuws (vector signed int a1, vector unsigned int a2)
4665 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4668 inline vector unsigned int
4669 vec_vsubuws (vector unsigned int a1, vector signed int a2)
4671 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4674 inline vector unsigned int
4675 vec_vsubuws (vector unsigned int a1, vector unsigned int a2)
4677 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4680 /* vec_vsubshs */
4682 inline vector signed short
4683 vec_vsubshs (vector signed short a1, vector signed short a2)
4685 return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
4688 /* vec_vsubuhs */
4690 inline vector unsigned short
4691 vec_vsubuhs (vector signed short a1, vector unsigned short a2)
4693 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4696 inline vector unsigned short
4697 vec_vsubuhs (vector unsigned short a1, vector signed short a2)
4699 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4702 /* vec_vsubuhs */
4704 inline vector unsigned short
4705 vec_vsubsuhs (vector signed short a1, vector unsigned short a2)
4707 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4710 inline vector unsigned short
4711 vec_vsubsuhs (vector unsigned short a1, vector signed short a2)
4713 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4716 inline vector unsigned short
4717 vec_vsubsuhs (vector unsigned short a1, vector unsigned short a2)
4719 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4722 /* vec_vsubsbs */
4724 inline vector signed char
4725 vec_vsubsbs (vector signed char a1, vector signed char a2)
4727 return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
4730 /* vec_vsububs */
4732 inline vector unsigned char
4733 vec_vsubsubs (vector signed char a1, vector unsigned char a2)
4735 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4738 inline vector unsigned char
4739 vec_vsubsubs (vector unsigned char a1, vector signed char a2)
4741 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4744 inline vector unsigned char
4745 vec_vsubsubs (vector unsigned char a1, vector unsigned char a2)
4747 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4750 /* vec_sum4s */
4752 inline vector unsigned int
4753 vec_sum4s (vector unsigned char a1, vector unsigned int a2)
4755 return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
4758 inline vector signed int
4759 vec_sum4s (vector signed char a1, vector signed int a2)
4761 return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
4764 inline vector signed int
4765 vec_sum4s (vector signed short a1, vector signed int a2)
4767 return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
4770 /* vec_vsum4shs */
4772 inline vector signed int
4773 vec_vsum4shss (vector signed short a1, vector signed int a2)
4775 return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
4778 /* vec_vsum4sbs */
4780 inline vector signed int
4781 vec_vsum4sbs (vector signed char a1, vector signed int a2)
4783 return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
4786 /* vec_vsum4ubs */
4788 inline vector unsigned int
4789 vec_vsum4ubs (vector unsigned char a1, vector unsigned int a2)
4791 return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
4794 /* vec_sum2s */
4796 inline vector signed int
4797 vec_sum2s (vector signed int a1, vector signed int a2)
4799 return (vector signed int) __builtin_altivec_vsum2sws ((vector signed int) a1, (vector signed int) a2);
4802 /* vec_sums */
4804 inline vector signed int
4805 vec_sums (vector signed int a1, vector signed int a2)
4807 return (vector signed int) __builtin_altivec_vsumsws ((vector signed int) a1, (vector signed int) a2);
4810 /* vec_trunc */
4812 inline vector float
4813 vec_trunc (vector float a1)
4815 return (vector float) __builtin_altivec_vrfiz ((vector float) a1);
4818 /* vec_unpackh */
4820 inline vector signed short
4821 vec_unpackh (vector signed char a1)
4823 return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
4826 inline vector signed int
4827 vec_unpackh (vector signed short a1)
4829 return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
4832 inline vector unsigned int
4833 vec_unpackh (vector unsigned short a1)
4835 return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
4838 /* vec_vupkhsh */
4840 inline vector signed int
4841 vec_vupkhsh (vector signed short a1)
4843 return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
4846 /* vec_vupkhpx */
4848 inline vector unsigned int
4849 vec_vupkhpx (vector unsigned short a1)
4851 return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
4854 /* vec_vupkhsb */
4856 inline vector signed short
4857 vec_vupkhsb (vector signed char a1)
4859 return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
4862 /* vec_unpackl */
4864 inline vector signed short
4865 vec_unpackl (vector signed char a1)
4867 return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
4870 inline vector unsigned int
4871 vec_unpackl (vector unsigned short a1)
4873 return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
4876 inline vector signed int
4877 vec_unpackl (vector signed short a1)
4879 return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
4882 /* vec_vupklpx */
4884 inline vector unsigned int
4885 vec_vupklpx (vector unsigned short a1)
4887 return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
4890 /* vec_upklsh */
4892 inline vector signed int
4893 vec_vupklsh (vector signed short a1)
4895 return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
4898 /* vec_vupklsb */
4900 inline vector signed short
4901 vec_vupklsb (vector signed char a1)
4903 return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
4906 /* vec_xor */
4908 inline vector float
4909 vec_xor (vector float a1, vector float a2)
4911 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4914 inline vector float
4915 vec_xor (vector float a1, vector signed int a2)
4917 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4920 inline vector float
4921 vec_xor (vector signed int a1, vector float a2)
4923 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4926 inline vector signed int
4927 vec_xor (vector signed int a1, vector signed int a2)
4929 return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4932 inline vector unsigned int
4933 vec_xor (vector signed int a1, vector unsigned int a2)
4935 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4938 inline vector unsigned int
4939 vec_xor (vector unsigned int a1, vector signed int a2)
4941 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4944 inline vector unsigned int
4945 vec_xor (vector unsigned int a1, vector unsigned int a2)
4947 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4950 inline vector signed short
4951 vec_xor (vector signed short a1, vector signed short a2)
4953 return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4956 inline vector unsigned short
4957 vec_xor (vector signed short a1, vector unsigned short a2)
4959 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4962 inline vector unsigned short
4963 vec_xor (vector unsigned short a1, vector signed short a2)
4965 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4968 inline vector unsigned short
4969 vec_xor (vector unsigned short a1, vector unsigned short a2)
4971 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4974 inline vector signed char
4975 vec_xor (vector signed char a1, vector signed char a2)
4977 return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4980 inline vector unsigned char
4981 vec_xor (vector signed char a1, vector unsigned char a2)
4983 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4986 inline vector unsigned char
4987 vec_xor (vector unsigned char a1, vector signed char a2)
4989 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4992 inline vector unsigned char
4993 vec_xor (vector unsigned char a1, vector unsigned char a2)
4995 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4998 /* vec_all_eq */
5000 inline int
5001 vec_all_eq (vector signed char a1, vector unsigned char a2)
5003 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2);
5006 inline int
5007 vec_all_eq (vector signed char a1, vector signed char a2)
5009 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2);
5012 inline int
5013 vec_all_eq (vector unsigned char a1, vector signed char a2)
5015 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5018 inline int
5019 vec_all_eq (vector unsigned char a1, vector unsigned char a2)
5021 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5024 inline int
5025 vec_all_eq (vector signed short a1, vector unsigned short a2)
5027 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5030 inline int
5031 vec_all_eq (vector signed short a1, vector signed short a2)
5033 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5036 inline int
5037 vec_all_eq (vector unsigned short a1, vector signed short a2)
5039 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5042 inline int
5043 vec_all_eq (vector unsigned short a1, vector unsigned short a2)
5045 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5048 inline int
5049 vec_all_eq (vector signed int a1, vector unsigned int a2)
5051 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5054 inline int
5055 vec_all_eq (vector signed int a1, vector signed int a2)
5057 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5060 inline int
5061 vec_all_eq (vector unsigned int a1, vector signed int a2)
5063 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5066 inline int
5067 vec_all_eq (vector unsigned int a1, vector unsigned int a2)
5069 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5072 inline int
5073 vec_all_eq (vector float a1, vector float a2)
5075 return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2);
5078 /* vec_all_ge */
5080 inline int
5081 vec_all_ge (vector signed char a1, vector unsigned char a2)
5083 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5086 inline int
5087 vec_all_ge (vector unsigned char a1, vector signed char a2)
5089 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5092 inline int
5093 vec_all_ge (vector unsigned char a1, vector unsigned char a2)
5095 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5098 inline int
5099 vec_all_ge (vector signed char a1, vector signed char a2)
5101 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5104 inline int
5105 vec_all_ge (vector signed short a1, vector unsigned short a2)
5107 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5110 inline int
5111 vec_all_ge (vector unsigned short a1, vector signed short a2)
5113 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5116 inline int
5117 vec_all_ge (vector unsigned short a1, vector unsigned short a2)
5119 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5122 inline int
5123 vec_all_ge (vector signed short a1, vector signed short a2)
5125 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5128 inline int
5129 vec_all_ge (vector signed int a1, vector unsigned int a2)
5131 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5134 inline int
5135 vec_all_ge (vector unsigned int a1, vector signed int a2)
5137 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5140 inline int
5141 vec_all_ge (vector unsigned int a1, vector unsigned int a2)
5143 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5146 inline int
5147 vec_all_ge (vector signed int a1, vector signed int a2)
5149 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5152 inline int
5153 vec_all_ge (vector float a1, vector float a2)
5155 return __builtin_altivec_vcmpgefp_p (__CR6_LT, a1, a2);
5158 /* vec_all_gt */
5160 inline int
5161 vec_all_gt (vector signed char a1, vector unsigned char a2)
5163 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5166 inline int
5167 vec_all_gt (vector unsigned char a1, vector signed char a2)
5169 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5172 inline int
5173 vec_all_gt (vector unsigned char a1, vector unsigned char a2)
5175 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5178 inline int
5179 vec_all_gt (vector signed char a1, vector signed char a2)
5181 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5184 inline int
5185 vec_all_gt (vector signed short a1, vector unsigned short a2)
5187 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5190 inline int
5191 vec_all_gt (vector unsigned short a1, vector signed short a2)
5193 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5196 inline int
5197 vec_all_gt (vector unsigned short a1, vector unsigned short a2)
5199 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5202 inline int
5203 vec_all_gt (vector signed short a1, vector signed short a2)
5205 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5208 inline int
5209 vec_all_gt (vector signed int a1, vector unsigned int a2)
5211 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5214 inline int
5215 vec_all_gt (vector unsigned int a1, vector signed int a2)
5217 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5220 inline int
5221 vec_all_gt (vector unsigned int a1, vector unsigned int a2)
5223 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5226 inline int
5227 vec_all_gt (vector signed int a1, vector signed int a2)
5229 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5232 inline int
5233 vec_all_gt (vector float a1, vector float a2)
5235 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2);
5238 /* vec_all_in */
5240 inline int
5241 vec_all_in (vector float a1, vector float a2)
5243 return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2);
5246 /* vec_all_le */
5248 inline int
5249 vec_all_le (vector signed char a1, vector unsigned char a2)
5251 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5254 inline int
5255 vec_all_le (vector unsigned char a1, vector signed char a2)
5257 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5260 inline int
5261 vec_all_le (vector unsigned char a1, vector unsigned char a2)
5263 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5266 inline int
5267 vec_all_le (vector signed char a1, vector signed char a2)
5269 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5272 inline int
5273 vec_all_le (vector signed short a1, vector unsigned short a2)
5275 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5278 inline int
5279 vec_all_le (vector unsigned short a1, vector signed short a2)
5281 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5284 inline int
5285 vec_all_le (vector unsigned short a1, vector unsigned short a2)
5287 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5290 inline int
5291 vec_all_le (vector signed short a1, vector signed short a2)
5293 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5296 inline int
5297 vec_all_le (vector signed int a1, vector unsigned int a2)
5299 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5302 inline int
5303 vec_all_le (vector unsigned int a1, vector signed int a2)
5305 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5308 inline int
5309 vec_all_le (vector unsigned int a1, vector unsigned int a2)
5311 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5314 inline int
5315 vec_all_le (vector signed int a1, vector signed int a2)
5317 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5320 inline int
5321 vec_all_le (vector float a1, vector float a2)
5323 return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1);
5326 /* vec_all_lt */
5328 inline int
5329 vec_all_lt (vector signed char a1, vector unsigned char a2)
5331 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5334 inline int
5335 vec_all_lt (vector unsigned char a1, vector signed char a2)
5337 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5340 inline int
5341 vec_all_lt (vector unsigned char a1, vector unsigned char a2)
5343 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5346 inline int
5347 vec_all_lt (vector signed char a1, vector signed char a2)
5349 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5352 inline int
5353 vec_all_lt (vector signed short a1, vector unsigned short a2)
5355 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5358 inline int
5359 vec_all_lt (vector unsigned short a1, vector signed short a2)
5361 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5364 inline int
5365 vec_all_lt (vector unsigned short a1, vector unsigned short a2)
5367 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5370 inline int
5371 vec_all_lt (vector signed short a1, vector signed short a2)
5373 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5376 inline int
5377 vec_all_lt (vector signed int a1, vector unsigned int a2)
5379 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5382 inline int
5383 vec_all_lt (vector unsigned int a1, vector signed int a2)
5385 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5388 inline int
5389 vec_all_lt (vector unsigned int a1, vector unsigned int a2)
5391 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5394 inline int
5395 vec_all_lt (vector signed int a1, vector signed int a2)
5397 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5400 inline int
5401 vec_all_lt (vector float a1, vector float a2)
5403 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1);
5406 /* vec_all_nan */
5408 inline int
5409 vec_all_nan (vector float a1)
5411 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
5414 /* vec_all_ne */
5416 inline int
5417 vec_all_ne (vector signed char a1, vector unsigned char a2)
5419 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5422 inline int
5423 vec_all_ne (vector signed char a1, vector signed char a2)
5425 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5428 inline int
5429 vec_all_ne (vector unsigned char a1, vector signed char a2)
5431 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5434 inline int
5435 vec_all_ne (vector unsigned char a1, vector unsigned char a2)
5437 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5440 inline int
5441 vec_all_ne (vector signed short a1, vector unsigned short a2)
5443 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5446 inline int
5447 vec_all_ne (vector signed short a1, vector signed short a2)
5449 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5452 inline int
5453 vec_all_ne (vector unsigned short a1, vector signed short a2)
5455 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5458 inline int
5459 vec_all_ne (vector unsigned short a1, vector unsigned short a2)
5461 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5464 inline int
5465 vec_all_ne (vector signed int a1, vector unsigned int a2)
5467 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5470 inline int
5471 vec_all_ne (vector signed int a1, vector signed int a2)
5473 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5476 inline int
5477 vec_all_ne (vector unsigned int a1, vector signed int a2)
5479 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5482 inline int
5483 vec_all_ne (vector unsigned int a1, vector unsigned int a2)
5485 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5488 inline int
5489 vec_all_ne (vector float a1, vector float a2)
5491 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2);
5494 /* vec_all_nge */
5496 inline int
5497 vec_all_nge (vector float a1, vector float a2)
5499 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2);
5502 /* vec_all_ngt */
5504 inline int
5505 vec_all_ngt (vector float a1, vector float a2)
5507 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2);
5510 /* vec_all_nle */
5512 inline int
5513 vec_all_nle (vector float a1, vector float a2)
5515 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1);
5518 /* vec_all_nlt */
5520 inline int
5521 vec_all_nlt (vector float a1, vector float a2)
5523 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1);
5526 /* vec_all_numeric */
5528 inline int
5529 vec_all_numeric (vector float a1)
5531 return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a1);
5534 /* vec_any_eq */
5536 inline int
5537 vec_any_eq (vector signed char a1, vector unsigned char a2)
5539 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5542 inline int
5543 vec_any_eq (vector signed char a1, vector signed char a2)
5545 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5548 inline int
5549 vec_any_eq (vector unsigned char a1, vector signed char a2)
5551 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5554 inline int
5555 vec_any_eq (vector unsigned char a1, vector unsigned char a2)
5557 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5560 inline int
5561 vec_any_eq (vector signed short a1, vector unsigned short a2)
5563 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5566 inline int
5567 vec_any_eq (vector signed short a1, vector signed short a2)
5569 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5572 inline int
5573 vec_any_eq (vector unsigned short a1, vector signed short a2)
5575 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5578 inline int
5579 vec_any_eq (vector unsigned short a1, vector unsigned short a2)
5581 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5584 inline int
5585 vec_any_eq (vector signed int a1, vector unsigned int a2)
5587 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5590 inline int
5591 vec_any_eq (vector signed int a1, vector signed int a2)
5593 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5596 inline int
5597 vec_any_eq (vector unsigned int a1, vector signed int a2)
5599 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5602 inline int
5603 vec_any_eq (vector unsigned int a1, vector unsigned int a2)
5605 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5608 inline int
5609 vec_any_eq (vector float a1, vector float a2)
5611 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2);
5614 /* vec_any_ge */
5616 inline int
5617 vec_any_ge (vector signed char a1, vector unsigned char a2)
5619 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5622 inline int
5623 vec_any_ge (vector unsigned char a1, vector signed char a2)
5625 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5628 inline int
5629 vec_any_ge (vector unsigned char a1, vector unsigned char a2)
5631 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5634 inline int
5635 vec_any_ge (vector signed char a1, vector signed char a2)
5637 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5640 inline int
5641 vec_any_ge (vector signed short a1, vector unsigned short a2)
5643 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5646 inline int
5647 vec_any_ge (vector unsigned short a1, vector signed short a2)
5649 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5652 inline int
5653 vec_any_ge (vector unsigned short a1, vector unsigned short a2)
5655 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5658 inline int
5659 vec_any_ge (vector signed short a1, vector signed short a2)
5661 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5664 inline int
5665 vec_any_ge (vector signed int a1, vector unsigned int a2)
5667 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5670 inline int
5671 vec_any_ge (vector unsigned int a1, vector signed int a2)
5673 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5676 inline int
5677 vec_any_ge (vector unsigned int a1, vector unsigned int a2)
5679 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5682 inline int
5683 vec_any_ge (vector signed int a1, vector signed int a2)
5685 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5688 inline int
5689 vec_any_ge (vector float a1, vector float a2)
5691 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2);
5694 /* vec_any_gt */
5696 inline int
5697 vec_any_gt (vector signed char a1, vector unsigned char a2)
5699 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5702 inline int
5703 vec_any_gt (vector unsigned char a1, vector signed char a2)
5705 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5708 inline int
5709 vec_any_gt (vector unsigned char a1, vector unsigned char a2)
5711 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5714 inline int
5715 vec_any_gt (vector signed char a1, vector signed char a2)
5717 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5720 inline int
5721 vec_any_gt (vector signed short a1, vector unsigned short a2)
5723 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5726 inline int
5727 vec_any_gt (vector unsigned short a1, vector signed short a2)
5729 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5732 inline int
5733 vec_any_gt (vector unsigned short a1, vector unsigned short a2)
5735 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5738 inline int
5739 vec_any_gt (vector signed short a1, vector signed short a2)
5741 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5744 inline int
5745 vec_any_gt (vector signed int a1, vector unsigned int a2)
5747 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5750 inline int
5751 vec_any_gt (vector unsigned int a1, vector signed int a2)
5753 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5756 inline int
5757 vec_any_gt (vector unsigned int a1, vector unsigned int a2)
5759 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5762 inline int
5763 vec_any_gt (vector signed int a1, vector signed int a2)
5765 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5768 inline int
5769 vec_any_gt (vector float a1, vector float a2)
5771 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2);
5774 /* vec_any_le */
5776 inline int
5777 vec_any_le (vector signed char a1, vector unsigned char a2)
5779 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5782 inline int
5783 vec_any_le (vector unsigned char a1, vector signed char a2)
5785 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5788 inline int
5789 vec_any_le (vector unsigned char a1, vector unsigned char a2)
5791 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5794 inline int
5795 vec_any_le (vector signed char a1, vector signed char a2)
5797 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5800 inline int
5801 vec_any_le (vector signed short a1, vector unsigned short a2)
5803 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5806 inline int
5807 vec_any_le (vector unsigned short a1, vector signed short a2)
5809 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5812 inline int
5813 vec_any_le (vector unsigned short a1, vector unsigned short a2)
5815 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5818 inline int
5819 vec_any_le (vector signed short a1, vector signed short a2)
5821 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5824 inline int
5825 vec_any_le (vector signed int a1, vector unsigned int a2)
5827 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5830 inline int
5831 vec_any_le (vector unsigned int a1, vector signed int a2)
5833 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5836 inline int
5837 vec_any_le (vector unsigned int a1, vector unsigned int a2)
5839 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5842 inline int
5843 vec_any_le (vector signed int a1, vector signed int a2)
5845 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5848 inline int
5849 vec_any_le (vector float a1, vector float a2)
5851 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a2, a1);
5854 /* vec_any_lt */
5856 inline int
5857 vec_any_lt (vector signed char a1, vector unsigned char a2)
5859 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5862 inline int
5863 vec_any_lt (vector unsigned char a1, vector signed char a2)
5865 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5868 inline int
5869 vec_any_lt (vector unsigned char a1, vector unsigned char a2)
5871 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5874 inline int
5875 vec_any_lt (vector signed char a1, vector signed char a2)
5877 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5880 inline int
5881 vec_any_lt (vector signed short a1, vector unsigned short a2)
5883 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5886 inline int
5887 vec_any_lt (vector unsigned short a1, vector signed short a2)
5889 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5892 inline int
5893 vec_any_lt (vector unsigned short a1, vector unsigned short a2)
5895 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5898 inline int
5899 vec_any_lt (vector signed short a1, vector signed short a2)
5901 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5904 inline int
5905 vec_any_lt (vector signed int a1, vector unsigned int a2)
5907 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5910 inline int
5911 vec_any_lt (vector unsigned int a1, vector signed int a2)
5913 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5916 inline int
5917 vec_any_lt (vector unsigned int a1, vector unsigned int a2)
5919 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5922 inline int
5923 vec_any_lt (vector signed int a1, vector signed int a2)
5925 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5928 inline int
5929 vec_any_lt (vector float a1, vector float a2)
5931 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1);
5934 /* vec_any_nan */
5936 inline int
5937 vec_any_nan (vector float a1)
5939 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1);
5942 /* vec_any_ne */
5944 inline int
5945 vec_any_ne (vector signed char a1, vector unsigned char a2)
5947 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5950 inline int
5951 vec_any_ne (vector signed char a1, vector signed char a2)
5953 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5956 inline int
5957 vec_any_ne (vector unsigned char a1, vector signed char a2)
5959 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5962 inline int
5963 vec_any_ne (vector unsigned char a1, vector unsigned char a2)
5965 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5968 inline int
5969 vec_any_ne (vector signed short a1, vector unsigned short a2)
5971 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5974 inline int
5975 vec_any_ne (vector signed short a1, vector signed short a2)
5977 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5980 inline int
5981 vec_any_ne (vector unsigned short a1, vector signed short a2)
5983 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5986 inline int
5987 vec_any_ne (vector unsigned short a1, vector unsigned short a2)
5989 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5992 inline int
5993 vec_any_ne (vector signed int a1, vector unsigned int a2)
5995 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5998 inline int
5999 vec_any_ne (vector signed int a1, vector signed int a2)
6001 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
6004 inline int
6005 vec_any_ne (vector unsigned int a1, vector signed int a2)
6007 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
6010 inline int
6011 vec_any_ne (vector unsigned int a1, vector unsigned int a2)
6013 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
6016 inline int
6017 vec_any_ne (vector float a1, vector float a2)
6019 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2);
6022 /* vec_any_nge */
6024 inline int
6025 vec_any_nge (vector float a1, vector float a2)
6027 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2);
6030 /* vec_any_ngt */
6032 inline int
6033 vec_any_ngt (vector float a1, vector float a2)
6035 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2);
6038 /* vec_any_nle */
6040 inline int
6041 vec_any_nle (vector float a1, vector float a2)
6043 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1);
6046 /* vec_any_nlt */
6048 inline int
6049 vec_any_nlt (vector float a1, vector float a2)
6051 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1);
6054 /* vec_any_numeric */
6056 inline int
6057 vec_any_numeric (vector float a1)
6059 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1);
6062 /* vec_any_out */
6064 inline int
6065 vec_any_out (vector float a1, vector float a2)
6067 return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2);
6070 /* vec_step */
6072 template<typename _Tp>
6073 struct __vec_step_help
6075 // All proper vector types will specialize _S_elem.
6078 template<>
6079 struct __vec_step_help<vector signed short>
6081 static const int _S_elem = 8;
6084 template<>
6085 struct __vec_step_help<vector unsigned short>
6087 static const int _S_elem = 8;
6090 template<>
6091 struct __vec_step_help<vector signed int>
6093 static const int _S_elem = 4;
6096 template<>
6097 struct __vec_step_help<vector unsigned int>
6099 static const int _S_elem = 4;
6102 template<>
6103 struct __vec_step_help<vector unsigned char>
6105 static const int _S_elem = 16;
6108 template<>
6109 struct __vec_step_help<vector signed char>
6111 static const int _S_elem = 16;
6114 template<>
6115 struct __vec_step_help<vector float>
6117 static const int _S_elem = 4;
6120 #define vec_step(t) __vec_step_help<typeof(t)>::_S_elem
6122 }//extern "C++"
6124 #else /* not C++ */
6126 /* "... and so I think no man in a century will suffer as greatly as
6127 you will." */
6129 #define vec_abs(a) \
6130 __ch (__un_args_eq (vector signed char, (a)), \
6131 ((vector signed char) __builtin_altivec_abs_v16qi ((vector signed char) (a))), \
6132 __ch (__un_args_eq (vector signed short, (a)), \
6133 ((vector signed short) __builtin_altivec_abs_v8hi ((vector signed short) (a))), \
6134 __ch (__un_args_eq (vector signed int, (a)), \
6135 ((vector signed int) __builtin_altivec_abs_v4si ((vector signed int) (a))), \
6136 __ch (__un_args_eq (vector float, (a)), \
6137 ((vector float) __builtin_altivec_abs_v4sf ((vector float) (a))), \
6138 __altivec_link_error_invalid_argument ()))))
6140 #define vec_abss(a) \
6141 __ch (__un_args_eq (vector signed char, (a)), \
6142 ((vector signed char) __builtin_altivec_abss_v16qi ((vector signed char) (a))), \
6143 __ch (__un_args_eq (vector signed short, (a)), \
6144 ((vector signed short) __builtin_altivec_abss_v8hi ((vector signed short) (a))), \
6145 __ch (__un_args_eq (vector signed int, (a)), \
6146 ((vector signed int) __builtin_altivec_abss_v4si ((vector signed int) (a))), \
6147 __altivec_link_error_invalid_argument ())))
6149 #define vec_step(t) \
6150 __ch (__builtin_types_compatible_p (typeof (t), vector signed int), 4, \
6151 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned int), 4, \
6152 __ch (__builtin_types_compatible_p (typeof (t), vector signed short), 8, \
6153 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned short), 8, \
6154 __ch (__builtin_types_compatible_p (typeof (t), vector signed char), 16, \
6155 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned char), 16, \
6156 __ch (__builtin_types_compatible_p (typeof (t), vector float), 4, \
6157 __altivec_link_error_invalid_argument ())))))))
6159 #define vec_vaddubm(a1, a2) \
6160 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6161 ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6162 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6163 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6164 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6165 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6166 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6167 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6168 __altivec_link_error_invalid_argument ()))))
6170 #define vec_vadduhm(a1, a2) \
6171 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6172 ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6173 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6174 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6175 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6176 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6177 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6178 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6179 __altivec_link_error_invalid_argument ()))))
6181 #define vec_vadduwm(a1, a2) \
6182 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6183 ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6184 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6185 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6186 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6187 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6188 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6189 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6190 __altivec_link_error_invalid_argument ()))))
6192 #define vec_vaddfp(a1, a2) \
6193 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6194 ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
6195 __altivec_link_error_invalid_argument ())
6197 #define vec_add(a1, a2) \
6198 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6199 ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6200 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
6203 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6204 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6205 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6206 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6207 ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6208 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
6211 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6212 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6213 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6214 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6215 ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6216 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
6219 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6220 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6221 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6222 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6223 ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
6224 __altivec_link_error_invalid_argument ())))))))))))))
6226 #define vec_addc(a1, a2) \
6227 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6228 ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
6229 __altivec_link_error_invalid_argument ())
6231 #define vec_adds(a1, a2) \
6232 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
6235 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6236 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6237 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6238 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6239 ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
6240 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
6243 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6244 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6245 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6246 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6247 ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
6248 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
6251 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6252 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6253 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6254 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6255 ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
6256 __altivec_link_error_invalid_argument ()))))))))))))
6258 #define vec_vaddsws(a1, a2) \
6259 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6260 ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
6261 __altivec_link_error_invalid_argument ())
6263 #define vec_vadduws(a1, a2) \
6264 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6265 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6266 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6267 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6268 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6269 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6270 __altivec_link_error_invalid_argument ())))
6272 #define vec_vaddshs(a1, a2) \
6273 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6274 ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
6275 __altivec_link_error_invalid_argument ())
6277 #define vec_vadduhs(a1, a2) \
6278 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6279 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6280 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6281 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6282 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6283 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6284 __altivec_link_error_invalid_argument ())))
6286 #define vec_vaddsbs(a1, a2) \
6287 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6288 ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
6289 __altivec_link_error_invalid_argument ())
6291 #define vec_vaddubs(a1, a2) \
6292 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6293 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6294 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6295 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6296 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6297 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6298 __altivec_link_error_invalid_argument ())))
6300 #define vec_and(a1, a2) \
6301 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6302 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6303 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
6304 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6305 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
6306 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6307 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6308 ((vector signed int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6309 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
6312 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6313 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6314 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6315 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6316 ((vector signed short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6317 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
6320 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6321 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6322 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6323 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6324 ((vector signed char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6325 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6326 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6327 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6328 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6329 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6330 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6331 __altivec_link_error_invalid_argument ())))))))))))))))
6333 #define vec_andc(a1, a2) \
6334 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6335 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6336 __ch (__bin_args_eq (vector float, (a1), vector unsigned int, (a2)), \
6337 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6338 __ch (__bin_args_eq (vector unsigned int, (a1), vector float, (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 float, (a2)), \
6341 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6342 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
6343 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6344 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6345 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6346 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6347 ((vector signed int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6348 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6349 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6350 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6351 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6352 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6353 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6354 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6355 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6356 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6357 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6358 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6359 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6360 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6361 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6362 __ch (__bin_args_eq (vector signed 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 short, (a1), vector signed short, (a2)), \
6365 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6366 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6367 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6368 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6369 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6370 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6371 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6372 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6373 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6374 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6375 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6376 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6377 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6378 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6379 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6380 __altivec_link_error_invalid_argument ())))))))))))))))))))))))
6382 #define vec_avg(a1, a2) \
6383 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6384 ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
6385 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6386 ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
6387 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6388 ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
6389 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6390 ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
6391 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6392 ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
6393 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6394 ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
6395 __altivec_link_error_invalid_argument ()))))))
6397 #define vec_vavgsw(a1, a2) \
6398 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6399 ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
6400 __altivec_link_error_invalid_argument ())
6402 #define vec_vavguw(a1, a2) \
6403 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6404 ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
6405 __altivec_link_error_invalid_argument ())
6407 #define vec_vavgsh(a1, a2) \
6408 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6409 ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
6410 __altivec_link_error_invalid_argument ())
6412 #define vec_vavguh(a1, a2) \
6413 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6414 ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
6415 __altivec_link_error_invalid_argument ())
6417 #define vec_vavgsb(a1, a2) \
6418 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6419 ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
6420 __altivec_link_error_invalid_argument ())
6422 #define vec_vavgub(a1, a2) \
6423 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6424 ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
6425 __altivec_link_error_invalid_argument ())
6427 #define vec_ceil(a1) __builtin_altivec_vrfip ((a1))
6429 #define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2))
6431 #define vec_cmpeq(a1, a2) \
6432 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6433 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6434 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6435 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6436 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6437 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6438 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6439 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6440 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6441 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6442 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6443 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6444 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6445 ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
6446 __altivec_link_error_invalid_argument ())))))))
6448 #define vec_vcmpeqfp(a1, a2) \
6449 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6450 ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
6451 __altivec_link_error_invalid_argument ())
6453 #define vec_vcmpequw(a1, a2) \
6454 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6455 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6456 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6457 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6458 __altivec_link_error_invalid_argument ()))
6460 #define vec_vcmpequh(a1, a2) \
6461 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6462 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6463 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6464 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6465 __altivec_link_error_invalid_argument ()))
6467 #define vec_vcmpequb(a1, a2) \
6468 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6469 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6470 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6471 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6472 __altivec_link_error_invalid_argument ()))
6474 #define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2))
6476 #define vec_cmpgt(a1, a2) \
6477 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6478 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
6479 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6480 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
6481 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6482 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
6483 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6484 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
6485 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6486 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
6487 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6488 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
6489 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6490 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
6491 __altivec_link_error_invalid_argument ())))))))
6493 #define vec_vcmpgtfp(a1, a2) \
6494 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6495 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
6496 __altivec_link_error_invalid_argument ())
6498 #define vec_vcmpgtsw(a1, a2) \
6499 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6500 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
6501 __altivec_link_error_invalid_argument ())
6503 #define vec_vcmpgtuw(a1, a2) \
6504 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6505 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
6506 __altivec_link_error_invalid_argument ())
6508 #define vec_vcmpgtsh(a1, a2) \
6509 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6510 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
6511 __altivec_link_error_invalid_argument ())
6513 #define vec_vcmpgtuh(a1, a2) \
6514 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6515 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
6516 __altivec_link_error_invalid_argument ())
6518 #define vec_vcmpgtsb(a1, a2) \
6519 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6520 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
6521 __altivec_link_error_invalid_argument ())
6523 #define vec_vcmpgtub(a1, a2) \
6524 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6525 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
6526 __altivec_link_error_invalid_argument ())
6528 #define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a2), (a1))
6530 #define vec_cmplt(a2, a1) \
6531 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6532 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
6533 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6534 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
6535 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6536 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
6537 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6538 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
6539 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6540 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
6541 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6542 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
6543 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6544 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
6545 __altivec_link_error_invalid_argument ())))))))
6547 #define vec_ctf(a1, a2) \
6548 __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
6549 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6550 __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
6551 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6552 __ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
6553 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6554 __ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
6555 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6556 __altivec_link_error_invalid_argument ()))))
6558 #define vec_vcfsx(a1, a2) \
6559 __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
6560 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6561 __ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
6562 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6563 __altivec_link_error_invalid_argument ()))
6565 #define vec_vcfux(a1, a2) \
6566 __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
6567 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6568 __ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
6569 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6570 __altivec_link_error_invalid_argument ()))
6572 #define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
6574 #define vec_ctu(a1, a2) (vector unsigned int) __builtin_altivec_vctuxs ((a1), (a2))
6576 #define vec_dss(a1) __builtin_altivec_dss ((a1))
6578 #define vec_dssall() __builtin_altivec_dssall ()
6580 #define vec_dst(a1, a2, a3) \
6581 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6582 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6583 __ch (__un_args_eq (vector signed char, *(a1)), \
6584 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6585 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6586 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6587 __ch (__un_args_eq (vector signed short, *(a1)), \
6588 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6589 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6590 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6591 __ch (__un_args_eq (vector signed int, *(a1)), \
6592 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6593 __ch (__un_args_eq (vector float, *(a1)), \
6594 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6595 __ch (__un_args_eq (unsigned char, *(a1)), \
6596 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6597 __ch (__un_args_eq (signed char, *(a1)), \
6598 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6599 __ch (__un_args_eq (unsigned short, *(a1)), \
6600 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6601 __ch (__un_args_eq (signed short, *(a1)), \
6602 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6603 __ch (__un_args_eq (unsigned int, *(a1)), \
6604 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6605 __ch (__un_args_eq (signed int, *(a1)), \
6606 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6607 __ch (__un_args_eq (unsigned long, *(a1)), \
6608 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6609 __ch (__un_args_eq (signed long, *(a1)), \
6610 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6611 __ch (__un_args_eq (float, *(a1)), \
6612 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6613 __altivec_link_error_invalid_argument ()))))))))))))))))
6615 #define vec_dstst(a1, a2, a3) \
6616 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6617 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6618 __ch (__un_args_eq (vector signed char, *(a1)), \
6619 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6620 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6621 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6622 __ch (__un_args_eq (vector signed short, *(a1)), \
6623 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6624 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6625 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6626 __ch (__un_args_eq (vector signed int, *(a1)), \
6627 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6628 __ch (__un_args_eq (vector float, *(a1)), \
6629 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6630 __ch (__un_args_eq (unsigned char, *(a1)), \
6631 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6632 __ch (__un_args_eq (signed char, *(a1)), \
6633 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6634 __ch (__un_args_eq (unsigned short, *(a1)), \
6635 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6636 __ch (__un_args_eq (signed short, *(a1)), \
6637 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6638 __ch (__un_args_eq (unsigned int, *(a1)), \
6639 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6640 __ch (__un_args_eq (signed int, *(a1)), \
6641 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6642 __ch (__un_args_eq (unsigned long, *(a1)), \
6643 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6644 __ch (__un_args_eq (signed long, *(a1)), \
6645 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6646 __ch (__un_args_eq (float, *(a1)), \
6647 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6648 __altivec_link_error_invalid_argument ()))))))))))))))))
6650 #define vec_dststt(a1, a2, a3) \
6651 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6652 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6653 __ch (__un_args_eq (vector signed char, *(a1)), \
6654 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6655 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6656 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6657 __ch (__un_args_eq (vector signed short, *(a1)), \
6658 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6659 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6660 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6661 __ch (__un_args_eq (vector signed int, *(a1)), \
6662 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6663 __ch (__un_args_eq (vector float, *(a1)), \
6664 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6665 __ch (__un_args_eq (unsigned char, *(a1)), \
6666 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6667 __ch (__un_args_eq (signed char, *(a1)), \
6668 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6669 __ch (__un_args_eq (unsigned short, *(a1)), \
6670 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6671 __ch (__un_args_eq (signed short, *(a1)), \
6672 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6673 __ch (__un_args_eq (unsigned int, *(a1)), \
6674 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6675 __ch (__un_args_eq (signed int, *(a1)), \
6676 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6677 __ch (__un_args_eq (unsigned long, *(a1)), \
6678 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6679 __ch (__un_args_eq (signed long, *(a1)), \
6680 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6681 __ch (__un_args_eq (float, *(a1)), \
6682 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6683 __altivec_link_error_invalid_argument ()))))))))))))))))
6685 #define vec_dstt(a1, a2, a3) \
6686 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6687 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6688 __ch (__un_args_eq (vector signed char, *(a1)), \
6689 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6690 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6691 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6692 __ch (__un_args_eq (vector signed short, *(a1)), \
6693 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6694 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6695 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6696 __ch (__un_args_eq (vector signed int, *(a1)), \
6697 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6698 __ch (__un_args_eq (vector float, *(a1)), \
6699 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6700 __ch (__un_args_eq (unsigned char, *(a1)), \
6701 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6702 __ch (__un_args_eq (signed char, *(a1)), \
6703 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6704 __ch (__un_args_eq (unsigned short, *(a1)), \
6705 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6706 __ch (__un_args_eq (signed short, *(a1)), \
6707 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6708 __ch (__un_args_eq (unsigned int, *(a1)), \
6709 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6710 __ch (__un_args_eq (signed int, *(a1)), \
6711 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6712 __ch (__un_args_eq (unsigned long, *(a1)), \
6713 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6714 __ch (__un_args_eq (signed long, *(a1)), \
6715 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6716 __ch (__un_args_eq (float, *(a1)), \
6717 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6718 __altivec_link_error_invalid_argument ()))))))))))))))))
6720 #define vec_expte(a1) __builtin_altivec_vexptefp ((a1))
6722 #define vec_floor(a1) __builtin_altivec_vrfim (a1)
6724 #define vec_ld(a, b) \
6725 __ch (__un_args_eq (vector unsigned char, *(b)), \
6726 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
6727 __ch (__un_args_eq (unsigned char, *(b)), \
6728 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
6729 __ch (__un_args_eq (vector signed char, *(b)), \
6730 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
6731 __ch (__un_args_eq (signed char, *(b)), \
6732 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
6733 __ch (__un_args_eq (vector unsigned short, *(b)), \
6734 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
6735 __ch (__un_args_eq (unsigned short, *(b)), \
6736 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
6737 __ch (__un_args_eq (vector signed short, *(b)), \
6738 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
6739 __ch (__un_args_eq (signed short, *(b)), \
6740 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
6741 __ch (__un_args_eq (vector unsigned int, *(b)), \
6742 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
6743 __ch (__un_args_eq (unsigned int, *(b)), \
6744 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
6745 __ch (__un_args_eq (unsigned long, *(b)), \
6746 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
6747 __ch (__un_args_eq (vector signed int, *(b)), \
6748 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
6749 __ch (__un_args_eq (signed int, *(b)), \
6750 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
6751 __ch (__un_args_eq (signed long, *(b)), \
6752 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
6753 __ch (__un_args_eq (vector float, *(b)), \
6754 ((vector float) __builtin_altivec_lvx ((a), (b))), \
6755 __ch (__un_args_eq (float, *(b)), \
6756 ((vector float) __builtin_altivec_lvx ((a), (b))), \
6757 __altivec_link_error_invalid_argument ()))))))))))))))))
6759 #define vec_lde(a, b) \
6760 __ch (__un_args_eq (unsigned char, *(b)), \
6761 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
6762 __ch (__un_args_eq (signed char, *(b)), \
6763 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
6764 __ch (__un_args_eq (unsigned short, *(b)), \
6765 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
6766 __ch (__un_args_eq (signed short, *(b)), \
6767 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
6768 __ch (__un_args_eq (unsigned long, *(b)), \
6769 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6770 __ch (__un_args_eq (signed long, *(b)), \
6771 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6772 __ch (__un_args_eq (unsigned int, *(b)), \
6773 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6774 __ch (__un_args_eq (signed int, *(b)), \
6775 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6776 __ch (__un_args_eq (float, *(b)), \
6777 ((vector float) __builtin_altivec_lvewx ((a), (b))), \
6778 __altivec_link_error_invalid_argument ())))))))))
6780 #define vec_lvewx(a, b) \
6781 __ch (__un_args_eq (unsigned int, *(b)), \
6782 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6783 __ch (__un_args_eq (signed int, *(b)), \
6784 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6785 __ch (__un_args_eq (unsigned long, *(b)), \
6786 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6787 __ch (__un_args_eq (signed long, *(b)), \
6788 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6789 __ch (__un_args_eq (float, *(b)), \
6790 ((vector float) __builtin_altivec_lvewx ((a), (b))), \
6791 __altivec_link_error_invalid_argument ())))))
6793 #define vec_lvehx(a, b) \
6794 __ch (__un_args_eq (unsigned short, *(b)), \
6795 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
6796 __ch (__un_args_eq (signed short, *(b)), \
6797 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
6798 __altivec_link_error_invalid_argument ()))
6800 #define vec_lvebx(a, b) \
6801 __ch (__un_args_eq (unsigned char, *(b)), \
6802 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
6803 __ch (__un_args_eq (signed char, *(b)), \
6804 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
6805 __altivec_link_error_invalid_argument ()))
6807 #define vec_ldl(a, b) \
6808 __ch (__un_args_eq (vector unsigned char, *(b)), \
6809 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
6810 __ch (__un_args_eq (unsigned char, *(b)), \
6811 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
6812 __ch (__un_args_eq (vector signed char, *(b)), \
6813 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
6814 __ch (__un_args_eq (signed char, *(b)), \
6815 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
6816 __ch (__un_args_eq (vector unsigned short, *(b)), \
6817 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
6818 __ch (__un_args_eq (unsigned short, *(b)), \
6819 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
6820 __ch (__un_args_eq (vector signed short, *(b)), \
6821 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
6822 __ch (__un_args_eq (signed short, *(b)), \
6823 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
6824 __ch (__un_args_eq (vector unsigned int, *(b)), \
6825 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
6826 __ch (__un_args_eq (unsigned int, *(b)), \
6827 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
6828 __ch (__un_args_eq (unsigned long, *(b)), \
6829 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
6830 __ch (__un_args_eq (vector signed int, *(b)), \
6831 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
6832 __ch (__un_args_eq (signed int, *(b)), \
6833 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
6834 __ch (__un_args_eq (signed long, *(b)), \
6835 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
6836 __ch (__un_args_eq (vector float, *(b)), \
6837 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
6838 __ch (__un_args_eq (float, *(b)), \
6839 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
6840 __altivec_link_error_invalid_argument ()))))))))))))))))
6842 #define vec_loge(a1) __builtin_altivec_vlogefp ((a1))
6844 #define vec_lvsl(a1, a2) \
6845 __ch (__un_args_eq (unsigned char, *(a2)), \
6846 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6847 __ch (__un_args_eq (signed char, *(a2)), \
6848 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6849 __ch (__un_args_eq (unsigned short, *(a2)), \
6850 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6851 __ch (__un_args_eq (signed short, *(a2)), \
6852 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6853 __ch (__un_args_eq (unsigned int, *(a2)), \
6854 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6855 __ch (__un_args_eq (signed int, *(a2)), \
6856 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6857 __ch (__un_args_eq (unsigned long, *(a2)), \
6858 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6859 __ch (__un_args_eq (signed long, *(a2)), \
6860 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6861 __ch (__un_args_eq (float, *(a2)), \
6862 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6863 __altivec_link_error_invalid_argument ())))))))))
6865 #define vec_lvsr(a1, a2) \
6866 __ch (__un_args_eq (unsigned char, *(a2)), \
6867 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6868 __ch (__un_args_eq (signed char, *(a2)), \
6869 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6870 __ch (__un_args_eq (unsigned short, *(a2)), \
6871 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6872 __ch (__un_args_eq (signed short, *(a2)), \
6873 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6874 __ch (__un_args_eq (unsigned int, *(a2)), \
6875 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6876 __ch (__un_args_eq (signed int, *(a2)), \
6877 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6878 __ch (__un_args_eq (unsigned long, *(a2)), \
6879 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6880 __ch (__un_args_eq (signed long, *(a2)), \
6881 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6882 __ch (__un_args_eq (float, *(a2)), \
6883 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6884 __altivec_link_error_invalid_argument ())))))))))
6886 #define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3)))
6888 #define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))
6890 #define vec_max(a1, a2) \
6891 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
6894 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6895 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6896 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6897 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6898 ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
6899 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
6902 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6903 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6904 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6905 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6906 ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
6907 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
6910 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6911 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6912 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6913 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6914 ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
6915 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6916 ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
6917 __altivec_link_error_invalid_argument ())))))))))))))
6919 #define vec_vmaxfp(a1, a2) \
6920 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6921 ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
6922 __altivec_link_error_invalid_argument ())
6924 #define vec_vmaxsw(a1, a2) \
6925 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6926 ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
6927 __altivec_link_error_invalid_argument ())
6929 #define vec_vmaxuw(a1, a2) \
6930 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6931 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6932 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6933 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6934 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6935 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6936 __altivec_link_error_invalid_argument ())))
6938 #define vec_vmaxsh(a1, a2) \
6939 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6940 ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
6941 __altivec_link_error_invalid_argument ())
6943 #define vec_vmaxuh(a1, a2) \
6944 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6945 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6946 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6947 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6948 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6949 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6950 __altivec_link_error_invalid_argument ())))
6952 #define vec_vmaxsb(a1, a2) \
6953 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6954 ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
6955 __altivec_link_error_invalid_argument ())
6957 #define vec_vmaxub(a1, a2) \
6958 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6959 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6960 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6961 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6962 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6963 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6964 __altivec_link_error_invalid_argument ())))
6966 #define vec_mergeh(a1, a2) \
6967 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6968 ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
6969 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6970 ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
6971 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6972 ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6973 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6974 ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6975 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6976 ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6977 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6978 ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6979 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6980 ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6981 __altivec_link_error_invalid_argument ())))))))
6983 #define vec_vmrghw(a1, a2) \
6984 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6985 ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6986 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6987 ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6988 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6989 ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6990 __altivec_link_error_invalid_argument ())))
6992 #define vec_vmrghh(a1, a2) \
6993 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6994 ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6995 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6996 ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6997 __altivec_link_error_invalid_argument ()))
6999 #define vec_vmrghb(a1, a2) \
7000 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7001 ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
7002 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7003 ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
7004 __altivec_link_error_invalid_argument ()))
7006 #define vec_mergel(a1, a2) \
7007 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7008 ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7009 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7010 ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7011 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7012 ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7013 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7014 ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7015 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7016 ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7017 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7018 ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7019 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7020 ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7021 __altivec_link_error_invalid_argument ())))))))
7023 #define vec_vmrglw(a1, a2) \
7024 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7025 ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7026 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7027 ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7028 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7029 ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7030 __altivec_link_error_invalid_argument ())))
7032 #define vec_vmrglh(a1, a2) \
7033 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7034 ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7035 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7036 ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7037 __altivec_link_error_invalid_argument ()))
7039 #define vec_vmrglb(a1, a2) \
7040 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7041 ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7042 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7043 ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7044 __altivec_link_error_invalid_argument ()))
7046 #define vec_mfvscr() (((vector unsigned short) __builtin_altivec_mfvscr ()))
7048 #define vec_min(a1, a2) \
7049 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
7052 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7053 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7054 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7055 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7056 ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
7057 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
7060 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7061 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7062 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7063 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7064 ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
7065 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
7068 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7069 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7070 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7071 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7072 ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
7073 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7074 ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
7075 __altivec_link_error_invalid_argument ())))))))))))))
7077 #define vec_vminfp(a1, a2) \
7078 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7079 ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
7080 __altivec_link_error_invalid_argument ())
7082 #define vec_vminsw(a1, a2) \
7083 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7084 ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
7085 __altivec_link_error_invalid_argument ())
7087 #define vec_vminuw(a1, a2) \
7088 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7089 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7090 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7091 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7092 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7093 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7094 __altivec_link_error_invalid_argument ())))
7096 #define vec_vminsh(a1, a2) \
7097 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7098 ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
7099 __altivec_link_error_invalid_argument ())
7101 #define vec_vminuh(a1, a2) \
7102 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7103 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7104 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7105 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7106 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7107 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7108 __altivec_link_error_invalid_argument ())))
7110 #define vec_vminsb(a1, a2) \
7111 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7112 ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
7113 __altivec_link_error_invalid_argument ())
7115 #define vec_vminub(a1, a2) \
7116 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7117 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7118 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7119 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7120 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7121 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7122 __altivec_link_error_invalid_argument ())))
7124 #define vec_mladd(a1, a2, a3) \
7125 __ch (__tern_args_eq (vector signed 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 signed short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
7128 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7129 __ch (__tern_args_eq (vector unsigned short, (a1), vector signed short, (a2), vector signed short, (a3)), \
7130 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7131 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
7132 ((vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7133 __altivec_link_error_invalid_argument ()))))
7135 #define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs ((a1), (a2), (a3))
7137 #define vec_msum(a1, a2, a3) \
7138 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
7139 ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7140 __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
7141 ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7142 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7143 ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7144 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7145 ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7146 __altivec_link_error_invalid_argument ()))))
7148 #define vec_vmsumshm(a1, a2, a3) \
7149 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7150 ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7151 __altivec_link_error_invalid_argument ())
7153 #define vec_vmsumuhm(a1, a2, a3) \
7154 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7155 ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7156 __altivec_link_error_invalid_argument ())
7158 #define vec_vmsummbm(a1, a2, a3) \
7159 __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
7160 ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7161 __altivec_link_error_invalid_argument ())
7163 #define vec_vmsumubm(a1, a2, a3) \
7164 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
7165 ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7166 __altivec_link_error_invalid_argument ())
7168 #define vec_msums(a1, a2, a3) \
7169 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7170 ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7171 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7172 ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7173 __altivec_link_error_invalid_argument ()))
7175 #define vec_vmsumshs(a1, a2, a3) \
7176 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7177 ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7178 __altivec_link_error_invalid_argument ())
7180 #define vec_vmsumuhs(a1, a2, a3) \
7181 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7182 ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7183 __altivec_link_error_invalid_argument ())
7185 #define vec_mtvscr(a1) \
7186 __ch (__un_args_eq (vector signed int, (a1)), \
7187 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7188 __ch (__un_args_eq (vector unsigned int, (a1)), \
7189 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7190 __ch (__un_args_eq (vector signed short, (a1)), \
7191 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7192 __ch (__un_args_eq (vector unsigned short, (a1)), \
7193 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7194 __ch (__un_args_eq (vector signed char, (a1)), \
7195 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7196 __ch (__un_args_eq (vector unsigned char, (a1)), \
7197 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7198 __altivec_link_error_invalid_argument ()))))))
7200 #define vec_mule(a1, a2) \
7201 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7202 ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
7203 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7204 ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
7205 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7206 ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
7207 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7208 ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
7209 __altivec_link_error_invalid_argument ()))))
7211 #define vec_vmulesh(a1, a2) \
7212 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7213 ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
7214 __altivec_link_error_invalid_argument ())
7216 #define vec_vmuleuh(a1, a2) \
7217 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7218 ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
7219 __altivec_link_error_invalid_argument ())
7221 #define vec_vmulesb(a1, a2) \
7222 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7223 ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
7224 __altivec_link_error_invalid_argument ())
7226 #define vec_vmuleub(a1, a2) \
7227 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7228 ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
7229 __altivec_link_error_invalid_argument ())
7231 #define vec_mulo(a1, a2) \
7232 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7233 ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
7234 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7235 ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
7236 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7237 ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
7238 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7239 ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
7240 __altivec_link_error_invalid_argument ()))))
7242 #define vec_vmulosh(a1, a2) \
7243 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7244 ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
7245 __altivec_link_error_invalid_argument ())
7247 #define vec_vmulouh(a1, a2) \
7248 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7249 ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
7250 __altivec_link_error_invalid_argument ())
7252 #define vec_vmulosb(a1, a2) \
7253 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7254 ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
7255 __altivec_link_error_invalid_argument ())
7257 #define vec_vmuloub(a1, a2) \
7258 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7259 ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
7260 __altivec_link_error_invalid_argument ())
7262 #define vec_nmsub(a1, a2, a3) \
7263 __ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \
7264 ((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \
7265 __altivec_link_error_invalid_argument ())
7267 #define vec_nor(a1, a2) \
7268 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7269 ((vector float) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7270 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7271 ((vector signed int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7272 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7273 ((vector unsigned int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7274 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7275 ((vector signed short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7276 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7277 ((vector unsigned short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7278 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7279 ((vector signed char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7280 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7281 ((vector unsigned char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7282 __altivec_link_error_invalid_argument ())))))))
7284 #define vec_or(a1, a2) \
7285 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7286 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7287 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
7288 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7289 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
7290 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7291 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7292 ((vector signed int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7293 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
7296 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7297 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7298 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7299 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7300 ((vector signed short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7301 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
7304 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7305 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7306 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7307 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7308 ((vector signed char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7309 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7310 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7311 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7312 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7313 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7314 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7315 __altivec_link_error_invalid_argument ())))))))))))))))
7317 #define vec_pack(a1, a2) \
7318 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7319 ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7320 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7321 ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7322 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7323 ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7324 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7325 ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7326 __altivec_link_error_invalid_argument ()))))
7328 #define vec_vpkuwum(a1, a2) \
7329 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7330 ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7331 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7332 ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7333 __altivec_link_error_invalid_argument ()))
7335 #define vec_vpkuhum(a1, a2) \
7336 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7337 ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7338 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7339 ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7340 __altivec_link_error_invalid_argument ()))
7342 #define vec_packpx(a1, a2) \
7343 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7344 (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) (a1), (vector signed int) (a2)), \
7345 __altivec_link_error_invalid_argument ())
7347 #define vec_packs(a1, a2) \
7348 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7349 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
7350 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7351 ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
7352 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7353 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
7354 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7355 ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
7356 __altivec_link_error_invalid_argument ()))))
7358 #define vec_vpkswss(a1, a2) \
7359 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7360 ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
7361 __altivec_link_error_invalid_argument ())
7363 #define vec_vpkuwus(a1, a2) \
7364 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7365 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
7366 __altivec_link_error_invalid_argument ())
7368 #define vec_vpkshss(a1, a2) \
7369 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7370 ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
7371 __altivec_link_error_invalid_argument ())
7373 #define vec_vpkuhus(a1, a2) \
7374 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7375 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
7376 __altivec_link_error_invalid_argument ())
7378 #define vec_packsu(a1, a2) \
7379 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7380 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
7381 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7382 ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
7383 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7384 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
7385 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7386 ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
7387 __altivec_link_error_invalid_argument ()))))
7389 #define vec_vpkswus(a1, a2) \
7390 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7391 ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
7392 __altivec_link_error_invalid_argument ())
7394 #define vec_vpkshus(a1, a2) \
7395 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7396 ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
7397 __altivec_link_error_invalid_argument ())
7399 #define vec_perm(a1, a2, a3) \
7400 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \
7401 ((vector float) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7402 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned char, (a3)), \
7403 ((vector signed int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7404 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned char, (a3)), \
7405 ((vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7406 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned char, (a3)), \
7407 ((vector signed short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7408 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned char, (a3)), \
7409 ((vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7410 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
7411 ((vector signed char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7412 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
7413 ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7414 __altivec_link_error_invalid_argument ())))))))
7416 #define vec_re(a1) __builtin_altivec_vrefp ((a1))
7418 #define vec_rl(a1, a2) \
7419 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7420 ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7421 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7422 ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7423 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7424 ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7425 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7426 ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7427 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7428 ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7429 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7430 ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7431 __altivec_link_error_invalid_argument ()))))))
7433 #define vec_vrlw(a1, a2) \
7434 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7435 ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7436 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7437 ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7438 __altivec_link_error_invalid_argument ()))
7440 #define vec_vrlh(a1, a2) \
7441 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7442 ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7443 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7444 ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7445 __altivec_link_error_invalid_argument ()))
7447 #define vec_vrlb(a1, a2) \
7448 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7449 ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7450 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7451 ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7452 __altivec_link_error_invalid_argument ()))
7454 #define vec_round(a1) __builtin_altivec_vrfin ((a1))
7456 #define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1))
7458 #define vec_sel(a1, a2, a3) \
7459 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector signed int, (a3)), \
7460 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7461 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned int, (a3)), \
7462 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7463 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector signed int, (a3)), \
7464 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7465 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned int, (a3)), \
7466 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7467 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector signed int, (a3)), \
7468 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7469 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned int, (a3)), \
7470 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7471 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
7472 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7473 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned short, (a3)), \
7474 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7475 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector signed short, (a3)), \
7476 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7477 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
7478 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7479 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector signed char, (a3)), \
7480 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7481 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
7482 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7483 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector signed char, (a3)), \
7484 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7485 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
7486 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7487 __altivec_link_error_invalid_argument ()))))))))))))))
7489 #define vec_sl(a1, a2) \
7490 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7491 ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7492 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7493 ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7494 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7495 ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7496 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7497 ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7498 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7499 ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7500 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7501 ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7502 __altivec_link_error_invalid_argument ()))))))
7504 #define vec_vslw(a1, a2) \
7505 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7506 ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7507 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7508 ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7509 __altivec_link_error_invalid_argument ()))
7511 #define vec_vslh(a1, a2) \
7512 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7513 ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7514 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7515 ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7516 __altivec_link_error_invalid_argument ()))
7518 #define vec_vslb(a1, a2) \
7519 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7520 ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7521 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7522 ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7523 __altivec_link_error_invalid_argument ()))
7525 #define vec_sld(a1, a2, a3) \
7526 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \
7527 ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7528 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), unsigned int, (a3)), \
7529 ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7530 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), int, (a3)), \
7531 ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7532 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), unsigned int, (a3)), \
7533 ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7534 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), int, (a3)), \
7535 ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7536 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), unsigned int, (a3)), \
7537 ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7538 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), int, (a3)), \
7539 ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7540 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), unsigned int, (a3)), \
7541 ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7542 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), int, (a3)), \
7543 ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7544 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), unsigned int, (a3)), \
7545 ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7546 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), int, (a3)), \
7547 ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7548 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), unsigned int, (a3)), \
7549 ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7550 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), int, (a3)), \
7551 ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7552 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), unsigned int, (a3)), \
7553 ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7554 __altivec_link_error_invalid_argument ()))))))))))))))
7556 #define vec_sll(a1, a2) \
7557 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7558 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7559 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
7560 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7561 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7562 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7563 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7564 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7565 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
7566 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7567 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7568 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7569 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
7570 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7571 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7572 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7573 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7574 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7575 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
7576 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7577 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7578 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7579 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7580 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7581 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
7582 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7583 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
7584 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7585 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7586 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7587 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
7588 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7589 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
7590 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7591 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7592 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7593 __altivec_link_error_invalid_argument ()))))))))))))))))))
7595 #define vec_slo(a1, a2) \
7596 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
7597 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7598 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
7599 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7600 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
7601 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7602 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7603 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7604 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
7605 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7606 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7607 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7608 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
7609 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7610 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7611 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7612 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
7613 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7614 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7615 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7616 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7617 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7618 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7619 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7620 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7621 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7622 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7623 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7624 __altivec_link_error_invalid_argument ()))))))))))))))
7626 #define vec_splat(a1, a2) \
7627 __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
7628 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7629 __ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \
7630 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7631 __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
7632 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7633 __ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \
7634 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7635 __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
7636 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7637 __ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \
7638 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7639 __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
7640 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7641 __ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \
7642 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7643 __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
7644 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7645 __ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \
7646 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7647 __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
7648 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7649 __ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \
7650 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7651 __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
7652 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7653 __ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
7654 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7655 __altivec_link_error_invalid_argument ()))))))))))))))
7657 #define vec_vspltw(a1, a2) \
7658 __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
7659 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7660 __ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \
7661 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7662 __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
7663 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7664 __ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \
7665 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7666 __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
7667 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7668 __ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
7669 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7670 __altivec_link_error_invalid_argument ()))))))
7672 #define vec_vsplth(a1, a2) \
7673 __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
7674 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7675 __ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \
7676 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7677 __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
7678 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7679 __ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \
7680 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7681 __altivec_link_error_invalid_argument ()))))
7683 #define vec_vspltb(a1, a2) \
7684 __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
7685 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7686 __ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \
7687 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7688 __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
7689 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7690 __ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \
7691 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7692 __altivec_link_error_invalid_argument ()))))
7694 #define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1))
7696 #define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1))
7698 #define vec_splat_s32(a1) __builtin_altivec_vspltisw ((a1))
7700 #define vec_splat_u8(a1) ((vector unsigned char) __builtin_altivec_vspltisb ((a1)))
7702 #define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish ((a1)))
7704 #define vec_splat_u32(a1) ((vector unsigned int) __builtin_altivec_vspltisw ((a1)))
7706 #define vec_sr(a1, a2) \
7707 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7708 ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7709 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7710 ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7711 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7712 ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7713 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7714 ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7715 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7716 ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7717 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7718 ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7719 __altivec_link_error_invalid_argument ()))))))
7721 #define vec_vsrw(a1, a2) \
7722 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7723 ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7724 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7725 ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7726 __altivec_link_error_invalid_argument ()))
7728 #define vec_vsrh(a1, a2) \
7729 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7730 ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7731 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7732 ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7733 __altivec_link_error_invalid_argument ()))
7735 #define vec_vsrb(a1, a2) \
7736 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7737 ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7738 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7739 ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7740 __altivec_link_error_invalid_argument ()))
7742 #define vec_sra(a1, a2) \
7743 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7744 ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7745 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7746 ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7747 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7748 ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7749 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7750 ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7751 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7752 ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7753 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7754 ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7755 __altivec_link_error_invalid_argument ()))))))
7757 #define vec_vsraw(a1, a2) \
7758 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7759 ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7760 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7761 ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7762 __altivec_link_error_invalid_argument ()))
7764 #define vec_vsrah(a1, a2) \
7765 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7766 ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7767 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7768 ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7769 __altivec_link_error_invalid_argument ()))
7771 #define vec_vsrab(a1, a2) \
7772 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7773 ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7774 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7775 ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7776 __altivec_link_error_invalid_argument ()))
7778 #define vec_srl(a1, a2) \
7779 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7780 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7781 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
7782 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7783 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7784 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7785 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7786 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7787 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
7788 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7789 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7790 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7791 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
7792 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7793 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7794 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7795 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7796 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7797 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
7798 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7799 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7800 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7801 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7802 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7803 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
7804 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7805 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
7806 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7807 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7808 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7809 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
7810 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7811 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
7812 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7813 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7814 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7815 __altivec_link_error_invalid_argument ()))))))))))))))))))
7817 #define vec_sro(a1, a2) \
7818 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
7819 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7820 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
7821 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7822 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
7823 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7824 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7825 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7826 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
7827 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7828 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7829 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7830 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
7831 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7832 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7833 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7834 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
7835 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7836 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7837 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7838 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7839 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7840 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7841 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7842 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7843 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7844 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7845 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7846 __altivec_link_error_invalid_argument ()))))))))))))))
7848 #define vec_st(a1, a2, a3) \
7849 __builtin_altivec_stvx ((vector signed int) (a1), (a2), (a3))
7851 #define vec_stl(a1, a2, a3) \
7852 __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (a3))
7854 #define vec_ste(a, b, c) \
7855 __ch (__un_args_eq (vector unsigned char, (a)), \
7856 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7857 __ch (__un_args_eq (vector signed char, (a)), \
7858 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7859 __ch (__un_args_eq (vector unsigned short, (a)), \
7860 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7861 __ch (__un_args_eq (vector signed short, (a)), \
7862 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7863 __ch (__un_args_eq (vector unsigned int, (a)), \
7864 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7865 __ch (__un_args_eq (vector signed int, (a)), \
7866 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7867 __ch (__un_args_eq (vector float, (a)), \
7868 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7869 __altivec_link_error_invalid_argument ())))))))
7871 #define vec_stvewx(a, b, c) \
7872 __ch (__un_args_eq (vector unsigned int, (a)), \
7873 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7874 __ch (__un_args_eq (vector signed int, (a)), \
7875 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7876 __ch (__un_args_eq (vector float, (a)), \
7877 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7878 __altivec_link_error_invalid_argument ())))
7880 #define vec_stvehx(a, b, c) \
7881 __ch (__un_args_eq (vector unsigned short, (a)), \
7882 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7883 __ch (__un_args_eq (vector signed short, (a)), \
7884 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7885 __altivec_link_error_invalid_argument ()))
7887 #define vec_stvebx(a, b, c) \
7888 __ch (__un_args_eq (vector unsigned char, (a)), \
7889 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7890 __ch (__un_args_eq (vector signed char, (a)), \
7891 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7892 __altivec_link_error_invalid_argument ()))
7894 #define vec_sub(a1, a2) \
7895 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7896 ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7897 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
7900 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7901 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7902 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7903 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7904 ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7905 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
7908 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7909 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7910 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7911 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7912 ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7913 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
7916 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7917 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7918 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7919 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7920 ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
7921 __altivec_link_error_invalid_argument ())))))))))))))
7923 #define vec_vsubfp(a1, a2) \
7924 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7925 ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
7926 __altivec_link_error_invalid_argument ())
7928 #define vec_vsubuwm(a1, a2) \
7929 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7930 ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7931 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7932 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7933 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7934 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7935 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7936 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7937 __altivec_link_error_invalid_argument ()))))
7939 #define vec_vsubuhm(a1, a2) \
7940 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7941 ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7942 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7943 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7944 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7945 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7946 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7947 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7948 __altivec_link_error_invalid_argument ()))))
7950 #define vec_vsububm(a1, a2) \
7951 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7952 ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7953 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7954 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7955 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7956 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7957 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7958 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7959 __altivec_link_error_invalid_argument ()))))
7961 #define vec_subc(a1, a2) \
7962 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7963 ((vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) (a1), (vector signed int) (a2))), \
7964 __altivec_link_error_invalid_argument ())
7966 #define vec_subs(a1, a2) \
7967 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
7970 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
7971 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7972 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
7973 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7974 ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
7975 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
7978 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
7979 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7980 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
7981 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7982 ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
7983 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
7986 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7987 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7988 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7989 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7990 ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
7991 __altivec_link_error_invalid_argument ()))))))))))))
7993 #define vec_vsubsws(a1, a2) \
7994 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7995 ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
7996 __altivec_link_error_invalid_argument ())
7998 #define vec_vsubuws(a1, a2) \
7999 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8000 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
8001 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8002 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
8003 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8004 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
8005 __altivec_link_error_invalid_argument ())))
8007 #define vec_vsubshs(a1, a2) \
8008 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8009 ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
8010 __altivec_link_error_invalid_argument ())
8012 #define vec_vsubuhs(a1, a2) \
8013 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8014 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
8015 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8016 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
8017 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8018 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
8019 __altivec_link_error_invalid_argument ())))
8021 #define vec_vsubsbs(a1, a2) \
8022 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8023 ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
8024 __altivec_link_error_invalid_argument ())
8026 #define vec_vsububs(a1, a2) \
8027 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8028 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
8029 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8030 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
8031 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8032 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
8033 __altivec_link_error_invalid_argument ())))
8035 #define vec_sum4s(a1, a2) \
8036 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
8037 ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
8038 __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
8039 ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
8040 __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
8041 ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
8042 __altivec_link_error_invalid_argument ())))
8044 #define vec_vsum4shs(a1, a2) \
8045 __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
8046 ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
8047 __altivec_link_error_invalid_argument ())
8049 #define vec_vsum4sbs(a1, a2) \
8050 __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
8051 ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
8052 __altivec_link_error_invalid_argument ())
8054 #define vec_vsum4ubs(a1, a2) \
8055 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
8056 ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
8057 __altivec_link_error_invalid_argument ())
8059 #define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2))
8061 #define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2))
8063 #define vec_trunc(a1) __builtin_altivec_vrfiz ((a1))
8065 #define vec_unpackh(a1) \
8066 __ch (__un_args_eq (vector signed char, (a1)), \
8067 ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
8068 __ch (__un_args_eq (vector unsigned short, (a1)), \
8069 ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
8070 __ch (__un_args_eq (vector signed short, (a1)), \
8071 ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
8072 __altivec_link_error_invalid_argument ())))
8074 #define vec_vupkhsh(a1) \
8075 __ch (__un_args_eq (vector signed short, (a1)), \
8076 ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
8077 __altivec_link_error_invalid_argument ())
8079 #define vec_vupkhpx(a1) \
8080 __ch (__un_args_eq (vector unsigned short, (a1)), \
8081 ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
8082 __altivec_link_error_invalid_argument ())
8084 #define vec_vupkhsb(a1) \
8085 __ch (__un_args_eq (vector signed char, (a1)), \
8086 ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
8087 __altivec_link_error_invalid_argument ())
8089 #define vec_unpackl(a1) \
8090 __ch (__un_args_eq (vector signed char, (a1)), \
8091 ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
8092 __ch (__un_args_eq (vector unsigned short, (a1)), \
8093 ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
8094 __ch (__un_args_eq (vector signed short, (a1)), \
8095 ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
8096 __altivec_link_error_invalid_argument ())))
8098 #define vec_vupklsh(a1) \
8099 __ch (__un_args_eq (vector signed short, (a1)), \
8100 ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
8101 __altivec_link_error_invalid_argument ())
8103 #define vec_vupklpx(a1) \
8104 __ch (__un_args_eq (vector unsigned short, (a1)), \
8105 ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
8106 __altivec_link_error_invalid_argument ())
8108 #define vec_vupklsb(a1) \
8109 __ch (__un_args_eq (vector signed char, (a1)), \
8110 ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
8111 __altivec_link_error_invalid_argument ())
8113 #define vec_xor(a1, a2) \
8114 __ch (__bin_args_eq (vector float, ((a1)), vector float, ((a2))), \
8115 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8116 __ch (__bin_args_eq (vector float, ((a1)), vector unsigned int, ((a2))), \
8117 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8118 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector float, ((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 float, ((a2))), \
8121 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8122 __ch (__bin_args_eq (vector float, ((a1)), vector signed int, ((a2))), \
8123 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8124 __ch (__bin_args_eq (vector signed int, ((a1)), vector signed int, ((a2))), \
8125 ((vector signed int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8126 __ch (__bin_args_eq (vector signed 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 int, ((a1)), vector signed int, ((a2))), \
8129 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8130 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector unsigned int, ((a2))), \
8131 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8132 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
8133 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8134 __ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \
8135 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8136 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \
8137 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8138 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
8139 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8140 __ch (__bin_args_eq (vector signed short, ((a1)), vector signed short, ((a2))), \
8141 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8142 __ch (__bin_args_eq (vector signed 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 short, ((a1)), vector signed short, ((a2))), \
8145 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8146 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
8147 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8148 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \
8149 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8150 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
8151 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8152 __ch (__bin_args_eq (vector signed char, ((a1)), vector signed 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 unsigned char, ((a2))), \
8155 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8156 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
8157 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8158 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector signed char, ((a2))), \
8159 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8160 __altivec_link_error_invalid_argument ())))))))))))))))))))))))
8162 /* Predicates. */
8164 #define vec_all_eq(a1, a2) \
8165 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8166 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8167 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8168 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8169 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8170 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8171 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8172 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8173 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8174 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8175 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8176 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8177 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8178 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8179 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8180 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8181 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8182 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8183 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8184 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8185 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8186 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8187 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8188 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8189 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8190 __builtin_altivec_vcmpeqfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
8191 __altivec_link_error_invalid_argument ())))))))))))))
8193 #define vec_all_ge(a1, a2) \
8194 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
8197 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8198 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8199 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8200 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8201 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8202 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
8205 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8206 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8207 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8208 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8209 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8210 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
8213 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8214 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8215 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8216 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8217 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8218 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8219 __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
8220 __altivec_link_error_invalid_argument ())))))))))))))
8222 #define vec_all_gt(a1, a2) \
8223 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
8226 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8227 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8228 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8229 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8230 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8231 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
8234 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8235 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8236 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8237 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8238 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8239 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
8242 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8243 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8244 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8245 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8246 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8247 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8248 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
8249 __altivec_link_error_invalid_argument ())))))))))))))
8251 #define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2))
8253 #define vec_all_le(a1, a2) \
8254 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
8257 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8258 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8259 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8260 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8261 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8262 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
8265 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8266 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8267 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8268 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8269 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8270 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
8273 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8274 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8275 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8276 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8277 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8278 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8279 __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
8280 __altivec_link_error_invalid_argument ())))))))))))))
8282 #define vec_all_lt(a1, a2) \
8283 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
8286 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8287 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8288 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8289 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8290 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8291 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
8294 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8295 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8296 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8297 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8298 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8299 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
8302 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8303 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8304 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8305 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8306 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8307 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8308 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
8309 __altivec_link_error_invalid_argument ())))))))))))))
8311 #define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
8313 #define vec_all_ne(a1, a2) \
8314 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8315 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8316 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8317 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8318 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8319 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8320 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8321 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8322 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8323 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8324 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8325 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8326 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8327 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8328 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8329 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8330 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8331 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8332 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8333 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8334 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8335 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8336 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8337 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8338 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8339 __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (vector float) (a1), (vector float) (a2)), \
8340 __altivec_link_error_invalid_argument ())))))))))))))
8342 #define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2))
8344 #define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2))
8346 #define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1))
8348 #define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1))
8350 #define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1))
8352 #define vec_any_eq(a1, a2) \
8353 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8354 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8355 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8356 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8357 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8358 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8359 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8360 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8361 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8362 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8363 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8364 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8365 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8366 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8367 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8368 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8369 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8370 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8371 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8372 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8373 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8374 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8375 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8376 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8377 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8378 __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
8379 __altivec_link_error_invalid_argument ())))))))))))))
8381 #define vec_any_ge(a1, a2) \
8382 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
8385 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8386 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8387 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8388 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8389 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8390 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
8393 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8394 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8395 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8396 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8397 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8398 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
8401 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8402 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8403 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8404 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8405 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8406 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8407 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
8408 __altivec_link_error_invalid_argument ())))))))))))))
8410 #define vec_any_gt(a1, a2) \
8411 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
8414 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8415 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8416 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8417 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8418 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8419 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
8422 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8423 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8424 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8425 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8426 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8427 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
8430 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8431 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8432 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8433 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8434 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8435 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8436 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
8437 __altivec_link_error_invalid_argument ())))))))))))))
8439 #define vec_any_le(a1, a2) \
8440 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
8443 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8444 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8445 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8446 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8447 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8448 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
8451 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8452 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8453 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8454 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8455 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8456 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
8459 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8460 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8461 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8462 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8463 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8464 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8465 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
8466 __altivec_link_error_invalid_argument ())))))))))))))
8468 #define vec_any_lt(a1, a2) \
8469 __ch (__bin_args_eq (vector signed 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 unsigned char, (a1), vector signed char, (a2)), \
8472 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8473 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8474 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8475 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8476 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8477 __ch (__bin_args_eq (vector signed 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 unsigned short, (a1), vector signed short, (a2)), \
8480 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8481 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8482 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8483 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8484 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8485 __ch (__bin_args_eq (vector signed 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 unsigned int, (a1), vector signed int, (a2)), \
8488 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8489 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8490 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8491 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8492 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8493 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8494 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
8495 __altivec_link_error_invalid_argument ())))))))))))))
8497 #define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1)
8499 #define vec_any_ne(a1, a2) \
8500 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8501 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8502 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8503 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8504 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8505 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8506 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8507 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8508 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8509 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8510 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8511 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8512 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8513 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8514 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8515 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8516 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8517 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8518 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8519 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8520 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8521 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8522 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8523 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8524 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8525 __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (vector float) (a1), (vector float) (a2)), \
8526 __altivec_link_error_invalid_argument ())))))))))))))
8528 #define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2))
8530 #define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2))
8532 #define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1))
8534 #define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1))
8536 #define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1))
8538 #define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2))
8541 #endif /* __cplusplus */
8543 #endif /* _ALTIVEC_H */