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