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
29 /* Implemented to conform to the specification included in the AltiVec
30 Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0). */
35 /* Required by Motorola specs. */
42 #define __vector __attribute__((vector_size(16)))
44 /* You are allowed to undef this for C++ compatibility. */
45 #define vector __vector
48 #define pixel unsigned short
49 #define __pixel unsigned short
51 /* Dummy prototype. */
52 extern int __altivec_link_error_invalid_argument ();
57 #define __CR6_EQ_REV 1
59 #define __CR6_LT_REV 3
61 #define __bin_args_eq(xtype, x, ytype, y) \
62 (__builtin_types_compatible_p (xtype, typeof (x)) \
63 && __builtin_types_compatible_p (ytype, typeof (y)))
65 #define __un_args_eq(xtype, x) \
66 __builtin_types_compatible_p (xtype, typeof (x))
68 #define __tern_args_eq(xtype, x, ytype, y, ztype, z) \
69 (__builtin_types_compatible_p (xtype, typeof (x)) \
70 && __builtin_types_compatible_p (ytype, typeof (y)) \
71 && __builtin_types_compatible_p (ztype, typeof (z)))
73 #define __ch(x, y, z) __builtin_choose_expr (x, y, z)
75 /* These are easy... Same exact arguments. */
77 #define vec_vaddcuw vec_addc
78 #define vec_vand vec_and
79 #define vec_vandc vec_andc
80 #define vec_vrfip vec_ceil
81 #define vec_vcmpbfp vec_cmpb
82 #define vec_vcmpgefp vec_cmpge
83 #define vec_vctsxs vec_cts
84 #define vec_vctuxs vec_ctu
85 #define vec_vexptefp vec_expte
86 #define vec_vrfim vec_floor
87 #define vec_lvx vec_ld
88 #define vec_lvxl vec_ldl
89 #define vec_vlogefp vec_loge
90 #define vec_vmaddfp vec_madd
91 #define vec_vmhaddshs vec_madds
92 #define vec_vmladduhm vec_mladd
93 #define vec_vmhraddshs vec_mradds
94 #define vec_vnmsubfp vec_nmsub
95 #define vec_vnor vec_nor
96 #define vec_vor vec_or
97 #define vec_vpkpx vec_packpx
98 #define vec_vperm vec_perm
99 #define vec_vrefp vec_re
100 #define vec_vrfin vec_round
101 #define vec_vrsqrtefp vec_rsqrte
102 #define vec_vsel vec_sel
103 #define vec_vsldoi vec_sld
104 #define vec_vsl vec_sll
105 #define vec_vslo vec_slo
106 #define vec_vspltisb vec_splat_s8
107 #define vec_vspltish vec_splat_s16
108 #define vec_vspltisw vec_splat_s32
109 #define vec_vsr vec_srl
110 #define vec_vsro vec_sro
111 #define vec_stvx vec_st
112 #define vec_stvxl vec_stl
113 #define vec_vsubcuw vec_subc
114 #define vec_vsum2sws vec_sum2s
115 #define vec_vsumsws vec_sums
116 #define vec_vrfiz vec_trunc
117 #define vec_vxor vec_xor
123 /* Prototypes for builtins that take literals and must always be
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
));
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
);
250 vec_abs (vector
float a1
)
252 return __builtin_altivec_abs_v4sf (a1
);
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
);
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
);
350 vec_add (vector
float a1
, vector
float a2
)
352 return (vector
float) __builtin_altivec_vaddfp ((vector
float) a1
, (vector
float) a2
);
358 vec_vaddfp (vector
float a1
, vector
float a2
)
360 return (vector
float) __builtin_altivec_vaddfp ((vector
float) a1
, (vector
float) a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
609 vec_and (vector
float a1
, vector
float a2
)
611 return (vector
float) __builtin_altivec_vand ((vector
signed int) a1
, (vector
signed int) a2
);
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
);
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
);
701 vec_andc (vector
float a1
, vector
float a2
)
703 return (vector
float) __builtin_altivec_vandc ((vector
signed int) a1
, (vector
signed int) a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
879 vec_ceil (vector
float a1
)
881 return (vector
float) __builtin_altivec_vrfip ((vector
float) a1
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
1149 vec_ctf (vector
unsigned int a1
, const char a2
)
1151 return (vector
float) __builtin_altivec_vcfux ((vector
signed int) a1
, a2
);
1155 vec_ctf (vector
signed int a1
, const char a2
)
1157 return (vector
float) __builtin_altivec_vcfsx ((vector
signed int) a1
, a2
);
1163 vec_vcfsx (vector
signed int a1
, const char a2
)
1165 return (vector
float) __builtin_altivec_vcfsx ((vector
signed int) a1
, a2
);
1171 vec_vcfux (vector
unsigned int a1
, const char a2
)
1173 return (vector
float) __builtin_altivec_vcfux ((vector
signed int) a1
, a2
);
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
);
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
);
1195 vec_dss (const char a1
)
1197 __builtin_altivec_dss (a1
);
1205 __builtin_altivec_dssall ();
1211 vec_dst (vector
unsigned char *a1
, int a2
, const char a3
)
1213 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1217 vec_dst (vector
signed char *a1
, int a2
, const char a3
)
1219 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1223 vec_dst (vector
unsigned short *a1
, int a2
, const char a3
)
1225 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1229 vec_dst (vector
signed short *a1
, int a2
, const char a3
)
1231 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1235 vec_dst (vector
unsigned int *a1
, int a2
, const char a3
)
1237 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1241 vec_dst (vector
signed int *a1
, int a2
, const char a3
)
1243 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1247 vec_dst (vector
float *a1
, int a2
, const char a3
)
1249 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1253 vec_dst (unsigned char *a1
, int a2
, const char a3
)
1255 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1259 vec_dst (signed char *a1
, int a2
, const char a3
)
1261 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1265 vec_dst (unsigned short *a1
, int a2
, const char a3
)
1267 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1271 vec_dst (signed short *a1
, int a2
, const char a3
)
1273 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1277 vec_dst (unsigned int *a1
, int a2
, const char a3
)
1279 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1283 vec_dst (signed int *a1
, int a2
, const char a3
)
1285 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1289 vec_dst (unsigned long *a1
, int a2
, const char a3
)
1291 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1295 vec_dst (signed long *a1
, int a2
, const char a3
)
1297 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1301 vec_dst (float *a1
, int a2
, const char a3
)
1303 __builtin_altivec_dst ((void *) a1
, a2
, a3
);
1309 vec_dstst (vector
unsigned char *a1
, int a2
, const char a3
)
1311 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1315 vec_dstst (vector
signed char *a1
, int a2
, const char a3
)
1317 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1321 vec_dstst (vector
unsigned short *a1
, int a2
, const char a3
)
1323 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1327 vec_dstst (vector
signed short *a1
, int a2
, const char a3
)
1329 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1333 vec_dstst (vector
unsigned int *a1
, int a2
, const char a3
)
1335 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1339 vec_dstst (vector
signed int *a1
, int a2
, const char a3
)
1341 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1345 vec_dstst (vector
float *a1
, int a2
, const char a3
)
1347 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1351 vec_dstst (unsigned char *a1
, int a2
, const char a3
)
1353 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1357 vec_dstst (signed char *a1
, int a2
, const char a3
)
1359 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1363 vec_dstst (unsigned short *a1
, int a2
, const char a3
)
1365 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1369 vec_dstst (signed short *a1
, int a2
, const char a3
)
1371 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1375 vec_dstst (unsigned int *a1
, int a2
, const char a3
)
1377 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1381 vec_dstst (signed int *a1
, int a2
, const char a3
)
1383 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1387 vec_dstst (unsigned long *a1
, int a2
, const char a3
)
1389 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1393 vec_dstst (signed long *a1
, int a2
, const char a3
)
1395 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1399 vec_dstst (float *a1
, int a2
, const char a3
)
1401 __builtin_altivec_dstst ((void *) a1
, a2
, a3
);
1407 vec_dststt (vector
unsigned char *a1
, int a2
, const char a3
)
1409 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1413 vec_dststt (vector
signed char *a1
, int a2
, const char a3
)
1415 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1419 vec_dststt (vector
unsigned short *a1
, int a2
, const char a3
)
1421 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1425 vec_dststt (vector
signed short *a1
, int a2
, const char a3
)
1427 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1431 vec_dststt (vector
unsigned int *a1
, int a2
, const char a3
)
1433 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1437 vec_dststt (vector
signed int *a1
, int a2
, const char a3
)
1439 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1443 vec_dststt (vector
float *a1
, int a2
, const char a3
)
1445 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1449 vec_dststt (unsigned char *a1
, int a2
, const char a3
)
1451 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1455 vec_dststt (signed char *a1
, int a2
, const char a3
)
1457 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1461 vec_dststt (unsigned short *a1
, int a2
, const char a3
)
1463 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1467 vec_dststt (signed short *a1
, int a2
, const char a3
)
1469 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1473 vec_dststt (unsigned int *a1
, int a2
, const char a3
)
1475 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1479 vec_dststt (signed int *a1
, int a2
, const char a3
)
1481 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1485 vec_dststt (unsigned long *a1
, int a2
, const char a3
)
1487 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1491 vec_dststt (signed long *a1
, int a2
, const char a3
)
1493 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1497 vec_dststt (float *a1
, int a2
, const char a3
)
1499 __builtin_altivec_dststt ((void *) a1
, a2
, a3
);
1505 vec_dstt (vector
unsigned char *a1
, int a2
, const char a3
)
1507 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1511 vec_dstt (vector
signed char *a1
, int a2
, const char a3
)
1513 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1517 vec_dstt (vector
unsigned short *a1
, int a2
, const char a3
)
1519 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1523 vec_dstt (vector
signed short *a1
, int a2
, const char a3
)
1525 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1529 vec_dstt (vector
unsigned int *a1
, int a2
, const char a3
)
1531 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1535 vec_dstt (vector
signed int *a1
, int a2
, const char a3
)
1537 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1541 vec_dstt (vector
float *a1
, int a2
, const char a3
)
1543 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1547 vec_dstt (unsigned char *a1
, int a2
, const char a3
)
1549 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1553 vec_dstt (signed char *a1
, int a2
, const char a3
)
1555 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1559 vec_dstt (unsigned short *a1
, int a2
, const char a3
)
1561 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1565 vec_dstt (signed short *a1
, int a2
, const char a3
)
1567 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1571 vec_dstt (unsigned int *a1
, int a2
, const char a3
)
1573 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1577 vec_dstt (signed int *a1
, int a2
, const char a3
)
1579 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1583 vec_dstt (unsigned long *a1
, int a2
, const char a3
)
1585 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1589 vec_dstt (signed long *a1
, int a2
, const char a3
)
1591 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1595 vec_dstt (float *a1
, int a2
, const char a3
)
1597 __builtin_altivec_dstt ((void *) a1
, a2
, a3
);
1603 vec_expte (vector
float a1
)
1605 return (vector
float) __builtin_altivec_vexptefp ((vector
float) a1
);
1611 vec_floor (vector
float a1
)
1613 return (vector
float) __builtin_altivec_vrfim ((vector
float) a1
);
1619 vec_ld (int a1
, vector
float *a2
)
1621 return (vector
float) __builtin_altivec_lvx (a1
, (void *) a2
);
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
);
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
);
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
);
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
);
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
);
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
);
1833 vec_ldl (int a1
, vector
float *a2
)
1835 return (vector
float) __builtin_altivec_lvxl (a1
, (void *) a2
);
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
);
1931 vec_loge (vector
float a1
)
1933 return (vector
float) __builtin_altivec_vlogefp ((vector
float) a1
);
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
);
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
);
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
);
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
);
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
);
2140 vec_max (vector
float a1
, vector
float a2
)
2142 return (vector
float) __builtin_altivec_vmaxfp ((vector
float) a1
, (vector
float) a2
);
2148 vec_vmaxfp (vector
float a1
, vector
float a2
)
2150 return (vector
float) __builtin_altivec_vmaxfp ((vector
float) a1
, (vector
float) a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
2423 inline vector
unsigned short
2426 return (vector
unsigned short) __builtin_altivec_mfvscr ();
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
);
2504 vec_min (vector
float a1
, vector
float a2
)
2506 return (vector
float) __builtin_altivec_vminfp ((vector
float) a1
, (vector
float) a2
);
2512 vec_vminfp (vector
float a1
, vector
float a2
)
2514 return (vector
float) __builtin_altivec_vminfp ((vector
float) a1
, (vector
float) a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
2726 vec_mtvscr (vector
signed int a1
)
2728 __builtin_altivec_mtvscr ((vector
signed int) a1
);
2732 vec_mtvscr (vector
unsigned int a1
)
2734 __builtin_altivec_mtvscr ((vector
signed int) a1
);
2738 vec_mtvscr (vector
signed short a1
)
2740 __builtin_altivec_mtvscr ((vector
signed int) a1
);
2744 vec_mtvscr (vector
unsigned short a1
)
2746 __builtin_altivec_mtvscr ((vector
signed int) a1
);
2750 vec_mtvscr (vector
signed char a1
)
2752 __builtin_altivec_mtvscr ((vector
signed int) a1
);
2756 vec_mtvscr (vector
unsigned char a1
)
2758 __builtin_altivec_mtvscr ((vector
signed int) a1
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
2923 vec_or (vector
float a1
, vector
float a2
)
2925 return (vector
float) __builtin_altivec_vor ((vector
signed int) a1
, (vector
signed int) a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
3221 vec_re (vector
float a1
)
3223 return (vector
float) __builtin_altivec_vrefp ((vector
float) a1
);
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
);
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
);
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
);
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
);
3309 vec_round (vector
float a1
)
3311 return (vector
float) __builtin_altivec_vrfin ((vector
float) a1
);
3317 vec_rsqrte (vector
float a1
)
3319 return (vector
float) __builtin_altivec_vrsqrtefp ((vector
float) a1
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
3822 inline vector
signed char
3823 vec_splat_s8 (const char a1
)
3825 return (vector
signed char) __builtin_altivec_vspltisb (a1
);
3830 inline vector
signed short
3831 vec_splat_s16 (const char a1
)
3833 return (vector
signed short) __builtin_altivec_vspltish (a1
);
3838 inline vector
signed int
3839 vec_splat_s32 (const char a1
)
3841 return (vector
signed int) __builtin_altivec_vspltisw (a1
);
3846 inline vector
unsigned char
3847 vec_splat_u8 (const char a1
)
3849 return (vector
unsigned char) __builtin_altivec_vspltisb (a1
);
3854 inline vector
unsigned short
3855 vec_splat_u16 (const char a1
)
3857 return (vector
unsigned short) __builtin_altivec_vspltish (a1
);
3862 inline vector
unsigned int
3863 vec_splat_u32 (const char a1
)
3865 return (vector
unsigned int) __builtin_altivec_vspltisw (a1
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
4227 vec_st (vector
float a1
, int a2
, void *a3
)
4229 __builtin_altivec_stvx ((vector
signed int) a1
, a2
, (void *) a3
);
4233 vec_st (vector
signed int a1
, int a2
, void *a3
)
4235 __builtin_altivec_stvx ((vector
signed int) a1
, a2
, (void *) a3
);
4239 vec_st (vector
unsigned int a1
, int a2
, void *a3
)
4241 __builtin_altivec_stvx ((vector
signed int) a1
, a2
, (void *) a3
);
4245 vec_st (vector
signed short a1
, int a2
, void *a3
)
4247 __builtin_altivec_stvx ((vector
signed int) a1
, a2
, (void *) a3
);
4251 vec_st (vector
unsigned short a1
, int a2
, void *a3
)
4253 __builtin_altivec_stvx ((vector
signed int) a1
, a2
, (void *) a3
);
4257 vec_st (vector
signed char a1
, int a2
, void *a3
)
4259 __builtin_altivec_stvx ((vector
signed int) a1
, a2
, (void *) a3
);
4263 vec_st (vector
unsigned char a1
, int a2
, void *a3
)
4265 __builtin_altivec_stvx ((vector
signed int) a1
, a2
, (void *) a3
);
4271 vec_ste (vector
signed char a1
, int a2
, void *a3
)
4273 __builtin_altivec_stvebx ((vector
signed char) a1
, a2
, (void *) a3
);
4277 vec_ste (vector
unsigned char a1
, int a2
, void *a3
)
4279 __builtin_altivec_stvebx ((vector
signed char) a1
, a2
, (void *) a3
);
4283 vec_ste (vector
signed short a1
, int a2
, void *a3
)
4285 __builtin_altivec_stvehx ((vector
signed short) a1
, a2
, (void *) a3
);
4289 vec_ste (vector
unsigned short a1
, int a2
, void *a3
)
4291 __builtin_altivec_stvehx ((vector
signed short) a1
, a2
, (void *) a3
);
4295 vec_ste (vector
float a1
, int a2
, void *a3
)
4297 __builtin_altivec_stvewx ((vector
signed int) a1
, a2
, (void *) a3
);
4301 vec_ste (vector
signed int a1
, int a2
, void *a3
)
4303 __builtin_altivec_stvewx ((vector
signed int) a1
, a2
, (void *) a3
);
4307 vec_ste (vector
unsigned int a1
, int a2
, void *a3
)
4309 __builtin_altivec_stvewx ((vector
signed int) a1
, a2
, (void *) a3
);
4315 vec_stvewx (vector
float a1
, int a2
, void *a3
)
4317 __builtin_altivec_stvewx ((vector
signed int) a1
, a2
, (void *) a3
);
4321 vec_stvewx (vector
signed int a1
, int a2
, void *a3
)
4323 __builtin_altivec_stvewx ((vector
signed int) a1
, a2
, (void *) a3
);
4327 vec_stvewx (vector
unsigned int a1
, int a2
, void *a3
)
4329 __builtin_altivec_stvewx ((vector
signed int) a1
, a2
, (void *) a3
);
4335 vec_stvehx (vector
signed short a1
, int a2
, void *a3
)
4337 __builtin_altivec_stvehx ((vector
signed short) a1
, a2
, (void *) a3
);
4341 vec_stvehx (vector
unsigned short a1
, int a2
, void *a3
)
4343 __builtin_altivec_stvehx ((vector
signed short) a1
, a2
, (void *) a3
);
4349 vec_stvebx (vector
signed char a1
, int a2
, void *a3
)
4351 __builtin_altivec_stvebx ((vector
signed char) a1
, a2
, (void *) a3
);
4355 vec_stvebx (vector
unsigned char a1
, int a2
, void *a3
)
4357 __builtin_altivec_stvebx ((vector
signed char) a1
, a2
, (void *) a3
);
4363 vec_stl (vector
float a1
, int a2
, void *a3
)
4365 __builtin_altivec_stvxl ((vector
signed int) a1
, a2
, (void *) a3
);
4369 vec_stl (vector
signed int a1
, int a2
, void *a3
)
4371 __builtin_altivec_stvxl ((vector
signed int) a1
, a2
, (void *) a3
);
4375 vec_stl (vector
unsigned int a1
, int a2
, void *a3
)
4377 __builtin_altivec_stvxl ((vector
signed int) a1
, a2
, (void *) a3
);
4381 vec_stl (vector
signed short a1
, int a2
, void *a3
)
4383 __builtin_altivec_stvxl ((vector
signed int) a1
, a2
, (void *) a3
);
4387 vec_stl (vector
unsigned short a1
, int a2
, void *a3
)
4389 __builtin_altivec_stvxl ((vector
signed int) a1
, a2
, (void *) a3
);
4393 vec_stl (vector
signed char a1
, int a2
, void *a3
)
4395 __builtin_altivec_stvxl ((vector
signed int) a1
, a2
, (void *) a3
);
4399 vec_stl (vector
unsigned char a1
, int a2
, void *a3
)
4401 __builtin_altivec_stvxl ((vector
signed int) a1
, a2
, (void *) a3
);
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
);
4479 vec_sub (vector
float a1
, vector
float a2
)
4481 return (vector
float) __builtin_altivec_vsubfp ((vector
float) a1
, (vector
float) a2
);
4487 vec_vsubfp (vector
float a1
, vector
float a2
)
4489 return (vector
float) __builtin_altivec_vsubfp ((vector
float) a1
, (vector
float) a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
4813 vec_trunc (vector
float a1
)
4815 return (vector
float) __builtin_altivec_vrfiz ((vector
float) a1
);
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
);
4840 inline vector
signed int
4841 vec_vupkhsh (vector
signed short a1
)
4843 return (vector
signed int) __builtin_altivec_vupkhsh ((vector
signed short) a1
);
4848 inline vector
unsigned int
4849 vec_vupkhpx (vector
unsigned short a1
)
4851 return (vector
unsigned int) __builtin_altivec_vupkhpx ((vector
signed short) a1
);
4856 inline vector
signed short
4857 vec_vupkhsb (vector
signed char a1
)
4859 return (vector
signed short) __builtin_altivec_vupkhsb ((vector
signed char) a1
);
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
);
4884 inline vector
unsigned int
4885 vec_vupklpx (vector
unsigned short a1
)
4887 return (vector
unsigned int) __builtin_altivec_vupklpx ((vector
signed short) a1
);
4892 inline vector
signed int
4893 vec_vupklsh (vector
signed short a1
)
4895 return (vector
signed int) __builtin_altivec_vupklsh ((vector
signed short) a1
);
4900 inline vector
signed short
4901 vec_vupklsb (vector
signed char a1
)
4903 return (vector
signed short) __builtin_altivec_vupklsb ((vector
signed char) a1
);
4909 vec_xor (vector
float a1
, vector
float a2
)
4911 return (vector
float) __builtin_altivec_vxor ((vector
signed int) a1
, (vector
signed int) a2
);
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
);
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
);
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
);
5007 vec_all_eq (vector
signed char a1
, vector
signed char a2
)
5009 return __builtin_altivec_vcmpequb_p (__CR6_LT
, a1
, a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5073 vec_all_eq (vector
float a1
, vector
float a2
)
5075 return __builtin_altivec_vcmpeqfp_p (__CR6_LT
, a1
, a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5153 vec_all_ge (vector
float a1
, vector
float a2
)
5155 return __builtin_altivec_vcmpgefp_p (__CR6_LT
, a1
, a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5233 vec_all_gt (vector
float a1
, vector
float a2
)
5235 return __builtin_altivec_vcmpgtfp_p (__CR6_LT
, a1
, a2
);
5241 vec_all_in (vector
float a1
, vector
float a2
)
5243 return __builtin_altivec_vcmpbfp_p (__CR6_EQ
, a1
, a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5321 vec_all_le (vector
float a1
, vector
float a2
)
5323 return __builtin_altivec_vcmpgefp_p (__CR6_LT
, a2
, a1
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5401 vec_all_lt (vector
float a1
, vector
float a2
)
5403 return __builtin_altivec_vcmpgtfp_p (__CR6_LT
, a2
, a1
);
5409 vec_all_nan (vector
float a1
)
5411 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ
, a1
, a1
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5489 vec_all_ne (vector
float a1
, vector
float a2
)
5491 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ
, a1
, a2
);
5497 vec_all_nge (vector
float a1
, vector
float a2
)
5499 return __builtin_altivec_vcmpgefp_p (__CR6_EQ
, a1
, a2
);
5505 vec_all_ngt (vector
float a1
, vector
float a2
)
5507 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ
, a1
, a2
);
5513 vec_all_nle (vector
float a1
, vector
float a2
)
5515 return __builtin_altivec_vcmpgefp_p (__CR6_EQ
, a2
, a1
);
5521 vec_all_nlt (vector
float a1
, vector
float a2
)
5523 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ
, a2
, a1
);
5526 /* vec_all_numeric */
5529 vec_all_numeric (vector
float a1
)
5531 return __builtin_altivec_vcmpeqfp_p (__CR6_LT
, a1
, a1
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5609 vec_any_eq (vector
float a1
, vector
float a2
)
5611 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV
, a1
, a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5689 vec_any_ge (vector
float a1
, vector
float a2
)
5691 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV
, a1
, a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5769 vec_any_gt (vector
float a1
, vector
float a2
)
5771 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV
, a1
, a2
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5849 vec_any_le (vector
float a1
, vector
float a2
)
5851 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV
, a2
, a1
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
5929 vec_any_lt (vector
float a1
, vector
float a2
)
5931 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV
, a2
, a1
);
5937 vec_any_nan (vector
float a1
)
5939 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV
, a1
, a1
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
6017 vec_any_ne (vector
float a1
, vector
float a2
)
6019 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV
, a1
, a2
);
6025 vec_any_nge (vector
float a1
, vector
float a2
)
6027 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV
, a1
, a2
);
6033 vec_any_ngt (vector
float a1
, vector
float a2
)
6035 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV
, a1
, a2
);
6041 vec_any_nle (vector
float a1
, vector
float a2
)
6043 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV
, a2
, a1
);
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 */
6057 vec_any_numeric (vector
float a1
)
6059 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV
, a1
, a1
);
6065 vec_any_out (vector
float a1
, vector
float a2
)
6067 return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV
, a1
, a2
);
6072 template<typename _Tp
>
6073 struct __vec_step_help
6075 // All proper vector types will specialize _S_elem.
6079 struct __vec_step_help
<vector
signed short>
6081 static const int _S_elem
= 8;
6085 struct __vec_step_help
<vector
unsigned short>
6087 static const int _S_elem
= 8;
6091 struct __vec_step_help
<vector
signed int>
6093 static const int _S_elem
= 4;
6097 struct __vec_step_help
<vector
unsigned int>
6099 static const int _S_elem
= 4;
6103 struct __vec_step_help
<vector
unsigned char>
6105 static const int _S_elem
= 16;
6109 struct __vec_step_help
<vector
signed char>
6111 static const int _S_elem
= 16;
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
6126 /* "... and so I think no man in a century will suffer as greatly as
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 ())))))))))))))))))))))))
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 */