xref: /openbsd-src/gnu/usr.bin/gcc/gcc/config/rs6000/altivec.h (revision 4e43c760ad4cd5f644ec700462679d05749498d8)
1 /* PowerPC AltiVec include file.
2    Copyright (C) 2002 Free Software Foundation, Inc.
3    Contributed by Aldy Hernandez (aldyh@redhat.com).
4 
5 This file is part of GNU CC.
6 
7 GNU CC is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
11 
12 GNU CC is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with GNU CC; see the file COPYING.  If not, write to
19 the Free Software Foundation, 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA.  */
21 
22 /* As a special exception, if you include this header file into source
23    files compiled by GCC, this header file does not by itself cause
24    the resulting executable to be covered by the GNU General Public
25    License.  This exception does not however invalidate any other
26    reasons why the executable file might be covered by the GNU General
27    Public License.  */
28 
29 /* Implemented to conform to the specification included in the AltiVec
30    Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0).  */
31 
32 #ifndef _ALTIVEC_H
33 #define _ALTIVEC_H 1
34 
35 /* Required by Motorola specs.  */
36 #define __VEC__ 10206
37 
38 #ifndef __ALTIVEC__
39 #define __ALTIVEC__ 1
40 #endif
41 
42 #define __vector __attribute__((vector_size(16)))
43 
44 /* You are allowed to undef this for C++ compatability.  */
45 #define vector __vector
46 
47 #define bool signed
48 #define pixel unsigned short
49 #define __pixel unsigned short
50 
51 /* Dummy prototype.  */
52 extern int __altivec_link_error_invalid_argument ();
53 
54 /* Helper macros.  */
55 
56 #define __CR6_EQ		0
57 #define __CR6_EQ_REV		1
58 #define __CR6_LT		2
59 #define __CR6_LT_REV		3
60 
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)))
64 
65 #define __un_args_eq(xtype, x)						\
66 	__builtin_types_compatible_p (xtype, typeof (x))
67 
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)))
72 
73 #define __ch(x, y, z)	__builtin_choose_expr (x, y, z)
74 
75 /* These are easy... Same exact arguments.  */
76 
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
118 
119 #ifdef __cplusplus
120 
121 /* Prototypes for builtins that take literals and must always be
122    inlined.  */
123 inline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline));
124 inline vector float vec_ctf (vector signed int, const char) __attribute__ ((always_inline));
125 inline vector float vec_vcfsx (vector signed int a1, const char a2) __attribute__ ((always_inline));
126 inline vector float vec_vcfux (vector unsigned int a1, const char a2) __attribute__ ((always_inline));
127 inline vector signed int vec_cts (vector float, const char) __attribute__ ((always_inline));
128 inline vector unsigned int vec_ctu (vector float, const char) __attribute__ ((always_inline));
129 inline void vec_dss (const char) __attribute__ ((always_inline));
130 
131 inline void vec_dst (vector unsigned char *, int, const char) __attribute__ ((always_inline));
132 inline void vec_dst (vector signed char *, int, const char) __attribute__ ((always_inline));
133 inline void vec_dst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
134 inline void vec_dst (vector signed short *, int, const char) __attribute__ ((always_inline));
135 inline void vec_dst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
136 inline void vec_dst (vector signed int *, int, const char) __attribute__ ((always_inline));
137 inline void vec_dst (vector float *, int, const char) __attribute__ ((always_inline));
138 inline void vec_dst (unsigned char *, int, const char) __attribute__ ((always_inline));
139 inline void vec_dst (signed char *, int, const char) __attribute__ ((always_inline));
140 inline void vec_dst (unsigned short *, int, const char) __attribute__ ((always_inline));
141 inline void vec_dst (signed short *, int, const char) __attribute__ ((always_inline));
142 inline void vec_dst (unsigned int *, int, const char) __attribute__ ((always_inline));
143 inline void vec_dst (signed int *, int, const char) __attribute__ ((always_inline));
144 inline void vec_dst (unsigned long *, int, const char) __attribute__ ((always_inline));
145 inline void vec_dst (signed long *, int, const char) __attribute__ ((always_inline));
146 inline void vec_dst (float *, int, const char) __attribute__ ((always_inline));
147 
148 inline void vec_dstst (vector unsigned char *, int, const char) __attribute__ ((always_inline));
149 inline void vec_dstst (vector signed char *, int, const char) __attribute__ ((always_inline));
150 inline void vec_dstst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
151 inline void vec_dstst (vector signed short *, int, const char) __attribute__ ((always_inline));
152 inline void vec_dstst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
153 inline void vec_dstst (vector signed int *, int, const char) __attribute__ ((always_inline));
154 inline void vec_dstst (vector float *, int, const char) __attribute__ ((always_inline));
155 inline void vec_dstst (unsigned char *, int, const char) __attribute__ ((always_inline));
156 inline void vec_dstst (signed char *, int, const char) __attribute__ ((always_inline));
157 inline void vec_dstst (unsigned short *, int, const char) __attribute__ ((always_inline));
158 inline void vec_dstst (signed short *, int, const char) __attribute__ ((always_inline));
159 inline void vec_dstst (unsigned int *, int, const char) __attribute__ ((always_inline));
160 inline void vec_dstst (signed int *, int, const char) __attribute__ ((always_inline));
161 inline void vec_dstst (unsigned long *, int, const char) __attribute__ ((always_inline));
162 inline void vec_dstst (signed long *, int, const char) __attribute__ ((always_inline));
163 inline void vec_dstst (float *, int, const char) __attribute__ ((always_inline));
164 
165 inline void vec_dststt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
166 inline void vec_dststt (vector signed char *, int, const char) __attribute__ ((always_inline));
167 inline void vec_dststt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
168 inline void vec_dststt (vector signed short *, int, const char) __attribute__ ((always_inline));
169 inline void vec_dststt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
170 inline void vec_dststt (vector signed int *, int, const char) __attribute__ ((always_inline));
171 inline void vec_dststt (vector float *, int, const char) __attribute__ ((always_inline));
172 inline void vec_dststt (unsigned char *, int, const char) __attribute__ ((always_inline));
173 inline void vec_dststt (signed char *, int, const char) __attribute__ ((always_inline));
174 inline void vec_dststt (unsigned short *, int, const char) __attribute__ ((always_inline));
175 inline void vec_dststt (signed short *, int, const char) __attribute__ ((always_inline));
176 inline void vec_dststt (unsigned int *, int, const char) __attribute__ ((always_inline));
177 inline void vec_dststt (signed int *, int, const char) __attribute__ ((always_inline));
178 inline void vec_dststt (unsigned long *, int, const char) __attribute__ ((always_inline));
179 inline void vec_dststt (signed long *, int, const char) __attribute__ ((always_inline));
180 inline void vec_dststt (float *, int, const char) __attribute__ ((always_inline));
181 
182 inline void vec_dstt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
183 inline void vec_dstt (vector signed char *, int, const char) __attribute__ ((always_inline));
184 inline void vec_dstt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
185 inline void vec_dstt (vector signed short *, int, const char) __attribute__ ((always_inline));
186 inline void vec_dstt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
187 inline void vec_dstt (vector signed int *, int, const char) __attribute__ ((always_inline));
188 inline void vec_dstt (vector float *, int, const char) __attribute__ ((always_inline));
189 inline void vec_dstt (unsigned char *, int, const char) __attribute__ ((always_inline));
190 inline void vec_dstt (signed char *, int, const char) __attribute__ ((always_inline));
191 inline void vec_dstt (unsigned short *, int, const char) __attribute__ ((always_inline));
192 inline void vec_dstt (signed short *, int, const char) __attribute__ ((always_inline));
193 inline void vec_dstt (unsigned int *, int, const char) __attribute__ ((always_inline));
194 inline void vec_dstt (signed int *, int, const char) __attribute__ ((always_inline));
195 inline void vec_dstt (unsigned long *, int, const char) __attribute__ ((always_inline));
196 inline void vec_dstt (signed long *, int, const char) __attribute__ ((always_inline));
197 inline void vec_dstt (float *, int, const char) __attribute__ ((always_inline));
198 
199 inline vector float vec_sld (vector float, vector float, const char) __attribute__ ((always_inline));
200 inline vector signed int vec_sld (vector signed int, vector signed int, const char) __attribute__ ((always_inline));
201 inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const char) __attribute__ ((always_inline));
202 inline vector signed short vec_sld (vector signed short, vector signed short, const char) __attribute__ ((always_inline));
203 inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const char) __attribute__ ((always_inline));
204 inline vector signed char vec_sld (vector signed char, vector signed char, const char) __attribute__ ((always_inline));
205 inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const char) __attribute__ ((always_inline));
206 inline vector signed char vec_splat (vector signed char, const char) __attribute__ ((always_inline));
207 inline vector unsigned char vec_splat (vector unsigned char, const char) __attribute__ ((always_inline));
208 inline vector signed short vec_splat (vector signed short, const char) __attribute__ ((always_inline));
209 inline vector unsigned short vec_splat (vector unsigned short, const char) __attribute__ ((always_inline));
210 inline vector float vec_splat (vector float, const char) __attribute__ ((always_inline));
211 inline vector signed int vec_splat (vector signed int, const char) __attribute__ ((always_inline));
212 inline vector unsigned int vec_splat (vector unsigned int, const char) __attribute__ ((always_inline));
213 inline vector signed char vec_splat_s8 (const char) __attribute__ ((always_inline));
214 inline vector signed short vec_splat_s16 (const char) __attribute__ ((always_inline));
215 inline vector signed int vec_splat_s32 (const char) __attribute__ ((always_inline));
216 inline vector unsigned char vec_splat_u8 (const char) __attribute__ ((always_inline));
217 inline vector unsigned short vec_splat_u16 (const char) __attribute__ ((always_inline));
218 inline vector unsigned int vec_splat_u32 (const char) __attribute__ ((always_inline));
219 inline vector float vec_vspltw (vector float a1, const char a2) __attribute__ ((always_inline));
220 inline vector signed int vec_vspltw (vector signed int a1, const char a2) __attribute__ ((always_inline));
221 inline vector unsigned int vec_vspltw (vector unsigned int a1, const char a2) __attribute__ ((always_inline));
222 inline vector signed short vec_vsplth (vector signed short a1, const char a2) __attribute__ ((always_inline));
223 inline vector unsigned short vec_vsplth (vector unsigned short a1, const char a2) __attribute__ ((always_inline));
224 inline vector signed char vec_vspltb (vector signed char a1, const char a2) __attribute__ ((always_inline));
225 inline vector unsigned char vec_vspltb (vector unsigned char a1, const char a2) __attribute__ ((always_inline));
226 
227 /* vec_abs */
228 
229 inline vector signed char
vec_abs(vector signed char a1)230 vec_abs (vector signed char a1)
231 {
232   return __builtin_altivec_abs_v16qi (a1);
233 }
234 
235 inline vector signed short
vec_abs(vector signed short a1)236 vec_abs (vector signed short a1)
237 {
238   return __builtin_altivec_abs_v8hi (a1);
239 }
240 
241 inline vector signed int
vec_abs(vector signed int a1)242 vec_abs (vector signed int a1)
243 {
244   return __builtin_altivec_abs_v4si (a1);
245 }
246 
247 inline vector float
vec_abs(vector float a1)248 vec_abs (vector float a1)
249 {
250   return __builtin_altivec_abs_v4sf (a1);
251 }
252 
253 /* vec_abss */
254 
255 inline vector signed char
vec_abss(vector signed char a1)256 vec_abss (vector signed char a1)
257 {
258   return __builtin_altivec_abss_v16qi (a1);
259 }
260 
261 inline vector signed short
vec_abss(vector signed short a1)262 vec_abss (vector signed short a1)
263 {
264   return __builtin_altivec_abss_v8hi (a1);
265 }
266 
267 inline vector signed int
vec_abss(vector signed int a1)268 vec_abss (vector signed int a1)
269 {
270   return __builtin_altivec_abss_v4si (a1);
271 }
272 
273 /* vec_add */
274 
275 inline vector signed char
vec_add(vector signed char a1,vector signed char a2)276 vec_add (vector signed char a1, vector signed char a2)
277 {
278   return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
279 }
280 
281 inline vector unsigned char
vec_add(vector signed char a1,vector unsigned char a2)282 vec_add (vector signed char a1, vector unsigned char a2)
283 {
284   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
285 }
286 
287 inline vector unsigned char
vec_add(vector unsigned char a1,vector signed char a2)288 vec_add (vector unsigned char a1, vector signed char a2)
289 {
290   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
291 }
292 
293 inline vector unsigned char
vec_add(vector unsigned char a1,vector unsigned char a2)294 vec_add (vector unsigned char a1, vector unsigned char a2)
295 {
296   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
297 }
298 
299 inline vector signed short
vec_add(vector signed short a1,vector signed short a2)300 vec_add (vector signed short a1, vector signed short a2)
301 {
302   return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
303 }
304 
305 inline vector unsigned short
vec_add(vector signed short a1,vector unsigned short a2)306 vec_add (vector signed short a1, vector unsigned short a2)
307 {
308   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
309 }
310 
311 inline vector unsigned short
vec_add(vector unsigned short a1,vector signed short a2)312 vec_add (vector unsigned short a1, vector signed short a2)
313 {
314   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
315 }
316 
317 inline vector unsigned short
vec_add(vector unsigned short a1,vector unsigned short a2)318 vec_add (vector unsigned short a1, vector unsigned short a2)
319 {
320   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
321 }
322 
323 inline vector signed int
vec_add(vector signed int a1,vector signed int a2)324 vec_add (vector signed int a1, vector signed int a2)
325 {
326   return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
327 }
328 
329 inline vector unsigned int
vec_add(vector signed int a1,vector unsigned int a2)330 vec_add (vector signed int a1, vector unsigned int a2)
331 {
332   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
333 }
334 
335 inline vector unsigned int
vec_add(vector unsigned int a1,vector signed int a2)336 vec_add (vector unsigned int a1, vector signed int a2)
337 {
338   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
339 }
340 
341 inline vector unsigned int
vec_add(vector unsigned int a1,vector unsigned int a2)342 vec_add (vector unsigned int a1, vector unsigned int a2)
343 {
344   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
345 }
346 
347 inline vector float
vec_add(vector float a1,vector float a2)348 vec_add (vector float a1, vector float a2)
349 {
350   return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
351 }
352 
353 /* vec_vaddfp */
354 
355 inline vector float
vec_vaddfp(vector float a1,vector float a2)356 vec_vaddfp (vector float a1, vector float a2)
357 {
358   return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
359 }
360 
361 /* vec_vadduwm */
362 
363 inline vector signed int
vec_vadduwm(vector signed int a1,vector signed int a2)364 vec_vadduwm (vector signed int a1, vector signed int a2)
365 {
366   return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
367 }
368 
369 inline vector unsigned int
vec_vadduwm(vector signed int a1,vector unsigned int a2)370 vec_vadduwm (vector signed int a1, vector unsigned int a2)
371 {
372   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
373 }
374 
375 inline vector unsigned int
vec_vadduwm(vector unsigned int a1,vector signed int a2)376 vec_vadduwm (vector unsigned int a1, vector signed int a2)
377 {
378   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
379 }
380 
381 inline vector unsigned int
vec_vadduwm(vector unsigned int a1,vector unsigned int a2)382 vec_vadduwm (vector unsigned int a1, vector unsigned int a2)
383 {
384   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
385 }
386 
387 /* vec_vadduhm */
388 
389 inline vector signed short
vec_vadduhm(vector signed short a1,vector signed short a2)390 vec_vadduhm (vector signed short a1, vector signed short a2)
391 {
392   return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
393 }
394 
395 inline vector unsigned short
vec_vadduhm(vector signed short a1,vector unsigned short a2)396 vec_vadduhm (vector signed short a1, vector unsigned short a2)
397 {
398   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
399 }
400 
401 inline vector unsigned short
vec_vadduhm(vector unsigned short a1,vector signed short a2)402 vec_vadduhm (vector unsigned short a1, vector signed short a2)
403 {
404   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
405 }
406 
407 inline vector unsigned short
vec_vadduhm(vector unsigned short a1,vector unsigned short a2)408 vec_vadduhm (vector unsigned short a1, vector unsigned short a2)
409 {
410   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
411 }
412 
413 /* vec_vaddubm */
414 
415 inline vector signed char
vec_vaddubm(vector signed char a1,vector signed char a2)416 vec_vaddubm (vector signed char a1, vector signed char a2)
417 {
418   return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
419 }
420 
421 inline vector unsigned char
vec_vaddubm(vector signed char a1,vector unsigned char a2)422 vec_vaddubm (vector signed char a1, vector unsigned char a2)
423 {
424   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
425 }
426 
427 inline vector unsigned char
vec_vaddubm(vector unsigned char a1,vector signed char a2)428 vec_vaddubm (vector unsigned char a1, vector signed char a2)
429 {
430   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
431 }
432 
433 inline vector unsigned char
vec_vaddubm(vector unsigned char a1,vector unsigned char a2)434 vec_vaddubm (vector unsigned char a1, vector unsigned char a2)
435 {
436   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
437 }
438 
439 /* vec_addc */
440 
441 inline vector unsigned int
vec_addc(vector unsigned int a1,vector unsigned int a2)442 vec_addc (vector unsigned int a1, vector unsigned int a2)
443 {
444   return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2);
445 }
446 
447 /* vec_adds */
448 
449 inline vector unsigned char
vec_adds(vector signed char a1,vector unsigned char a2)450 vec_adds (vector signed char a1, vector unsigned char a2)
451 {
452   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
453 }
454 
455 inline vector unsigned char
vec_adds(vector unsigned char a1,vector signed char a2)456 vec_adds (vector unsigned char a1, vector signed char a2)
457 {
458   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
459 }
460 
461 inline vector unsigned char
vec_adds(vector unsigned char a1,vector unsigned char a2)462 vec_adds (vector unsigned char a1, vector unsigned char a2)
463 {
464   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
465 }
466 
467 inline vector signed char
vec_adds(vector signed char a1,vector signed char a2)468 vec_adds (vector signed char a1, vector signed char a2)
469 {
470   return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
471 }
472 
473 inline vector unsigned short
vec_adds(vector signed short a1,vector unsigned short a2)474 vec_adds (vector signed short a1, vector unsigned short a2)
475 {
476   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
477 }
478 
479 inline vector unsigned short
vec_adds(vector unsigned short a1,vector signed short a2)480 vec_adds (vector unsigned short a1, vector signed short a2)
481 {
482   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
483 }
484 
485 inline vector unsigned short
vec_adds(vector unsigned short a1,vector unsigned short a2)486 vec_adds (vector unsigned short a1, vector unsigned short a2)
487 {
488   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
489 }
490 
491 inline vector signed short
vec_adds(vector signed short a1,vector signed short a2)492 vec_adds (vector signed short a1, vector signed short a2)
493 {
494   return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
495 }
496 
497 inline vector unsigned int
vec_adds(vector signed int a1,vector unsigned int a2)498 vec_adds (vector signed int a1, vector unsigned int a2)
499 {
500   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
501 }
502 
503 inline vector unsigned int
vec_adds(vector unsigned int a1,vector signed int a2)504 vec_adds (vector unsigned int a1, vector signed int a2)
505 {
506   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
507 }
508 
509 inline vector unsigned int
vec_adds(vector unsigned int a1,vector unsigned int a2)510 vec_adds (vector unsigned int a1, vector unsigned int a2)
511 {
512   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
513 }
514 
515 inline vector signed int
vec_adds(vector signed int a1,vector signed int a2)516 vec_adds (vector signed int a1, vector signed int a2)
517 {
518   return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
519 }
520 
521 /* vec_vaddsws */
522 
523 inline vector signed int
vec_vaddsws(vector signed int a1,vector signed int a2)524 vec_vaddsws (vector signed int a1, vector signed int a2)
525 {
526   return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
527 }
528 
529 /* vec_vadduws */
530 
531 inline vector unsigned int
vec_vadduws(vector signed int a1,vector unsigned int a2)532 vec_vadduws (vector signed int a1, vector unsigned int a2)
533 {
534   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
535 }
536 
537 inline vector unsigned int
vec_vadduws(vector unsigned int a1,vector signed int a2)538 vec_vadduws (vector unsigned int a1, vector signed int a2)
539 {
540   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
541 }
542 
543 inline vector unsigned int
vec_vadduws(vector unsigned int a1,vector unsigned int a2)544 vec_vadduws (vector unsigned int a1, vector unsigned int a2)
545 {
546   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
547 }
548 
549 /* vec_vaddshs */
550 inline vector signed short
vec_vaddshs(vector signed short a1,vector signed short a2)551 vec_vaddshs (vector signed short a1, vector signed short a2)
552 {
553   return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
554 }
555 
556 /* vec_vadduhs */
557 
558 inline vector unsigned short
vec_vadduhs(vector signed short a1,vector unsigned short a2)559 vec_vadduhs (vector signed short a1, vector unsigned short a2)
560 {
561   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
562 }
563 
564 inline vector unsigned short
vec_vadduhs(vector unsigned short a1,vector signed short a2)565 vec_vadduhs (vector unsigned short a1, vector signed short a2)
566 {
567   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
568 }
569 
570 inline vector unsigned short
vec_vadduhs(vector unsigned short a1,vector unsigned short a2)571 vec_vadduhs (vector unsigned short a1, vector unsigned short a2)
572 {
573   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
574 }
575 
576 /* vec_vaddsbs */
577 
578 inline vector signed char
vec_vaddsbs(vector signed char a1,vector signed char a2)579 vec_vaddsbs (vector signed char a1, vector signed char a2)
580 {
581   return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
582 }
583 
584 /* vec_vaddubs */
585 
586 inline vector unsigned char
vec_vaddubs(vector signed char a1,vector unsigned char a2)587 vec_vaddubs (vector signed char a1, vector unsigned char a2)
588 {
589   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
590 }
591 
592 inline vector unsigned char
vec_vaddubs(vector unsigned char a1,vector signed char a2)593 vec_vaddubs (vector unsigned char a1, vector signed char a2)
594 {
595   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
596 }
597 
598 inline vector unsigned char
vec_vaddubs(vector unsigned char a1,vector unsigned char a2)599 vec_vaddubs (vector unsigned char a1, vector unsigned char a2)
600 {
601   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
602 }
603 
604 /* vec_and */
605 
606 inline vector float
vec_and(vector float a1,vector float a2)607 vec_and (vector float a1, vector float a2)
608 {
609   return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
610 }
611 
612 inline vector float
vec_and(vector float a1,vector signed int a2)613 vec_and (vector float a1, vector signed int a2)
614 {
615   return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
616 }
617 
618 inline vector float
vec_and(vector signed int a1,vector float a2)619 vec_and (vector signed int a1, vector float a2)
620 {
621   return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
622 }
623 
624 inline vector signed int
vec_and(vector signed int a1,vector signed int a2)625 vec_and (vector signed int a1, vector signed int a2)
626 {
627   return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
628 }
629 
630 inline vector unsigned int
vec_and(vector signed int a1,vector unsigned int a2)631 vec_and (vector signed int a1, vector unsigned int a2)
632 {
633   return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
634 }
635 
636 inline vector unsigned int
vec_and(vector unsigned int a1,vector signed int a2)637 vec_and (vector unsigned int a1, vector signed int a2)
638 {
639   return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
640 }
641 
642 inline vector unsigned int
vec_and(vector unsigned int a1,vector unsigned int a2)643 vec_and (vector unsigned int a1, vector unsigned int a2)
644 {
645   return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
646 }
647 
648 inline vector signed short
vec_and(vector signed short a1,vector signed short a2)649 vec_and (vector signed short a1, vector signed short a2)
650 {
651   return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
652 }
653 
654 inline vector unsigned short
vec_and(vector signed short a1,vector unsigned short a2)655 vec_and (vector signed short a1, vector unsigned short a2)
656 {
657   return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
658 }
659 
660 inline vector unsigned short
vec_and(vector unsigned short a1,vector signed short a2)661 vec_and (vector unsigned short a1, vector signed short a2)
662 {
663   return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
664 }
665 
666 inline vector unsigned short
vec_and(vector unsigned short a1,vector unsigned short a2)667 vec_and (vector unsigned short a1, vector unsigned short a2)
668 {
669   return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
670 }
671 
672 inline vector signed char
vec_and(vector signed char a1,vector signed char a2)673 vec_and (vector signed char a1, vector signed char a2)
674 {
675   return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
676 }
677 
678 inline vector unsigned char
vec_and(vector signed char a1,vector unsigned char a2)679 vec_and (vector signed char a1, vector unsigned char a2)
680 {
681   return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
682 }
683 
684 inline vector unsigned char
vec_and(vector unsigned char a1,vector signed char a2)685 vec_and (vector unsigned char a1, vector signed char a2)
686 {
687   return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
688 }
689 
690 inline vector unsigned char
vec_and(vector unsigned char a1,vector unsigned char a2)691 vec_and (vector unsigned char a1, vector unsigned char a2)
692 {
693   return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
694 }
695 
696 /* vec_andc */
697 
698 inline vector float
vec_andc(vector float a1,vector float a2)699 vec_andc (vector float a1, vector float a2)
700 {
701   return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
702 }
703 
704 inline vector float
vec_andc(vector float a1,vector signed int a2)705 vec_andc (vector float a1, vector signed int a2)
706 {
707   return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
708 }
709 
710 inline vector float
vec_andc(vector signed int a1,vector float a2)711 vec_andc (vector signed int a1, vector float a2)
712 {
713   return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
714 }
715 
716 inline vector signed int
vec_andc(vector signed int a1,vector signed int a2)717 vec_andc (vector signed int a1, vector signed int a2)
718 {
719   return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
720 }
721 
722 inline vector unsigned int
vec_andc(vector signed int a1,vector unsigned int a2)723 vec_andc (vector signed int a1, vector unsigned int a2)
724 {
725   return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
726 }
727 
728 inline vector unsigned int
vec_andc(vector unsigned int a1,vector signed int a2)729 vec_andc (vector unsigned int a1, vector signed int a2)
730 {
731   return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
732 }
733 
734 inline vector unsigned int
vec_andc(vector unsigned int a1,vector unsigned int a2)735 vec_andc (vector unsigned int a1, vector unsigned int a2)
736 {
737   return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
738 }
739 
740 inline vector signed short
vec_andc(vector signed short a1,vector signed short a2)741 vec_andc (vector signed short a1, vector signed short a2)
742 {
743   return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
744 }
745 
746 inline vector unsigned short
vec_andc(vector signed short a1,vector unsigned short a2)747 vec_andc (vector signed short a1, vector unsigned short a2)
748 {
749   return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
750 }
751 
752 inline vector unsigned short
vec_andc(vector unsigned short a1,vector signed short a2)753 vec_andc (vector unsigned short a1, vector signed short a2)
754 {
755   return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
756 }
757 
758 inline vector unsigned short
vec_andc(vector unsigned short a1,vector unsigned short a2)759 vec_andc (vector unsigned short a1, vector unsigned short a2)
760 {
761   return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
762 }
763 
764 inline vector signed char
vec_andc(vector signed char a1,vector signed char a2)765 vec_andc (vector signed char a1, vector signed char a2)
766 {
767   return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
768 }
769 
770 inline vector unsigned char
vec_andc(vector signed char a1,vector unsigned char a2)771 vec_andc (vector signed char a1, vector unsigned char a2)
772 {
773   return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
774 }
775 
776 inline vector unsigned char
vec_andc(vector unsigned char a1,vector signed char a2)777 vec_andc (vector unsigned char a1, vector signed char a2)
778 {
779   return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
780 }
781 
782 inline vector unsigned char
vec_andc(vector unsigned char a1,vector unsigned char a2)783 vec_andc (vector unsigned char a1, vector unsigned char a2)
784 {
785   return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
786 }
787 
788 /* vec_avg */
789 
790 inline vector unsigned char
vec_avg(vector unsigned char a1,vector unsigned char a2)791 vec_avg (vector unsigned char a1, vector unsigned char a2)
792 {
793   return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
794 }
795 
796 inline vector signed char
vec_avg(vector signed char a1,vector signed char a2)797 vec_avg (vector signed char a1, vector signed char a2)
798 {
799   return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
800 }
801 
802 inline vector unsigned short
vec_avg(vector unsigned short a1,vector unsigned short a2)803 vec_avg (vector unsigned short a1, vector unsigned short a2)
804 {
805   return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
806 }
807 
808 inline vector signed short
vec_avg(vector signed short a1,vector signed short a2)809 vec_avg (vector signed short a1, vector signed short a2)
810 {
811   return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
812 }
813 
814 inline vector unsigned int
vec_avg(vector unsigned int a1,vector unsigned int a2)815 vec_avg (vector unsigned int a1, vector unsigned int a2)
816 {
817   return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
818 }
819 
820 inline vector signed int
vec_avg(vector signed int a1,vector signed int a2)821 vec_avg (vector signed int a1, vector signed int a2)
822 {
823   return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
824 }
825 
826 /* vec_vavgsw */
827 
828 inline vector signed int
vec_vavgsw(vector signed int a1,vector signed int a2)829 vec_vavgsw (vector signed int a1, vector signed int a2)
830 {
831   return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
832 }
833 
834 /* vec_vavguw */
835 
836 inline vector unsigned int
vec_vavguw(vector unsigned int a1,vector unsigned int a2)837 vec_vavguw (vector unsigned int a1, vector unsigned int a2)
838 {
839   return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
840 }
841 
842 /* vec_vavgsh */
843 
844 inline vector signed short
vec_vavgsh(vector signed short a1,vector signed short a2)845 vec_vavgsh (vector signed short a1, vector signed short a2)
846 {
847   return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
848 }
849 
850 /* vec_vavguh */
851 
852 inline vector unsigned short
vec_vavguh(vector unsigned short a1,vector unsigned short a2)853 vec_vavguh (vector unsigned short a1, vector unsigned short a2)
854 {
855   return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
856 }
857 
858 /* vec_vavgsb */
859 
860 inline vector signed char
vec_vavgsb(vector signed char a1,vector signed char a2)861 vec_vavgsb (vector signed char a1, vector signed char a2)
862 {
863   return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
864 }
865 
866 /* vec_vavgub */
867 
868 inline vector unsigned char
vec_vavgub(vector unsigned char a1,vector unsigned char a2)869 vec_vavgub (vector unsigned char a1, vector unsigned char a2)
870 {
871   return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
872 }
873 
874 /* vec_ceil */
875 
876 inline vector float
vec_ceil(vector float a1)877 vec_ceil (vector float a1)
878 {
879   return (vector float) __builtin_altivec_vrfip ((vector float) a1);
880 }
881 
882 /* vec_cmpb */
883 
884 inline vector signed int
vec_cmpb(vector float a1,vector float a2)885 vec_cmpb (vector float a1, vector float a2)
886 {
887   return (vector signed int) __builtin_altivec_vcmpbfp ((vector float) a1, (vector float) a2);
888 }
889 
890 /* vec_cmpeq */
891 
892 inline vector signed char
vec_cmpeq(vector signed char a1,vector signed char a2)893 vec_cmpeq (vector signed char a1, vector signed char a2)
894 {
895   return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
896 }
897 
898 inline vector signed char
vec_cmpeq(vector unsigned char a1,vector unsigned char a2)899 vec_cmpeq (vector unsigned char a1, vector unsigned char a2)
900 {
901   return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
902 }
903 
904 inline vector signed short
vec_cmpeq(vector signed short a1,vector signed short a2)905 vec_cmpeq (vector signed short a1, vector signed short a2)
906 {
907   return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
908 }
909 
910 inline vector signed short
vec_cmpeq(vector unsigned short a1,vector unsigned short a2)911 vec_cmpeq (vector unsigned short a1, vector unsigned short a2)
912 {
913   return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
914 }
915 
916 inline vector signed int
vec_cmpeq(vector signed int a1,vector signed int a2)917 vec_cmpeq (vector signed int a1, vector signed int a2)
918 {
919   return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
920 }
921 
922 inline vector signed int
vec_cmpeq(vector unsigned int a1,vector unsigned int a2)923 vec_cmpeq (vector unsigned int a1, vector unsigned int a2)
924 {
925   return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
926 }
927 
928 inline vector signed int
vec_cmpeq(vector float a1,vector float a2)929 vec_cmpeq (vector float a1, vector float a2)
930 {
931   return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
932 }
933 
934 /* vec_vcmpeqfp */
935 
936 inline vector signed int
vec_vcmpeqfp(vector float a1,vector float a2)937 vec_vcmpeqfp (vector float a1, vector float a2)
938 {
939   return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
940 }
941 
942 /* vec_vcmpequw */
943 
944 inline vector signed int
vec_vcmpequw(vector signed int a1,vector signed int a2)945 vec_vcmpequw (vector signed int a1, vector signed int a2)
946 {
947   return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
948 }
949 
950 inline vector signed int
vec_vcmpequw(vector unsigned int a1,vector unsigned int a2)951 vec_vcmpequw (vector unsigned int a1, vector unsigned int a2)
952 {
953   return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
954 }
955 
956 /* vec_vcmpequh */
957 
958 inline vector signed short
vec_vcmpequh(vector signed short a1,vector signed short a2)959 vec_vcmpequh (vector signed short a1, vector signed short a2)
960 {
961   return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
962 }
963 
964 inline vector signed short
vec_vcmpequh(vector unsigned short a1,vector unsigned short a2)965 vec_vcmpequh (vector unsigned short a1, vector unsigned short a2)
966 {
967   return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
968 }
969 
970 /* vec_vcmpequb */
971 
972 inline vector signed char
vec_vcmpequb(vector signed char a1,vector signed char a2)973 vec_vcmpequb (vector signed char a1, vector signed char a2)
974 {
975   return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
976 }
977 
978 inline vector signed char
vec_vcmpequb(vector unsigned char a1,vector unsigned char a2)979 vec_vcmpequb (vector unsigned char a1, vector unsigned char a2)
980 {
981   return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
982 }
983 
984 /* vec_cmpge */
985 
986 inline vector signed int
vec_cmpge(vector float a1,vector float a2)987 vec_cmpge (vector float a1, vector float a2)
988 {
989   return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
990 }
991 
992 /* vec_cmpgt */
993 
994 inline vector signed char
vec_cmpgt(vector unsigned char a1,vector unsigned char a2)995 vec_cmpgt (vector unsigned char a1, vector unsigned char a2)
996 {
997   return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
998 }
999 
1000 inline vector signed char
vec_cmpgt(vector signed char a1,vector signed char a2)1001 vec_cmpgt (vector signed char a1, vector signed char a2)
1002 {
1003   return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
1004 }
1005 
1006 inline vector signed short
vec_cmpgt(vector unsigned short a1,vector unsigned short a2)1007 vec_cmpgt (vector unsigned short a1, vector unsigned short a2)
1008 {
1009   return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
1010 }
1011 
1012 inline vector signed short
vec_cmpgt(vector signed short a1,vector signed short a2)1013 vec_cmpgt (vector signed short a1, vector signed short a2)
1014 {
1015   return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
1016 }
1017 
1018 inline vector signed int
vec_cmpgt(vector unsigned int a1,vector unsigned int a2)1019 vec_cmpgt (vector unsigned int a1, vector unsigned int a2)
1020 {
1021   return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
1022 }
1023 
1024 inline vector signed int
vec_cmpgt(vector signed int a1,vector signed int a2)1025 vec_cmpgt (vector signed int a1, vector signed int a2)
1026 {
1027   return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
1028 }
1029 
1030 inline vector signed int
vec_cmpgt(vector float a1,vector float a2)1031 vec_cmpgt (vector float a1, vector float a2)
1032 {
1033   return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
1034 }
1035 
1036 /* vec_vcmpgtfp */
1037 
1038 inline vector signed int
vec_vcmpgtfp(vector float a1,vector float a2)1039 vec_vcmpgtfp (vector float a1, vector float a2)
1040 {
1041   return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
1042 }
1043 
1044 /* vec_vcmpgtsw */
1045 
1046 inline vector signed int
vec_vcmpgtsw(vector signed int a1,vector signed int a2)1047 vec_vcmpgtsw (vector signed int a1, vector signed int a2)
1048 {
1049   return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
1050 }
1051 
1052 /* vec_vcmpgtuw */
1053 
1054 inline vector signed int
vec_vcmpgtuw(vector unsigned int a1,vector unsigned int a2)1055 vec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2)
1056 {
1057   return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
1058 }
1059 
1060 /* vec_vcmpgtsh */
1061 
1062 inline vector signed short
vec_cmpgtsh(vector signed short a1,vector signed short a2)1063 vec_cmpgtsh (vector signed short a1, vector signed short a2)
1064 {
1065   return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
1066 }
1067 
1068 /* vec_vcmpgtuh */
1069 
1070 inline vector signed short
vec_vcmpgtuh(vector unsigned short a1,vector unsigned short a2)1071 vec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2)
1072 {
1073   return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
1074 }
1075 
1076 /* vec_vcmpgtsb */
1077 
1078 inline vector signed char
vec_vcmpgtsb(vector signed char a1,vector signed char a2)1079 vec_vcmpgtsb (vector signed char a1, vector signed char a2)
1080 {
1081   return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
1082 }
1083 
1084 /* vec_vcmpgtub */
1085 
1086 inline vector signed char
vec_vcmpgtub(vector unsigned char a1,vector unsigned char a2)1087 vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2)
1088 {
1089   return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
1090 }
1091 
1092 /* vec_cmple */
1093 
1094 inline vector signed int
vec_cmple(vector float a1,vector float a2)1095 vec_cmple (vector float a1, vector float a2)
1096 {
1097   return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a2, (vector float) a1);
1098 }
1099 
1100 /* vec_cmplt */
1101 
1102 inline vector signed char
vec_cmplt(vector unsigned char a1,vector unsigned char a2)1103 vec_cmplt (vector unsigned char a1, vector unsigned char a2)
1104 {
1105   return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a2, (vector signed char) a1);
1106 }
1107 
1108 inline vector signed char
vec_cmplt(vector signed char a1,vector signed char a2)1109 vec_cmplt (vector signed char a1, vector signed char a2)
1110 {
1111   return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a2, (vector signed char) a1);
1112 }
1113 
1114 inline vector signed short
vec_cmplt(vector unsigned short a1,vector unsigned short a2)1115 vec_cmplt (vector unsigned short a1, vector unsigned short a2)
1116 {
1117   return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a2, (vector signed short) a1);
1118 }
1119 
1120 inline vector signed short
vec_cmplt(vector signed short a1,vector signed short a2)1121 vec_cmplt (vector signed short a1, vector signed short a2)
1122 {
1123   return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a2, (vector signed short) a1);
1124 }
1125 
1126 inline vector signed int
vec_cmplt(vector unsigned int a1,vector unsigned int a2)1127 vec_cmplt (vector unsigned int a1, vector unsigned int a2)
1128 {
1129   return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a2, (vector signed int) a1);
1130 }
1131 
1132 inline vector signed int
vec_cmplt(vector signed int a1,vector signed int a2)1133 vec_cmplt (vector signed int a1, vector signed int a2)
1134 {
1135   return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a2, (vector signed int) a1);
1136 }
1137 
1138 inline vector signed int
vec_cmplt(vector float a1,vector float a2)1139 vec_cmplt (vector float a1, vector float a2)
1140 {
1141   return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a2, (vector float) a1);
1142 }
1143 
1144 /* vec_ctf */
1145 
1146 inline vector float
vec_ctf(vector unsigned int a1,const char a2)1147 vec_ctf (vector unsigned int a1, const char a2)
1148 {
1149   return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
1150 }
1151 
1152 inline vector float
vec_ctf(vector signed int a1,const char a2)1153 vec_ctf (vector signed int a1, const char a2)
1154 {
1155   return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
1156 }
1157 
1158 /* vec_vcfsx */
1159 
1160 inline vector float
vec_vcfsx(vector signed int a1,const char a2)1161 vec_vcfsx (vector signed int a1, const char a2)
1162 {
1163   return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
1164 }
1165 
1166 /* vec_vcfux */
1167 
1168 inline vector float
vec_vcfux(vector unsigned int a1,const char a2)1169 vec_vcfux (vector unsigned int a1, const char a2)
1170 {
1171   return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
1172 }
1173 
1174 /* vec_cts */
1175 
1176 inline vector signed int
vec_cts(vector float a1,const char a2)1177 vec_cts (vector float a1, const char a2)
1178 {
1179   return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2);
1180 }
1181 
1182 /* vec_ctu */
1183 
1184 inline vector unsigned int
vec_ctu(vector float a1,const char a2)1185 vec_ctu (vector float a1, const char a2)
1186 {
1187   return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2);
1188 }
1189 
1190 /* vec_dss */
1191 
1192 inline void
vec_dss(const char a1)1193 vec_dss (const char a1)
1194 {
1195   __builtin_altivec_dss (a1);
1196 }
1197 
1198 /* vec_dssall */
1199 
1200 inline void
vec_dssall(void)1201 vec_dssall (void)
1202 {
1203   __builtin_altivec_dssall ();
1204 }
1205 
1206 /* vec_dst */
1207 
1208 inline void
vec_dst(vector unsigned char * a1,int a2,const char a3)1209 vec_dst (vector unsigned char *a1, int a2, const char a3)
1210 {
1211   __builtin_altivec_dst ((void *) a1, a2, a3);
1212 }
1213 
1214 inline void
vec_dst(vector signed char * a1,int a2,const char a3)1215 vec_dst (vector signed char *a1, int a2, const char a3)
1216 {
1217   __builtin_altivec_dst ((void *) a1, a2, a3);
1218 }
1219 
1220 inline void
vec_dst(vector unsigned short * a1,int a2,const char a3)1221 vec_dst (vector unsigned short *a1, int a2, const char a3)
1222 {
1223   __builtin_altivec_dst ((void *) a1, a2, a3);
1224 }
1225 
1226 inline void
vec_dst(vector signed short * a1,int a2,const char a3)1227 vec_dst (vector signed short *a1, int a2, const char a3)
1228 {
1229   __builtin_altivec_dst ((void *) a1, a2, a3);
1230 }
1231 
1232 inline void
vec_dst(vector unsigned int * a1,int a2,const char a3)1233 vec_dst (vector unsigned int *a1, int a2, const char a3)
1234 {
1235   __builtin_altivec_dst ((void *) a1, a2, a3);
1236 }
1237 
1238 inline void
vec_dst(vector signed int * a1,int a2,const char a3)1239 vec_dst (vector signed int *a1, int a2, const char a3)
1240 {
1241   __builtin_altivec_dst ((void *) a1, a2, a3);
1242 }
1243 
1244 inline void
vec_dst(vector float * a1,int a2,const char a3)1245 vec_dst (vector float *a1, int a2, const char a3)
1246 {
1247   __builtin_altivec_dst ((void *) a1, a2, a3);
1248 }
1249 
1250 inline void
vec_dst(unsigned char * a1,int a2,const char a3)1251 vec_dst (unsigned char *a1, int a2, const char a3)
1252 {
1253   __builtin_altivec_dst ((void *) a1, a2, a3);
1254 }
1255 
1256 inline void
vec_dst(signed char * a1,int a2,const char a3)1257 vec_dst (signed char *a1, int a2, const char a3)
1258 {
1259   __builtin_altivec_dst ((void *) a1, a2, a3);
1260 }
1261 
1262 inline void
vec_dst(unsigned short * a1,int a2,const char a3)1263 vec_dst (unsigned short *a1, int a2, const char a3)
1264 {
1265   __builtin_altivec_dst ((void *) a1, a2, a3);
1266 }
1267 
1268 inline void
vec_dst(signed short * a1,int a2,const char a3)1269 vec_dst (signed short *a1, int a2, const char a3)
1270 {
1271   __builtin_altivec_dst ((void *) a1, a2, a3);
1272 }
1273 
1274 inline void
vec_dst(unsigned int * a1,int a2,const char a3)1275 vec_dst (unsigned int *a1, int a2, const char a3)
1276 {
1277   __builtin_altivec_dst ((void *) a1, a2, a3);
1278 }
1279 
1280 inline void
vec_dst(signed int * a1,int a2,const char a3)1281 vec_dst (signed int *a1, int a2, const char a3)
1282 {
1283   __builtin_altivec_dst ((void *) a1, a2, a3);
1284 }
1285 
1286 inline void
vec_dst(unsigned long * a1,int a2,const char a3)1287 vec_dst (unsigned long *a1, int a2, const char a3)
1288 {
1289   __builtin_altivec_dst ((void *) a1, a2, a3);
1290 }
1291 
1292 inline void
vec_dst(signed long * a1,int a2,const char a3)1293 vec_dst (signed long *a1, int a2, const char a3)
1294 {
1295   __builtin_altivec_dst ((void *) a1, a2, a3);
1296 }
1297 
1298 inline void
vec_dst(float * a1,int a2,const char a3)1299 vec_dst (float *a1, int a2, const char a3)
1300 {
1301   __builtin_altivec_dst ((void *) a1, a2, a3);
1302 }
1303 
1304 /* vec_dstst */
1305 
1306 inline void
vec_dstst(vector unsigned char * a1,int a2,const char a3)1307 vec_dstst (vector unsigned char *a1, int a2, const char a3)
1308 {
1309   __builtin_altivec_dstst ((void *) a1, a2, a3);
1310 }
1311 
1312 inline void
vec_dstst(vector signed char * a1,int a2,const char a3)1313 vec_dstst (vector signed char *a1, int a2, const char a3)
1314 {
1315   __builtin_altivec_dstst ((void *) a1, a2, a3);
1316 }
1317 
1318 inline void
vec_dstst(vector unsigned short * a1,int a2,const char a3)1319 vec_dstst (vector unsigned short *a1, int a2, const char a3)
1320 {
1321   __builtin_altivec_dstst ((void *) a1, a2, a3);
1322 }
1323 
1324 inline void
vec_dstst(vector signed short * a1,int a2,const char a3)1325 vec_dstst (vector signed short *a1, int a2, const char a3)
1326 {
1327   __builtin_altivec_dstst ((void *) a1, a2, a3);
1328 }
1329 
1330 inline void
vec_dstst(vector unsigned int * a1,int a2,const char a3)1331 vec_dstst (vector unsigned int *a1, int a2, const char a3)
1332 {
1333   __builtin_altivec_dstst ((void *) a1, a2, a3);
1334 }
1335 
1336 inline void
vec_dstst(vector signed int * a1,int a2,const char a3)1337 vec_dstst (vector signed int *a1, int a2, const char a3)
1338 {
1339   __builtin_altivec_dstst ((void *) a1, a2, a3);
1340 }
1341 
1342 inline void
vec_dstst(vector float * a1,int a2,const char a3)1343 vec_dstst (vector float *a1, int a2, const char a3)
1344 {
1345   __builtin_altivec_dstst ((void *) a1, a2, a3);
1346 }
1347 
1348 inline void
vec_dstst(unsigned char * a1,int a2,const char a3)1349 vec_dstst (unsigned char *a1, int a2, const char a3)
1350 {
1351   __builtin_altivec_dstst ((void *) a1, a2, a3);
1352 }
1353 
1354 inline void
vec_dstst(signed char * a1,int a2,const char a3)1355 vec_dstst (signed char *a1, int a2, const char a3)
1356 {
1357   __builtin_altivec_dstst ((void *) a1, a2, a3);
1358 }
1359 
1360 inline void
vec_dstst(unsigned short * a1,int a2,const char a3)1361 vec_dstst (unsigned short *a1, int a2, const char a3)
1362 {
1363   __builtin_altivec_dstst ((void *) a1, a2, a3);
1364 }
1365 
1366 inline void
vec_dstst(signed short * a1,int a2,const char a3)1367 vec_dstst (signed short *a1, int a2, const char a3)
1368 {
1369   __builtin_altivec_dstst ((void *) a1, a2, a3);
1370 }
1371 
1372 inline void
vec_dstst(unsigned int * a1,int a2,const char a3)1373 vec_dstst (unsigned int *a1, int a2, const char a3)
1374 {
1375   __builtin_altivec_dstst ((void *) a1, a2, a3);
1376 }
1377 
1378 inline void
vec_dstst(signed int * a1,int a2,const char a3)1379 vec_dstst (signed int *a1, int a2, const char a3)
1380 {
1381   __builtin_altivec_dstst ((void *) a1, a2, a3);
1382 }
1383 
1384 inline void
vec_dstst(unsigned long * a1,int a2,const char a3)1385 vec_dstst (unsigned long *a1, int a2, const char a3)
1386 {
1387   __builtin_altivec_dstst ((void *) a1, a2, a3);
1388 }
1389 
1390 inline void
vec_dstst(signed long * a1,int a2,const char a3)1391 vec_dstst (signed long *a1, int a2, const char a3)
1392 {
1393   __builtin_altivec_dstst ((void *) a1, a2, a3);
1394 }
1395 
1396 inline void
vec_dstst(float * a1,int a2,const char a3)1397 vec_dstst (float *a1, int a2, const char a3)
1398 {
1399   __builtin_altivec_dstst ((void *) a1, a2, a3);
1400 }
1401 
1402 /* vec_dststt */
1403 
1404 inline void
vec_dststt(vector unsigned char * a1,int a2,const char a3)1405 vec_dststt (vector unsigned char *a1, int a2, const char a3)
1406 {
1407   __builtin_altivec_dststt ((void *) a1, a2, a3);
1408 }
1409 
1410 inline void
vec_dststt(vector signed char * a1,int a2,const char a3)1411 vec_dststt (vector signed char *a1, int a2, const char a3)
1412 {
1413   __builtin_altivec_dststt ((void *) a1, a2, a3);
1414 }
1415 
1416 inline void
vec_dststt(vector unsigned short * a1,int a2,const char a3)1417 vec_dststt (vector unsigned short *a1, int a2, const char a3)
1418 {
1419   __builtin_altivec_dststt ((void *) a1, a2, a3);
1420 }
1421 
1422 inline void
vec_dststt(vector signed short * a1,int a2,const char a3)1423 vec_dststt (vector signed short *a1, int a2, const char a3)
1424 {
1425   __builtin_altivec_dststt ((void *) a1, a2, a3);
1426 }
1427 
1428 inline void
vec_dststt(vector unsigned int * a1,int a2,const char a3)1429 vec_dststt (vector unsigned int *a1, int a2, const char a3)
1430 {
1431   __builtin_altivec_dststt ((void *) a1, a2, a3);
1432 }
1433 
1434 inline void
vec_dststt(vector signed int * a1,int a2,const char a3)1435 vec_dststt (vector signed int *a1, int a2, const char a3)
1436 {
1437   __builtin_altivec_dststt ((void *) a1, a2, a3);
1438 }
1439 
1440 inline void
vec_dststt(vector float * a1,int a2,const char a3)1441 vec_dststt (vector float *a1, int a2, const char a3)
1442 {
1443   __builtin_altivec_dststt ((void *) a1, a2, a3);
1444 }
1445 
1446 inline void
vec_dststt(unsigned char * a1,int a2,const char a3)1447 vec_dststt (unsigned char *a1, int a2, const char a3)
1448 {
1449   __builtin_altivec_dststt ((void *) a1, a2, a3);
1450 }
1451 
1452 inline void
vec_dststt(signed char * a1,int a2,const char a3)1453 vec_dststt (signed char *a1, int a2, const char a3)
1454 {
1455   __builtin_altivec_dststt ((void *) a1, a2, a3);
1456 }
1457 
1458 inline void
vec_dststt(unsigned short * a1,int a2,const char a3)1459 vec_dststt (unsigned short *a1, int a2, const char a3)
1460 {
1461   __builtin_altivec_dststt ((void *) a1, a2, a3);
1462 }
1463 
1464 inline void
vec_dststt(signed short * a1,int a2,const char a3)1465 vec_dststt (signed short *a1, int a2, const char a3)
1466 {
1467   __builtin_altivec_dststt ((void *) a1, a2, a3);
1468 }
1469 
1470 inline void
vec_dststt(unsigned int * a1,int a2,const char a3)1471 vec_dststt (unsigned int *a1, int a2, const char a3)
1472 {
1473   __builtin_altivec_dststt ((void *) a1, a2, a3);
1474 }
1475 
1476 inline void
vec_dststt(signed int * a1,int a2,const char a3)1477 vec_dststt (signed int *a1, int a2, const char a3)
1478 {
1479   __builtin_altivec_dststt ((void *) a1, a2, a3);
1480 }
1481 
1482 inline void
vec_dststt(unsigned long * a1,int a2,const char a3)1483 vec_dststt (unsigned long *a1, int a2, const char a3)
1484 {
1485   __builtin_altivec_dststt ((void *) a1, a2, a3);
1486 }
1487 
1488 inline void
vec_dststt(signed long * a1,int a2,const char a3)1489 vec_dststt (signed long *a1, int a2, const char a3)
1490 {
1491   __builtin_altivec_dststt ((void *) a1, a2, a3);
1492 }
1493 
1494 inline void
vec_dststt(float * a1,int a2,const char a3)1495 vec_dststt (float *a1, int a2, const char a3)
1496 {
1497   __builtin_altivec_dststt ((void *) a1, a2, a3);
1498 }
1499 
1500 /* vec_dstt */
1501 
1502 inline void
vec_dstt(vector unsigned char * a1,int a2,const char a3)1503 vec_dstt (vector unsigned char *a1, int a2, const char a3)
1504 {
1505   __builtin_altivec_dstt ((void *) a1, a2, a3);
1506 }
1507 
1508 inline void
vec_dstt(vector signed char * a1,int a2,const char a3)1509 vec_dstt (vector signed char *a1, int a2, const char a3)
1510 {
1511   __builtin_altivec_dstt ((void *) a1, a2, a3);
1512 }
1513 
1514 inline void
vec_dstt(vector unsigned short * a1,int a2,const char a3)1515 vec_dstt (vector unsigned short *a1, int a2, const char a3)
1516 {
1517   __builtin_altivec_dstt ((void *) a1, a2, a3);
1518 }
1519 
1520 inline void
vec_dstt(vector signed short * a1,int a2,const char a3)1521 vec_dstt (vector signed short *a1, int a2, const char a3)
1522 {
1523   __builtin_altivec_dstt ((void *) a1, a2, a3);
1524 }
1525 
1526 inline void
vec_dstt(vector unsigned int * a1,int a2,const char a3)1527 vec_dstt (vector unsigned int *a1, int a2, const char a3)
1528 {
1529   __builtin_altivec_dstt ((void *) a1, a2, a3);
1530 }
1531 
1532 inline void
vec_dstt(vector signed int * a1,int a2,const char a3)1533 vec_dstt (vector signed int *a1, int a2, const char a3)
1534 {
1535   __builtin_altivec_dstt ((void *) a1, a2, a3);
1536 }
1537 
1538 inline void
vec_dstt(vector float * a1,int a2,const char a3)1539 vec_dstt (vector float *a1, int a2, const char a3)
1540 {
1541   __builtin_altivec_dstt ((void *) a1, a2, a3);
1542 }
1543 
1544 inline void
vec_dstt(unsigned char * a1,int a2,const char a3)1545 vec_dstt (unsigned char *a1, int a2, const char a3)
1546 {
1547   __builtin_altivec_dstt ((void *) a1, a2, a3);
1548 }
1549 
1550 inline void
vec_dstt(signed char * a1,int a2,const char a3)1551 vec_dstt (signed char *a1, int a2, const char a3)
1552 {
1553   __builtin_altivec_dstt ((void *) a1, a2, a3);
1554 }
1555 
1556 inline void
vec_dstt(unsigned short * a1,int a2,const char a3)1557 vec_dstt (unsigned short *a1, int a2, const char a3)
1558 {
1559   __builtin_altivec_dstt ((void *) a1, a2, a3);
1560 }
1561 
1562 inline void
vec_dstt(signed short * a1,int a2,const char a3)1563 vec_dstt (signed short *a1, int a2, const char a3)
1564 {
1565   __builtin_altivec_dstt ((void *) a1, a2, a3);
1566 }
1567 
1568 inline void
vec_dstt(unsigned int * a1,int a2,const char a3)1569 vec_dstt (unsigned int *a1, int a2, const char a3)
1570 {
1571   __builtin_altivec_dstt ((void *) a1, a2, a3);
1572 }
1573 
1574 inline void
vec_dstt(signed int * a1,int a2,const char a3)1575 vec_dstt (signed int *a1, int a2, const char a3)
1576 {
1577   __builtin_altivec_dstt ((void *) a1, a2, a3);
1578 }
1579 
1580 inline void
vec_dstt(unsigned long * a1,int a2,const char a3)1581 vec_dstt (unsigned long *a1, int a2, const char a3)
1582 {
1583   __builtin_altivec_dstt ((void *) a1, a2, a3);
1584 }
1585 
1586 inline void
vec_dstt(signed long * a1,int a2,const char a3)1587 vec_dstt (signed long *a1, int a2, const char a3)
1588 {
1589   __builtin_altivec_dstt ((void *) a1, a2, a3);
1590 }
1591 
1592 inline void
vec_dstt(float * a1,int a2,const char a3)1593 vec_dstt (float *a1, int a2, const char a3)
1594 {
1595   __builtin_altivec_dstt ((void *) a1, a2, a3);
1596 }
1597 
1598 /* vec_expte */
1599 
1600 inline vector float
vec_expte(vector float a1)1601 vec_expte (vector float a1)
1602 {
1603   return (vector float) __builtin_altivec_vexptefp ((vector float) a1);
1604 }
1605 
1606 /* vec_floor */
1607 
1608 inline vector float
vec_floor(vector float a1)1609 vec_floor (vector float a1)
1610 {
1611   return (vector float) __builtin_altivec_vrfim ((vector float) a1);
1612 }
1613 
1614 /* vec_ld */
1615 
1616 inline vector float
vec_ld(int a1,vector float * a2)1617 vec_ld (int a1, vector float *a2)
1618 {
1619   return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
1620 }
1621 
1622 inline vector float
vec_ld(int a1,float * a2)1623 vec_ld (int a1, float *a2)
1624 {
1625   return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
1626 }
1627 
1628 inline vector signed int
vec_ld(int a1,vector signed int * a2)1629 vec_ld (int a1, vector signed int *a2)
1630 {
1631   return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1632 }
1633 
1634 inline vector signed int
vec_ld(int a1,signed int * a2)1635 vec_ld (int a1, signed int *a2)
1636 {
1637   return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1638 }
1639 
1640 inline vector signed int
vec_ld(int a1,signed long * a2)1641 vec_ld (int a1, signed long *a2)
1642 {
1643   return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1644 }
1645 
1646 inline vector unsigned int
vec_ld(int a1,vector unsigned int * a2)1647 vec_ld (int a1, vector unsigned int *a2)
1648 {
1649   return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
1650 }
1651 
1652 inline vector unsigned int
vec_ld(int a1,unsigned int * a2)1653 vec_ld (int a1, unsigned int *a2)
1654 {
1655   return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
1656 }
1657 
1658 inline vector unsigned int
vec_ld(int a1,unsigned long * a2)1659 vec_ld (int a1, unsigned long *a2)
1660 {
1661   return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
1662 }
1663 
1664 inline vector signed short
vec_ld(int a1,vector signed short * a2)1665 vec_ld (int a1, vector signed short *a2)
1666 {
1667   return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
1668 }
1669 
1670 inline vector signed short
vec_ld(int a1,signed short * a2)1671 vec_ld (int a1, signed short *a2)
1672 {
1673   return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
1674 }
1675 
1676 inline vector unsigned short
vec_ld(int a1,vector unsigned short * a2)1677 vec_ld (int a1, vector unsigned short *a2)
1678 {
1679   return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
1680 }
1681 
1682 inline vector unsigned short
vec_ld(int a1,unsigned short * a2)1683 vec_ld (int a1, unsigned short *a2)
1684 {
1685   return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
1686 }
1687 
1688 inline vector signed char
vec_ld(int a1,vector signed char * a2)1689 vec_ld (int a1, vector signed char *a2)
1690 {
1691   return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
1692 }
1693 
1694 inline vector signed char
vec_ld(int a1,signed char * a2)1695 vec_ld (int a1, signed char *a2)
1696 {
1697   return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
1698 }
1699 
1700 inline vector unsigned char
vec_ld(int a1,vector unsigned char * a2)1701 vec_ld (int a1, vector unsigned char *a2)
1702 {
1703   return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
1704 }
1705 
1706 inline vector unsigned char
vec_ld(int a1,unsigned char * a2)1707 vec_ld (int a1, unsigned char *a2)
1708 {
1709   return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
1710 }
1711 
1712 /* vec_lde */
1713 
1714 inline vector signed char
vec_lde(int a1,signed char * a2)1715 vec_lde (int a1, signed char *a2)
1716 {
1717   return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
1718 }
1719 
1720 inline vector unsigned char
vec_lde(int a1,unsigned char * a2)1721 vec_lde (int a1, unsigned char *a2)
1722 {
1723   return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
1724 }
1725 
1726 inline vector signed short
vec_lde(int a1,signed short * a2)1727 vec_lde (int a1, signed short *a2)
1728 {
1729   return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
1730 }
1731 
1732 inline vector unsigned short
vec_lde(int a1,unsigned short * a2)1733 vec_lde (int a1, unsigned short *a2)
1734 {
1735   return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
1736 }
1737 
1738 inline vector float
vec_lde(int a1,float * a2)1739 vec_lde (int a1, float *a2)
1740 {
1741   return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
1742 }
1743 
1744 inline vector signed int
vec_lde(int a1,signed int * a2)1745 vec_lde (int a1, signed int *a2)
1746 {
1747   return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1748 }
1749 
1750 inline vector unsigned int
vec_lde(int a1,unsigned int * a2)1751 vec_lde (int a1, unsigned int *a2)
1752 {
1753   return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1754 }
1755 
1756 inline vector signed int
vec_lde(int a1,signed long * a2)1757 vec_lde (int a1, signed long *a2)
1758 {
1759   return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1760 }
1761 
1762 inline vector unsigned int
vec_lde(int a1,unsigned long * a2)1763 vec_lde (int a1, unsigned long *a2)
1764 {
1765   return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1766 }
1767 
1768 /* vec_lvewx */
1769 
1770 inline vector float
vec_lvewx(int a1,float * a2)1771 vec_lvewx (int a1, float *a2)
1772 {
1773   return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
1774 }
1775 
1776 inline vector signed int
vec_lvewx(int a1,signed int * a2)1777 vec_lvewx (int a1, signed int *a2)
1778 {
1779   return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1780 }
1781 
1782 inline vector unsigned int
vec_lvewx(int a1,unsigned int * a2)1783 vec_lvewx (int a1, unsigned int *a2)
1784 {
1785   return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1786 }
1787 
1788 inline vector signed int
vec_lvewx(int a1,signed long * a2)1789 vec_lvewx (int a1, signed long *a2)
1790 {
1791   return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
1792 }
1793 
1794 inline vector unsigned int
vec_lvewx(int a1,unsigned long * a2)1795 vec_lvewx (int a1, unsigned long *a2)
1796 {
1797   return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
1798 }
1799 
1800 /* vec_lvehx */
1801 
1802 inline vector signed short
vec_lvehx(int a1,signed short * a2)1803 vec_lvehx (int a1, signed short *a2)
1804 {
1805   return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
1806 }
1807 
1808 inline vector unsigned short
vec_lvehx(int a1,unsigned short * a2)1809 vec_lvehx (int a1, unsigned short *a2)
1810 {
1811   return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
1812 }
1813 
1814 /* vec_lvebx */
1815 
1816 inline vector signed char
vec_lvebx(int a1,signed char * a2)1817 vec_lvebx (int a1, signed char *a2)
1818 {
1819   return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
1820 }
1821 
1822 inline vector unsigned char
vec_lvebx(int a1,unsigned char * a2)1823 vec_lvebx (int a1, unsigned char *a2)
1824 {
1825   return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
1826 }
1827 
1828 /* vec_ldl */
1829 
1830 inline vector float
vec_ldl(int a1,vector float * a2)1831 vec_ldl (int a1, vector float *a2)
1832 {
1833   return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
1834 }
1835 
1836 inline vector float
vec_ldl(int a1,float * a2)1837 vec_ldl (int a1, float *a2)
1838 {
1839   return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
1840 }
1841 
1842 inline vector signed int
vec_ldl(int a1,vector signed int * a2)1843 vec_ldl (int a1, vector signed int *a2)
1844 {
1845   return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
1846 }
1847 
1848 inline vector signed int
vec_ldl(int a1,signed int * a2)1849 vec_ldl (int a1, signed int *a2)
1850 {
1851   return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
1852 }
1853 
1854 inline vector signed int
vec_ldl(int a1,signed long * a2)1855 vec_ldl (int a1, signed long *a2)
1856 {
1857   return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
1858 }
1859 
1860 inline vector unsigned int
vec_ldl(int a1,vector unsigned int * a2)1861 vec_ldl (int a1, vector unsigned int *a2)
1862 {
1863   return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
1864 }
1865 
1866 inline vector unsigned int
vec_ldl(int a1,unsigned int * a2)1867 vec_ldl (int a1, unsigned int *a2)
1868 {
1869   return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
1870 }
1871 
1872 inline vector unsigned int
vec_ldl(int a1,unsigned long * a2)1873 vec_ldl (int a1, unsigned long *a2)
1874 {
1875   return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
1876 }
1877 
1878 inline vector signed short
vec_ldl(int a1,vector signed short * a2)1879 vec_ldl (int a1, vector signed short *a2)
1880 {
1881   return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
1882 }
1883 
1884 inline vector signed short
vec_ldl(int a1,signed short * a2)1885 vec_ldl (int a1, signed short *a2)
1886 {
1887   return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
1888 }
1889 
1890 inline vector unsigned short
vec_ldl(int a1,vector unsigned short * a2)1891 vec_ldl (int a1, vector unsigned short *a2)
1892 {
1893   return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
1894 }
1895 
1896 inline vector unsigned short
vec_ldl(int a1,unsigned short * a2)1897 vec_ldl (int a1, unsigned short *a2)
1898 {
1899   return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
1900 }
1901 
1902 inline vector signed char
vec_ldl(int a1,vector signed char * a2)1903 vec_ldl (int a1, vector signed char *a2)
1904 {
1905   return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
1906 }
1907 
1908 inline vector signed char
vec_ldl(int a1,signed char * a2)1909 vec_ldl (int a1, signed char *a2)
1910 {
1911   return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
1912 }
1913 
1914 inline vector unsigned char
vec_ldl(int a1,vector unsigned char * a2)1915 vec_ldl (int a1, vector unsigned char *a2)
1916 {
1917   return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
1918 }
1919 
1920 inline vector unsigned char
vec_ldl(int a1,unsigned char * a2)1921 vec_ldl (int a1, unsigned char *a2)
1922 {
1923   return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
1924 }
1925 
1926 /* vec_loge */
1927 
1928 inline vector float
vec_loge(vector float a1)1929 vec_loge (vector float a1)
1930 {
1931   return (vector float) __builtin_altivec_vlogefp ((vector float) a1);
1932 }
1933 
1934 /* vec_lvsl */
1935 
1936 inline vector unsigned char
vec_lvsl(int a1,unsigned char * a2)1937 vec_lvsl (int a1, unsigned char *a2)
1938 {
1939   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1940 }
1941 
1942 inline vector unsigned char
vec_lvsl(int a1,signed char * a2)1943 vec_lvsl (int a1, signed char *a2)
1944 {
1945   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1946 }
1947 
1948 inline vector unsigned char
vec_lvsl(int a1,unsigned short * a2)1949 vec_lvsl (int a1, unsigned short *a2)
1950 {
1951   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1952 }
1953 
1954 inline vector unsigned char
vec_lvsl(int a1,signed short * a2)1955 vec_lvsl (int a1, signed short *a2)
1956 {
1957   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1958 }
1959 
1960 inline vector unsigned char
vec_lvsl(int a1,unsigned int * a2)1961 vec_lvsl (int a1, unsigned int *a2)
1962 {
1963   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1964 }
1965 
1966 inline vector unsigned char
vec_lvsl(int a1,signed int * a2)1967 vec_lvsl (int a1, signed int *a2)
1968 {
1969   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1970 }
1971 
1972 inline vector unsigned char
vec_lvsl(int a1,unsigned long * a2)1973 vec_lvsl (int a1, unsigned long *a2)
1974 {
1975   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1976 }
1977 
1978 inline vector unsigned char
vec_lvsl(int a1,signed long * a2)1979 vec_lvsl (int a1, signed long *a2)
1980 {
1981   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1982 }
1983 
1984 inline vector unsigned char
vec_lvsl(int a1,float * a2)1985 vec_lvsl (int a1, float *a2)
1986 {
1987   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
1988 }
1989 
1990 /* vec_lvsr */
1991 
1992 inline vector unsigned char
vec_lvsr(int a1,unsigned char * a2)1993 vec_lvsr (int a1, unsigned char *a2)
1994 {
1995   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
1996 }
1997 
1998 inline vector unsigned char
vec_lvsr(int a1,signed char * a2)1999 vec_lvsr (int a1, signed char *a2)
2000 {
2001   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2002 }
2003 
2004 inline vector unsigned char
vec_lvsr(int a1,unsigned short * a2)2005 vec_lvsr (int a1, unsigned short *a2)
2006 {
2007   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2008 }
2009 
2010 inline vector unsigned char
vec_lvsr(int a1,signed short * a2)2011 vec_lvsr (int a1, signed short *a2)
2012 {
2013   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2014 }
2015 
2016 inline vector unsigned char
vec_lvsr(int a1,unsigned int * a2)2017 vec_lvsr (int a1, unsigned int *a2)
2018 {
2019   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2020 }
2021 
2022 inline vector unsigned char
vec_lvsr(int a1,signed int * a2)2023 vec_lvsr (int a1, signed int *a2)
2024 {
2025   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2026 }
2027 
2028 inline vector unsigned char
vec_lvsr(int a1,unsigned long * a2)2029 vec_lvsr (int a1, unsigned long *a2)
2030 {
2031   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2032 }
2033 
2034 inline vector unsigned char
vec_lvsr(int a1,signed long * a2)2035 vec_lvsr (int a1, signed long *a2)
2036 {
2037   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2038 }
2039 
2040 inline vector unsigned char
vec_lvsr(int a1,float * a2)2041 vec_lvsr (int a1, float *a2)
2042 {
2043   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2044 }
2045 
2046 /* vec_madd */
2047 
2048 inline vector float
vec_madd(vector float a1,vector float a2,vector float a3)2049 vec_madd (vector float a1, vector float a2, vector float a3)
2050 {
2051   return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
2052 }
2053 
2054 
2055 /* vec_madds */
2056 
2057 inline vector signed short
vec_madds(vector signed short a1,vector signed short a2,vector signed short a3)2058 vec_madds (vector signed short a1, vector signed short a2, vector signed short a3)
2059 {
2060   return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2061 }
2062 
2063 /* vec_max */
2064 
2065 inline vector unsigned char
vec_max(vector signed char a1,vector unsigned char a2)2066 vec_max (vector signed char a1, vector unsigned char a2)
2067 {
2068   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2069 }
2070 
2071 inline vector unsigned char
vec_max(vector unsigned char a1,vector signed char a2)2072 vec_max (vector unsigned char a1, vector signed char a2)
2073 {
2074   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2075 }
2076 
2077 inline vector unsigned char
vec_max(vector unsigned char a1,vector unsigned char a2)2078 vec_max (vector unsigned char a1, vector unsigned char a2)
2079 {
2080   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2081 }
2082 
2083 inline vector signed char
vec_max(vector signed char a1,vector signed char a2)2084 vec_max (vector signed char a1, vector signed char a2)
2085 {
2086   return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2087 }
2088 
2089 inline vector unsigned short
vec_max(vector signed short a1,vector unsigned short a2)2090 vec_max (vector signed short a1, vector unsigned short a2)
2091 {
2092   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2093 }
2094 
2095 inline vector unsigned short
vec_max(vector unsigned short a1,vector signed short a2)2096 vec_max (vector unsigned short a1, vector signed short a2)
2097 {
2098   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2099 }
2100 
2101 inline vector unsigned short
vec_max(vector unsigned short a1,vector unsigned short a2)2102 vec_max (vector unsigned short a1, vector unsigned short a2)
2103 {
2104   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2105 }
2106 
2107 inline vector signed short
vec_max(vector signed short a1,vector signed short a2)2108 vec_max (vector signed short a1, vector signed short a2)
2109 {
2110   return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2111 }
2112 
2113 inline vector unsigned int
vec_max(vector signed int a1,vector unsigned int a2)2114 vec_max (vector signed int a1, vector unsigned int a2)
2115 {
2116   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2117 }
2118 
2119 inline vector unsigned int
vec_max(vector unsigned int a1,vector signed int a2)2120 vec_max (vector unsigned int a1, vector signed int a2)
2121 {
2122   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2123 }
2124 
2125 inline vector unsigned int
vec_max(vector unsigned int a1,vector unsigned int a2)2126 vec_max (vector unsigned int a1, vector unsigned int a2)
2127 {
2128   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2129 }
2130 
2131 inline vector signed int
vec_max(vector signed int a1,vector signed int a2)2132 vec_max (vector signed int a1, vector signed int a2)
2133 {
2134   return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2135 }
2136 
2137 inline vector float
vec_max(vector float a1,vector float a2)2138 vec_max (vector float a1, vector float a2)
2139 {
2140   return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
2141 }
2142 
2143 /* vec_vmaxfp */
2144 
2145 inline vector float
vec_vmaxfp(vector float a1,vector float a2)2146 vec_vmaxfp (vector float a1, vector float a2)
2147 {
2148   return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
2149 }
2150 
2151 /* vec_vmaxsw */
2152 
2153 inline vector signed int
vec_vmaxsw(vector signed int a1,vector signed int a2)2154 vec_vmaxsw (vector signed int a1, vector signed int a2)
2155 {
2156   return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2157 }
2158 
2159 /* vec_vmaxuw */
2160 
2161 inline vector unsigned int
vec_vmaxuw(vector signed int a1,vector unsigned int a2)2162 vec_vmaxuw (vector signed int a1, vector unsigned int a2)
2163 {
2164   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2165 }
2166 
2167 inline vector unsigned int
vec_vmaxuw(vector unsigned int a1,vector signed int a2)2168 vec_vmaxuw (vector unsigned int a1, vector signed int a2)
2169 {
2170   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2171 }
2172 
2173 inline vector unsigned int
vec_vmaxuw(vector unsigned int a1,vector unsigned int a2)2174 vec_vmaxuw (vector unsigned int a1, vector unsigned int a2)
2175 {
2176   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2177 }
2178 
2179 /* vec_vmaxsh */
2180 
2181 inline vector signed short
vec_vmaxsh(vector signed short a1,vector signed short a2)2182 vec_vmaxsh (vector signed short a1, vector signed short a2)
2183 {
2184   return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2185 }
2186 
2187 /* vec_vmaxuh */
2188 
2189 inline vector unsigned short
vec_vmaxuh(vector signed short a1,vector unsigned short a2)2190 vec_vmaxuh (vector signed short a1, vector unsigned short a2)
2191 {
2192   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2193 }
2194 
2195 inline vector unsigned short
vec_vmaxuh(vector unsigned short a1,vector signed short a2)2196 vec_vmaxuh (vector unsigned short a1, vector signed short a2)
2197 {
2198   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2199 }
2200 
2201 inline vector unsigned short
vec_vmaxuh(vector unsigned short a1,vector unsigned short a2)2202 vec_vmaxuh (vector unsigned short a1, vector unsigned short a2)
2203 {
2204   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2205 }
2206 
2207 /* vec_vmaxsb */
2208 
2209 inline vector signed char
vec_vmaxsb(vector signed char a1,vector signed char a2)2210 vec_vmaxsb (vector signed char a1, vector signed char a2)
2211 {
2212   return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2213 }
2214 
2215 /* vec_vmaxub */
2216 
2217 inline vector unsigned char
vec_vmaxub(vector signed char a1,vector unsigned char a2)2218 vec_vmaxub (vector signed char a1, vector unsigned char a2)
2219 {
2220   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2221 }
2222 
2223 inline vector unsigned char
vec_vmaxub(vector unsigned char a1,vector signed char a2)2224 vec_vmaxub (vector unsigned char a1, vector signed char a2)
2225 {
2226   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2227 }
2228 
2229 inline vector unsigned char
vec_vmaxub(vector unsigned char a1,vector unsigned char a2)2230 vec_vmaxub (vector unsigned char a1, vector unsigned char a2)
2231 {
2232   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2233 }
2234 
2235 /* vec_mergeh */
2236 
2237 inline vector signed char
vec_mergeh(vector signed char a1,vector signed char a2)2238 vec_mergeh (vector signed char a1, vector signed char a2)
2239 {
2240   return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2241 }
2242 
2243 inline vector unsigned char
vec_mergeh(vector unsigned char a1,vector unsigned char a2)2244 vec_mergeh (vector unsigned char a1, vector unsigned char a2)
2245 {
2246   return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2247 }
2248 
2249 inline vector signed short
vec_mergeh(vector signed short a1,vector signed short a2)2250 vec_mergeh (vector signed short a1, vector signed short a2)
2251 {
2252   return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2253 }
2254 
2255 inline vector unsigned short
vec_mergeh(vector unsigned short a1,vector unsigned short a2)2256 vec_mergeh (vector unsigned short a1, vector unsigned short a2)
2257 {
2258   return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2259 }
2260 
2261 inline vector float
vec_mergeh(vector float a1,vector float a2)2262 vec_mergeh (vector float a1, vector float a2)
2263 {
2264   return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2265 }
2266 
2267 inline vector signed int
vec_mergeh(vector signed int a1,vector signed int a2)2268 vec_mergeh (vector signed int a1, vector signed int a2)
2269 {
2270   return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2271 }
2272 
2273 inline vector unsigned int
vec_mergeh(vector unsigned int a1,vector unsigned int a2)2274 vec_mergeh (vector unsigned int a1, vector unsigned int a2)
2275 {
2276   return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2277 }
2278 
2279 /* vec_vmrghw */
2280 
2281 inline vector float
vec_vmrghw(vector float a1,vector float a2)2282 vec_vmrghw (vector float a1, vector float a2)
2283 {
2284   return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2285 }
2286 
2287 inline vector signed int
vec_vmrghw(vector signed int a1,vector signed int a2)2288 vec_vmrghw (vector signed int a1, vector signed int a2)
2289 {
2290   return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2291 }
2292 
2293 inline vector unsigned int
vec_vmrghw(vector unsigned int a1,vector unsigned int a2)2294 vec_vmrghw (vector unsigned int a1, vector unsigned int a2)
2295 {
2296   return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2297 }
2298 
2299 /* vec_vmrghh */
2300 
2301 inline vector signed short
vec_vmrghh(vector signed short a1,vector signed short a2)2302 vec_vmrghh (vector signed short a1, vector signed short a2)
2303 {
2304   return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2305 }
2306 
2307 inline vector unsigned short
vec_vmrghh(vector unsigned short a1,vector unsigned short a2)2308 vec_vmrghh (vector unsigned short a1, vector unsigned short a2)
2309 {
2310   return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2311 }
2312 
2313 /* vec_vmrghb */
2314 
2315 inline vector signed char
vec_vmrghb(vector signed char a1,vector signed char a2)2316 vec_vmrghb (vector signed char a1, vector signed char a2)
2317 {
2318   return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2319 }
2320 
2321 inline vector unsigned char
vec_vmrghb(vector unsigned char a1,vector unsigned char a2)2322 vec_vmrghb (vector unsigned char a1, vector unsigned char a2)
2323 {
2324   return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2325 }
2326 
2327 /* vec_mergel */
2328 
2329 inline vector signed char
vec_mergel(vector signed char a1,vector signed char a2)2330 vec_mergel (vector signed char a1, vector signed char a2)
2331 {
2332   return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2333 }
2334 
2335 inline vector unsigned char
vec_mergel(vector unsigned char a1,vector unsigned char a2)2336 vec_mergel (vector unsigned char a1, vector unsigned char a2)
2337 {
2338   return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2339 }
2340 
2341 inline vector signed short
vec_mergel(vector signed short a1,vector signed short a2)2342 vec_mergel (vector signed short a1, vector signed short a2)
2343 {
2344   return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2345 }
2346 
2347 inline vector unsigned short
vec_mergel(vector unsigned short a1,vector unsigned short a2)2348 vec_mergel (vector unsigned short a1, vector unsigned short a2)
2349 {
2350   return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2351 }
2352 
2353 inline vector float
vec_mergel(vector float a1,vector float a2)2354 vec_mergel (vector float a1, vector float a2)
2355 {
2356   return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2357 }
2358 
2359 inline vector signed int
vec_mergel(vector signed int a1,vector signed int a2)2360 vec_mergel (vector signed int a1, vector signed int a2)
2361 {
2362   return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2363 }
2364 
2365 inline vector unsigned int
vec_mergel(vector unsigned int a1,vector unsigned int a2)2366 vec_mergel (vector unsigned int a1, vector unsigned int a2)
2367 {
2368   return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2369 }
2370 
2371 /* vec_vmrglw */
2372 
2373 inline vector float
vec_vmrglw(vector float a1,vector float a2)2374 vec_vmrglw (vector float a1, vector float a2)
2375 {
2376   return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2377 }
2378 
2379 inline vector signed int
vec_vmrglw(vector signed int a1,vector signed int a2)2380 vec_vmrglw (vector signed int a1, vector signed int a2)
2381 {
2382   return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2383 }
2384 
2385 inline vector unsigned int
vec_vmrglw(vector unsigned int a1,vector unsigned int a2)2386 vec_vmrglw (vector unsigned int a1, vector unsigned int a2)
2387 {
2388   return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2389 }
2390 
2391 /* vec_vmrglh */
2392 
2393 inline vector signed short
vec_vmrglh(vector signed short a1,vector signed short a2)2394 vec_vmrglh (vector signed short a1, vector signed short a2)
2395 {
2396   return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2397 }
2398 
2399 inline vector unsigned short
vec_vmrglh(vector unsigned short a1,vector unsigned short a2)2400 vec_vmrglh (vector unsigned short a1, vector unsigned short a2)
2401 {
2402   return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2403 }
2404 
2405 /* vec_vmrglb */
2406 
2407 inline vector signed char
vec_vmrglb(vector signed char a1,vector signed char a2)2408 vec_vmrglb (vector signed char a1, vector signed char a2)
2409 {
2410   return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2411 }
2412 
2413 inline vector unsigned char
vec_vmrglb(vector unsigned char a1,vector unsigned char a2)2414 vec_vmrglb (vector unsigned char a1, vector unsigned char a2)
2415 {
2416   return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2417 }
2418 
2419 /* vec_mfvscr */
2420 
2421 inline vector unsigned short
vec_mfvscr(void)2422 vec_mfvscr (void)
2423 {
2424   return (vector unsigned short) __builtin_altivec_mfvscr ();
2425 }
2426 
2427 /* vec_min */
2428 
2429 inline vector unsigned char
vec_min(vector signed char a1,vector unsigned char a2)2430 vec_min (vector signed char a1, vector unsigned char a2)
2431 {
2432   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2433 }
2434 
2435 inline vector unsigned char
vec_min(vector unsigned char a1,vector signed char a2)2436 vec_min (vector unsigned char a1, vector signed char a2)
2437 {
2438   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2439 }
2440 
2441 inline vector unsigned char
vec_min(vector unsigned char a1,vector unsigned char a2)2442 vec_min (vector unsigned char a1, vector unsigned char a2)
2443 {
2444   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2445 }
2446 
2447 inline vector signed char
vec_min(vector signed char a1,vector signed char a2)2448 vec_min (vector signed char a1, vector signed char a2)
2449 {
2450   return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
2451 }
2452 
2453 inline vector unsigned short
vec_min(vector signed short a1,vector unsigned short a2)2454 vec_min (vector signed short a1, vector unsigned short a2)
2455 {
2456   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2457 }
2458 
2459 inline vector unsigned short
vec_min(vector unsigned short a1,vector signed short a2)2460 vec_min (vector unsigned short a1, vector signed short a2)
2461 {
2462   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2463 }
2464 
2465 inline vector unsigned short
vec_min(vector unsigned short a1,vector unsigned short a2)2466 vec_min (vector unsigned short a1, vector unsigned short a2)
2467 {
2468   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2469 }
2470 
2471 inline vector signed short
vec_min(vector signed short a1,vector signed short a2)2472 vec_min (vector signed short a1, vector signed short a2)
2473 {
2474   return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
2475 }
2476 
2477 inline vector unsigned int
vec_min(vector signed int a1,vector unsigned int a2)2478 vec_min (vector signed int a1, vector unsigned int a2)
2479 {
2480   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2481 }
2482 
2483 inline vector unsigned int
vec_min(vector unsigned int a1,vector signed int a2)2484 vec_min (vector unsigned int a1, vector signed int a2)
2485 {
2486   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2487 }
2488 
2489 inline vector unsigned int
vec_min(vector unsigned int a1,vector unsigned int a2)2490 vec_min (vector unsigned int a1, vector unsigned int a2)
2491 {
2492   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2493 }
2494 
2495 inline vector signed int
vec_min(vector signed int a1,vector signed int a2)2496 vec_min (vector signed int a1, vector signed int a2)
2497 {
2498   return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
2499 }
2500 
2501 inline vector float
vec_min(vector float a1,vector float a2)2502 vec_min (vector float a1, vector float a2)
2503 {
2504   return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
2505 }
2506 
2507 /* vec_vminfp */
2508 
2509 inline vector float
vec_vminfp(vector float a1,vector float a2)2510 vec_vminfp (vector float a1, vector float a2)
2511 {
2512   return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
2513 }
2514 
2515 /* vec_vminsw */
2516 
2517 inline vector signed int
vec_vminsw(vector signed int a1,vector signed int a2)2518 vec_vminsw (vector signed int a1, vector signed int a2)
2519 {
2520   return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
2521 }
2522 
2523 /* vec_vminuw */
2524 
2525 inline vector unsigned int
vec_vminuw(vector signed int a1,vector unsigned int a2)2526 vec_vminuw (vector signed int a1, vector unsigned int a2)
2527 {
2528   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2529 }
2530 
2531 inline vector unsigned int
vec_vminuw(vector unsigned int a1,vector signed int a2)2532 vec_vminuw (vector unsigned int a1, vector signed int a2)
2533 {
2534   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2535 }
2536 
2537 inline vector unsigned int
vec_vminuw(vector unsigned int a1,vector unsigned int a2)2538 vec_vminuw (vector unsigned int a1, vector unsigned int a2)
2539 {
2540   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2541 }
2542 
2543 /* vec_vminsh */
2544 
2545 inline vector signed short
vec_vminsh(vector signed short a1,vector signed short a2)2546 vec_vminsh (vector signed short a1, vector signed short a2)
2547 {
2548   return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
2549 }
2550 
2551 /* vec_vminuh */
2552 
2553 inline vector unsigned short
vec_vminuh(vector signed short a1,vector unsigned short a2)2554 vec_vminuh (vector signed short a1, vector unsigned short a2)
2555 {
2556   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2557 }
2558 
2559 inline vector unsigned short
vec_vminuh(vector unsigned short a1,vector signed short a2)2560 vec_vminuh (vector unsigned short a1, vector signed short a2)
2561 {
2562   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2563 }
2564 
2565 inline vector unsigned short
vec_vminuh(vector unsigned short a1,vector unsigned short a2)2566 vec_vminuh (vector unsigned short a1, vector unsigned short a2)
2567 {
2568   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2569 }
2570 
2571 /* vec_vminsb */
2572 
2573 inline vector signed char
vec_vminsb(vector signed char a1,vector signed char a2)2574 vec_vminsb (vector signed char a1, vector signed char a2)
2575 {
2576   return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
2577 }
2578 
2579 /* vec_vminub */
2580 
2581 inline vector unsigned char
vec_vminub(vector signed char a1,vector unsigned char a2)2582 vec_vminub (vector signed char a1, vector unsigned char a2)
2583 {
2584   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2585 }
2586 
2587 inline vector unsigned char
vec_vminub(vector unsigned char a1,vector signed char a2)2588 vec_vminub (vector unsigned char a1, vector signed char a2)
2589 {
2590   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2591 }
2592 
2593 inline vector unsigned char
vec_vminub(vector unsigned char a1,vector unsigned char a2)2594 vec_vminub (vector unsigned char a1, vector unsigned char a2)
2595 {
2596   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2597 }
2598 
2599 /* vec_mladd */
2600 
2601 inline vector signed short
vec_mladd(vector signed short a1,vector signed short a2,vector signed short a3)2602 vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
2603 {
2604   return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2605 }
2606 
2607 inline vector signed short
vec_mladd(vector signed short a1,vector unsigned short a2,vector unsigned short a3)2608 vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
2609 {
2610   return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2611 }
2612 
2613 inline vector signed short
vec_mladd(vector unsigned short a1,vector signed short a2,vector signed short a3)2614 vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
2615 {
2616   return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2617 }
2618 
2619 inline vector unsigned short
vec_mladd(vector unsigned short a1,vector unsigned short a2,vector unsigned short a3)2620 vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
2621 {
2622   return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2623 }
2624 
2625 /* vec_mradds */
2626 
2627 inline vector signed short
vec_mradds(vector signed short a1,vector signed short a2,vector signed short a3)2628 vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
2629 {
2630   return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2631 }
2632 
2633 /* vec_msum */
2634 
2635 inline vector unsigned int
vec_msum(vector unsigned char a1,vector unsigned char a2,vector unsigned int a3)2636 vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
2637 {
2638   return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2639 }
2640 
2641 inline vector signed int
vec_msum(vector signed char a1,vector unsigned char a2,vector signed int a3)2642 vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
2643 {
2644   return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2645 }
2646 
2647 inline vector unsigned int
vec_msum(vector unsigned short a1,vector unsigned short a2,vector unsigned int a3)2648 vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2649 {
2650   return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2651 }
2652 
2653 inline vector signed int
vec_msum(vector signed short a1,vector signed short a2,vector signed int a3)2654 vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
2655 {
2656   return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2657 }
2658 
2659 /* vec_vmsumshm */
2660 
2661 inline vector signed int
vec_vmsumshm(vector signed short a1,vector signed short a2,vector signed int a3)2662 vec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3)
2663 {
2664   return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2665 }
2666 
2667 /* vec_vmsumuhm */
2668 
2669 inline vector unsigned int
vec_vmsumuhm(vector unsigned short a1,vector unsigned short a2,vector unsigned int a3)2670 vec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2671 {
2672   return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2673 }
2674 
2675 /* vec_vmsummbm */
2676 
2677 inline vector signed int
vec_vmsummbm(vector signed char a1,vector unsigned char a2,vector signed int a3)2678 vec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3)
2679 {
2680   return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2681 }
2682 
2683 /* vec_vmsumubm */
2684 
2685 inline vector unsigned int
vec_vmsumubm(vector unsigned char a1,vector unsigned char a2,vector unsigned int a3)2686 vec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
2687 {
2688   return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
2689 }
2690 
2691 /* vec_msums */
2692 
2693 inline vector unsigned int
vec_msums(vector unsigned short a1,vector unsigned short a2,vector unsigned int a3)2694 vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2695 {
2696   return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2697 }
2698 
2699 inline vector signed int
vec_msums(vector signed short a1,vector signed short a2,vector signed int a3)2700 vec_msums (vector signed short a1, vector signed short a2, vector signed int a3)
2701 {
2702   return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2703 }
2704 
2705 /* vec_vmsumshs */
2706 
2707 inline vector signed int
vec_vmsumshs(vector signed short a1,vector signed short a2,vector signed int a3)2708 vec_vmsumshs (vector signed short a1, vector signed short a2, vector signed int a3)
2709 {
2710   return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2711 }
2712 
2713 /* vec_vmsumuhs */
2714 
2715 inline vector unsigned int
vec_vmsumuhs(vector unsigned short a1,vector unsigned short a2,vector unsigned int a3)2716 vec_vmsumuhs (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
2717 {
2718   return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
2719 }
2720 
2721 /* vec_mtvscr */
2722 
2723 inline void
vec_mtvscr(vector signed int a1)2724 vec_mtvscr (vector signed int a1)
2725 {
2726   __builtin_altivec_mtvscr ((vector signed int) a1);
2727 }
2728 
2729 inline void
vec_mtvscr(vector unsigned int a1)2730 vec_mtvscr (vector unsigned int a1)
2731 {
2732   __builtin_altivec_mtvscr ((vector signed int) a1);
2733 }
2734 
2735 inline void
vec_mtvscr(vector signed short a1)2736 vec_mtvscr (vector signed short a1)
2737 {
2738   __builtin_altivec_mtvscr ((vector signed int) a1);
2739 }
2740 
2741 inline void
vec_mtvscr(vector unsigned short a1)2742 vec_mtvscr (vector unsigned short a1)
2743 {
2744   __builtin_altivec_mtvscr ((vector signed int) a1);
2745 }
2746 
2747 inline void
vec_mtvscr(vector signed char a1)2748 vec_mtvscr (vector signed char a1)
2749 {
2750   __builtin_altivec_mtvscr ((vector signed int) a1);
2751 }
2752 
2753 inline void
vec_mtvscr(vector unsigned char a1)2754 vec_mtvscr (vector unsigned char a1)
2755 {
2756   __builtin_altivec_mtvscr ((vector signed int) a1);
2757 }
2758 
2759 /* vec_mule */
2760 
2761 inline vector unsigned short
vec_mule(vector unsigned char a1,vector unsigned char a2)2762 vec_mule (vector unsigned char a1, vector unsigned char a2)
2763 {
2764   return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
2765 }
2766 
2767 inline vector signed short
vec_mule(vector signed char a1,vector signed char a2)2768 vec_mule (vector signed char a1, vector signed char a2)
2769 {
2770   return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2);
2771 }
2772 
2773 inline vector unsigned int
vec_mule(vector unsigned short a1,vector unsigned short a2)2774 vec_mule (vector unsigned short a1, vector unsigned short a2)
2775 {
2776   return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
2777 }
2778 
2779 inline vector signed int
vec_mule(vector signed short a1,vector signed short a2)2780 vec_mule (vector signed short a1, vector signed short a2)
2781 {
2782   return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
2783 }
2784 
2785 /* vec_vmulesh */
2786 
2787 inline vector signed int
vec_vmulesh(vector signed short a1,vector signed short a2)2788 vec_vmulesh (vector signed short a1, vector signed short a2)
2789 {
2790   return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
2791 }
2792 
2793 /* vec_vmuleuh */
2794 
2795 inline vector unsigned int
vec_vmuleuh(vector unsigned short a1,vector unsigned short a2)2796 vec_vmuleuh (vector unsigned short a1, vector unsigned short a2)
2797 {
2798   return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
2799 }
2800 
2801 /* vec_vmuleub */
2802 inline vector unsigned short
vec_vmuleub(vector unsigned char a1,vector unsigned char a2)2803 vec_vmuleub (vector unsigned char a1, vector unsigned char a2)
2804 {
2805   return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
2806 }
2807 
2808 /* vec_mulo */
2809 
2810 inline vector unsigned short
vec_mulo(vector unsigned char a1,vector unsigned char a2)2811 vec_mulo (vector unsigned char a1, vector unsigned char a2)
2812 {
2813   return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
2814 }
2815 
2816 inline vector signed short
vec_mulo(vector signed char a1,vector signed char a2)2817 vec_mulo (vector signed char a1, vector signed char a2)
2818 {
2819   return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
2820 }
2821 
2822 inline vector unsigned int
vec_mulo(vector unsigned short a1,vector unsigned short a2)2823 vec_mulo (vector unsigned short a1, vector unsigned short a2)
2824 {
2825   return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
2826 }
2827 
2828 inline vector signed int
vec_mulo(vector signed short a1,vector signed short a2)2829 vec_mulo (vector signed short a1, vector signed short a2)
2830 {
2831   return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
2832 }
2833 
2834 /* vec_vmulosh */
2835 
2836 inline vector signed int
vec_vmulosh(vector signed short a1,vector signed short a2)2837 vec_vmulosh (vector signed short a1, vector signed short a2)
2838 {
2839   return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
2840 }
2841 
2842 /* vec_vmulouh */
2843 
2844 inline vector unsigned int
vec_vmulouh(vector unsigned short a1,vector unsigned short a2)2845 vec_vmulouh (vector unsigned short a1, vector unsigned short a2)
2846 {
2847   return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
2848 }
2849 
2850 /* vec_vmulosb */
2851 
2852 inline vector signed short
vec_vmulosb(vector signed char a1,vector signed char a2)2853 vec_vmulosb (vector signed char a1, vector signed char a2)
2854 {
2855   return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
2856 }
2857 
2858 /* vec_vmuloub */
2859 
2860 inline vector unsigned short
vec_vmuloub(vector unsigned char a1,vector unsigned char a2)2861 vec_vmuloub (vector unsigned char a1, vector unsigned char a2)
2862 {
2863   return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
2864 }
2865 
2866 /* vec_nmsub */
2867 
2868 inline vector float
vec_nmsub(vector float a1,vector float a2,vector float a3)2869 vec_nmsub (vector float a1, vector float a2, vector float a3)
2870 {
2871   return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3);
2872 }
2873 
2874 /* vec_nor */
2875 
2876 inline vector float
vec_nor(vector float a1,vector float a2)2877 vec_nor (vector float a1, vector float a2)
2878 {
2879   return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2880 }
2881 
2882 inline vector signed int
vec_nor(vector signed int a1,vector signed int a2)2883 vec_nor (vector signed int a1, vector signed int a2)
2884 {
2885   return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2886 }
2887 
2888 inline vector unsigned int
vec_nor(vector unsigned int a1,vector unsigned int a2)2889 vec_nor (vector unsigned int a1, vector unsigned int a2)
2890 {
2891   return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2892 }
2893 
2894 inline vector signed short
vec_nor(vector signed short a1,vector signed short a2)2895 vec_nor (vector signed short a1, vector signed short a2)
2896 {
2897   return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2898 }
2899 
2900 inline vector unsigned short
vec_nor(vector unsigned short a1,vector unsigned short a2)2901 vec_nor (vector unsigned short a1, vector unsigned short a2)
2902 {
2903   return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2904 }
2905 
2906 inline vector signed char
vec_nor(vector signed char a1,vector signed char a2)2907 vec_nor (vector signed char a1, vector signed char a2)
2908 {
2909   return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2910 }
2911 
2912 inline vector unsigned char
vec_nor(vector unsigned char a1,vector unsigned char a2)2913 vec_nor (vector unsigned char a1, vector unsigned char a2)
2914 {
2915   return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
2916 }
2917 
2918 /* vec_or */
2919 
2920 inline vector float
vec_or(vector float a1,vector float a2)2921 vec_or (vector float a1, vector float a2)
2922 {
2923   return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2924 }
2925 
2926 inline vector float
vec_or(vector float a1,vector signed int a2)2927 vec_or (vector float a1, vector signed int a2)
2928 {
2929   return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2930 }
2931 
2932 inline vector float
vec_or(vector signed int a1,vector float a2)2933 vec_or (vector signed int a1, vector float a2)
2934 {
2935   return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2936 }
2937 
2938 inline vector signed int
vec_or(vector signed int a1,vector signed int a2)2939 vec_or (vector signed int a1, vector signed int a2)
2940 {
2941   return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2942 }
2943 
2944 inline vector unsigned int
vec_or(vector signed int a1,vector unsigned int a2)2945 vec_or (vector signed int a1, vector unsigned int a2)
2946 {
2947   return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2948 }
2949 
2950 inline vector unsigned int
vec_or(vector unsigned int a1,vector signed int a2)2951 vec_or (vector unsigned int a1, vector signed int a2)
2952 {
2953   return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2954 }
2955 
2956 inline vector unsigned int
vec_or(vector unsigned int a1,vector unsigned int a2)2957 vec_or (vector unsigned int a1, vector unsigned int a2)
2958 {
2959   return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2960 }
2961 
2962 inline vector signed short
vec_or(vector signed short a1,vector signed short a2)2963 vec_or (vector signed short a1, vector signed short a2)
2964 {
2965   return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2966 }
2967 
2968 inline vector unsigned short
vec_or(vector signed short a1,vector unsigned short a2)2969 vec_or (vector signed short a1, vector unsigned short a2)
2970 {
2971   return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2972 }
2973 
2974 inline vector unsigned short
vec_or(vector unsigned short a1,vector signed short a2)2975 vec_or (vector unsigned short a1, vector signed short a2)
2976 {
2977   return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2978 }
2979 
2980 inline vector unsigned short
vec_or(vector unsigned short a1,vector unsigned short a2)2981 vec_or (vector unsigned short a1, vector unsigned short a2)
2982 {
2983   return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2984 }
2985 
2986 inline vector signed char
vec_or(vector signed char a1,vector signed char a2)2987 vec_or (vector signed char a1, vector signed char a2)
2988 {
2989   return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2990 }
2991 
2992 inline vector unsigned char
vec_or(vector signed char a1,vector unsigned char a2)2993 vec_or (vector signed char a1, vector unsigned char a2)
2994 {
2995   return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
2996 }
2997 
2998 inline vector unsigned char
vec_or(vector unsigned char a1,vector signed char a2)2999 vec_or (vector unsigned char a1, vector signed char a2)
3000 {
3001   return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3002 }
3003 
3004 inline vector unsigned char
vec_or(vector unsigned char a1,vector unsigned char a2)3005 vec_or (vector unsigned char a1, vector unsigned char a2)
3006 {
3007   return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3008 }
3009 
3010 /* vec_pack */
3011 
3012 inline vector signed char
vec_pack(vector signed short a1,vector signed short a2)3013 vec_pack (vector signed short a1, vector signed short a2)
3014 {
3015   return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3016 }
3017 
3018 inline vector unsigned char
vec_pack(vector unsigned short a1,vector unsigned short a2)3019 vec_pack (vector unsigned short a1, vector unsigned short a2)
3020 {
3021   return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3022 }
3023 
3024 inline vector signed short
vec_pack(vector signed int a1,vector signed int a2)3025 vec_pack (vector signed int a1, vector signed int a2)
3026 {
3027   return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3028 }
3029 
3030 inline vector unsigned short
vec_pack(vector unsigned int a1,vector unsigned int a2)3031 vec_pack (vector unsigned int a1, vector unsigned int a2)
3032 {
3033   return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3034 }
3035 
3036 /* vec_vpkuwum */
3037 
3038 inline vector signed short
vec_vpkuwum(vector signed int a1,vector signed int a2)3039 vec_vpkuwum (vector signed int a1, vector signed int a2)
3040 {
3041   return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3042 }
3043 
3044 inline vector unsigned short
vec_vpkuwum(vector unsigned int a1,vector unsigned int a2)3045 vec_vpkuwum (vector unsigned int a1, vector unsigned int a2)
3046 {
3047   return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3048 }
3049 
3050 /* vec_vpkuhum */
3051 
3052 inline vector signed char
vec_vpkuhum(vector signed short a1,vector signed short a2)3053 vec_vpkuhum (vector signed short a1, vector signed short a2)
3054 {
3055   return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3056 }
3057 
3058 inline vector unsigned char
vec_vpkuhum(vector unsigned short a1,vector unsigned short a2)3059 vec_vpkuhum (vector unsigned short a1, vector unsigned short a2)
3060 {
3061   return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3062 }
3063 
3064 /* vec_packpx */
3065 
3066 inline vector unsigned short
vec_packpx(vector unsigned int a1,vector unsigned int a2)3067 vec_packpx (vector unsigned int a1, vector unsigned int a2)
3068 {
3069   return (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2);
3070 }
3071 
3072 /* vec_packs */
3073 
3074 inline vector unsigned char
vec_packs(vector unsigned short a1,vector unsigned short a2)3075 vec_packs (vector unsigned short a1, vector unsigned short a2)
3076 {
3077   return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3078 }
3079 
3080 inline vector signed char
vec_packs(vector signed short a1,vector signed short a2)3081 vec_packs (vector signed short a1, vector signed short a2)
3082 {
3083   return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
3084 }
3085 
3086 inline vector unsigned short
vec_packs(vector unsigned int a1,vector unsigned int a2)3087 vec_packs (vector unsigned int a1, vector unsigned int a2)
3088 {
3089   return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3090 }
3091 
3092 inline vector signed short
vec_packs(vector signed int a1,vector signed int a2)3093 vec_packs (vector signed int a1, vector signed int a2)
3094 {
3095   return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
3096 }
3097 
3098 /* vec_vpkswss */
3099 
3100 inline vector signed short
vec_vpkswss(vector signed int a1,vector signed int a2)3101 vec_vpkswss (vector signed int a1, vector signed int a2)
3102 {
3103   return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
3104 }
3105 
3106 /* vec_vpkuwus */
3107 
3108 inline vector unsigned short
vec_vpkuwus(vector unsigned int a1,vector unsigned int a2)3109 vec_vpkuwus (vector unsigned int a1, vector unsigned int a2)
3110 {
3111   return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3112 }
3113 
3114 /* vec_vpkshss */
3115 
3116 inline vector signed char
vec_vpkshss(vector signed short a1,vector signed short a2)3117 vec_vpkshss (vector signed short a1, vector signed short a2)
3118 {
3119   return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
3120 }
3121 
3122 /* vec_vpkuhus */
3123 
3124 inline vector unsigned char
vec_vpkuhus(vector unsigned short a1,vector unsigned short a2)3125 vec_vpkuhus (vector unsigned short a1, vector unsigned short a2)
3126 {
3127   return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3128 }
3129 
3130 /* vec_packsu */
3131 
3132 inline vector unsigned char
vec_packsu(vector unsigned short a1,vector unsigned short a2)3133 vec_packsu (vector unsigned short a1, vector unsigned short a2)
3134 {
3135   return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3136 }
3137 
3138 inline vector unsigned char
vec_packsu(vector signed short a1,vector signed short a2)3139 vec_packsu (vector signed short a1, vector signed short a2)
3140 {
3141   return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
3142 }
3143 
3144 inline vector unsigned short
vec_packsu(vector unsigned int a1,vector unsigned int a2)3145 vec_packsu (vector unsigned int a1, vector unsigned int a2)
3146 {
3147   return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3148 }
3149 
3150 inline vector unsigned short
vec_packsu(vector signed int a1,vector signed int a2)3151 vec_packsu (vector signed int a1, vector signed int a2)
3152 {
3153   return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
3154 }
3155 
3156 /* vec_vpkswus */
3157 
3158 inline vector unsigned short
vec_vpkswus(vector signed int a1,vector signed int a2)3159 vec_vpkswus (vector signed int a1, vector signed int a2)
3160 {
3161   return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
3162 }
3163 
3164 /* vec_vpkshus */
3165 
3166 inline vector unsigned char
vec_vpkshus(vector signed short a1,vector signed short a2)3167 vec_vpkshus (vector signed short a1, vector signed short a2)
3168 {
3169   return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
3170 }
3171 
3172 /* vec_perm */
3173 
3174 inline vector float
vec_perm(vector float a1,vector float a2,vector unsigned char a3)3175 vec_perm (vector float a1, vector float a2, vector unsigned char a3)
3176 {
3177   return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3178 }
3179 
3180 inline vector signed int
vec_perm(vector signed int a1,vector signed int a2,vector unsigned char a3)3181 vec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3)
3182 {
3183   return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3184 }
3185 
3186 inline vector unsigned int
vec_perm(vector unsigned int a1,vector unsigned int a2,vector unsigned char a3)3187 vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3)
3188 {
3189   return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3190 }
3191 
3192 inline vector signed short
vec_perm(vector signed short a1,vector signed short a2,vector unsigned char a3)3193 vec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3)
3194 {
3195   return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3196 }
3197 
3198 inline vector unsigned short
vec_perm(vector unsigned short a1,vector unsigned short a2,vector unsigned char a3)3199 vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3)
3200 {
3201   return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3202 }
3203 
3204 inline vector signed char
vec_perm(vector signed char a1,vector signed char a2,vector unsigned char a3)3205 vec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3)
3206 {
3207   return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3208 }
3209 
3210 inline vector unsigned char
vec_perm(vector unsigned char a1,vector unsigned char a2,vector unsigned char a3)3211 vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
3212 {
3213   return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3214 }
3215 
3216 /* vec_re */
3217 
3218 inline vector float
vec_re(vector float a1)3219 vec_re (vector float a1)
3220 {
3221   return (vector float) __builtin_altivec_vrefp ((vector float) a1);
3222 }
3223 
3224 /* vec_rl */
3225 
3226 inline vector signed char
vec_rl(vector signed char a1,vector unsigned char a2)3227 vec_rl (vector signed char a1, vector unsigned char a2)
3228 {
3229   return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3230 }
3231 
3232 inline vector unsigned char
vec_rl(vector unsigned char a1,vector unsigned char a2)3233 vec_rl (vector unsigned char a1, vector unsigned char a2)
3234 {
3235   return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3236 }
3237 
3238 inline vector signed short
vec_rl(vector signed short a1,vector unsigned short a2)3239 vec_rl (vector signed short a1, vector unsigned short a2)
3240 {
3241   return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3242 }
3243 
3244 inline vector unsigned short
vec_rl(vector unsigned short a1,vector unsigned short a2)3245 vec_rl (vector unsigned short a1, vector unsigned short a2)
3246 {
3247   return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3248 }
3249 
3250 inline vector signed int
vec_rl(vector signed int a1,vector unsigned int a2)3251 vec_rl (vector signed int a1, vector unsigned int a2)
3252 {
3253   return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3254 }
3255 
3256 inline vector unsigned int
vec_rl(vector unsigned int a1,vector unsigned int a2)3257 vec_rl (vector unsigned int a1, vector unsigned int a2)
3258 {
3259   return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3260 }
3261 
3262 /* vec_vrlw */
3263 
3264 inline vector signed int
vec_vrlw(vector signed int a1,vector unsigned int a2)3265 vec_vrlw (vector signed int a1, vector unsigned int a2)
3266 {
3267   return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3268 }
3269 
3270 inline vector unsigned int
vec_vrlw(vector unsigned int a1,vector unsigned int a2)3271 vec_vrlw (vector unsigned int a1, vector unsigned int a2)
3272 {
3273   return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3274 }
3275 
3276 /* vec_vrlh */
3277 
3278 inline vector signed short
vec_vrlh(vector signed short a1,vector unsigned short a2)3279 vec_vrlh (vector signed short a1, vector unsigned short a2)
3280 {
3281   return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3282 }
3283 
3284 inline vector unsigned short
vec_vrlh(vector unsigned short a1,vector unsigned short a2)3285 vec_vrlh (vector unsigned short a1, vector unsigned short a2)
3286 {
3287   return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3288 }
3289 
3290 /* vec_vrlb */
3291 
3292 inline vector signed char
vec_vrlb(vector signed char a1,vector unsigned char a2)3293 vec_vrlb (vector signed char a1, vector unsigned char a2)
3294 {
3295   return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3296 }
3297 
3298 inline vector unsigned char
vec_vrlb(vector unsigned char a1,vector unsigned char a2)3299 vec_vrlb (vector unsigned char a1, vector unsigned char a2)
3300 {
3301   return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3302 }
3303 
3304 /* vec_round */
3305 
3306 inline vector float
vec_round(vector float a1)3307 vec_round (vector float a1)
3308 {
3309   return (vector float) __builtin_altivec_vrfin ((vector float) a1);
3310 }
3311 
3312 /* vec_rsqrte */
3313 
3314 inline vector float
vec_rsqrte(vector float a1)3315 vec_rsqrte (vector float a1)
3316 {
3317   return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1);
3318 }
3319 
3320 /* vec_sel */
3321 
3322 inline vector float
vec_sel(vector float a1,vector float a2,vector signed int a3)3323 vec_sel (vector float a1, vector float a2, vector signed int a3)
3324 {
3325   return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3326 }
3327 
3328 inline vector float
vec_sel(vector float a1,vector float a2,vector unsigned int a3)3329 vec_sel (vector float a1, vector float a2, vector unsigned int a3)
3330 {
3331   return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3332 }
3333 
3334 inline vector signed int
vec_sel(vector signed int a1,vector signed int a2,vector signed int a3)3335 vec_sel (vector signed int a1, vector signed int a2, vector signed int a3)
3336 {
3337   return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3338 }
3339 
3340 inline vector signed int
vec_sel(vector signed int a1,vector signed int a2,vector unsigned int a3)3341 vec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3)
3342 {
3343   return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3344 }
3345 
3346 inline vector unsigned int
vec_sel(vector unsigned int a1,vector unsigned int a2,vector signed int a3)3347 vec_sel (vector unsigned int a1, vector unsigned int a2, vector signed int a3)
3348 {
3349   return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3350 }
3351 
3352 inline vector unsigned int
vec_sel(vector unsigned int a1,vector unsigned int a2,vector unsigned int a3)3353 vec_sel (vector unsigned int a1, vector unsigned int a2, vector unsigned int a3)
3354 {
3355   return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3356 }
3357 
3358 inline vector signed short
vec_sel(vector signed short a1,vector signed short a2,vector signed short a3)3359 vec_sel (vector signed short a1, vector signed short a2, vector signed short a3)
3360 {
3361   return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3362 }
3363 
3364 inline vector signed short
vec_sel(vector signed short a1,vector signed short a2,vector unsigned short a3)3365 vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3)
3366 {
3367   return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3368 }
3369 
3370 inline vector unsigned short
vec_sel(vector unsigned short a1,vector unsigned short a2,vector signed short a3)3371 vec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3)
3372 {
3373   return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3374 }
3375 
3376 inline vector unsigned short
vec_sel(vector unsigned short a1,vector unsigned short a2,vector unsigned short a3)3377 vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
3378 {
3379   return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3380 }
3381 
3382 inline vector signed char
vec_sel(vector signed char a1,vector signed char a2,vector signed char a3)3383 vec_sel (vector signed char a1, vector signed char a2, vector signed char a3)
3384 {
3385   return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3386 }
3387 
3388 inline vector signed char
vec_sel(vector signed char a1,vector signed char a2,vector unsigned char a3)3389 vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3)
3390 {
3391   return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3392 }
3393 
3394 inline vector unsigned char
vec_sel(vector unsigned char a1,vector unsigned char a2,vector signed char a3)3395 vec_sel (vector unsigned char a1, vector unsigned char a2, vector signed char a3)
3396 {
3397   return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3398 }
3399 
3400 inline vector unsigned char
vec_sel(vector unsigned char a1,vector unsigned char a2,vector unsigned char a3)3401 vec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
3402 {
3403   return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3404 }
3405 
3406 /* vec_sl */
3407 
3408 inline vector signed char
vec_sl(vector signed char a1,vector unsigned char a2)3409 vec_sl (vector signed char a1, vector unsigned char a2)
3410 {
3411   return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3412 }
3413 
3414 inline vector unsigned char
vec_sl(vector unsigned char a1,vector unsigned char a2)3415 vec_sl (vector unsigned char a1, vector unsigned char a2)
3416 {
3417   return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3418 }
3419 
3420 inline vector signed short
vec_sl(vector signed short a1,vector unsigned short a2)3421 vec_sl (vector signed short a1, vector unsigned short a2)
3422 {
3423   return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3424 }
3425 
3426 inline vector unsigned short
vec_sl(vector unsigned short a1,vector unsigned short a2)3427 vec_sl (vector unsigned short a1, vector unsigned short a2)
3428 {
3429   return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3430 }
3431 
3432 inline vector signed int
vec_sl(vector signed int a1,vector unsigned int a2)3433 vec_sl (vector signed int a1, vector unsigned int a2)
3434 {
3435   return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3436 }
3437 
3438 inline vector unsigned int
vec_sl(vector unsigned int a1,vector unsigned int a2)3439 vec_sl (vector unsigned int a1, vector unsigned int a2)
3440 {
3441   return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3442 }
3443 
3444 /* vec_vslw */
3445 
3446 inline vector signed int
vec_vslw(vector signed int a1,vector unsigned int a2)3447 vec_vslw (vector signed int a1, vector unsigned int a2)
3448 {
3449   return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3450 }
3451 
3452 inline vector unsigned int
vec_vslw(vector unsigned int a1,vector unsigned int a2)3453 vec_vslw (vector unsigned int a1, vector unsigned int a2)
3454 {
3455   return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
3456 }
3457 
3458 /* vec_vslh */
3459 
3460 inline vector signed short
vec_vslh(vector signed short a1,vector unsigned short a2)3461 vec_vslh (vector signed short a1, vector unsigned short a2)
3462 {
3463   return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3464 }
3465 
3466 inline vector unsigned short
vec_vslh(vector unsigned short a1,vector unsigned short a2)3467 vec_vslh (vector unsigned short a1, vector unsigned short a2)
3468 {
3469   return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
3470 }
3471 
3472 /* vec_vslb */
3473 
3474 inline vector signed char
vec_vslb(vector signed char a1,vector unsigned char a2)3475 vec_vslb (vector signed char a1, vector unsigned char a2)
3476 {
3477   return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3478 }
3479 
3480 inline vector unsigned char
vec_vslb(vector unsigned char a1,vector unsigned char a2)3481 vec_vslb (vector unsigned char a1, vector unsigned char a2)
3482 {
3483   return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
3484 }
3485 
3486 /* vec_sld */
3487 
3488 inline vector float
vec_sld(vector float a1,vector float a2,const char a3)3489 vec_sld (vector float a1, vector float a2, const char a3)
3490 {
3491   return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3492 }
3493 
3494 inline vector signed int
vec_sld(vector signed int a1,vector signed int a2,const char a3)3495 vec_sld (vector signed int a1, vector signed int a2, const char a3)
3496 {
3497   return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3498 }
3499 
3500 inline vector unsigned int
vec_sld(vector unsigned int a1,vector unsigned int a2,const char a3)3501 vec_sld (vector unsigned int a1, vector unsigned int a2, const char a3)
3502 {
3503   return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3504 }
3505 
3506 inline vector signed short
vec_sld(vector signed short a1,vector signed short a2,const char a3)3507 vec_sld (vector signed short a1, vector signed short a2, const char a3)
3508 {
3509   return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3510 }
3511 
3512 inline vector unsigned short
vec_sld(vector unsigned short a1,vector unsigned short a2,const char a3)3513 vec_sld (vector unsigned short a1, vector unsigned short a2, const char a3)
3514 {
3515   return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3516 }
3517 
3518 inline vector signed char
vec_sld(vector signed char a1,vector signed char a2,const char a3)3519 vec_sld (vector signed char a1, vector signed char a2, const char a3)
3520 {
3521   return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3522 }
3523 
3524 inline vector unsigned char
vec_sld(vector unsigned char a1,vector unsigned char a2,const char a3)3525 vec_sld (vector unsigned char a1, vector unsigned char a2, const char a3)
3526 {
3527   return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
3528 }
3529 
3530 /* vec_sll */
3531 
3532 inline vector signed int
vec_sll(vector signed int a1,vector unsigned int a2)3533 vec_sll (vector signed int a1, vector unsigned int a2)
3534 {
3535   return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3536 }
3537 
3538 inline vector signed int
vec_sll(vector signed int a1,vector unsigned short a2)3539 vec_sll (vector signed int a1, vector unsigned short a2)
3540 {
3541   return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3542 }
3543 
3544 inline vector signed int
vec_sll(vector signed int a1,vector unsigned char a2)3545 vec_sll (vector signed int a1, vector unsigned char a2)
3546 {
3547   return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3548 }
3549 
3550 inline vector unsigned int
vec_sll(vector unsigned int a1,vector unsigned int a2)3551 vec_sll (vector unsigned int a1, vector unsigned int a2)
3552 {
3553   return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3554 }
3555 
3556 inline vector unsigned int
vec_sll(vector unsigned int a1,vector unsigned short a2)3557 vec_sll (vector unsigned int a1, vector unsigned short a2)
3558 {
3559   return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3560 }
3561 
3562 inline vector unsigned int
vec_sll(vector unsigned int a1,vector unsigned char a2)3563 vec_sll (vector unsigned int a1, vector unsigned char a2)
3564 {
3565   return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3566 }
3567 
3568 inline vector signed short
vec_sll(vector signed short a1,vector unsigned int a2)3569 vec_sll (vector signed short a1, vector unsigned int a2)
3570 {
3571   return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3572 }
3573 
3574 inline vector signed short
vec_sll(vector signed short a1,vector unsigned short a2)3575 vec_sll (vector signed short a1, vector unsigned short a2)
3576 {
3577   return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3578 }
3579 
3580 inline vector signed short
vec_sll(vector signed short a1,vector unsigned char a2)3581 vec_sll (vector signed short a1, vector unsigned char a2)
3582 {
3583   return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3584 }
3585 
3586 inline vector unsigned short
vec_sll(vector unsigned short a1,vector unsigned int a2)3587 vec_sll (vector unsigned short a1, vector unsigned int a2)
3588 {
3589   return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3590 }
3591 
3592 inline vector unsigned short
vec_sll(vector unsigned short a1,vector unsigned short a2)3593 vec_sll (vector unsigned short a1, vector unsigned short a2)
3594 {
3595   return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3596 }
3597 
3598 inline vector unsigned short
vec_sll(vector unsigned short a1,vector unsigned char a2)3599 vec_sll (vector unsigned short a1, vector unsigned char a2)
3600 {
3601   return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3602 }
3603 
3604 inline vector signed char
vec_sll(vector signed char a1,vector unsigned int a2)3605 vec_sll (vector signed char a1, vector unsigned int a2)
3606 {
3607   return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3608 }
3609 
3610 inline vector signed char
vec_sll(vector signed char a1,vector unsigned short a2)3611 vec_sll (vector signed char a1, vector unsigned short a2)
3612 {
3613   return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3614 }
3615 
3616 inline vector signed char
vec_sll(vector signed char a1,vector unsigned char a2)3617 vec_sll (vector signed char a1, vector unsigned char a2)
3618 {
3619   return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3620 }
3621 
3622 inline vector unsigned char
vec_sll(vector unsigned char a1,vector unsigned int a2)3623 vec_sll (vector unsigned char a1, vector unsigned int a2)
3624 {
3625   return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3626 }
3627 
3628 inline vector unsigned char
vec_sll(vector unsigned char a1,vector unsigned short a2)3629 vec_sll (vector unsigned char a1, vector unsigned short a2)
3630 {
3631   return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3632 }
3633 
3634 inline vector unsigned char
vec_sll(vector unsigned char a1,vector unsigned char a2)3635 vec_sll (vector unsigned char a1, vector unsigned char a2)
3636 {
3637   return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
3638 }
3639 
3640 /* vec_slo */
3641 
3642 inline vector float
vec_slo(vector float a1,vector signed char a2)3643 vec_slo (vector float a1, vector signed char a2)
3644 {
3645   return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3646 }
3647 
3648 inline vector float
vec_slo(vector float a1,vector unsigned char a2)3649 vec_slo (vector float a1, vector unsigned char a2)
3650 {
3651   return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3652 }
3653 
3654 inline vector signed int
vec_slo(vector signed int a1,vector signed char a2)3655 vec_slo (vector signed int a1, vector signed char a2)
3656 {
3657   return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3658 }
3659 
3660 inline vector signed int
vec_slo(vector signed int a1,vector unsigned char a2)3661 vec_slo (vector signed int a1, vector unsigned char a2)
3662 {
3663   return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3664 }
3665 
3666 inline vector unsigned int
vec_slo(vector unsigned int a1,vector signed char a2)3667 vec_slo (vector unsigned int a1, vector signed char a2)
3668 {
3669   return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3670 }
3671 
3672 inline vector unsigned int
vec_slo(vector unsigned int a1,vector unsigned char a2)3673 vec_slo (vector unsigned int a1, vector unsigned char a2)
3674 {
3675   return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3676 }
3677 
3678 inline vector signed short
vec_slo(vector signed short a1,vector signed char a2)3679 vec_slo (vector signed short a1, vector signed char a2)
3680 {
3681   return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3682 }
3683 
3684 inline vector signed short
vec_slo(vector signed short a1,vector unsigned char a2)3685 vec_slo (vector signed short a1, vector unsigned char a2)
3686 {
3687   return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3688 }
3689 
3690 inline vector unsigned short
vec_slo(vector unsigned short a1,vector signed char a2)3691 vec_slo (vector unsigned short a1, vector signed char a2)
3692 {
3693   return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3694 }
3695 
3696 inline vector unsigned short
vec_slo(vector unsigned short a1,vector unsigned char a2)3697 vec_slo (vector unsigned short a1, vector unsigned char a2)
3698 {
3699   return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3700 }
3701 
3702 inline vector signed char
vec_slo(vector signed char a1,vector signed char a2)3703 vec_slo (vector signed char a1, vector signed char a2)
3704 {
3705   return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3706 }
3707 
3708 inline vector signed char
vec_slo(vector signed char a1,vector unsigned char a2)3709 vec_slo (vector signed char a1, vector unsigned char a2)
3710 {
3711   return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3712 }
3713 
3714 inline vector unsigned char
vec_slo(vector unsigned char a1,vector signed char a2)3715 vec_slo (vector unsigned char a1, vector signed char a2)
3716 {
3717   return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3718 }
3719 
3720 inline vector unsigned char
vec_slo(vector unsigned char a1,vector unsigned char a2)3721 vec_slo (vector unsigned char a1, vector unsigned char a2)
3722 {
3723   return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
3724 }
3725 
3726 /* vec_splat */
3727 
3728 inline vector signed char
vec_splat(vector signed char a1,const char a2)3729 vec_splat (vector signed char a1, const char a2)
3730 {
3731   return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1,  a2);
3732 }
3733 
3734 inline vector unsigned char
vec_splat(vector unsigned char a1,const char a2)3735 vec_splat (vector unsigned char a1, const char a2)
3736 {
3737   return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1,  a2);
3738 }
3739 
3740 inline vector signed short
vec_splat(vector signed short a1,const char a2)3741 vec_splat (vector signed short a1, const char a2)
3742 {
3743   return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1,  a2);
3744 }
3745 
3746 inline vector unsigned short
vec_splat(vector unsigned short a1,const char a2)3747 vec_splat (vector unsigned short a1, const char a2)
3748 {
3749   return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1,  a2);
3750 }
3751 
3752 inline vector float
vec_splat(vector float a1,const char a2)3753 vec_splat (vector float a1, const char a2)
3754 {
3755   return (vector float) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
3756 }
3757 
3758 inline vector signed int
vec_splat(vector signed int a1,const char a2)3759 vec_splat (vector signed int a1, const char a2)
3760 {
3761   return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
3762 }
3763 
3764 inline vector unsigned int
vec_splat(vector unsigned int a1,const char a2)3765 vec_splat (vector unsigned int a1, const char a2)
3766 {
3767   return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
3768 }
3769 
3770 /* vec_vspltw */
3771 
3772 inline vector float
vec_vspltw(vector float a1,const char a2)3773 vec_vspltw (vector float a1, const char a2)
3774 {
3775   return (vector float) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
3776 }
3777 
3778 inline vector signed int
vec_vspltw(vector signed int a1,const char a2)3779 vec_vspltw (vector signed int a1, const char a2)
3780 {
3781   return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
3782 }
3783 
3784 inline vector unsigned int
vec_vspltw(vector unsigned int a1,const char a2)3785 vec_vspltw (vector unsigned int a1, const char a2)
3786 {
3787   return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1,  a2);
3788 }
3789 
3790 /* vec_vsplth */
3791 
3792 inline vector signed short
vec_vsplth(vector signed short a1,const char a2)3793 vec_vsplth (vector signed short a1, const char a2)
3794 {
3795   return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1,  a2);
3796 }
3797 
3798 inline vector unsigned short
vec_vsplth(vector unsigned short a1,const char a2)3799 vec_vsplth (vector unsigned short a1, const char a2)
3800 {
3801   return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1,  a2);
3802 }
3803 
3804 /* vec_vspltb */
3805 
3806 inline vector signed char
vec_vspltb(vector signed char a1,const char a2)3807 vec_vspltb (vector signed char a1, const char a2)
3808 {
3809   return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1,  a2);
3810 }
3811 
3812 inline vector unsigned char
vec_vspltb(vector unsigned char a1,const char a2)3813 vec_vspltb (vector unsigned char a1, const char a2)
3814 {
3815   return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1,  a2);
3816 }
3817 
3818 /* vec_splat_s8 */
3819 
3820 inline vector signed char
vec_splat_s8(const char a1)3821 vec_splat_s8 (const char a1)
3822 {
3823   return (vector signed char) __builtin_altivec_vspltisb (a1);
3824 }
3825 
3826 /* vec_splat_s16 */
3827 
3828 inline vector signed short
vec_splat_s16(const char a1)3829 vec_splat_s16 (const char a1)
3830 {
3831   return (vector signed short) __builtin_altivec_vspltish (a1);
3832 }
3833 
3834 /* vec_splat_s32 */
3835 
3836 inline vector signed int
vec_splat_s32(const char a1)3837 vec_splat_s32 (const char a1)
3838 {
3839   return (vector signed int) __builtin_altivec_vspltisw (a1);
3840 }
3841 
3842 /* vec_splat_u8 */
3843 
3844 inline vector unsigned char
vec_splat_u8(const char a1)3845 vec_splat_u8 (const char a1)
3846 {
3847   return (vector unsigned char) __builtin_altivec_vspltisb (a1);
3848 }
3849 
3850 /* vec_splat_u16 */
3851 
3852 inline vector unsigned short
vec_splat_u16(const char a1)3853 vec_splat_u16 (const char a1)
3854 {
3855   return (vector unsigned short) __builtin_altivec_vspltish (a1);
3856 }
3857 
3858 /* vec_splat_u32 */
3859 
3860 inline vector unsigned int
vec_splat_u32(const char a1)3861 vec_splat_u32 (const char a1)
3862 {
3863   return (vector unsigned int) __builtin_altivec_vspltisw (a1);
3864 }
3865 
3866 /* vec_sr */
3867 
3868 inline vector signed char
vec_sr(vector signed char a1,vector unsigned char a2)3869 vec_sr (vector signed char a1, vector unsigned char a2)
3870 {
3871   return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3872 }
3873 
3874 inline vector unsigned char
vec_sr(vector unsigned char a1,vector unsigned char a2)3875 vec_sr (vector unsigned char a1, vector unsigned char a2)
3876 {
3877   return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3878 }
3879 
3880 inline vector signed short
vec_sr(vector signed short a1,vector unsigned short a2)3881 vec_sr (vector signed short a1, vector unsigned short a2)
3882 {
3883   return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3884 }
3885 
3886 inline vector unsigned short
vec_sr(vector unsigned short a1,vector unsigned short a2)3887 vec_sr (vector unsigned short a1, vector unsigned short a2)
3888 {
3889   return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3890 }
3891 
3892 inline vector signed int
vec_sr(vector signed int a1,vector unsigned int a2)3893 vec_sr (vector signed int a1, vector unsigned int a2)
3894 {
3895   return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3896 }
3897 
3898 inline vector unsigned int
vec_sr(vector unsigned int a1,vector unsigned int a2)3899 vec_sr (vector unsigned int a1, vector unsigned int a2)
3900 {
3901   return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3902 }
3903 
3904 /* vec_vsrw */
3905 
3906 inline vector signed int
vec_vsrw(vector signed int a1,vector unsigned int a2)3907 vec_vsrw (vector signed int a1, vector unsigned int a2)
3908 {
3909   return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3910 }
3911 
3912 inline vector unsigned int
vec_vsrw(vector unsigned int a1,vector unsigned int a2)3913 vec_vsrw (vector unsigned int a1, vector unsigned int a2)
3914 {
3915   return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
3916 }
3917 
3918 /* vec_vsrh */
3919 
3920 inline vector signed short
vec_vsrh(vector signed short a1,vector unsigned short a2)3921 vec_vsrh (vector signed short a1, vector unsigned short a2)
3922 {
3923   return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3924 }
3925 
3926 inline vector unsigned short
vec_vsrh(vector unsigned short a1,vector unsigned short a2)3927 vec_vsrh (vector unsigned short a1, vector unsigned short a2)
3928 {
3929   return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
3930 }
3931 
3932 /* vec_vsrb */
3933 
3934 inline vector signed char
vec_vsrb(vector signed char a1,vector unsigned char a2)3935 vec_vsrb (vector signed char a1, vector unsigned char a2)
3936 {
3937   return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3938 }
3939 
3940 inline vector unsigned char
vec_vsrb(vector unsigned char a1,vector unsigned char a2)3941 vec_vsrb (vector unsigned char a1, vector unsigned char a2)
3942 {
3943   return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
3944 }
3945 
3946 /* vec_sra */
3947 
3948 inline vector signed char
vec_sra(vector signed char a1,vector unsigned char a2)3949 vec_sra (vector signed char a1, vector unsigned char a2)
3950 {
3951   return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
3952 }
3953 
3954 inline vector unsigned char
vec_sra(vector unsigned char a1,vector unsigned char a2)3955 vec_sra (vector unsigned char a1, vector unsigned char a2)
3956 {
3957   return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
3958 }
3959 
3960 inline vector signed short
vec_sra(vector signed short a1,vector unsigned short a2)3961 vec_sra (vector signed short a1, vector unsigned short a2)
3962 {
3963   return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
3964 }
3965 
3966 inline vector unsigned short
vec_sra(vector unsigned short a1,vector unsigned short a2)3967 vec_sra (vector unsigned short a1, vector unsigned short a2)
3968 {
3969   return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
3970 }
3971 
3972 inline vector signed int
vec_sra(vector signed int a1,vector unsigned int a2)3973 vec_sra (vector signed int a1, vector unsigned int a2)
3974 {
3975   return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3976 }
3977 
3978 inline vector unsigned int
vec_sra(vector unsigned int a1,vector unsigned int a2)3979 vec_sra (vector unsigned int a1, vector unsigned int a2)
3980 {
3981   return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3982 }
3983 
3984 /* vec_vsraw */
3985 
3986 inline vector signed int
vec_vsraw(vector signed int a1,vector unsigned int a2)3987 vec_vsraw (vector signed int a1, vector unsigned int a2)
3988 {
3989   return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3990 }
3991 
3992 inline vector unsigned int
vec_vsraw(vector unsigned int a1,vector unsigned int a2)3993 vec_vsraw (vector unsigned int a1, vector unsigned int a2)
3994 {
3995   return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
3996 }
3997 
3998 /* vec_vsrah */
3999 
4000 inline vector signed short
vec_vsrah(vector signed short a1,vector unsigned short a2)4001 vec_vsrah (vector signed short a1, vector unsigned short a2)
4002 {
4003   return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
4004 }
4005 
4006 inline vector unsigned short
vec_vsrah(vector unsigned short a1,vector unsigned short a2)4007 vec_vsrah (vector unsigned short a1, vector unsigned short a2)
4008 {
4009   return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
4010 }
4011 
4012 /* vec_vsrab */
4013 
4014 inline vector signed char
vec_vsrab(vector signed char a1,vector unsigned char a2)4015 vec_vsrab (vector signed char a1, vector unsigned char a2)
4016 {
4017   return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
4018 }
4019 
4020 inline vector unsigned char
vec_vsrab(vector unsigned char a1,vector unsigned char a2)4021 vec_vsrab (vector unsigned char a1, vector unsigned char a2)
4022 {
4023   return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
4024 }
4025 
4026 /* vec_srl */
4027 
4028 inline vector signed int
vec_srl(vector signed int a1,vector unsigned int a2)4029 vec_srl (vector signed int a1, vector unsigned int a2)
4030 {
4031   return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4032 }
4033 
4034 inline vector signed int
vec_srl(vector signed int a1,vector unsigned short a2)4035 vec_srl (vector signed int a1, vector unsigned short a2)
4036 {
4037   return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4038 }
4039 
4040 inline vector signed int
vec_srl(vector signed int a1,vector unsigned char a2)4041 vec_srl (vector signed int a1, vector unsigned char a2)
4042 {
4043   return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4044 }
4045 
4046 inline vector unsigned int
vec_srl(vector unsigned int a1,vector unsigned int a2)4047 vec_srl (vector unsigned int a1, vector unsigned int a2)
4048 {
4049   return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4050 }
4051 
4052 inline vector unsigned int
vec_srl(vector unsigned int a1,vector unsigned short a2)4053 vec_srl (vector unsigned int a1, vector unsigned short a2)
4054 {
4055   return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4056 }
4057 
4058 inline vector unsigned int
vec_srl(vector unsigned int a1,vector unsigned char a2)4059 vec_srl (vector unsigned int a1, vector unsigned char a2)
4060 {
4061   return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4062 }
4063 
4064 inline vector signed short
vec_srl(vector signed short a1,vector unsigned int a2)4065 vec_srl (vector signed short a1, vector unsigned int a2)
4066 {
4067   return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4068 }
4069 
4070 inline vector signed short
vec_srl(vector signed short a1,vector unsigned short a2)4071 vec_srl (vector signed short a1, vector unsigned short a2)
4072 {
4073   return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4074 }
4075 
4076 inline vector signed short
vec_srl(vector signed short a1,vector unsigned char a2)4077 vec_srl (vector signed short a1, vector unsigned char a2)
4078 {
4079   return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4080 }
4081 
4082 inline vector unsigned short
vec_srl(vector unsigned short a1,vector unsigned int a2)4083 vec_srl (vector unsigned short a1, vector unsigned int a2)
4084 {
4085   return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4086 }
4087 
4088 inline vector unsigned short
vec_srl(vector unsigned short a1,vector unsigned short a2)4089 vec_srl (vector unsigned short a1, vector unsigned short a2)
4090 {
4091   return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4092 }
4093 
4094 inline vector unsigned short
vec_srl(vector unsigned short a1,vector unsigned char a2)4095 vec_srl (vector unsigned short a1, vector unsigned char a2)
4096 {
4097   return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4098 }
4099 
4100 inline vector signed char
vec_srl(vector signed char a1,vector unsigned int a2)4101 vec_srl (vector signed char a1, vector unsigned int a2)
4102 {
4103   return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4104 }
4105 
4106 inline vector signed char
vec_srl(vector signed char a1,vector unsigned short a2)4107 vec_srl (vector signed char a1, vector unsigned short a2)
4108 {
4109   return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4110 }
4111 
4112 inline vector signed char
vec_srl(vector signed char a1,vector unsigned char a2)4113 vec_srl (vector signed char a1, vector unsigned char a2)
4114 {
4115   return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4116 }
4117 
4118 inline vector unsigned char
vec_srl(vector unsigned char a1,vector unsigned int a2)4119 vec_srl (vector unsigned char a1, vector unsigned int a2)
4120 {
4121   return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4122 }
4123 
4124 inline vector unsigned char
vec_srl(vector unsigned char a1,vector unsigned short a2)4125 vec_srl (vector unsigned char a1, vector unsigned short a2)
4126 {
4127   return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4128 }
4129 
4130 inline vector unsigned char
vec_srl(vector unsigned char a1,vector unsigned char a2)4131 vec_srl (vector unsigned char a1, vector unsigned char a2)
4132 {
4133   return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
4134 }
4135 
4136 /* vec_sro */
4137 
4138 inline vector float
vec_sro(vector float a1,vector signed char a2)4139 vec_sro (vector float a1, vector signed char a2)
4140 {
4141   return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4142 }
4143 
4144 inline vector float
vec_sro(vector float a1,vector unsigned char a2)4145 vec_sro (vector float a1, vector unsigned char a2)
4146 {
4147   return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4148 }
4149 
4150 inline vector signed int
vec_sro(vector signed int a1,vector signed char a2)4151 vec_sro (vector signed int a1, vector signed char a2)
4152 {
4153   return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4154 }
4155 
4156 inline vector signed int
vec_sro(vector signed int a1,vector unsigned char a2)4157 vec_sro (vector signed int a1, vector unsigned char a2)
4158 {
4159   return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4160 }
4161 
4162 inline vector unsigned int
vec_sro(vector unsigned int a1,vector signed char a2)4163 vec_sro (vector unsigned int a1, vector signed char a2)
4164 {
4165   return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4166 }
4167 
4168 inline vector unsigned int
vec_sro(vector unsigned int a1,vector unsigned char a2)4169 vec_sro (vector unsigned int a1, vector unsigned char a2)
4170 {
4171   return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4172 }
4173 
4174 inline vector signed short
vec_sro(vector signed short a1,vector signed char a2)4175 vec_sro (vector signed short a1, vector signed char a2)
4176 {
4177   return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4178 }
4179 
4180 inline vector signed short
vec_sro(vector signed short a1,vector unsigned char a2)4181 vec_sro (vector signed short a1, vector unsigned char a2)
4182 {
4183   return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4184 }
4185 
4186 inline vector unsigned short
vec_sro(vector unsigned short a1,vector signed char a2)4187 vec_sro (vector unsigned short a1, vector signed char a2)
4188 {
4189   return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4190 }
4191 
4192 inline vector unsigned short
vec_sro(vector unsigned short a1,vector unsigned char a2)4193 vec_sro (vector unsigned short a1, vector unsigned char a2)
4194 {
4195   return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4196 }
4197 
4198 inline vector signed char
vec_sro(vector signed char a1,vector signed char a2)4199 vec_sro (vector signed char a1, vector signed char a2)
4200 {
4201   return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4202 }
4203 
4204 inline vector signed char
vec_sro(vector signed char a1,vector unsigned char a2)4205 vec_sro (vector signed char a1, vector unsigned char a2)
4206 {
4207   return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4208 }
4209 
4210 inline vector unsigned char
vec_sro(vector unsigned char a1,vector signed char a2)4211 vec_sro (vector unsigned char a1, vector signed char a2)
4212 {
4213   return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4214 }
4215 
4216 inline vector unsigned char
vec_sro(vector unsigned char a1,vector unsigned char a2)4217 vec_sro (vector unsigned char a1, vector unsigned char a2)
4218 {
4219   return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
4220 }
4221 
4222 /* vec_st */
4223 
4224 inline void
vec_st(vector float a1,int a2,void * a3)4225 vec_st (vector float a1, int a2, void *a3)
4226 {
4227   __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4228 }
4229 
4230 inline void
vec_st(vector signed int a1,int a2,void * a3)4231 vec_st (vector signed int a1, int a2, void *a3)
4232 {
4233   __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4234 }
4235 
4236 inline void
vec_st(vector unsigned int a1,int a2,void * a3)4237 vec_st (vector unsigned int a1, int a2, void *a3)
4238 {
4239   __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4240 }
4241 
4242 inline void
vec_st(vector signed short a1,int a2,void * a3)4243 vec_st (vector signed short a1, int a2, void *a3)
4244 {
4245   __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4246 }
4247 
4248 inline void
vec_st(vector unsigned short a1,int a2,void * a3)4249 vec_st (vector unsigned short a1, int a2, void *a3)
4250 {
4251   __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4252 }
4253 
4254 inline void
vec_st(vector signed char a1,int a2,void * a3)4255 vec_st (vector signed char a1, int a2, void *a3)
4256 {
4257   __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4258 }
4259 
4260 inline void
vec_st(vector unsigned char a1,int a2,void * a3)4261 vec_st (vector unsigned char a1, int a2, void *a3)
4262 {
4263   __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
4264 }
4265 
4266 /* vec_ste */
4267 
4268 inline void
vec_ste(vector signed char a1,int a2,void * a3)4269 vec_ste (vector signed char a1, int a2, void *a3)
4270 {
4271   __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4272 }
4273 
4274 inline void
vec_ste(vector unsigned char a1,int a2,void * a3)4275 vec_ste (vector unsigned char a1, int a2, void *a3)
4276 {
4277   __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4278 }
4279 
4280 inline void
vec_ste(vector signed short a1,int a2,void * a3)4281 vec_ste (vector signed short a1, int a2, void *a3)
4282 {
4283   __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4284 }
4285 
4286 inline void
vec_ste(vector unsigned short a1,int a2,void * a3)4287 vec_ste (vector unsigned short a1, int a2, void *a3)
4288 {
4289   __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4290 }
4291 
4292 inline void
vec_ste(vector float a1,int a2,void * a3)4293 vec_ste (vector float a1, int a2, void *a3)
4294 {
4295   __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4296 }
4297 
4298 inline void
vec_ste(vector signed int a1,int a2,void * a3)4299 vec_ste (vector signed int a1, int a2, void *a3)
4300 {
4301   __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4302 }
4303 
4304 inline void
vec_ste(vector unsigned int a1,int a2,void * a3)4305 vec_ste (vector unsigned int a1, int a2, void *a3)
4306 {
4307   __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4308 }
4309 
4310 /* vec_stvewx */
4311 
4312 inline void
vec_stvewx(vector float a1,int a2,void * a3)4313 vec_stvewx (vector float a1, int a2, void *a3)
4314 {
4315   __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4316 }
4317 
4318 inline void
vec_stvewx(vector signed int a1,int a2,void * a3)4319 vec_stvewx (vector signed int a1, int a2, void *a3)
4320 {
4321   __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4322 }
4323 
4324 inline void
vec_stvewx(vector unsigned int a1,int a2,void * a3)4325 vec_stvewx (vector unsigned int a1, int a2, void *a3)
4326 {
4327   __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
4328 }
4329 
4330 /* vec_stvehx */
4331 
4332 inline void
vec_stvehx(vector signed short a1,int a2,void * a3)4333 vec_stvehx (vector signed short a1, int a2, void *a3)
4334 {
4335   __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4336 }
4337 
4338 inline void
vec_stvehx(vector unsigned short a1,int a2,void * a3)4339 vec_stvehx (vector unsigned short a1, int a2, void *a3)
4340 {
4341   __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
4342 }
4343 
4344 /* vec_stvebx */
4345 
4346 inline void
vec_stvebx(vector signed char a1,int a2,void * a3)4347 vec_stvebx (vector signed char a1, int a2, void *a3)
4348 {
4349   __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4350 }
4351 
4352 inline void
vec_stvebx(vector unsigned char a1,int a2,void * a3)4353 vec_stvebx (vector unsigned char a1, int a2, void *a3)
4354 {
4355   __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
4356 }
4357 
4358 /* vec_stl */
4359 
4360 inline void
vec_stl(vector float a1,int a2,void * a3)4361 vec_stl (vector float a1, int a2, void *a3)
4362 {
4363   __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4364 }
4365 
4366 inline void
vec_stl(vector signed int a1,int a2,void * a3)4367 vec_stl (vector signed int a1, int a2, void *a3)
4368 {
4369   __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4370 }
4371 
4372 inline void
vec_stl(vector unsigned int a1,int a2,void * a3)4373 vec_stl (vector unsigned int a1, int a2, void *a3)
4374 {
4375   __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4376 }
4377 
4378 inline void
vec_stl(vector signed short a1,int a2,void * a3)4379 vec_stl (vector signed short a1, int a2, void *a3)
4380 {
4381   __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4382 }
4383 
4384 inline void
vec_stl(vector unsigned short a1,int a2,void * a3)4385 vec_stl (vector unsigned short a1, int a2, void *a3)
4386 {
4387   __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4388 }
4389 
4390 inline void
vec_stl(vector signed char a1,int a2,void * a3)4391 vec_stl (vector signed char a1, int a2, void *a3)
4392 {
4393   __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4394 }
4395 
4396 inline void
vec_stl(vector unsigned char a1,int a2,void * a3)4397 vec_stl (vector unsigned char a1, int a2, void *a3)
4398 {
4399   __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
4400 }
4401 
4402 /* vec_sub */
4403 
4404 inline vector signed char
vec_sub(vector signed char a1,vector signed char a2)4405 vec_sub (vector signed char a1, vector signed char a2)
4406 {
4407   return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4408 }
4409 
4410 inline vector unsigned char
vec_sub(vector signed char a1,vector unsigned char a2)4411 vec_sub (vector signed char a1, vector unsigned char a2)
4412 {
4413   return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4414 }
4415 
4416 inline vector unsigned char
vec_sub(vector unsigned char a1,vector signed char a2)4417 vec_sub (vector unsigned char a1, vector signed char a2)
4418 {
4419   return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4420 }
4421 
4422 inline vector unsigned char
vec_sub(vector unsigned char a1,vector unsigned char a2)4423 vec_sub (vector unsigned char a1, vector unsigned char a2)
4424 {
4425   return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4426 }
4427 
4428 inline vector signed short
vec_sub(vector signed short a1,vector signed short a2)4429 vec_sub (vector signed short a1, vector signed short a2)
4430 {
4431   return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4432 }
4433 
4434 inline vector unsigned short
vec_sub(vector signed short a1,vector unsigned short a2)4435 vec_sub (vector signed short a1, vector unsigned short a2)
4436 {
4437   return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4438 }
4439 
4440 inline vector unsigned short
vec_sub(vector unsigned short a1,vector signed short a2)4441 vec_sub (vector unsigned short a1, vector signed short a2)
4442 {
4443   return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4444 }
4445 
4446 inline vector unsigned short
vec_sub(vector unsigned short a1,vector unsigned short a2)4447 vec_sub (vector unsigned short a1, vector unsigned short a2)
4448 {
4449   return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4450 }
4451 
4452 inline vector signed int
vec_sub(vector signed int a1,vector signed int a2)4453 vec_sub (vector signed int a1, vector signed int a2)
4454 {
4455   return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4456 }
4457 
4458 inline vector unsigned int
vec_sub(vector signed int a1,vector unsigned int a2)4459 vec_sub (vector signed int a1, vector unsigned int a2)
4460 {
4461   return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4462 }
4463 
4464 inline vector unsigned int
vec_sub(vector unsigned int a1,vector signed int a2)4465 vec_sub (vector unsigned int a1, vector signed int a2)
4466 {
4467   return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4468 }
4469 
4470 inline vector unsigned int
vec_sub(vector unsigned int a1,vector unsigned int a2)4471 vec_sub (vector unsigned int a1, vector unsigned int a2)
4472 {
4473   return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4474 }
4475 
4476 inline vector float
vec_sub(vector float a1,vector float a2)4477 vec_sub (vector float a1, vector float a2)
4478 {
4479   return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
4480 }
4481 
4482 /* vec_vsubfp */
4483 
4484 inline vector float
vec_vsubfp(vector float a1,vector float a2)4485 vec_vsubfp (vector float a1, vector float a2)
4486 {
4487   return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
4488 }
4489 
4490 /* vec_vsubuwm */
4491 
4492 inline vector signed int
vec_vsubuwm(vector signed int a1,vector signed int a2)4493 vec_vsubuwm (vector signed int a1, vector signed int a2)
4494 {
4495   return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4496 }
4497 
4498 inline vector unsigned int
vec_vsubuwm(vector signed int a1,vector unsigned int a2)4499 vec_vsubuwm (vector signed int a1, vector unsigned int a2)
4500 {
4501   return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4502 }
4503 
4504 inline vector unsigned int
vec_vsubuwm(vector unsigned int a1,vector signed int a2)4505 vec_vsubuwm (vector unsigned int a1, vector signed int a2)
4506 {
4507   return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4508 }
4509 
4510 inline vector unsigned int
vec_vsubuwm(vector unsigned int a1,vector unsigned int a2)4511 vec_vsubuwm (vector unsigned int a1, vector unsigned int a2)
4512 {
4513   return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
4514 }
4515 
4516 /* vec_vsubuhm */
4517 
4518 inline vector signed short
vec_vsubuhm(vector signed short a1,vector signed short a2)4519 vec_vsubuhm (vector signed short a1, vector signed short a2)
4520 {
4521   return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4522 }
4523 
4524 inline vector unsigned short
vec_vsubuhm(vector signed short a1,vector unsigned short a2)4525 vec_vsubuhm (vector signed short a1, vector unsigned short a2)
4526 {
4527   return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4528 }
4529 
4530 inline vector unsigned short
vec_vsubuhm(vector unsigned short a1,vector signed short a2)4531 vec_vsubuhm (vector unsigned short a1, vector signed short a2)
4532 {
4533   return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4534 }
4535 
4536 inline vector unsigned short
vec_vsubuhm(vector unsigned short a1,vector unsigned short a2)4537 vec_vsubuhm (vector unsigned short a1, vector unsigned short a2)
4538 {
4539   return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
4540 }
4541 
4542 /* vec_vsububm */
4543 
4544 inline vector signed char
vec_vsububm(vector signed char a1,vector signed char a2)4545 vec_vsububm (vector signed char a1, vector signed char a2)
4546 {
4547   return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4548 }
4549 
4550 inline vector unsigned char
vec_vsububm(vector signed char a1,vector unsigned char a2)4551 vec_vsububm (vector signed char a1, vector unsigned char a2)
4552 {
4553   return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4554 }
4555 
4556 inline vector unsigned char
vec_vsububm(vector unsigned char a1,vector signed char a2)4557 vec_vsububm (vector unsigned char a1, vector signed char a2)
4558 {
4559   return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4560 }
4561 
4562 inline vector unsigned char
vec_vsububm(vector unsigned char a1,vector unsigned char a2)4563 vec_vsububm (vector unsigned char a1, vector unsigned char a2)
4564 {
4565   return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
4566 }
4567 
4568 /* vec_subc */
4569 
4570 inline vector unsigned int
vec_subc(vector unsigned int a1,vector unsigned int a2)4571 vec_subc (vector unsigned int a1, vector unsigned int a2)
4572 {
4573   return (vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) a1, (vector signed int) a2);
4574 }
4575 
4576 /* vec_subs */
4577 
4578 inline vector unsigned char
vec_subs(vector signed char a1,vector unsigned char a2)4579 vec_subs (vector signed char a1, vector unsigned char a2)
4580 {
4581   return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4582 }
4583 
4584 inline vector unsigned char
vec_subs(vector unsigned char a1,vector signed char a2)4585 vec_subs (vector unsigned char a1, vector signed char a2)
4586 {
4587   return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4588 }
4589 
4590 inline vector unsigned char
vec_subs(vector unsigned char a1,vector unsigned char a2)4591 vec_subs (vector unsigned char a1, vector unsigned char a2)
4592 {
4593   return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4594 }
4595 
4596 inline vector signed char
vec_subs(vector signed char a1,vector signed char a2)4597 vec_subs (vector signed char a1, vector signed char a2)
4598 {
4599   return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
4600 }
4601 
4602 inline vector unsigned short
vec_subs(vector signed short a1,vector unsigned short a2)4603 vec_subs (vector signed short a1, vector unsigned short a2)
4604 {
4605   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4606 }
4607 
4608 inline vector unsigned short
vec_subs(vector unsigned short a1,vector signed short a2)4609 vec_subs (vector unsigned short a1, vector signed short a2)
4610 {
4611   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4612 }
4613 
4614 inline vector unsigned short
vec_subs(vector unsigned short a1,vector unsigned short a2)4615 vec_subs (vector unsigned short a1, vector unsigned short a2)
4616 {
4617   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4618 }
4619 
4620 inline vector signed short
vec_subs(vector signed short a1,vector signed short a2)4621 vec_subs (vector signed short a1, vector signed short a2)
4622 {
4623   return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
4624 }
4625 
4626 inline vector unsigned int
vec_subs(vector signed int a1,vector unsigned int a2)4627 vec_subs (vector signed int a1, vector unsigned int a2)
4628 {
4629   return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4630 }
4631 
4632 inline vector unsigned int
vec_subs(vector unsigned int a1,vector signed int a2)4633 vec_subs (vector unsigned int a1, vector signed int a2)
4634 {
4635   return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4636 }
4637 
4638 inline vector unsigned int
vec_subs(vector unsigned int a1,vector unsigned int a2)4639 vec_subs (vector unsigned int a1, vector unsigned int a2)
4640 {
4641   return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4642 }
4643 
4644 inline vector signed int
vec_subs(vector signed int a1,vector signed int a2)4645 vec_subs (vector signed int a1, vector signed int a2)
4646 {
4647   return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
4648 }
4649 
4650 /* vec_vsubsws */
4651 
4652 inline vector signed int
vec_vsubsws(vector signed int a1,vector signed int a2)4653 vec_vsubsws (vector signed int a1, vector signed int a2)
4654 {
4655   return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
4656 }
4657 
4658 /* vec_vsubuws */
4659 
4660 inline vector unsigned int
vec_vsubuws(vector signed int a1,vector unsigned int a2)4661 vec_vsubuws (vector signed int a1, vector unsigned int a2)
4662 {
4663   return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4664 }
4665 
4666 inline vector unsigned int
vec_vsubuws(vector unsigned int a1,vector signed int a2)4667 vec_vsubuws (vector unsigned int a1, vector signed int a2)
4668 {
4669   return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4670 }
4671 
4672 inline vector unsigned int
vec_vsubuws(vector unsigned int a1,vector unsigned int a2)4673 vec_vsubuws (vector unsigned int a1, vector unsigned int a2)
4674 {
4675   return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
4676 }
4677 
4678 /* vec_vsubshs */
4679 
4680 inline vector signed short
vec_vsubshs(vector signed short a1,vector signed short a2)4681 vec_vsubshs (vector signed short a1, vector signed short a2)
4682 {
4683   return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
4684 }
4685 
4686 /* vec_vsubuhs */
4687 
4688 inline vector unsigned short
vec_vsubuhs(vector signed short a1,vector unsigned short a2)4689 vec_vsubuhs (vector signed short a1, vector unsigned short a2)
4690 {
4691   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4692 }
4693 
4694 inline vector unsigned short
vec_vsubuhs(vector unsigned short a1,vector signed short a2)4695 vec_vsubuhs (vector unsigned short a1, vector signed short a2)
4696 {
4697   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4698 }
4699 
4700 /* vec_vsubuhs */
4701 
4702 inline vector unsigned short
vec_vsubsuhs(vector signed short a1,vector unsigned short a2)4703 vec_vsubsuhs (vector signed short a1, vector unsigned short a2)
4704 {
4705   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4706 }
4707 
4708 inline vector unsigned short
vec_vsubsuhs(vector unsigned short a1,vector signed short a2)4709 vec_vsubsuhs (vector unsigned short a1, vector signed short a2)
4710 {
4711   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4712 }
4713 
4714 inline vector unsigned short
vec_vsubsuhs(vector unsigned short a1,vector unsigned short a2)4715 vec_vsubsuhs (vector unsigned short a1, vector unsigned short a2)
4716 {
4717   return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
4718 }
4719 
4720 /* vec_vsubsbs */
4721 
4722 inline vector signed char
vec_vsubsbs(vector signed char a1,vector signed char a2)4723 vec_vsubsbs (vector signed char a1, vector signed char a2)
4724 {
4725   return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
4726 }
4727 
4728 /* vec_vsububs */
4729 
4730 inline vector unsigned char
vec_vsubsubs(vector signed char a1,vector unsigned char a2)4731 vec_vsubsubs (vector signed char a1, vector unsigned char a2)
4732 {
4733   return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4734 }
4735 
4736 inline vector unsigned char
vec_vsubsubs(vector unsigned char a1,vector signed char a2)4737 vec_vsubsubs (vector unsigned char a1, vector signed char a2)
4738 {
4739   return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4740 }
4741 
4742 inline vector unsigned char
vec_vsubsubs(vector unsigned char a1,vector unsigned char a2)4743 vec_vsubsubs (vector unsigned char a1, vector unsigned char a2)
4744 {
4745   return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
4746 }
4747 
4748 /* vec_sum4s */
4749 
4750 inline vector unsigned int
vec_sum4s(vector unsigned char a1,vector unsigned int a2)4751 vec_sum4s (vector unsigned char a1, vector unsigned int a2)
4752 {
4753   return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
4754 }
4755 
4756 inline vector signed int
vec_sum4s(vector signed char a1,vector signed int a2)4757 vec_sum4s (vector signed char a1, vector signed int a2)
4758 {
4759   return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
4760 }
4761 
4762 inline vector signed int
vec_sum4s(vector signed short a1,vector signed int a2)4763 vec_sum4s (vector signed short a1, vector signed int a2)
4764 {
4765   return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
4766 }
4767 
4768 /* vec_vsum4shs */
4769 
4770 inline vector signed int
vec_vsum4shss(vector signed short a1,vector signed int a2)4771 vec_vsum4shss (vector signed short a1, vector signed int a2)
4772 {
4773   return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
4774 }
4775 
4776 /* vec_vsum4sbs */
4777 
4778 inline vector signed int
vec_vsum4sbs(vector signed char a1,vector signed int a2)4779 vec_vsum4sbs (vector signed char a1, vector signed int a2)
4780 {
4781   return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
4782 }
4783 
4784 /* vec_vsum4ubs */
4785 
4786 inline vector unsigned int
vec_vsum4ubs(vector unsigned char a1,vector unsigned int a2)4787 vec_vsum4ubs (vector unsigned char a1, vector unsigned int a2)
4788 {
4789   return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
4790 }
4791 
4792 /* vec_sum2s */
4793 
4794 inline vector signed int
vec_sum2s(vector signed int a1,vector signed int a2)4795 vec_sum2s (vector signed int a1, vector signed int a2)
4796 {
4797   return (vector signed int) __builtin_altivec_vsum2sws ((vector signed int) a1, (vector signed int) a2);
4798 }
4799 
4800 /* vec_sums */
4801 
4802 inline vector signed int
vec_sums(vector signed int a1,vector signed int a2)4803 vec_sums (vector signed int a1, vector signed int a2)
4804 {
4805   return (vector signed int) __builtin_altivec_vsumsws ((vector signed int) a1, (vector signed int) a2);
4806 }
4807 
4808 /* vec_trunc */
4809 
4810 inline vector float
vec_trunc(vector float a1)4811 vec_trunc (vector float a1)
4812 {
4813   return (vector float) __builtin_altivec_vrfiz ((vector float) a1);
4814 }
4815 
4816 /* vec_unpackh */
4817 
4818 inline vector signed short
vec_unpackh(vector signed char a1)4819 vec_unpackh (vector signed char a1)
4820 {
4821   return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
4822 }
4823 
4824 inline vector signed int
vec_unpackh(vector signed short a1)4825 vec_unpackh (vector signed short a1)
4826 {
4827   return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
4828 }
4829 
4830 inline vector unsigned int
vec_unpackh(vector unsigned short a1)4831 vec_unpackh (vector unsigned short a1)
4832 {
4833   return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
4834 }
4835 
4836 /* vec_vupkhsh */
4837 
4838 inline vector signed int
vec_vupkhsh(vector signed short a1)4839 vec_vupkhsh (vector signed short a1)
4840 {
4841   return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
4842 }
4843 
4844 /* vec_vupkhpx */
4845 
4846 inline vector unsigned int
vec_vupkhpx(vector unsigned short a1)4847 vec_vupkhpx (vector unsigned short a1)
4848 {
4849   return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
4850 }
4851 
4852 /* vec_vupkhsb */
4853 
4854 inline vector signed short
vec_vupkhsb(vector signed char a1)4855 vec_vupkhsb (vector signed char a1)
4856 {
4857   return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
4858 }
4859 
4860 /* vec_unpackl */
4861 
4862 inline vector signed short
vec_unpackl(vector signed char a1)4863 vec_unpackl (vector signed char a1)
4864 {
4865   return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
4866 }
4867 
4868 inline vector unsigned int
vec_unpackl(vector unsigned short a1)4869 vec_unpackl (vector unsigned short a1)
4870 {
4871   return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
4872 }
4873 
4874 inline vector signed int
vec_unpackl(vector signed short a1)4875 vec_unpackl (vector signed short a1)
4876 {
4877   return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
4878 }
4879 
4880 /* vec_vupklpx */
4881 
4882 inline vector unsigned int
vec_vupklpx(vector unsigned short a1)4883 vec_vupklpx (vector unsigned short a1)
4884 {
4885   return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
4886 }
4887 
4888 /* vec_upklsh */
4889 
4890 inline vector signed int
vec_vupklsh(vector signed short a1)4891 vec_vupklsh (vector signed short a1)
4892 {
4893   return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
4894 }
4895 
4896 /* vec_vupklsb */
4897 
4898 inline vector signed short
vec_vupklsb(vector signed char a1)4899 vec_vupklsb (vector signed char a1)
4900 {
4901   return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
4902 }
4903 
4904 /* vec_xor */
4905 
4906 inline vector float
vec_xor(vector float a1,vector float a2)4907 vec_xor (vector float a1, vector float a2)
4908 {
4909   return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4910 }
4911 
4912 inline vector float
vec_xor(vector float a1,vector signed int a2)4913 vec_xor (vector float a1, vector signed int a2)
4914 {
4915   return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4916 }
4917 
4918 inline vector float
vec_xor(vector signed int a1,vector float a2)4919 vec_xor (vector signed int a1, vector float a2)
4920 {
4921   return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4922 }
4923 
4924 inline vector signed int
vec_xor(vector signed int a1,vector signed int a2)4925 vec_xor (vector signed int a1, vector signed int a2)
4926 {
4927   return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4928 }
4929 
4930 inline vector unsigned int
vec_xor(vector signed int a1,vector unsigned int a2)4931 vec_xor (vector signed int a1, vector unsigned int a2)
4932 {
4933   return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4934 }
4935 
4936 inline vector unsigned int
vec_xor(vector unsigned int a1,vector signed int a2)4937 vec_xor (vector unsigned int a1, vector signed int a2)
4938 {
4939   return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4940 }
4941 
4942 inline vector unsigned int
vec_xor(vector unsigned int a1,vector unsigned int a2)4943 vec_xor (vector unsigned int a1, vector unsigned int a2)
4944 {
4945   return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4946 }
4947 
4948 inline vector signed short
vec_xor(vector signed short a1,vector signed short a2)4949 vec_xor (vector signed short a1, vector signed short a2)
4950 {
4951   return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4952 }
4953 
4954 inline vector unsigned short
vec_xor(vector signed short a1,vector unsigned short a2)4955 vec_xor (vector signed short a1, vector unsigned short a2)
4956 {
4957   return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4958 }
4959 
4960 inline vector unsigned short
vec_xor(vector unsigned short a1,vector signed short a2)4961 vec_xor (vector unsigned short a1, vector signed short a2)
4962 {
4963   return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4964 }
4965 
4966 inline vector unsigned short
vec_xor(vector unsigned short a1,vector unsigned short a2)4967 vec_xor (vector unsigned short a1, vector unsigned short a2)
4968 {
4969   return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4970 }
4971 
4972 inline vector signed char
vec_xor(vector signed char a1,vector signed char a2)4973 vec_xor (vector signed char a1, vector signed char a2)
4974 {
4975   return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4976 }
4977 
4978 inline vector unsigned char
vec_xor(vector signed char a1,vector unsigned char a2)4979 vec_xor (vector signed char a1, vector unsigned char a2)
4980 {
4981   return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4982 }
4983 
4984 inline vector unsigned char
vec_xor(vector unsigned char a1,vector signed char a2)4985 vec_xor (vector unsigned char a1, vector signed char a2)
4986 {
4987   return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4988 }
4989 
4990 inline vector unsigned char
vec_xor(vector unsigned char a1,vector unsigned char a2)4991 vec_xor (vector unsigned char a1, vector unsigned char a2)
4992 {
4993   return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
4994 }
4995 
4996 /* vec_all_eq */
4997 
4998 inline int
vec_all_eq(vector signed char a1,vector unsigned char a2)4999 vec_all_eq (vector signed char a1, vector unsigned char a2)
5000 {
5001   return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2);
5002 }
5003 
5004 inline int
vec_all_eq(vector signed char a1,vector signed char a2)5005 vec_all_eq (vector signed char a1, vector signed char a2)
5006 {
5007   return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2);
5008 }
5009 
5010 inline int
vec_all_eq(vector unsigned char a1,vector signed char a2)5011 vec_all_eq (vector unsigned char a1, vector signed char a2)
5012 {
5013   return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5014 }
5015 
5016 inline int
vec_all_eq(vector unsigned char a1,vector unsigned char a2)5017 vec_all_eq (vector unsigned char a1, vector unsigned char a2)
5018 {
5019   return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5020 }
5021 
5022 inline int
vec_all_eq(vector signed short a1,vector unsigned short a2)5023 vec_all_eq (vector signed short a1, vector unsigned short a2)
5024 {
5025   return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5026 }
5027 
5028 inline int
vec_all_eq(vector signed short a1,vector signed short a2)5029 vec_all_eq (vector signed short a1, vector signed short a2)
5030 {
5031   return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5032 }
5033 
5034 inline int
vec_all_eq(vector unsigned short a1,vector signed short a2)5035 vec_all_eq (vector unsigned short a1, vector signed short a2)
5036 {
5037   return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5038 }
5039 
5040 inline int
vec_all_eq(vector unsigned short a1,vector unsigned short a2)5041 vec_all_eq (vector unsigned short a1, vector unsigned short a2)
5042 {
5043   return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5044 }
5045 
5046 inline int
vec_all_eq(vector signed int a1,vector unsigned int a2)5047 vec_all_eq (vector signed int a1, vector unsigned int a2)
5048 {
5049   return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5050 }
5051 
5052 inline int
vec_all_eq(vector signed int a1,vector signed int a2)5053 vec_all_eq (vector signed int a1, vector signed int a2)
5054 {
5055   return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5056 }
5057 
5058 inline int
vec_all_eq(vector unsigned int a1,vector signed int a2)5059 vec_all_eq (vector unsigned int a1, vector signed int a2)
5060 {
5061   return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5062 }
5063 
5064 inline int
vec_all_eq(vector unsigned int a1,vector unsigned int a2)5065 vec_all_eq (vector unsigned int a1, vector unsigned int a2)
5066 {
5067   return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5068 }
5069 
5070 inline int
vec_all_eq(vector float a1,vector float a2)5071 vec_all_eq (vector float a1, vector float a2)
5072 {
5073   return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2);
5074 }
5075 
5076 /* vec_all_ge */
5077 
5078 inline int
vec_all_ge(vector signed char a1,vector unsigned char a2)5079 vec_all_ge (vector signed char a1, vector unsigned char a2)
5080 {
5081   return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5082 }
5083 
5084 inline int
vec_all_ge(vector unsigned char a1,vector signed char a2)5085 vec_all_ge (vector unsigned char a1, vector signed char a2)
5086 {
5087   return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5088 }
5089 
5090 inline int
vec_all_ge(vector unsigned char a1,vector unsigned char a2)5091 vec_all_ge (vector unsigned char a1, vector unsigned char a2)
5092 {
5093   return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5094 }
5095 
5096 inline int
vec_all_ge(vector signed char a1,vector signed char a2)5097 vec_all_ge (vector signed char a1, vector signed char a2)
5098 {
5099   return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
5100 }
5101 
5102 inline int
vec_all_ge(vector signed short a1,vector unsigned short a2)5103 vec_all_ge (vector signed short a1, vector unsigned short a2)
5104 {
5105   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5106 }
5107 
5108 inline int
vec_all_ge(vector unsigned short a1,vector signed short a2)5109 vec_all_ge (vector unsigned short a1, vector signed short a2)
5110 {
5111   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5112 }
5113 
5114 inline int
vec_all_ge(vector unsigned short a1,vector unsigned short a2)5115 vec_all_ge (vector unsigned short a1, vector unsigned short a2)
5116 {
5117   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5118 }
5119 
5120 inline int
vec_all_ge(vector signed short a1,vector signed short a2)5121 vec_all_ge (vector signed short a1, vector signed short a2)
5122 {
5123   return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
5124 }
5125 
5126 inline int
vec_all_ge(vector signed int a1,vector unsigned int a2)5127 vec_all_ge (vector signed int a1, vector unsigned int a2)
5128 {
5129   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5130 }
5131 
5132 inline int
vec_all_ge(vector unsigned int a1,vector signed int a2)5133 vec_all_ge (vector unsigned int a1, vector signed int a2)
5134 {
5135   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5136 }
5137 
5138 inline int
vec_all_ge(vector unsigned int a1,vector unsigned int a2)5139 vec_all_ge (vector unsigned int a1, vector unsigned int a2)
5140 {
5141   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5142 }
5143 
5144 inline int
vec_all_ge(vector signed int a1,vector signed int a2)5145 vec_all_ge (vector signed int a1, vector signed int a2)
5146 {
5147   return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
5148 }
5149 
5150 inline int
vec_all_ge(vector float a1,vector float a2)5151 vec_all_ge (vector float a1, vector float a2)
5152 {
5153   return __builtin_altivec_vcmpgefp_p (__CR6_LT, a1, a2);
5154 }
5155 
5156 /* vec_all_gt */
5157 
5158 inline int
vec_all_gt(vector signed char a1,vector unsigned char a2)5159 vec_all_gt (vector signed char a1, vector unsigned char a2)
5160 {
5161   return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5162 }
5163 
5164 inline int
vec_all_gt(vector unsigned char a1,vector signed char a2)5165 vec_all_gt (vector unsigned char a1, vector signed char a2)
5166 {
5167   return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5168 }
5169 
5170 inline int
vec_all_gt(vector unsigned char a1,vector unsigned char a2)5171 vec_all_gt (vector unsigned char a1, vector unsigned char a2)
5172 {
5173   return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5174 }
5175 
5176 inline int
vec_all_gt(vector signed char a1,vector signed char a2)5177 vec_all_gt (vector signed char a1, vector signed char a2)
5178 {
5179   return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
5180 }
5181 
5182 inline int
vec_all_gt(vector signed short a1,vector unsigned short a2)5183 vec_all_gt (vector signed short a1, vector unsigned short a2)
5184 {
5185   return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5186 }
5187 
5188 inline int
vec_all_gt(vector unsigned short a1,vector signed short a2)5189 vec_all_gt (vector unsigned short a1, vector signed short a2)
5190 {
5191   return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5192 }
5193 
5194 inline int
vec_all_gt(vector unsigned short a1,vector unsigned short a2)5195 vec_all_gt (vector unsigned short a1, vector unsigned short a2)
5196 {
5197   return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5198 }
5199 
5200 inline int
vec_all_gt(vector signed short a1,vector signed short a2)5201 vec_all_gt (vector signed short a1, vector signed short a2)
5202 {
5203   return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
5204 }
5205 
5206 inline int
vec_all_gt(vector signed int a1,vector unsigned int a2)5207 vec_all_gt (vector signed int a1, vector unsigned int a2)
5208 {
5209   return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5210 }
5211 
5212 inline int
vec_all_gt(vector unsigned int a1,vector signed int a2)5213 vec_all_gt (vector unsigned int a1, vector signed int a2)
5214 {
5215   return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5216 }
5217 
5218 inline int
vec_all_gt(vector unsigned int a1,vector unsigned int a2)5219 vec_all_gt (vector unsigned int a1, vector unsigned int a2)
5220 {
5221   return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5222 }
5223 
5224 inline int
vec_all_gt(vector signed int a1,vector signed int a2)5225 vec_all_gt (vector signed int a1, vector signed int a2)
5226 {
5227   return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
5228 }
5229 
5230 inline int
vec_all_gt(vector float a1,vector float a2)5231 vec_all_gt (vector float a1, vector float a2)
5232 {
5233   return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2);
5234 }
5235 
5236 /* vec_all_in */
5237 
5238 inline int
vec_all_in(vector float a1,vector float a2)5239 vec_all_in (vector float a1, vector float a2)
5240 {
5241   return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2);
5242 }
5243 
5244 /* vec_all_le */
5245 
5246 inline int
vec_all_le(vector signed char a1,vector unsigned char a2)5247 vec_all_le (vector signed char a1, vector unsigned char a2)
5248 {
5249   return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5250 }
5251 
5252 inline int
vec_all_le(vector unsigned char a1,vector signed char a2)5253 vec_all_le (vector unsigned char a1, vector signed char a2)
5254 {
5255   return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5256 }
5257 
5258 inline int
vec_all_le(vector unsigned char a1,vector unsigned char a2)5259 vec_all_le (vector unsigned char a1, vector unsigned char a2)
5260 {
5261   return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5262 }
5263 
5264 inline int
vec_all_le(vector signed char a1,vector signed char a2)5265 vec_all_le (vector signed char a1, vector signed char a2)
5266 {
5267   return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5268 }
5269 
5270 inline int
vec_all_le(vector signed short a1,vector unsigned short a2)5271 vec_all_le (vector signed short a1, vector unsigned short a2)
5272 {
5273   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5274 }
5275 
5276 inline int
vec_all_le(vector unsigned short a1,vector signed short a2)5277 vec_all_le (vector unsigned short a1, vector signed short a2)
5278 {
5279   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5280 }
5281 
5282 inline int
vec_all_le(vector unsigned short a1,vector unsigned short a2)5283 vec_all_le (vector unsigned short a1, vector unsigned short a2)
5284 {
5285   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5286 }
5287 
5288 inline int
vec_all_le(vector signed short a1,vector signed short a2)5289 vec_all_le (vector signed short a1, vector signed short a2)
5290 {
5291   return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5292 }
5293 
5294 inline int
vec_all_le(vector signed int a1,vector unsigned int a2)5295 vec_all_le (vector signed int a1, vector unsigned int a2)
5296 {
5297   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5298 }
5299 
5300 inline int
vec_all_le(vector unsigned int a1,vector signed int a2)5301 vec_all_le (vector unsigned int a1, vector signed int a2)
5302 {
5303   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5304 }
5305 
5306 inline int
vec_all_le(vector unsigned int a1,vector unsigned int a2)5307 vec_all_le (vector unsigned int a1, vector unsigned int a2)
5308 {
5309   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5310 }
5311 
5312 inline int
vec_all_le(vector signed int a1,vector signed int a2)5313 vec_all_le (vector signed int a1, vector signed int a2)
5314 {
5315   return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5316 }
5317 
5318 inline int
vec_all_le(vector float a1,vector float a2)5319 vec_all_le (vector float a1, vector float a2)
5320 {
5321   return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1);
5322 }
5323 
5324 /* vec_all_lt */
5325 
5326 inline int
vec_all_lt(vector signed char a1,vector unsigned char a2)5327 vec_all_lt (vector signed char a1, vector unsigned char a2)
5328 {
5329   return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5330 }
5331 
5332 inline int
vec_all_lt(vector unsigned char a1,vector signed char a2)5333 vec_all_lt (vector unsigned char a1, vector signed char a2)
5334 {
5335   return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5336 }
5337 
5338 inline int
vec_all_lt(vector unsigned char a1,vector unsigned char a2)5339 vec_all_lt (vector unsigned char a1, vector unsigned char a2)
5340 {
5341   return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5342 }
5343 
5344 inline int
vec_all_lt(vector signed char a1,vector signed char a2)5345 vec_all_lt (vector signed char a1, vector signed char a2)
5346 {
5347   return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
5348 }
5349 
5350 inline int
vec_all_lt(vector signed short a1,vector unsigned short a2)5351 vec_all_lt (vector signed short a1, vector unsigned short a2)
5352 {
5353   return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5354 }
5355 
5356 inline int
vec_all_lt(vector unsigned short a1,vector signed short a2)5357 vec_all_lt (vector unsigned short a1, vector signed short a2)
5358 {
5359   return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5360 }
5361 
5362 inline int
vec_all_lt(vector unsigned short a1,vector unsigned short a2)5363 vec_all_lt (vector unsigned short a1, vector unsigned short a2)
5364 {
5365   return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5366 }
5367 
5368 inline int
vec_all_lt(vector signed short a1,vector signed short a2)5369 vec_all_lt (vector signed short a1, vector signed short a2)
5370 {
5371   return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
5372 }
5373 
5374 inline int
vec_all_lt(vector signed int a1,vector unsigned int a2)5375 vec_all_lt (vector signed int a1, vector unsigned int a2)
5376 {
5377   return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5378 }
5379 
5380 inline int
vec_all_lt(vector unsigned int a1,vector signed int a2)5381 vec_all_lt (vector unsigned int a1, vector signed int a2)
5382 {
5383   return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5384 }
5385 
5386 inline int
vec_all_lt(vector unsigned int a1,vector unsigned int a2)5387 vec_all_lt (vector unsigned int a1, vector unsigned int a2)
5388 {
5389   return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5390 }
5391 
5392 inline int
vec_all_lt(vector signed int a1,vector signed int a2)5393 vec_all_lt (vector signed int a1, vector signed int a2)
5394 {
5395   return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
5396 }
5397 
5398 inline int
vec_all_lt(vector float a1,vector float a2)5399 vec_all_lt (vector float a1, vector float a2)
5400 {
5401   return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1);
5402 }
5403 
5404 /* vec_all_nan */
5405 
5406 inline int
vec_all_nan(vector float a1)5407 vec_all_nan (vector float a1)
5408 {
5409   return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
5410 }
5411 
5412 /* vec_all_ne */
5413 
5414 inline int
vec_all_ne(vector signed char a1,vector unsigned char a2)5415 vec_all_ne (vector signed char a1, vector unsigned char a2)
5416 {
5417   return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5418 }
5419 
5420 inline int
vec_all_ne(vector signed char a1,vector signed char a2)5421 vec_all_ne (vector signed char a1, vector signed char a2)
5422 {
5423   return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5424 }
5425 
5426 inline int
vec_all_ne(vector unsigned char a1,vector signed char a2)5427 vec_all_ne (vector unsigned char a1, vector signed char a2)
5428 {
5429   return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5430 }
5431 
5432 inline int
vec_all_ne(vector unsigned char a1,vector unsigned char a2)5433 vec_all_ne (vector unsigned char a1, vector unsigned char a2)
5434 {
5435   return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
5436 }
5437 
5438 inline int
vec_all_ne(vector signed short a1,vector unsigned short a2)5439 vec_all_ne (vector signed short a1, vector unsigned short a2)
5440 {
5441   return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5442 }
5443 
5444 inline int
vec_all_ne(vector signed short a1,vector signed short a2)5445 vec_all_ne (vector signed short a1, vector signed short a2)
5446 {
5447   return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5448 }
5449 
5450 inline int
vec_all_ne(vector unsigned short a1,vector signed short a2)5451 vec_all_ne (vector unsigned short a1, vector signed short a2)
5452 {
5453   return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5454 }
5455 
5456 inline int
vec_all_ne(vector unsigned short a1,vector unsigned short a2)5457 vec_all_ne (vector unsigned short a1, vector unsigned short a2)
5458 {
5459   return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
5460 }
5461 
5462 inline int
vec_all_ne(vector signed int a1,vector unsigned int a2)5463 vec_all_ne (vector signed int a1, vector unsigned int a2)
5464 {
5465   return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5466 }
5467 
5468 inline int
vec_all_ne(vector signed int a1,vector signed int a2)5469 vec_all_ne (vector signed int a1, vector signed int a2)
5470 {
5471   return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5472 }
5473 
5474 inline int
vec_all_ne(vector unsigned int a1,vector signed int a2)5475 vec_all_ne (vector unsigned int a1, vector signed int a2)
5476 {
5477   return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5478 }
5479 
5480 inline int
vec_all_ne(vector unsigned int a1,vector unsigned int a2)5481 vec_all_ne (vector unsigned int a1, vector unsigned int a2)
5482 {
5483   return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
5484 }
5485 
5486 inline int
vec_all_ne(vector float a1,vector float a2)5487 vec_all_ne (vector float a1, vector float a2)
5488 {
5489   return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2);
5490 }
5491 
5492 /* vec_all_nge */
5493 
5494 inline int
vec_all_nge(vector float a1,vector float a2)5495 vec_all_nge (vector float a1, vector float a2)
5496 {
5497   return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2);
5498 }
5499 
5500 /* vec_all_ngt */
5501 
5502 inline int
vec_all_ngt(vector float a1,vector float a2)5503 vec_all_ngt (vector float a1, vector float a2)
5504 {
5505   return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2);
5506 }
5507 
5508 /* vec_all_nle */
5509 
5510 inline int
vec_all_nle(vector float a1,vector float a2)5511 vec_all_nle (vector float a1, vector float a2)
5512 {
5513   return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1);
5514 }
5515 
5516 /* vec_all_nlt */
5517 
5518 inline int
vec_all_nlt(vector float a1,vector float a2)5519 vec_all_nlt (vector float a1, vector float a2)
5520 {
5521   return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1);
5522 }
5523 
5524 /* vec_all_numeric */
5525 
5526 inline int
vec_all_numeric(vector float a1)5527 vec_all_numeric (vector float a1)
5528 {
5529   return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a1);
5530 }
5531 
5532 /* vec_any_eq */
5533 
5534 inline int
vec_any_eq(vector signed char a1,vector unsigned char a2)5535 vec_any_eq (vector signed char a1, vector unsigned char a2)
5536 {
5537   return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5538 }
5539 
5540 inline int
vec_any_eq(vector signed char a1,vector signed char a2)5541 vec_any_eq (vector signed char a1, vector signed char a2)
5542 {
5543   return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5544 }
5545 
5546 inline int
vec_any_eq(vector unsigned char a1,vector signed char a2)5547 vec_any_eq (vector unsigned char a1, vector signed char a2)
5548 {
5549   return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5550 }
5551 
5552 inline int
vec_any_eq(vector unsigned char a1,vector unsigned char a2)5553 vec_any_eq (vector unsigned char a1, vector unsigned char a2)
5554 {
5555   return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5556 }
5557 
5558 inline int
vec_any_eq(vector signed short a1,vector unsigned short a2)5559 vec_any_eq (vector signed short a1, vector unsigned short a2)
5560 {
5561   return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5562 }
5563 
5564 inline int
vec_any_eq(vector signed short a1,vector signed short a2)5565 vec_any_eq (vector signed short a1, vector signed short a2)
5566 {
5567   return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5568 }
5569 
5570 inline int
vec_any_eq(vector unsigned short a1,vector signed short a2)5571 vec_any_eq (vector unsigned short a1, vector signed short a2)
5572 {
5573   return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5574 }
5575 
5576 inline int
vec_any_eq(vector unsigned short a1,vector unsigned short a2)5577 vec_any_eq (vector unsigned short a1, vector unsigned short a2)
5578 {
5579   return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5580 }
5581 
5582 inline int
vec_any_eq(vector signed int a1,vector unsigned int a2)5583 vec_any_eq (vector signed int a1, vector unsigned int a2)
5584 {
5585   return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5586 }
5587 
5588 inline int
vec_any_eq(vector signed int a1,vector signed int a2)5589 vec_any_eq (vector signed int a1, vector signed int a2)
5590 {
5591   return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5592 }
5593 
5594 inline int
vec_any_eq(vector unsigned int a1,vector signed int a2)5595 vec_any_eq (vector unsigned int a1, vector signed int a2)
5596 {
5597   return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5598 }
5599 
5600 inline int
vec_any_eq(vector unsigned int a1,vector unsigned int a2)5601 vec_any_eq (vector unsigned int a1, vector unsigned int a2)
5602 {
5603   return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5604 }
5605 
5606 inline int
vec_any_eq(vector float a1,vector float a2)5607 vec_any_eq (vector float a1, vector float a2)
5608 {
5609   return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2);
5610 }
5611 
5612 /* vec_any_ge */
5613 
5614 inline int
vec_any_ge(vector signed char a1,vector unsigned char a2)5615 vec_any_ge (vector signed char a1, vector unsigned char a2)
5616 {
5617   return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5618 }
5619 
5620 inline int
vec_any_ge(vector unsigned char a1,vector signed char a2)5621 vec_any_ge (vector unsigned char a1, vector signed char a2)
5622 {
5623   return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5624 }
5625 
5626 inline int
vec_any_ge(vector unsigned char a1,vector unsigned char a2)5627 vec_any_ge (vector unsigned char a1, vector unsigned char a2)
5628 {
5629   return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5630 }
5631 
5632 inline int
vec_any_ge(vector signed char a1,vector signed char a2)5633 vec_any_ge (vector signed char a1, vector signed char a2)
5634 {
5635   return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
5636 }
5637 
5638 inline int
vec_any_ge(vector signed short a1,vector unsigned short a2)5639 vec_any_ge (vector signed short a1, vector unsigned short a2)
5640 {
5641   return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5642 }
5643 
5644 inline int
vec_any_ge(vector unsigned short a1,vector signed short a2)5645 vec_any_ge (vector unsigned short a1, vector signed short a2)
5646 {
5647   return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5648 }
5649 
5650 inline int
vec_any_ge(vector unsigned short a1,vector unsigned short a2)5651 vec_any_ge (vector unsigned short a1, vector unsigned short a2)
5652 {
5653   return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5654 }
5655 
5656 inline int
vec_any_ge(vector signed short a1,vector signed short a2)5657 vec_any_ge (vector signed short a1, vector signed short a2)
5658 {
5659   return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
5660 }
5661 
5662 inline int
vec_any_ge(vector signed int a1,vector unsigned int a2)5663 vec_any_ge (vector signed int a1, vector unsigned int a2)
5664 {
5665   return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5666 }
5667 
5668 inline int
vec_any_ge(vector unsigned int a1,vector signed int a2)5669 vec_any_ge (vector unsigned int a1, vector signed int a2)
5670 {
5671   return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5672 }
5673 
5674 inline int
vec_any_ge(vector unsigned int a1,vector unsigned int a2)5675 vec_any_ge (vector unsigned int a1, vector unsigned int a2)
5676 {
5677   return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5678 }
5679 
5680 inline int
vec_any_ge(vector signed int a1,vector signed int a2)5681 vec_any_ge (vector signed int a1, vector signed int a2)
5682 {
5683   return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
5684 }
5685 
5686 inline int
vec_any_ge(vector float a1,vector float a2)5687 vec_any_ge (vector float a1, vector float a2)
5688 {
5689   return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2);
5690 }
5691 
5692 /* vec_any_gt */
5693 
5694 inline int
vec_any_gt(vector signed char a1,vector unsigned char a2)5695 vec_any_gt (vector signed char a1, vector unsigned char a2)
5696 {
5697   return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5698 }
5699 
5700 inline int
vec_any_gt(vector unsigned char a1,vector signed char a2)5701 vec_any_gt (vector unsigned char a1, vector signed char a2)
5702 {
5703   return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5704 }
5705 
5706 inline int
vec_any_gt(vector unsigned char a1,vector unsigned char a2)5707 vec_any_gt (vector unsigned char a1, vector unsigned char a2)
5708 {
5709   return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5710 }
5711 
5712 inline int
vec_any_gt(vector signed char a1,vector signed char a2)5713 vec_any_gt (vector signed char a1, vector signed char a2)
5714 {
5715   return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
5716 }
5717 
5718 inline int
vec_any_gt(vector signed short a1,vector unsigned short a2)5719 vec_any_gt (vector signed short a1, vector unsigned short a2)
5720 {
5721   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5722 }
5723 
5724 inline int
vec_any_gt(vector unsigned short a1,vector signed short a2)5725 vec_any_gt (vector unsigned short a1, vector signed short a2)
5726 {
5727   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5728 }
5729 
5730 inline int
vec_any_gt(vector unsigned short a1,vector unsigned short a2)5731 vec_any_gt (vector unsigned short a1, vector unsigned short a2)
5732 {
5733   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5734 }
5735 
5736 inline int
vec_any_gt(vector signed short a1,vector signed short a2)5737 vec_any_gt (vector signed short a1, vector signed short a2)
5738 {
5739   return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
5740 }
5741 
5742 inline int
vec_any_gt(vector signed int a1,vector unsigned int a2)5743 vec_any_gt (vector signed int a1, vector unsigned int a2)
5744 {
5745   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5746 }
5747 
5748 inline int
vec_any_gt(vector unsigned int a1,vector signed int a2)5749 vec_any_gt (vector unsigned int a1, vector signed int a2)
5750 {
5751   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5752 }
5753 
5754 inline int
vec_any_gt(vector unsigned int a1,vector unsigned int a2)5755 vec_any_gt (vector unsigned int a1, vector unsigned int a2)
5756 {
5757   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5758 }
5759 
5760 inline int
vec_any_gt(vector signed int a1,vector signed int a2)5761 vec_any_gt (vector signed int a1, vector signed int a2)
5762 {
5763   return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
5764 }
5765 
5766 inline int
vec_any_gt(vector float a1,vector float a2)5767 vec_any_gt (vector float a1, vector float a2)
5768 {
5769   return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2);
5770 }
5771 
5772 /* vec_any_le */
5773 
5774 inline int
vec_any_le(vector signed char a1,vector unsigned char a2)5775 vec_any_le (vector signed char a1, vector unsigned char a2)
5776 {
5777   return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5778 }
5779 
5780 inline int
vec_any_le(vector unsigned char a1,vector signed char a2)5781 vec_any_le (vector unsigned char a1, vector signed char a2)
5782 {
5783   return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5784 }
5785 
5786 inline int
vec_any_le(vector unsigned char a1,vector unsigned char a2)5787 vec_any_le (vector unsigned char a1, vector unsigned char a2)
5788 {
5789   return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5790 }
5791 
5792 inline int
vec_any_le(vector signed char a1,vector signed char a2)5793 vec_any_le (vector signed char a1, vector signed char a2)
5794 {
5795   return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5796 }
5797 
5798 inline int
vec_any_le(vector signed short a1,vector unsigned short a2)5799 vec_any_le (vector signed short a1, vector unsigned short a2)
5800 {
5801   return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5802 }
5803 
5804 inline int
vec_any_le(vector unsigned short a1,vector signed short a2)5805 vec_any_le (vector unsigned short a1, vector signed short a2)
5806 {
5807   return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5808 }
5809 
5810 inline int
vec_any_le(vector unsigned short a1,vector unsigned short a2)5811 vec_any_le (vector unsigned short a1, vector unsigned short a2)
5812 {
5813   return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5814 }
5815 
5816 inline int
vec_any_le(vector signed short a1,vector signed short a2)5817 vec_any_le (vector signed short a1, vector signed short a2)
5818 {
5819   return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5820 }
5821 
5822 inline int
vec_any_le(vector signed int a1,vector unsigned int a2)5823 vec_any_le (vector signed int a1, vector unsigned int a2)
5824 {
5825   return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5826 }
5827 
5828 inline int
vec_any_le(vector unsigned int a1,vector signed int a2)5829 vec_any_le (vector unsigned int a1, vector signed int a2)
5830 {
5831   return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5832 }
5833 
5834 inline int
vec_any_le(vector unsigned int a1,vector unsigned int a2)5835 vec_any_le (vector unsigned int a1, vector unsigned int a2)
5836 {
5837   return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5838 }
5839 
5840 inline int
vec_any_le(vector signed int a1,vector signed int a2)5841 vec_any_le (vector signed int a1, vector signed int a2)
5842 {
5843   return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5844 }
5845 
5846 inline int
vec_any_le(vector float a1,vector float a2)5847 vec_any_le (vector float a1, vector float a2)
5848 {
5849   return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a2, a1);
5850 }
5851 
5852 /* vec_any_lt */
5853 
5854 inline int
vec_any_lt(vector signed char a1,vector unsigned char a2)5855 vec_any_lt (vector signed char a1, vector unsigned char a2)
5856 {
5857   return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5858 }
5859 
5860 inline int
vec_any_lt(vector unsigned char a1,vector signed char a2)5861 vec_any_lt (vector unsigned char a1, vector signed char a2)
5862 {
5863   return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5864 }
5865 
5866 inline int
vec_any_lt(vector unsigned char a1,vector unsigned char a2)5867 vec_any_lt (vector unsigned char a1, vector unsigned char a2)
5868 {
5869   return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5870 }
5871 
5872 inline int
vec_any_lt(vector signed char a1,vector signed char a2)5873 vec_any_lt (vector signed char a1, vector signed char a2)
5874 {
5875   return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
5876 }
5877 
5878 inline int
vec_any_lt(vector signed short a1,vector unsigned short a2)5879 vec_any_lt (vector signed short a1, vector unsigned short a2)
5880 {
5881   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5882 }
5883 
5884 inline int
vec_any_lt(vector unsigned short a1,vector signed short a2)5885 vec_any_lt (vector unsigned short a1, vector signed short a2)
5886 {
5887   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5888 }
5889 
5890 inline int
vec_any_lt(vector unsigned short a1,vector unsigned short a2)5891 vec_any_lt (vector unsigned short a1, vector unsigned short a2)
5892 {
5893   return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5894 }
5895 
5896 inline int
vec_any_lt(vector signed short a1,vector signed short a2)5897 vec_any_lt (vector signed short a1, vector signed short a2)
5898 {
5899   return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
5900 }
5901 
5902 inline int
vec_any_lt(vector signed int a1,vector unsigned int a2)5903 vec_any_lt (vector signed int a1, vector unsigned int a2)
5904 {
5905   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5906 }
5907 
5908 inline int
vec_any_lt(vector unsigned int a1,vector signed int a2)5909 vec_any_lt (vector unsigned int a1, vector signed int a2)
5910 {
5911   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5912 }
5913 
5914 inline int
vec_any_lt(vector unsigned int a1,vector unsigned int a2)5915 vec_any_lt (vector unsigned int a1, vector unsigned int a2)
5916 {
5917   return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5918 }
5919 
5920 inline int
vec_any_lt(vector signed int a1,vector signed int a2)5921 vec_any_lt (vector signed int a1, vector signed int a2)
5922 {
5923   return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
5924 }
5925 
5926 inline int
vec_any_lt(vector float a1,vector float a2)5927 vec_any_lt (vector float a1, vector float a2)
5928 {
5929   return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1);
5930 }
5931 
5932 /* vec_any_nan */
5933 
5934 inline int
vec_any_nan(vector float a1)5935 vec_any_nan (vector float a1)
5936 {
5937   return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1);
5938 }
5939 
5940 /* vec_any_ne */
5941 
5942 inline int
vec_any_ne(vector signed char a1,vector unsigned char a2)5943 vec_any_ne (vector signed char a1, vector unsigned char a2)
5944 {
5945   return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5946 }
5947 
5948 inline int
vec_any_ne(vector signed char a1,vector signed char a2)5949 vec_any_ne (vector signed char a1, vector signed char a2)
5950 {
5951   return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5952 }
5953 
5954 inline int
vec_any_ne(vector unsigned char a1,vector signed char a2)5955 vec_any_ne (vector unsigned char a1, vector signed char a2)
5956 {
5957   return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5958 }
5959 
5960 inline int
vec_any_ne(vector unsigned char a1,vector unsigned char a2)5961 vec_any_ne (vector unsigned char a1, vector unsigned char a2)
5962 {
5963   return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
5964 }
5965 
5966 inline int
vec_any_ne(vector signed short a1,vector unsigned short a2)5967 vec_any_ne (vector signed short a1, vector unsigned short a2)
5968 {
5969   return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5970 }
5971 
5972 inline int
vec_any_ne(vector signed short a1,vector signed short a2)5973 vec_any_ne (vector signed short a1, vector signed short a2)
5974 {
5975   return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5976 }
5977 
5978 inline int
vec_any_ne(vector unsigned short a1,vector signed short a2)5979 vec_any_ne (vector unsigned short a1, vector signed short a2)
5980 {
5981   return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5982 }
5983 
5984 inline int
vec_any_ne(vector unsigned short a1,vector unsigned short a2)5985 vec_any_ne (vector unsigned short a1, vector unsigned short a2)
5986 {
5987   return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
5988 }
5989 
5990 inline int
vec_any_ne(vector signed int a1,vector unsigned int a2)5991 vec_any_ne (vector signed int a1, vector unsigned int a2)
5992 {
5993   return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
5994 }
5995 
5996 inline int
vec_any_ne(vector signed int a1,vector signed int a2)5997 vec_any_ne (vector signed int a1, vector signed int a2)
5998 {
5999   return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
6000 }
6001 
6002 inline int
vec_any_ne(vector unsigned int a1,vector signed int a2)6003 vec_any_ne (vector unsigned int a1, vector signed int a2)
6004 {
6005   return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
6006 }
6007 
6008 inline int
vec_any_ne(vector unsigned int a1,vector unsigned int a2)6009 vec_any_ne (vector unsigned int a1, vector unsigned int a2)
6010 {
6011   return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
6012 }
6013 
6014 inline int
vec_any_ne(vector float a1,vector float a2)6015 vec_any_ne (vector float a1, vector float a2)
6016 {
6017   return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2);
6018 }
6019 
6020 /* vec_any_nge */
6021 
6022 inline int
vec_any_nge(vector float a1,vector float a2)6023 vec_any_nge (vector float a1, vector float a2)
6024 {
6025   return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2);
6026 }
6027 
6028 /* vec_any_ngt */
6029 
6030 inline int
vec_any_ngt(vector float a1,vector float a2)6031 vec_any_ngt (vector float a1, vector float a2)
6032 {
6033   return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2);
6034 }
6035 
6036 /* vec_any_nle */
6037 
6038 inline int
vec_any_nle(vector float a1,vector float a2)6039 vec_any_nle (vector float a1, vector float a2)
6040 {
6041   return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1);
6042 }
6043 
6044 /* vec_any_nlt */
6045 
6046 inline int
vec_any_nlt(vector float a1,vector float a2)6047 vec_any_nlt (vector float a1, vector float a2)
6048 {
6049   return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1);
6050 }
6051 
6052 /* vec_any_numeric */
6053 
6054 inline int
vec_any_numeric(vector float a1)6055 vec_any_numeric (vector float a1)
6056 {
6057   return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1);
6058 }
6059 
6060 /* vec_any_out */
6061 
6062 inline int
vec_any_out(vector float a1,vector float a2)6063 vec_any_out (vector float a1, vector float a2)
6064 {
6065   return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2);
6066 }
6067 
6068 /* vec_step */
6069 
6070 template<typename _Tp>
6071 struct __vec_step_help
6072 {
6073   // All proper vector types will specialize _S_elem.
6074 };
6075 
6076 template<>
6077 struct __vec_step_help<vector signed short>
6078 {
6079   static const int _S_elem = 8;
6080 };
6081 
6082 template<>
6083 struct __vec_step_help<vector unsigned short>
6084 {
6085   static const int _S_elem = 8;
6086 };
6087 
6088 template<>
6089 struct __vec_step_help<vector signed int>
6090 {
6091   static const int _S_elem = 4;
6092 };
6093 
6094 template<>
6095 struct __vec_step_help<vector unsigned int>
6096 {
6097   static const int _S_elem = 4;
6098 };
6099 
6100 template<>
6101 struct __vec_step_help<vector unsigned char>
6102 {
6103   static const int _S_elem = 16;
6104 };
6105 
6106 template<>
6107 struct __vec_step_help<vector signed char>
6108 {
6109   static const int _S_elem = 16;
6110 };
6111 
6112 template<>
6113 struct __vec_step_help<vector float>
6114 {
6115   static const int _S_elem = 4;
6116 };
6117 
6118 #define vec_step(t)  __vec_step_help<typeof(t)>::_S_elem
6119 
6120 #else /* not C++ */
6121 
6122 /* "... and so I think no man in a century will suffer as greatly as
6123    you will."  */
6124 
6125 #define vec_abs(a) \
6126   __ch (__un_args_eq (vector signed char, (a)), \
6127         ((vector signed char) __builtin_altivec_abs_v16qi ((vector signed char) (a))), \
6128   __ch (__un_args_eq (vector signed short, (a)), \
6129         ((vector signed short) __builtin_altivec_abs_v8hi ((vector signed short) (a))), \
6130   __ch (__un_args_eq (vector signed int, (a)), \
6131         ((vector signed int) __builtin_altivec_abs_v4si ((vector signed int) (a))), \
6132   __ch (__un_args_eq (vector float, (a)), \
6133         ((vector float) __builtin_altivec_abs_v4sf ((vector float) (a))), \
6134   __altivec_link_error_invalid_argument ()))))
6135 
6136 #define vec_abss(a) \
6137   __ch (__un_args_eq (vector signed char, (a)), \
6138         ((vector signed char) __builtin_altivec_abss_v16qi ((vector signed char) (a))), \
6139   __ch (__un_args_eq (vector signed short, (a)), \
6140         ((vector signed short) __builtin_altivec_abss_v8hi ((vector signed short) (a))), \
6141   __ch (__un_args_eq (vector signed int, (a)), \
6142         ((vector signed int) __builtin_altivec_abss_v4si ((vector signed int) (a))), \
6143   __altivec_link_error_invalid_argument ())))
6144 
6145 #define vec_step(t) \
6146   __ch (__builtin_types_compatible_p (typeof (t), vector signed int), 4,      \
6147   __ch (__builtin_types_compatible_p (typeof (t), vector unsigned int), 4,    \
6148   __ch (__builtin_types_compatible_p (typeof (t), vector signed short), 8,    \
6149   __ch (__builtin_types_compatible_p (typeof (t), vector unsigned short), 8,  \
6150   __ch (__builtin_types_compatible_p (typeof (t), vector signed char), 16,    \
6151   __ch (__builtin_types_compatible_p (typeof (t), vector unsigned char), 16,  \
6152   __ch (__builtin_types_compatible_p (typeof (t), vector float), 4,           \
6153   __altivec_link_error_invalid_argument ())))))))
6154 
6155 #define vec_vaddubm(a1, a2) \
6156 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6157       ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6158 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6159       ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6160 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6161       ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6162 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6163       ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6164   __altivec_link_error_invalid_argument ()))))
6165 
6166 #define vec_vadduhm(a1, a2) \
6167 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6168       ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6169 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6170       ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6171 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6172       ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6173 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6174       ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6175   __altivec_link_error_invalid_argument ()))))
6176 
6177 #define vec_vadduwm(a1, a2) \
6178 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6179       ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6180 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6181       ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6182 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6183       ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6184 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6185       ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6186   __altivec_link_error_invalid_argument ()))))
6187 
6188 #define vec_vaddfp(a1, a2) \
6189 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6190       ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
6191   __altivec_link_error_invalid_argument ())
6192 
6193 #define vec_add(a1, a2) \
6194 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6195       ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6196 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6197       ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6198 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6199       ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6200 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6201       ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
6202 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6203       ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6204 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6205       ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6206 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6207       ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6208 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6209       ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
6210 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6211       ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6212 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6213       ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6214 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6215       ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6216 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6217       ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
6218 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6219       ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
6220     __altivec_link_error_invalid_argument ())))))))))))))
6221 
6222 #define vec_addc(a1, a2) \
6223 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6224       ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
6225     __altivec_link_error_invalid_argument ())
6226 
6227 #define vec_adds(a1, a2) \
6228 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6229       ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6230 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6231       ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6232 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6233       ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6234 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6235       ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
6236 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6237       ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6238 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6239       ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6240 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6241       ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6242 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6243       ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
6244 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6245       ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6246 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6247       ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6248 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6249       ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6250 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6251       ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
6252     __altivec_link_error_invalid_argument ()))))))))))))
6253 
6254 #define vec_vaddsws(a1, a2) \
6255 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6256       ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
6257   __altivec_link_error_invalid_argument ())
6258 
6259 #define vec_vadduws(a1, a2) \
6260 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6261       ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6262 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6263       ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6264 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6265       ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
6266   __altivec_link_error_invalid_argument ())))
6267 
6268 #define vec_vaddshs(a1, a2) \
6269 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6270       ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
6271   __altivec_link_error_invalid_argument ())
6272 
6273 #define vec_vadduhs(a1, a2) \
6274 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6275       ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6276 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6277       ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6278 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6279       ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
6280   __altivec_link_error_invalid_argument ())))
6281 
6282 #define vec_vaddsbs(a1, a2) \
6283 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6284       ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
6285   __altivec_link_error_invalid_argument ())
6286 
6287 #define vec_vaddubs(a1, a2) \
6288 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6289       ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6290 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6291       ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6292 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6293       ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
6294   __altivec_link_error_invalid_argument ())))
6295 
6296 #define vec_and(a1, a2) \
6297 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6298       ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6299 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
6300       ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6301 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
6302       ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6303 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6304       ((vector signed int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6305 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6306       ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6307 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6308       ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6309 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6310       ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6311 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6312       ((vector signed short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6313 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6314       ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6315 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6316       ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6317 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6318       ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6319 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6320       ((vector signed char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6321 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6322       ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6323 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6324       ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6325 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6326       ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
6327     __altivec_link_error_invalid_argument ())))))))))))))))
6328 
6329 #define vec_andc(a1, a2) \
6330 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6331       ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6332 __ch (__bin_args_eq (vector float, (a1), vector unsigned int, (a2)), \
6333       ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6334 __ch (__bin_args_eq (vector unsigned int, (a1), vector float, (a2)), \
6335       ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6336 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
6337       ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6338 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
6339       ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6340 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6341       ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6342 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6343       ((vector signed int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6344 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6345       ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6346 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6347       ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6348 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6349       ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6350 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6351       ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6352 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6353       ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6354 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6355       ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6356 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6357       ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6358 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6359       ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6360 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6361       ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6362 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6363       ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6364 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6365       ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6366 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6367       ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6368 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6369       ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6370 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6371       ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6372 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6373       ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6374 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6375       ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
6376     __altivec_link_error_invalid_argument ())))))))))))))))))))))))
6377 
6378 #define vec_avg(a1, a2) \
6379 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6380       ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
6381 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6382       ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
6383 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6384       ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
6385 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6386       ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
6387 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6388       ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
6389 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6390       ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
6391     __altivec_link_error_invalid_argument ()))))))
6392 
6393 #define vec_vavgsw(a1, a2) \
6394 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6395       ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
6396   __altivec_link_error_invalid_argument ())
6397 
6398 #define vec_vavguw(a1, a2) \
6399 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6400       ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
6401   __altivec_link_error_invalid_argument ())
6402 
6403 #define vec_vavgsh(a1, a2) \
6404 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6405       ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
6406   __altivec_link_error_invalid_argument ())
6407 
6408 #define vec_vavguh(a1, a2) \
6409 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6410       ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
6411   __altivec_link_error_invalid_argument ())
6412 
6413 #define vec_vavgsb(a1, a2) \
6414 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6415       ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
6416   __altivec_link_error_invalid_argument ())
6417 
6418 #define vec_vavgub(a1, a2) \
6419 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6420       ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
6421   __altivec_link_error_invalid_argument ())
6422 
6423 #define vec_ceil(a1) __builtin_altivec_vrfip ((a1))
6424 
6425 #define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2))
6426 
6427 #define vec_cmpeq(a1, a2) \
6428 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6429       ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6430 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6431       ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6432 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6433       ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6434 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6435       ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6436 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6437       ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6438 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6439       ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6440 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6441       ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
6442     __altivec_link_error_invalid_argument ())))))))
6443 
6444 #define vec_vcmpeqfp(a1, a2) \
6445 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6446       ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
6447   __altivec_link_error_invalid_argument ())
6448 
6449 #define vec_vcmpequw(a1, a2) \
6450 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6451       ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6452 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6453       ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
6454   __altivec_link_error_invalid_argument ()))
6455 
6456 #define vec_vcmpequh(a1, a2) \
6457 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6458       ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6459 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6460       ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
6461   __altivec_link_error_invalid_argument ()))
6462 
6463 #define vec_vcmpequb(a1, a2) \
6464 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6465       ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6466 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6467       ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
6468   __altivec_link_error_invalid_argument ()))
6469 
6470 #define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2))
6471 
6472 #define vec_cmpgt(a1, a2) \
6473 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6474       ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
6475 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6476       ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
6477 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6478       ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
6479 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6480       ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
6481 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6482       ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
6483 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6484       ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
6485 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6486       ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
6487     __altivec_link_error_invalid_argument ())))))))
6488 
6489 #define vec_vcmpgtfp(a1, a2) \
6490 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6491       ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
6492   __altivec_link_error_invalid_argument ())
6493 
6494 #define vec_vcmpgtsw(a1, a2) \
6495 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6496       ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
6497   __altivec_link_error_invalid_argument ())
6498 
6499 #define vec_vcmpgtuw(a1, a2) \
6500 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6501       ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
6502   __altivec_link_error_invalid_argument ())
6503 
6504 #define vec_vcmpgtsh(a1, a2) \
6505 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6506       ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
6507   __altivec_link_error_invalid_argument ())
6508 
6509 #define vec_vcmpgtuh(a1, a2) \
6510 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6511       ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
6512   __altivec_link_error_invalid_argument ())
6513 
6514 #define vec_vcmpgtsb(a1, a2) \
6515 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6516       ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
6517   __altivec_link_error_invalid_argument ())
6518 
6519 #define vec_vcmpgtub(a1, a2) \
6520 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6521       ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
6522   __altivec_link_error_invalid_argument ())
6523 
6524 #define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a2), (a1))
6525 
6526 #define vec_cmplt(a2, a1) \
6527 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6528       ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
6529 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6530       ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
6531 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6532       ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
6533 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6534       ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
6535 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6536       ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
6537 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6538       ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
6539 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6540       ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
6541     __altivec_link_error_invalid_argument ())))))))
6542 
6543 #define vec_ctf(a1, a2) \
6544 __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
6545       ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6546 __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
6547       ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6548 __ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
6549       ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6550 __ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
6551       ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6552     __altivec_link_error_invalid_argument ()))))
6553 
6554 #define vec_vcfsx(a1, a2) \
6555 __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
6556       ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6557 __ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
6558       ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
6559   __altivec_link_error_invalid_argument ()))
6560 
6561 #define vec_vcfux(a1, a2) \
6562 __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
6563       ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6564 __ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
6565       ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
6566   __altivec_link_error_invalid_argument ()))
6567 
6568 #define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
6569 
6570 #define vec_ctu(a1, a2) (vector unsigned int) __builtin_altivec_vctuxs ((a1), (a2))
6571 
6572 #define vec_dss(a1) __builtin_altivec_dss ((a1))
6573 
6574 #define vec_dssall() __builtin_altivec_dssall ()
6575 
6576 #define vec_dst(a1, a2, a3) \
6577 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6578       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6579 __ch (__un_args_eq (vector signed char, *(a1)), \
6580       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6581 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6582       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6583 __ch (__un_args_eq (vector signed short, *(a1)), \
6584       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6585 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6586       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6587 __ch (__un_args_eq (vector signed int, *(a1)), \
6588       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6589 __ch (__un_args_eq (vector float, *(a1)), \
6590       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6591 __ch (__un_args_eq (unsigned char, *(a1)), \
6592       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6593 __ch (__un_args_eq (signed char, *(a1)), \
6594       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6595 __ch (__un_args_eq (unsigned short, *(a1)), \
6596       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6597 __ch (__un_args_eq (signed short, *(a1)), \
6598       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6599 __ch (__un_args_eq (unsigned int, *(a1)), \
6600       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6601 __ch (__un_args_eq (signed int, *(a1)), \
6602       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6603 __ch (__un_args_eq (unsigned long, *(a1)), \
6604       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6605 __ch (__un_args_eq (signed long, *(a1)), \
6606       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6607 __ch (__un_args_eq (float, *(a1)), \
6608       __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
6609   __altivec_link_error_invalid_argument ()))))))))))))))))
6610 
6611 #define vec_dstst(a1, a2, a3) \
6612 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6613       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6614 __ch (__un_args_eq (vector signed char, *(a1)), \
6615       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6616 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6617       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6618 __ch (__un_args_eq (vector signed short, *(a1)), \
6619       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6620 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6621       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6622 __ch (__un_args_eq (vector signed int, *(a1)), \
6623       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6624 __ch (__un_args_eq (vector float, *(a1)), \
6625       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6626 __ch (__un_args_eq (unsigned char, *(a1)), \
6627       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6628 __ch (__un_args_eq (signed char, *(a1)), \
6629       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6630 __ch (__un_args_eq (unsigned short, *(a1)), \
6631       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6632 __ch (__un_args_eq (signed short, *(a1)), \
6633       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6634 __ch (__un_args_eq (unsigned int, *(a1)), \
6635       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6636 __ch (__un_args_eq (signed int, *(a1)), \
6637       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6638 __ch (__un_args_eq (unsigned long, *(a1)), \
6639       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6640 __ch (__un_args_eq (signed long, *(a1)), \
6641       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6642 __ch (__un_args_eq (float, *(a1)), \
6643       __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
6644   __altivec_link_error_invalid_argument ()))))))))))))))))
6645 
6646 #define vec_dststt(a1, a2, a3) \
6647 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6648       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6649 __ch (__un_args_eq (vector signed char, *(a1)), \
6650       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6651 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6652       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6653 __ch (__un_args_eq (vector signed short, *(a1)), \
6654       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6655 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6656       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6657 __ch (__un_args_eq (vector signed int, *(a1)), \
6658       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6659 __ch (__un_args_eq (vector float, *(a1)), \
6660       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6661 __ch (__un_args_eq (unsigned char, *(a1)), \
6662       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6663 __ch (__un_args_eq (signed char, *(a1)), \
6664       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6665 __ch (__un_args_eq (unsigned short, *(a1)), \
6666       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6667 __ch (__un_args_eq (signed short, *(a1)), \
6668       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6669 __ch (__un_args_eq (unsigned int, *(a1)), \
6670       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6671 __ch (__un_args_eq (signed int, *(a1)), \
6672       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6673 __ch (__un_args_eq (unsigned long, *(a1)), \
6674       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6675 __ch (__un_args_eq (signed long, *(a1)), \
6676       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6677 __ch (__un_args_eq (float, *(a1)), \
6678       __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
6679   __altivec_link_error_invalid_argument ()))))))))))))))))
6680 
6681 #define vec_dstt(a1, a2, a3) \
6682 __ch (__un_args_eq (vector unsigned char, *(a1)), \
6683       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6684 __ch (__un_args_eq (vector signed char, *(a1)), \
6685       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6686 __ch (__un_args_eq (vector unsigned short, *(a1)), \
6687       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6688 __ch (__un_args_eq (vector signed short, *(a1)), \
6689       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6690 __ch (__un_args_eq (vector unsigned int, *(a1)), \
6691       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6692 __ch (__un_args_eq (vector signed int, *(a1)), \
6693       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6694 __ch (__un_args_eq (vector float, *(a1)), \
6695       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6696 __ch (__un_args_eq (unsigned char, *(a1)), \
6697       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6698 __ch (__un_args_eq (signed char, *(a1)), \
6699       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6700 __ch (__un_args_eq (unsigned short, *(a1)), \
6701       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6702 __ch (__un_args_eq (signed short, *(a1)), \
6703       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6704 __ch (__un_args_eq (unsigned int, *(a1)), \
6705       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6706 __ch (__un_args_eq (signed int, *(a1)), \
6707       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6708 __ch (__un_args_eq (unsigned long, *(a1)), \
6709       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6710 __ch (__un_args_eq (signed long, *(a1)), \
6711       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6712 __ch (__un_args_eq (float, *(a1)), \
6713       __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
6714   __altivec_link_error_invalid_argument ()))))))))))))))))
6715 
6716 #define vec_expte(a1) __builtin_altivec_vexptefp ((a1))
6717 
6718 #define vec_floor(a1) __builtin_altivec_vrfim (a1)
6719 
6720 #define vec_ld(a, b) \
6721 __ch (__un_args_eq (vector unsigned char, *(b)), \
6722       ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
6723 __ch (__un_args_eq (unsigned char, *(b)), \
6724       ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
6725 __ch (__un_args_eq (vector signed char, *(b)), \
6726       ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
6727 __ch (__un_args_eq (signed char, *(b)), \
6728       ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
6729 __ch (__un_args_eq (vector unsigned short, *(b)), \
6730       ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
6731 __ch (__un_args_eq (unsigned short, *(b)), \
6732       ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
6733 __ch (__un_args_eq (vector signed short, *(b)), \
6734       ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
6735 __ch (__un_args_eq (signed short, *(b)), \
6736       ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
6737 __ch (__un_args_eq (vector unsigned int, *(b)), \
6738       ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
6739 __ch (__un_args_eq (unsigned int, *(b)), \
6740       ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
6741 __ch (__un_args_eq (unsigned long, *(b)), \
6742       ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
6743 __ch (__un_args_eq (vector signed int, *(b)), \
6744       ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
6745 __ch (__un_args_eq (signed int, *(b)), \
6746       ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
6747 __ch (__un_args_eq (signed long, *(b)), \
6748       ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
6749 __ch (__un_args_eq (vector float, *(b)), \
6750       ((vector float) __builtin_altivec_lvx ((a), (b))), \
6751 __ch (__un_args_eq (float, *(b)), \
6752       ((vector float) __builtin_altivec_lvx ((a), (b))), \
6753 __altivec_link_error_invalid_argument ()))))))))))))))))
6754 
6755 #define vec_lde(a, b) \
6756 __ch (__un_args_eq (unsigned char, *(b)), \
6757       ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
6758 __ch (__un_args_eq (signed char, *(b)), \
6759       ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
6760 __ch (__un_args_eq (unsigned short, *(b)), \
6761       ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
6762 __ch (__un_args_eq (signed short, *(b)), \
6763       ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
6764 __ch (__un_args_eq (unsigned long, *(b)), \
6765       ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6766 __ch (__un_args_eq (signed long, *(b)), \
6767       ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6768 __ch (__un_args_eq (unsigned int, *(b)), \
6769       ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6770 __ch (__un_args_eq (signed int, *(b)), \
6771       ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6772 __ch (__un_args_eq (float, *(b)), \
6773       ((vector float) __builtin_altivec_lvewx ((a), (b))), \
6774 __altivec_link_error_invalid_argument ())))))))))
6775 
6776 #define vec_lvewx(a, b) \
6777 __ch (__un_args_eq (unsigned int, *(b)), \
6778       ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6779 __ch (__un_args_eq (signed int, *(b)), \
6780       ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6781 __ch (__un_args_eq (unsigned long, *(b)), \
6782       ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
6783 __ch (__un_args_eq (signed long, *(b)), \
6784       ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
6785 __ch (__un_args_eq (float, *(b)), \
6786       ((vector float) __builtin_altivec_lvewx ((a), (b))), \
6787 __altivec_link_error_invalid_argument ())))))
6788 
6789 #define vec_lvehx(a, b) \
6790 __ch (__un_args_eq (unsigned short, *(b)), \
6791       ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
6792 __ch (__un_args_eq (signed short, *(b)), \
6793       ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
6794 __altivec_link_error_invalid_argument ()))
6795 
6796 #define vec_lvebx(a, b) \
6797 __ch (__un_args_eq (unsigned char, *(b)), \
6798       ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
6799 __ch (__un_args_eq (signed char, *(b)), \
6800       ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
6801 __altivec_link_error_invalid_argument ()))
6802 
6803 #define vec_ldl(a, b) \
6804 __ch (__un_args_eq (vector unsigned char, *(b)), \
6805       ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
6806 __ch (__un_args_eq (unsigned char, *(b)), \
6807       ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
6808 __ch (__un_args_eq (vector signed char, *(b)), \
6809       ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
6810 __ch (__un_args_eq (signed char, *(b)), \
6811       ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
6812 __ch (__un_args_eq (vector unsigned short, *(b)), \
6813       ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
6814 __ch (__un_args_eq (unsigned short, *(b)), \
6815       ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
6816 __ch (__un_args_eq (vector signed short, *(b)), \
6817       ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
6818 __ch (__un_args_eq (signed short, *(b)), \
6819       ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
6820 __ch (__un_args_eq (vector unsigned int, *(b)), \
6821       ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
6822 __ch (__un_args_eq (unsigned int, *(b)), \
6823       ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
6824 __ch (__un_args_eq (unsigned long, *(b)), \
6825       ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
6826 __ch (__un_args_eq (vector signed int, *(b)), \
6827       ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
6828 __ch (__un_args_eq (signed int, *(b)), \
6829       ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
6830 __ch (__un_args_eq (signed long, *(b)), \
6831       ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
6832 __ch (__un_args_eq (vector float, *(b)), \
6833       ((vector float) __builtin_altivec_lvxl ((a), (b))), \
6834 __ch (__un_args_eq (float, *(b)), \
6835       ((vector float) __builtin_altivec_lvxl ((a), (b))), \
6836 __altivec_link_error_invalid_argument ()))))))))))))))))
6837 
6838 #define vec_loge(a1) __builtin_altivec_vlogefp ((a1))
6839 
6840 #define vec_lvsl(a1, a2) \
6841 __ch (__un_args_eq (unsigned char, *(a2)), \
6842       ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6843 __ch (__un_args_eq (signed char, *(a2)), \
6844       ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6845 __ch (__un_args_eq (unsigned short, *(a2)), \
6846       ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6847 __ch (__un_args_eq (signed short, *(a2)), \
6848       ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6849 __ch (__un_args_eq (unsigned int, *(a2)), \
6850       ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6851 __ch (__un_args_eq (signed int, *(a2)), \
6852       ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6853 __ch (__un_args_eq (unsigned long, *(a2)), \
6854       ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6855 __ch (__un_args_eq (signed long, *(a2)), \
6856       ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6857 __ch (__un_args_eq (float, *(a2)), \
6858       ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
6859 __altivec_link_error_invalid_argument ())))))))))
6860 
6861 #define vec_lvsr(a1, a2) \
6862 __ch (__un_args_eq (unsigned char, *(a2)), \
6863       ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6864 __ch (__un_args_eq (signed char, *(a2)), \
6865       ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6866 __ch (__un_args_eq (unsigned short, *(a2)), \
6867       ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6868 __ch (__un_args_eq (signed short, *(a2)), \
6869       ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6870 __ch (__un_args_eq (unsigned int, *(a2)), \
6871       ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6872 __ch (__un_args_eq (signed int, *(a2)), \
6873       ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6874 __ch (__un_args_eq (unsigned long, *(a2)), \
6875       ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6876 __ch (__un_args_eq (signed long, *(a2)), \
6877       ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6878 __ch (__un_args_eq (float, *(a2)), \
6879       ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
6880 __altivec_link_error_invalid_argument ())))))))))
6881 
6882 #define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3)))
6883 
6884 #define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))
6885 
6886 #define vec_max(a1, a2) \
6887 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6888       ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6889 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6890       ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6891 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6892       ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6893 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6894       ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
6895 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6896       ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6897 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6898       ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6899 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6900       ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6901 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6902       ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
6903 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6904       ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6905 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6906       ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6907 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6908       ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6909 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6910       ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
6911 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6912       ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
6913     __altivec_link_error_invalid_argument ())))))))))))))
6914 
6915 #define vec_vmaxfp(a1, a2) \
6916 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6917       ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
6918 __altivec_link_error_invalid_argument ())
6919 
6920 #define vec_vmaxsw(a1, a2) \
6921 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6922       ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
6923 __altivec_link_error_invalid_argument ())
6924 
6925 #define vec_vmaxuw(a1, a2) \
6926 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
6927       ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6928 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
6929       ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6930 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6931       ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
6932 __altivec_link_error_invalid_argument ())))
6933 
6934 #define vec_vmaxsh(a1, a2) \
6935 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6936       ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
6937 __altivec_link_error_invalid_argument ())
6938 
6939 #define vec_vmaxuh(a1, a2) \
6940 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
6941       ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6942 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
6943       ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6944 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6945       ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
6946 __altivec_link_error_invalid_argument ())))
6947 
6948 #define vec_vmaxsb(a1, a2) \
6949 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6950       ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
6951 __altivec_link_error_invalid_argument ())
6952 
6953 #define vec_vmaxub(a1, a2) \
6954 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
6955       ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6956 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
6957       ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6958 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6959       ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
6960 __altivec_link_error_invalid_argument ())))
6961 
6962 #define vec_mergeh(a1, a2) \
6963 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6964       ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
6965 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6966       ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
6967 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6968       ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6969 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6970       ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6971 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6972       ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6973 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6974       ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6975 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6976       ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6977     __altivec_link_error_invalid_argument ())))))))
6978 
6979 #define vec_vmrghw(a1, a2) \
6980 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
6981       ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6982 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
6983       ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6984 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
6985       ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
6986 __altivec_link_error_invalid_argument ())))
6987 
6988 #define vec_vmrghh(a1, a2) \
6989 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
6990       ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6991 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
6992       ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
6993 __altivec_link_error_invalid_argument ()))
6994 
6995 #define vec_vmrghb(a1, a2) \
6996 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
6997       ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
6998 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
6999       ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
7000 __altivec_link_error_invalid_argument ()))
7001 
7002 #define vec_mergel(a1, a2) \
7003 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7004       ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7005 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7006       ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7007 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7008       ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7009 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7010       ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7011 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7012       ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7013 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7014       ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7015 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7016       ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7017     __altivec_link_error_invalid_argument ())))))))
7018 
7019 #define vec_vmrglw(a1, a2) \
7020 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7021       ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7022 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7023       ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7024 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7025       ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
7026 __altivec_link_error_invalid_argument ())))
7027 
7028 #define vec_vmrglh(a1, a2) \
7029 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7030       ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7031 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7032       ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
7033 __altivec_link_error_invalid_argument ()))
7034 
7035 #define vec_vmrglb(a1, a2) \
7036 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7037       ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7038 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7039       ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
7040 __altivec_link_error_invalid_argument ()))
7041 
7042 #define vec_mfvscr()  (((vector unsigned short) __builtin_altivec_mfvscr ()))
7043 
7044 #define vec_min(a1, a2) \
7045 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7046       ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7047 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7048       ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7049 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7050       ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7051 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7052       ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
7053 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7054       ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7055 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7056       ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7057 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7058       ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7059 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7060       ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
7061 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7062       ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7063 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7064       ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7065 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7066       ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7067 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7068       ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
7069 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7070       ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
7071     __altivec_link_error_invalid_argument ())))))))))))))
7072 
7073 #define vec_vminfp(a1, a2) \
7074 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7075       ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
7076 __altivec_link_error_invalid_argument ())
7077 
7078 #define vec_vminsw(a1, a2) \
7079 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7080       ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
7081 __altivec_link_error_invalid_argument ())
7082 
7083 #define vec_vminuw(a1, a2) \
7084 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7085       ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7086 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7087       ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7088 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7089       ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
7090 __altivec_link_error_invalid_argument ())))
7091 
7092 #define vec_vminsh(a1, a2) \
7093 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7094       ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
7095 __altivec_link_error_invalid_argument ())
7096 
7097 #define vec_vminuh(a1, a2) \
7098 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7099       ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7100 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7101       ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7102 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7103       ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
7104 __altivec_link_error_invalid_argument ())))
7105 
7106 #define vec_vminsb(a1, a2) \
7107 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7108       ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
7109 __altivec_link_error_invalid_argument ())
7110 
7111 #define vec_vminub(a1, a2) \
7112 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7113       ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7114 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7115       ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7116 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7117       ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
7118 __altivec_link_error_invalid_argument ())))
7119 
7120 #define vec_mladd(a1, a2, a3) \
7121 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
7122       ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7123 __ch (__tern_args_eq (vector signed short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
7124       ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7125 __ch (__tern_args_eq (vector unsigned short, (a1), vector signed short, (a2), vector signed short, (a3)), \
7126       ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7127 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
7128       ((vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
7129     __altivec_link_error_invalid_argument ()))))
7130 
7131 #define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs ((a1), (a2), (a3))
7132 
7133 #define vec_msum(a1, a2, a3) \
7134 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
7135       ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7136 __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
7137       ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7138 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7139       ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7140 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7141       ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7142     __altivec_link_error_invalid_argument ()))))
7143 
7144 #define vec_vmsumshm(a1, a2, a3) \
7145 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7146       ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7147 __altivec_link_error_invalid_argument ())
7148 
7149 #define vec_vmsumuhm(a1, a2, a3) \
7150 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7151       ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7152 __altivec_link_error_invalid_argument ())
7153 
7154 #define vec_vmsummbm(a1, a2, a3) \
7155 __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
7156       ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7157 __altivec_link_error_invalid_argument ())
7158 
7159 #define vec_vmsumubm(a1, a2, a3) \
7160 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
7161       ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
7162 __altivec_link_error_invalid_argument ())
7163 
7164 #define vec_msums(a1, a2, a3) \
7165 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7166       ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7167 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7168       ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7169     __altivec_link_error_invalid_argument ()))
7170 
7171 #define vec_vmsumshs(a1, a2, a3) \
7172 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
7173       ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7174 __altivec_link_error_invalid_argument ())
7175 
7176 #define vec_vmsumuhs(a1, a2, a3) \
7177 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
7178       ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
7179 __altivec_link_error_invalid_argument ())
7180 
7181 #define vec_mtvscr(a1) \
7182 __ch (__un_args_eq (vector signed int, (a1)), \
7183       __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7184 __ch (__un_args_eq (vector unsigned int, (a1)), \
7185       __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7186 __ch (__un_args_eq (vector signed short, (a1)), \
7187       __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7188 __ch (__un_args_eq (vector unsigned short, (a1)), \
7189       __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7190 __ch (__un_args_eq (vector signed char, (a1)), \
7191       __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7192 __ch (__un_args_eq (vector unsigned char, (a1)), \
7193       __builtin_altivec_mtvscr ((vector signed int) (a1)), \
7194     __altivec_link_error_invalid_argument ()))))))
7195 
7196 #define vec_mule(a1, a2) \
7197 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7198       ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
7199 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7200       ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
7201 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7202       ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
7203 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7204       ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
7205     __altivec_link_error_invalid_argument ()))))
7206 
7207 #define vec_vmulesh(a1, a2) \
7208 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7209       ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
7210 __altivec_link_error_invalid_argument ())
7211 
7212 #define vec_vmuleuh(a1, a2) \
7213 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7214       ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
7215 __altivec_link_error_invalid_argument ())
7216 
7217 #define vec_vmulesb(a1, a2) \
7218 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7219       ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
7220 __altivec_link_error_invalid_argument ())
7221 
7222 #define vec_vmuleub(a1, a2) \
7223 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7224       ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
7225 __altivec_link_error_invalid_argument ())
7226 
7227 #define vec_mulo(a1, a2) \
7228 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7229       ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
7230 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7231       ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
7232 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7233       ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
7234 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7235       ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
7236     __altivec_link_error_invalid_argument ()))))
7237 
7238 #define vec_vmulosh(a1, a2) \
7239 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7240       ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
7241 __altivec_link_error_invalid_argument ())
7242 
7243 #define vec_vmulouh(a1, a2) \
7244 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7245       ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
7246 __altivec_link_error_invalid_argument ())
7247 
7248 #define vec_vmulosb(a1, a2) \
7249 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7250       ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
7251 __altivec_link_error_invalid_argument ())
7252 
7253 #define vec_vmuloub(a1, a2) \
7254 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7255       ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
7256 __altivec_link_error_invalid_argument ())
7257 
7258 #define vec_nmsub(a1, a2, a3) \
7259 __ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \
7260       ((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \
7261     __altivec_link_error_invalid_argument ())
7262 
7263 #define vec_nor(a1, a2) \
7264 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7265       ((vector float) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7266 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7267       ((vector signed int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7268 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7269       ((vector unsigned int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7270 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7271       ((vector signed short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7272 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7273       ((vector unsigned short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7274 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7275       ((vector signed char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7276 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7277       ((vector unsigned char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
7278     __altivec_link_error_invalid_argument ())))))))
7279 
7280 #define vec_or(a1, a2) \
7281 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7282       ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7283 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
7284       ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7285 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
7286       ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7287 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7288       ((vector signed int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7289 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7290       ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7291 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7292       ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7293 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7294       ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7295 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7296       ((vector signed short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7297 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7298       ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7299 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7300       ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7301 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7302       ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7303 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7304       ((vector signed char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7305 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7306       ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7307 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7308       ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7309 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7310       ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
7311     __altivec_link_error_invalid_argument ())))))))))))))))
7312 
7313 #define vec_pack(a1, a2) \
7314 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7315       ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7316 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7317       ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7318 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7319       ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7320 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7321       ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7322     __altivec_link_error_invalid_argument ()))))
7323 
7324 #define vec_vpkuwum(a1, a2) \
7325 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7326       ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7327 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7328       ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
7329 __altivec_link_error_invalid_argument ()))
7330 
7331 #define vec_vpkuhum(a1, a2) \
7332 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7333       ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7334 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7335       ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
7336 __altivec_link_error_invalid_argument ()))
7337 
7338 #define vec_packpx(a1, a2) \
7339 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7340   (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) (a1), (vector signed int) (a2)), \
7341 __altivec_link_error_invalid_argument ())
7342 
7343 #define vec_packs(a1, a2) \
7344 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7345       ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
7346 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7347       ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
7348 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7349       ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
7350 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7351       ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
7352     __altivec_link_error_invalid_argument ()))))
7353 
7354 #define vec_vpkswss(a1, a2) \
7355 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7356       ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
7357 __altivec_link_error_invalid_argument ())
7358 
7359 #define vec_vpkuwus(a1, a2) \
7360 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7361       ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
7362 __altivec_link_error_invalid_argument ())
7363 
7364 #define vec_vpkshss(a1, a2) \
7365 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7366       ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
7367 __altivec_link_error_invalid_argument ())
7368 
7369 #define vec_vpkuhus(a1, a2) \
7370 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7371       ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
7372 __altivec_link_error_invalid_argument ())
7373 
7374 #define vec_packsu(a1, a2) \
7375 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7376       ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
7377 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7378       ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
7379 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7380       ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
7381 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7382       ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
7383     __altivec_link_error_invalid_argument ()))))
7384 
7385 #define vec_vpkswus(a1, a2) \
7386 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7387       ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
7388 __altivec_link_error_invalid_argument ())
7389 
7390 #define vec_vpkshus(a1, a2) \
7391 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7392       ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
7393 __altivec_link_error_invalid_argument ())
7394 
7395 #define vec_perm(a1, a2, a3) \
7396 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \
7397       ((vector float) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7398 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned char, (a3)), \
7399       ((vector signed int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7400 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned char, (a3)), \
7401       ((vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7402 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned char, (a3)), \
7403       ((vector signed short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7404 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned char, (a3)), \
7405       ((vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7406 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
7407       ((vector signed char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7408 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
7409       ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
7410     __altivec_link_error_invalid_argument ())))))))
7411 
7412 #define vec_re(a1) __builtin_altivec_vrefp ((a1))
7413 
7414 #define vec_rl(a1, a2) \
7415 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7416       ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7417 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7418       ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7419 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7420       ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7421 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7422       ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7423 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7424       ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7425 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7426       ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7427     __altivec_link_error_invalid_argument ()))))))
7428 
7429 #define vec_vrlw(a1, a2) \
7430 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7431       ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7432 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7433       ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
7434 __altivec_link_error_invalid_argument ()))
7435 
7436 #define vec_vrlh(a1, a2) \
7437 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7438       ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7439 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7440       ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
7441 __altivec_link_error_invalid_argument ()))
7442 
7443 #define vec_vrlb(a1, a2) \
7444 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7445       ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7446 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7447       ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
7448 __altivec_link_error_invalid_argument ()))
7449 
7450 #define vec_round(a1) __builtin_altivec_vrfin ((a1))
7451 
7452 #define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1))
7453 
7454 #define vec_sel(a1, a2, a3) \
7455 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector signed int, (a3)), \
7456       ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7457 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned int, (a3)), \
7458       ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7459 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector signed int, (a3)), \
7460       ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7461 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned int, (a3)), \
7462       ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7463 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector signed int, (a3)), \
7464       ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7465 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned int, (a3)), \
7466       ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7467 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
7468       ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7469 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned short, (a3)), \
7470       ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7471 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector signed short, (a3)), \
7472       ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7473 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
7474       ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7475 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector signed char, (a3)), \
7476       ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7477 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
7478       ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7479 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector signed char, (a3)), \
7480       ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7481 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
7482       ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
7483     __altivec_link_error_invalid_argument ()))))))))))))))
7484 
7485 #define vec_sl(a1, a2) \
7486 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7487       ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7488 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7489       ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7490 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7491       ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7492 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7493       ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7494 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7495       ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7496 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7497       ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7498     __altivec_link_error_invalid_argument ()))))))
7499 
7500 #define vec_vslw(a1, a2) \
7501 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7502       ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7503 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7504       ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
7505 __altivec_link_error_invalid_argument ()))
7506 
7507 #define vec_vslh(a1, a2) \
7508 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7509       ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7510 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7511       ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
7512 __altivec_link_error_invalid_argument ()))
7513 
7514 #define vec_vslb(a1, a2) \
7515 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7516       ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7517 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7518       ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
7519 __altivec_link_error_invalid_argument ()))
7520 
7521 #define vec_sld(a1, a2, a3) \
7522 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \
7523       ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7524 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), unsigned int, (a3)), \
7525       ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7526 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), int, (a3)), \
7527       ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7528 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), unsigned int, (a3)), \
7529       ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7530 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), int, (a3)), \
7531       ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7532 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), unsigned int, (a3)), \
7533       ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7534 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), int, (a3)), \
7535       ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7536 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), unsigned int, (a3)), \
7537       ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7538 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), int, (a3)), \
7539       ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7540 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), unsigned int, (a3)), \
7541       ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7542 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), int, (a3)), \
7543       ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7544 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), unsigned int, (a3)), \
7545       ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7546 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), int, (a3)), \
7547       ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7548 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), unsigned int, (a3)), \
7549       ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
7550     __altivec_link_error_invalid_argument ()))))))))))))))
7551 
7552 #define vec_sll(a1, a2) \
7553 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7554       ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7555 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
7556       ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7557 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7558       ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7559 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7560       ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7561 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
7562       ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7563 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7564       ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7565 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
7566       ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7567 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7568       ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7569 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7570       ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7571 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
7572       ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7573 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7574       ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7575 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7576       ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7577 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
7578       ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7579 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
7580       ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7581 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7582       ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7583 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
7584       ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7585 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
7586       ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7587 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7588       ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
7589     __altivec_link_error_invalid_argument ()))))))))))))))))))
7590 
7591 #define vec_slo(a1, a2) \
7592 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
7593       ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7594 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
7595       ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7596 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
7597       ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7598 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7599       ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7600 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
7601       ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7602 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7603       ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7604 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
7605       ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7606 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7607       ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7608 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
7609       ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7610 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7611       ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7612 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7613       ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7614 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7615       ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7616 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7617       ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7618 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7619       ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
7620     __altivec_link_error_invalid_argument ()))))))))))))))
7621 
7622 #define vec_splat(a1, a2) \
7623 __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
7624       ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7625 __ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \
7626       ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7627 __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
7628       ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7629 __ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \
7630       ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7631 __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
7632       ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7633 __ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \
7634       ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7635 __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
7636       ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7637 __ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \
7638       ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7639 __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
7640       ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7641 __ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \
7642       ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7643 __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
7644       ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7645 __ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \
7646       ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7647 __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
7648       ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7649 __ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
7650       ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7651     __altivec_link_error_invalid_argument ()))))))))))))))
7652 
7653 #define vec_vspltw(a1, a2) \
7654 __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
7655       ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7656 __ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \
7657       ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7658 __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
7659       ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7660 __ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \
7661       ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
7662 __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
7663       ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7664 __ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
7665       ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
7666 __altivec_link_error_invalid_argument ()))))))
7667 
7668 #define vec_vsplth(a1, a2) \
7669 __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
7670       ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7671 __ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \
7672       ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7673 __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
7674       ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7675 __ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \
7676       ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
7677 __altivec_link_error_invalid_argument ()))))
7678 
7679 #define vec_vspltb(a1, a2) \
7680 __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
7681       ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7682 __ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \
7683       ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7684 __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
7685       ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7686 __ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \
7687       ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
7688 __altivec_link_error_invalid_argument ()))))
7689 
7690 #define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1))
7691 
7692 #define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1))
7693 
7694 #define vec_splat_s32(a1) __builtin_altivec_vspltisw ((a1))
7695 
7696 #define vec_splat_u8(a1) ((vector unsigned char) __builtin_altivec_vspltisb ((a1)))
7697 
7698 #define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish ((a1)))
7699 
7700 #define vec_splat_u32(a1) ((vector unsigned int) __builtin_altivec_vspltisw ((a1)))
7701 
7702 #define vec_sr(a1, a2) \
7703 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7704       ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7705 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7706       ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7707 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7708       ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7709 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7710       ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7711 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7712       ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7713 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7714       ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7715     __altivec_link_error_invalid_argument ()))))))
7716 
7717 #define vec_vsrw(a1, a2) \
7718 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7719       ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7720 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7721       ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
7722 __altivec_link_error_invalid_argument ()))
7723 
7724 #define vec_vsrh(a1, a2) \
7725 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7726       ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7727 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7728       ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
7729 __altivec_link_error_invalid_argument ()))
7730 
7731 #define vec_vsrb(a1, a2) \
7732 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7733       ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7734 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7735       ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
7736 __altivec_link_error_invalid_argument ()))
7737 
7738 #define vec_sra(a1, a2) \
7739 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7740       ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7741 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7742       ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7743 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7744       ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7745 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7746       ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7747 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7748       ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7749 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7750       ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7751     __altivec_link_error_invalid_argument ()))))))
7752 
7753 #define vec_vsraw(a1, a2) \
7754 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7755       ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7756 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7757       ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
7758 __altivec_link_error_invalid_argument ()))
7759 
7760 #define vec_vsrah(a1, a2) \
7761 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7762       ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7763 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7764       ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
7765 __altivec_link_error_invalid_argument ()))
7766 
7767 #define vec_vsrab(a1, a2) \
7768 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7769       ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7770 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7771       ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
7772 __altivec_link_error_invalid_argument ()))
7773 
7774 #define vec_srl(a1, a2) \
7775 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7776       ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7777 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
7778       ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7779 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7780       ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7781 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7782       ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7783 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
7784       ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7785 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7786       ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7787 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
7788       ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7789 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7790       ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7791 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7792       ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7793 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
7794       ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7795 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7796       ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7797 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7798       ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7799 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
7800       ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7801 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
7802       ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7803 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7804       ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7805 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
7806       ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7807 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
7808       ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7809 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7810       ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
7811     __altivec_link_error_invalid_argument ()))))))))))))))))))
7812 
7813 #define vec_sro(a1, a2) \
7814 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
7815       ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7816 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
7817       ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7818 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
7819       ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7820 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
7821       ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7822 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
7823       ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7824 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
7825       ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7826 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
7827       ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7828 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
7829       ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7830 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
7831       ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7832 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
7833       ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7834 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7835       ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7836 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7837       ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7838 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7839       ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7840 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7841       ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
7842     __altivec_link_error_invalid_argument ()))))))))))))))
7843 
7844 #define vec_st(a1, a2, a3) \
7845   __builtin_altivec_stvx ((vector signed int) (a1), (a2), (a3))
7846 
7847 #define vec_stl(a1, a2, a3) \
7848   __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (a3))
7849 
7850 #define vec_ste(a, b, c) \
7851 __ch (__un_args_eq (vector unsigned char, (a)), \
7852       __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7853 __ch (__un_args_eq (vector signed char, (a)), \
7854       __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7855 __ch (__un_args_eq (vector unsigned short, (a)), \
7856      __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7857 __ch (__un_args_eq (vector signed short, (a)), \
7858      __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7859 __ch (__un_args_eq (vector unsigned int, (a)), \
7860      __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7861 __ch (__un_args_eq (vector signed int, (a)), \
7862      __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7863 __ch (__un_args_eq (vector float, (a)), \
7864      __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7865      __altivec_link_error_invalid_argument ())))))))
7866 
7867 #define vec_stvewx(a, b, c) \
7868 __ch (__un_args_eq (vector unsigned int, (a)), \
7869      __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7870 __ch (__un_args_eq (vector signed int, (a)), \
7871      __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7872 __ch (__un_args_eq (vector float, (a)), \
7873      __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
7874 __altivec_link_error_invalid_argument ())))
7875 
7876 #define vec_stvehx(a, b, c) \
7877 __ch (__un_args_eq (vector unsigned short, (a)), \
7878      __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7879 __ch (__un_args_eq (vector signed short, (a)), \
7880      __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
7881 __altivec_link_error_invalid_argument ()))
7882 
7883 #define vec_stvebx(a, b, c) \
7884 __ch (__un_args_eq (vector unsigned char, (a)), \
7885       __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7886 __ch (__un_args_eq (vector signed char, (a)), \
7887       __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
7888 __altivec_link_error_invalid_argument ()))
7889 
7890 #define vec_sub(a1, a2) \
7891 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7892       ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7893 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7894       ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7895 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7896       ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7897 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7898       ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7899 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7900       ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7901 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7902       ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7903 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7904       ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7905 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7906       ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7907 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7908       ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7909 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7910       ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7911 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7912       ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7913 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7914       ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7915 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7916       ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
7917     __altivec_link_error_invalid_argument ())))))))))))))
7918 
7919 #define vec_vsubfp(a1, a2) \
7920 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
7921       ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
7922 __altivec_link_error_invalid_argument ())
7923 
7924 #define vec_vsubuwm(a1, a2) \
7925 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7926       ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7927 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7928       ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7929 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7930       ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7931 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7932       ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
7933 __altivec_link_error_invalid_argument ()))))
7934 
7935 #define vec_vsubuhm(a1, a2) \
7936 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7937       ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7938 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7939       ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7940 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7941       ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7942 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7943       ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
7944 __altivec_link_error_invalid_argument ()))))
7945 
7946 #define vec_vsububm(a1, a2) \
7947 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7948       ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7949 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7950       ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7951 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7952       ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7953 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7954       ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
7955 __altivec_link_error_invalid_argument ()))))
7956 
7957 #define vec_subc(a1, a2) \
7958 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7959   ((vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) (a1), (vector signed int) (a2))), \
7960 __altivec_link_error_invalid_argument ())
7961 
7962 #define vec_subs(a1, a2) \
7963 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
7964       ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
7965 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
7966       ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
7967 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
7968       ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
7969 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
7970       ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
7971 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
7972       ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
7973 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
7974       ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
7975 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
7976       ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
7977 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
7978       ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
7979 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7980       ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7981 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7982       ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7983 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
7984       ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7985 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7986       ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
7987     __altivec_link_error_invalid_argument ()))))))))))))
7988 
7989 #define vec_vsubsws(a1, a2) \
7990 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
7991       ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
7992 __altivec_link_error_invalid_argument ())
7993 
7994 #define vec_vsubuws(a1, a2) \
7995 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
7996       ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7997 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
7998       ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
7999 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8000       ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
8001 __altivec_link_error_invalid_argument ())))
8002 
8003 #define vec_vsubshs(a1, a2) \
8004 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8005       ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
8006 __altivec_link_error_invalid_argument ())
8007 
8008 #define vec_vsubuhs(a1, a2) \
8009 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8010       ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
8011 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8012       ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
8013 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8014       ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
8015 __altivec_link_error_invalid_argument ())))
8016 
8017 #define vec_vsubsbs(a1, a2) \
8018 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8019       ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
8020 __altivec_link_error_invalid_argument ())
8021 
8022 #define vec_vsububs(a1, a2) \
8023 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8024       ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
8025 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8026       ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
8027 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8028       ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
8029 __altivec_link_error_invalid_argument ())))
8030 
8031 #define vec_sum4s(a1, a2) \
8032 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
8033       ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
8034 __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
8035       ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
8036 __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
8037       ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
8038     __altivec_link_error_invalid_argument ())))
8039 
8040 #define vec_vsum4shs(a1, a2) \
8041 __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
8042       ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
8043 __altivec_link_error_invalid_argument ())
8044 
8045 #define vec_vsum4sbs(a1, a2) \
8046 __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
8047       ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
8048 __altivec_link_error_invalid_argument ())
8049 
8050 #define vec_vsum4ubs(a1, a2) \
8051 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
8052       ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
8053 __altivec_link_error_invalid_argument ())
8054 
8055 #define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2))
8056 
8057 #define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2))
8058 
8059 #define vec_trunc(a1) __builtin_altivec_vrfiz ((a1))
8060 
8061 #define vec_unpackh(a1) \
8062 __ch (__un_args_eq (vector signed char, (a1)), \
8063       ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
8064 __ch (__un_args_eq (vector unsigned short, (a1)), \
8065       ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
8066 __ch (__un_args_eq (vector signed short, (a1)), \
8067       ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
8068     __altivec_link_error_invalid_argument ())))
8069 
8070 #define vec_vupkhsh(a1) \
8071 __ch (__un_args_eq (vector signed short, (a1)), \
8072       ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
8073 __altivec_link_error_invalid_argument ())
8074 
8075 #define vec_vupkhpx(a1) \
8076 __ch (__un_args_eq (vector unsigned short, (a1)), \
8077       ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
8078 __altivec_link_error_invalid_argument ())
8079 
8080 #define vec_vupkhsb(a1) \
8081 __ch (__un_args_eq (vector signed char, (a1)), \
8082       ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
8083 __altivec_link_error_invalid_argument ())
8084 
8085 #define vec_unpackl(a1) \
8086 __ch (__un_args_eq (vector signed char, (a1)), \
8087       ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
8088 __ch (__un_args_eq (vector unsigned short, (a1)), \
8089       ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
8090 __ch (__un_args_eq (vector signed short, (a1)), \
8091       ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
8092     __altivec_link_error_invalid_argument ())))
8093 
8094 #define vec_vupklsh(a1) \
8095 __ch (__un_args_eq (vector signed short, (a1)), \
8096       ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
8097 __altivec_link_error_invalid_argument ())
8098 
8099 #define vec_vupklpx(a1) \
8100 __ch (__un_args_eq (vector unsigned short, (a1)), \
8101       ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
8102 __altivec_link_error_invalid_argument ())
8103 
8104 #define vec_vupklsb(a1) \
8105 __ch (__un_args_eq (vector signed char, (a1)), \
8106       ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
8107 __altivec_link_error_invalid_argument ())
8108 
8109 #define vec_xor(a1, a2) \
8110 __ch (__bin_args_eq (vector float, ((a1)), vector float, ((a2))), \
8111       ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8112 __ch (__bin_args_eq (vector float, ((a1)), vector unsigned int, ((a2))), \
8113       ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8114 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector float, ((a2))), \
8115       ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8116 __ch (__bin_args_eq (vector signed int, ((a1)), vector float, ((a2))), \
8117       ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8118 __ch (__bin_args_eq (vector float, ((a1)), vector signed int, ((a2))), \
8119       ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8120 __ch (__bin_args_eq (vector signed int, ((a1)), vector signed int, ((a2))), \
8121       ((vector signed int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8122 __ch (__bin_args_eq (vector signed int, ((a1)), vector unsigned int, ((a2))), \
8123       ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8124 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector signed int, ((a2))), \
8125       ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8126 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector unsigned int, ((a2))), \
8127       ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8128 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
8129       ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8130 __ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \
8131       ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8132 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \
8133       ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8134 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
8135       ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8136 __ch (__bin_args_eq (vector signed short, ((a1)), vector signed short, ((a2))), \
8137       ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8138 __ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \
8139       ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8140 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \
8141       ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8142 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
8143       ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8144 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \
8145       ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8146 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
8147       ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8148 __ch (__bin_args_eq (vector signed char, ((a1)), vector signed char, ((a2))), \
8149       ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8150 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \
8151       ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8152 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
8153       ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8154 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector signed char, ((a2))), \
8155       ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
8156     __altivec_link_error_invalid_argument ())))))))))))))))))))))))
8157 
8158 /* Predicates.  */
8159 
8160 #define vec_all_eq(a1, a2) \
8161 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8162       __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8163 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8164       __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8165 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8166       __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8167 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8168       __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8169 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8170       __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8171 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8172       __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8173 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8174       __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8175 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8176       __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8177 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8178       __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8179 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8180       __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8181 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8182       __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8183 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8184       __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8185 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8186       __builtin_altivec_vcmpeqfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
8187     __altivec_link_error_invalid_argument ())))))))))))))
8188 
8189 #define vec_all_ge(a1, a2) \
8190 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8191       __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8192 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8193       __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8194 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8195       __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8196 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8197       __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
8198 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8199       __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8200 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8201       __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8202 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8203       __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8204 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8205       __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
8206 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8207       __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8208 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8209       __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8210 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8211       __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8212 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8213       __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
8214 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8215       __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
8216     __altivec_link_error_invalid_argument ())))))))))))))
8217 
8218 #define vec_all_gt(a1, a2) \
8219 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8220       __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8221 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8222       __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8223 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8224       __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8225 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8226       __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
8227 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8228       __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8229 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8230       __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8231 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8232       __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8233 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8234       __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
8235 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8236       __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8237 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8238       __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8239 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8240       __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8241 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8242       __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
8243 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8244       __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
8245     __altivec_link_error_invalid_argument ())))))))))))))
8246 
8247 #define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2))
8248 
8249 #define vec_all_le(a1, a2) \
8250 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8251       __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8252 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8253       __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8254 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8255       __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8256 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8257       __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8258 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8259       __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8260 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8261       __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8262 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8263       __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8264 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8265       __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8266 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8267       __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8268 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8269       __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8270 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8271       __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8272 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8273       __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8274 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8275       __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
8276     __altivec_link_error_invalid_argument ())))))))))))))
8277 
8278 #define vec_all_lt(a1, a2) \
8279 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8280       __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8281 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8282       __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8283 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8284       __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8285 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8286       __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
8287 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8288       __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8289 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8290       __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8291 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8292       __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8293 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8294       __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
8295 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8296       __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8297 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8298       __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8299 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8300       __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8301 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8302       __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
8303 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8304       __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
8305     __altivec_link_error_invalid_argument ())))))))))))))
8306 
8307 #define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
8308 
8309 #define vec_all_ne(a1, a2) \
8310 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8311       __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8312 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8313       __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8314 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8315       __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8316 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8317       __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
8318 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8319       __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8320 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8321       __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8322 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8323       __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8324 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8325       __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
8326 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8327       __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8328 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8329       __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8330 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8331       __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8332 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8333       __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
8334 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8335       __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (vector float) (a1), (vector float) (a2)), \
8336     __altivec_link_error_invalid_argument ())))))))))))))
8337 
8338 #define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2))
8339 
8340 #define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2))
8341 
8342 #define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1))
8343 
8344 #define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1))
8345 
8346 #define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT, (a1), (a1))
8347 
8348 #define vec_any_eq(a1, a2) \
8349 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8350       __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8351 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8352       __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8353 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8354       __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8355 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8356       __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8357 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8358       __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8359 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8360       __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8361 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8362       __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8363 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8364       __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8365 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8366       __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8367 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8368       __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8369 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8370       __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8371 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8372       __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8373 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8374       __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
8375     __altivec_link_error_invalid_argument ())))))))))))))
8376 
8377 #define vec_any_ge(a1, a2) \
8378 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8379       __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8380 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8381       __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8382 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8383       __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8384 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8385       __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8386 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8387       __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8388 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8389       __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8390 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8391       __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8392 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8393       __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8394 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8395       __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8396 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8397       __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8398 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8399       __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8400 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8401       __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8402 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8403       __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
8404     __altivec_link_error_invalid_argument ())))))))))))))
8405 
8406 #define vec_any_gt(a1, a2) \
8407 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8408       __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8409 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8410       __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8411 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8412       __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8413 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8414       __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8415 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8416       __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8417 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8418       __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8419 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8420       __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8421 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8422       __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8423 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8424       __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8425 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8426       __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8427 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8428       __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8429 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8430       __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8431 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8432       __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
8433     __altivec_link_error_invalid_argument ())))))))))))))
8434 
8435 #define vec_any_le(a1, a2) \
8436 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8437       __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8438 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8439       __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8440 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8441       __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8442 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8443       __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8444 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8445       __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8446 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8447       __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8448 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8449       __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8450 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8451       __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8452 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8453       __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8454 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8455       __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8456 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8457       __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8458 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8459       __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8460 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8461       __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
8462     __altivec_link_error_invalid_argument ())))))))))))))
8463 
8464 #define vec_any_lt(a1, a2) \
8465 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8466       __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8467 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8468       __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8469 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8470       __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8471 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8472       __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
8473 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8474       __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8475 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8476       __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8477 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8478       __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8479 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8480       __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
8481 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8482       __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8483 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8484       __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8485 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8486       __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8487 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8488       __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
8489 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8490       __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
8491     __altivec_link_error_invalid_argument ())))))))))))))
8492 
8493 #define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1)
8494 
8495 #define vec_any_ne(a1, a2) \
8496 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
8497       __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8498 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
8499       __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8500 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
8501       __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8502 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
8503       __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
8504 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
8505       __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8506 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
8507       __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8508 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
8509       __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8510 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
8511       __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
8512 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
8513       __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8514 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
8515       __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8516 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
8517       __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8518 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
8519       __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
8520 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
8521       __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (vector float) (a1), (vector float) (a2)), \
8522     __altivec_link_error_invalid_argument ())))))))))))))
8523 
8524 #define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2))
8525 
8526 #define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2))
8527 
8528 #define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1))
8529 
8530 #define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1))
8531 
8532 #define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1))
8533 
8534 #define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2))
8535 
8536 #endif /* __cplusplus */
8537 
8538 #endif /* _ALTIVEC_H */
8539