00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _ALTIVEC_H
00033 #define _ALTIVEC_H 1
00034
00035
00036 #define __VEC__ 10206
00037
00038 #ifndef __ALTIVEC__
00039 #define __ALTIVEC__ 1
00040 #endif
00041
00042 #define __vector __attribute__((vector_size(16)))
00043
00044
00045 #define vector __vector
00046
00047 #define bool signed
00048 #define pixel unsigned short
00049 #define __pixel unsigned short
00050
00051
00052 extern int __altivec_link_error_invalid_argument ();
00053
00054
00055
00056 #define __CR6_EQ 0
00057 #define __CR6_EQ_REV 1
00058 #define __CR6_LT 2
00059 #define __CR6_LT_REV 3
00060
00061 #define __bin_args_eq(xtype, x, ytype, y) \
00062 (__builtin_types_compatible_p (xtype, typeof (x)) \
00063 && __builtin_types_compatible_p (ytype, typeof (y)))
00064
00065 #define __un_args_eq(xtype, x) \
00066 __builtin_types_compatible_p (xtype, typeof (x))
00067
00068 #define __tern_args_eq(xtype, x, ytype, y, ztype, z) \
00069 (__builtin_types_compatible_p (xtype, typeof (x)) \
00070 && __builtin_types_compatible_p (ytype, typeof (y)) \
00071 && __builtin_types_compatible_p (ztype, typeof (z)))
00072
00073 #define __ch(x, y, z) __builtin_choose_expr (x, y, z)
00074
00075
00076
00077 #define vec_vaddcuw vec_addc
00078 #define vec_vand vec_and
00079 #define vec_vandc vec_andc
00080 #define vec_vrfip vec_ceil
00081 #define vec_vcmpbfp vec_cmpb
00082 #define vec_vcmpgefp vec_cmpge
00083 #define vec_vctsxs vec_cts
00084 #define vec_vctuxs vec_ctu
00085 #define vec_vexptefp vec_expte
00086 #define vec_vrfim vec_floor
00087 #define vec_lvx vec_ld
00088 #define vec_lvxl vec_ldl
00089 #define vec_vlogefp vec_loge
00090 #define vec_vmaddfp vec_madd
00091 #define vec_vmhaddshs vec_madds
00092 #define vec_vmladduhm vec_mladd
00093 #define vec_vmhraddshs vec_mradds
00094 #define vec_vnmsubfp vec_nmsub
00095 #define vec_vnor vec_nor
00096 #define vec_vor vec_or
00097 #define vec_vpkpx vec_packpx
00098 #define vec_vperm vec_perm
00099 #define vec_vrefp vec_re
00100 #define vec_vrfin vec_round
00101 #define vec_vrsqrtefp vec_rsqrte
00102 #define vec_vsel vec_sel
00103 #define vec_vsldoi vec_sld
00104 #define vec_vsl vec_sll
00105 #define vec_vslo vec_slo
00106 #define vec_vspltisb vec_splat_s8
00107 #define vec_vspltish vec_splat_s16
00108 #define vec_vspltisw vec_splat_s32
00109 #define vec_vsr vec_srl
00110 #define vec_vsro vec_sro
00111 #define vec_stvx vec_st
00112 #define vec_stvxl vec_stl
00113 #define vec_vsubcuw vec_subc
00114 #define vec_vsum2sws vec_sum2s
00115 #define vec_vsumsws vec_sums
00116 #define vec_vrfiz vec_trunc
00117 #define vec_vxor vec_xor
00118
00119 #ifdef __cplusplus
00120
00121
00122
00123 inline vector float vec_ctf (vector unsigned int, const char) __attribute__ ((always_inline));
00124 inline vector float vec_ctf (vector signed int, const char) __attribute__ ((always_inline));
00125 inline vector float vec_vcfsx (vector signed int a1, const char a2) __attribute__ ((always_inline));
00126 inline vector float vec_vcfux (vector unsigned int a1, const char a2) __attribute__ ((always_inline));
00127 inline vector signed int vec_cts (vector float, const char) __attribute__ ((always_inline));
00128 inline vector unsigned int vec_ctu (vector float, const char) __attribute__ ((always_inline));
00129 inline void vec_dss (const char) __attribute__ ((always_inline));
00130
00131 inline void vec_dst (vector unsigned char *, int, const char) __attribute__ ((always_inline));
00132 inline void vec_dst (vector signed char *, int, const char) __attribute__ ((always_inline));
00133 inline void vec_dst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
00134 inline void vec_dst (vector signed short *, int, const char) __attribute__ ((always_inline));
00135 inline void vec_dst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
00136 inline void vec_dst (vector signed int *, int, const char) __attribute__ ((always_inline));
00137 inline void vec_dst (vector float *, int, const char) __attribute__ ((always_inline));
00138 inline void vec_dst (unsigned char *, int, const char) __attribute__ ((always_inline));
00139 inline void vec_dst (signed char *, int, const char) __attribute__ ((always_inline));
00140 inline void vec_dst (unsigned short *, int, const char) __attribute__ ((always_inline));
00141 inline void vec_dst (signed short *, int, const char) __attribute__ ((always_inline));
00142 inline void vec_dst (unsigned int *, int, const char) __attribute__ ((always_inline));
00143 inline void vec_dst (signed int *, int, const char) __attribute__ ((always_inline));
00144 inline void vec_dst (unsigned long *, int, const char) __attribute__ ((always_inline));
00145 inline void vec_dst (signed long *, int, const char) __attribute__ ((always_inline));
00146 inline void vec_dst (float *, int, const char) __attribute__ ((always_inline));
00147
00148 inline void vec_dstst (vector unsigned char *, int, const char) __attribute__ ((always_inline));
00149 inline void vec_dstst (vector signed char *, int, const char) __attribute__ ((always_inline));
00150 inline void vec_dstst (vector unsigned short *, int, const char) __attribute__ ((always_inline));
00151 inline void vec_dstst (vector signed short *, int, const char) __attribute__ ((always_inline));
00152 inline void vec_dstst (vector unsigned int *, int, const char) __attribute__ ((always_inline));
00153 inline void vec_dstst (vector signed int *, int, const char) __attribute__ ((always_inline));
00154 inline void vec_dstst (vector float *, int, const char) __attribute__ ((always_inline));
00155 inline void vec_dstst (unsigned char *, int, const char) __attribute__ ((always_inline));
00156 inline void vec_dstst (signed char *, int, const char) __attribute__ ((always_inline));
00157 inline void vec_dstst (unsigned short *, int, const char) __attribute__ ((always_inline));
00158 inline void vec_dstst (signed short *, int, const char) __attribute__ ((always_inline));
00159 inline void vec_dstst (unsigned int *, int, const char) __attribute__ ((always_inline));
00160 inline void vec_dstst (signed int *, int, const char) __attribute__ ((always_inline));
00161 inline void vec_dstst (unsigned long *, int, const char) __attribute__ ((always_inline));
00162 inline void vec_dstst (signed long *, int, const char) __attribute__ ((always_inline));
00163 inline void vec_dstst (float *, int, const char) __attribute__ ((always_inline));
00164
00165 inline void vec_dststt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
00166 inline void vec_dststt (vector signed char *, int, const char) __attribute__ ((always_inline));
00167 inline void vec_dststt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
00168 inline void vec_dststt (vector signed short *, int, const char) __attribute__ ((always_inline));
00169 inline void vec_dststt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
00170 inline void vec_dststt (vector signed int *, int, const char) __attribute__ ((always_inline));
00171 inline void vec_dststt (vector float *, int, const char) __attribute__ ((always_inline));
00172 inline void vec_dststt (unsigned char *, int, const char) __attribute__ ((always_inline));
00173 inline void vec_dststt (signed char *, int, const char) __attribute__ ((always_inline));
00174 inline void vec_dststt (unsigned short *, int, const char) __attribute__ ((always_inline));
00175 inline void vec_dststt (signed short *, int, const char) __attribute__ ((always_inline));
00176 inline void vec_dststt (unsigned int *, int, const char) __attribute__ ((always_inline));
00177 inline void vec_dststt (signed int *, int, const char) __attribute__ ((always_inline));
00178 inline void vec_dststt (unsigned long *, int, const char) __attribute__ ((always_inline));
00179 inline void vec_dststt (signed long *, int, const char) __attribute__ ((always_inline));
00180 inline void vec_dststt (float *, int, const char) __attribute__ ((always_inline));
00181
00182 inline void vec_dstt (vector unsigned char *, int, const char) __attribute__ ((always_inline));
00183 inline void vec_dstt (vector signed char *, int, const char) __attribute__ ((always_inline));
00184 inline void vec_dstt (vector unsigned short *, int, const char) __attribute__ ((always_inline));
00185 inline void vec_dstt (vector signed short *, int, const char) __attribute__ ((always_inline));
00186 inline void vec_dstt (vector unsigned int *, int, const char) __attribute__ ((always_inline));
00187 inline void vec_dstt (vector signed int *, int, const char) __attribute__ ((always_inline));
00188 inline void vec_dstt (vector float *, int, const char) __attribute__ ((always_inline));
00189 inline void vec_dstt (unsigned char *, int, const char) __attribute__ ((always_inline));
00190 inline void vec_dstt (signed char *, int, const char) __attribute__ ((always_inline));
00191 inline void vec_dstt (unsigned short *, int, const char) __attribute__ ((always_inline));
00192 inline void vec_dstt (signed short *, int, const char) __attribute__ ((always_inline));
00193 inline void vec_dstt (unsigned int *, int, const char) __attribute__ ((always_inline));
00194 inline void vec_dstt (signed int *, int, const char) __attribute__ ((always_inline));
00195 inline void vec_dstt (unsigned long *, int, const char) __attribute__ ((always_inline));
00196 inline void vec_dstt (signed long *, int, const char) __attribute__ ((always_inline));
00197 inline void vec_dstt (float *, int, const char) __attribute__ ((always_inline));
00198
00199 inline vector float vec_sld (vector float, vector float, const char) __attribute__ ((always_inline));
00200 inline vector signed int vec_sld (vector signed int, vector signed int, const char) __attribute__ ((always_inline));
00201 inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const char) __attribute__ ((always_inline));
00202 inline vector signed short vec_sld (vector signed short, vector signed short, const char) __attribute__ ((always_inline));
00203 inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const char) __attribute__ ((always_inline));
00204 inline vector signed char vec_sld (vector signed char, vector signed char, const char) __attribute__ ((always_inline));
00205 inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const char) __attribute__ ((always_inline));
00206 inline vector signed char vec_splat (vector signed char, const char) __attribute__ ((always_inline));
00207 inline vector unsigned char vec_splat (vector unsigned char, const char) __attribute__ ((always_inline));
00208 inline vector signed short vec_splat (vector signed short, const char) __attribute__ ((always_inline));
00209 inline vector unsigned short vec_splat (vector unsigned short, const char) __attribute__ ((always_inline));
00210 inline vector float vec_splat (vector float, const char) __attribute__ ((always_inline));
00211 inline vector signed int vec_splat (vector signed int, const char) __attribute__ ((always_inline));
00212 inline vector unsigned int vec_splat (vector unsigned int, const char) __attribute__ ((always_inline));
00213 inline vector signed char vec_splat_s8 (const char) __attribute__ ((always_inline));
00214 inline vector signed short vec_splat_s16 (const char) __attribute__ ((always_inline));
00215 inline vector signed int vec_splat_s32 (const char) __attribute__ ((always_inline));
00216 inline vector unsigned char vec_splat_u8 (const char) __attribute__ ((always_inline));
00217 inline vector unsigned short vec_splat_u16 (const char) __attribute__ ((always_inline));
00218 inline vector unsigned int vec_splat_u32 (const char) __attribute__ ((always_inline));
00219 inline vector float vec_vspltw (vector float a1, const char a2) __attribute__ ((always_inline));
00220 inline vector signed int vec_vspltw (vector signed int a1, const char a2) __attribute__ ((always_inline));
00221 inline vector unsigned int vec_vspltw (vector unsigned int a1, const char a2) __attribute__ ((always_inline));
00222 inline vector signed short vec_vsplth (vector signed short a1, const char a2) __attribute__ ((always_inline));
00223 inline vector unsigned short vec_vsplth (vector unsigned short a1, const char a2) __attribute__ ((always_inline));
00224 inline vector signed char vec_vspltb (vector signed char a1, const char a2) __attribute__ ((always_inline));
00225 inline vector unsigned char vec_vspltb (vector unsigned char a1, const char a2) __attribute__ ((always_inline));
00226
00227
00228
00229 inline vector signed char
00230 vec_abs (vector signed char a1)
00231 {
00232 return __builtin_altivec_abs_v16qi (a1);
00233 }
00234
00235 inline vector signed short
00236 vec_abs (vector signed short a1)
00237 {
00238 return __builtin_altivec_abs_v8hi (a1);
00239 }
00240
00241 inline vector signed int
00242 vec_abs (vector signed int a1)
00243 {
00244 return __builtin_altivec_abs_v4si (a1);
00245 }
00246
00247 inline vector float
00248 vec_abs (vector float a1)
00249 {
00250 return __builtin_altivec_abs_v4sf (a1);
00251 }
00252
00253
00254
00255 inline vector signed char
00256 vec_abss (vector signed char a1)
00257 {
00258 return __builtin_altivec_abss_v16qi (a1);
00259 }
00260
00261 inline vector signed short
00262 vec_abss (vector signed short a1)
00263 {
00264 return __builtin_altivec_abss_v8hi (a1);
00265 }
00266
00267 inline vector signed int
00268 vec_abss (vector signed int a1)
00269 {
00270 return __builtin_altivec_abss_v4si (a1);
00271 }
00272
00273
00274
00275 inline vector signed char
00276 vec_add (vector signed char a1, vector signed char a2)
00277 {
00278 return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
00279 }
00280
00281 inline vector unsigned char
00282 vec_add (vector signed char a1, vector unsigned char a2)
00283 {
00284 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
00285 }
00286
00287 inline vector unsigned char
00288 vec_add (vector unsigned char a1, vector signed char a2)
00289 {
00290 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
00291 }
00292
00293 inline vector unsigned char
00294 vec_add (vector unsigned char a1, vector unsigned char a2)
00295 {
00296 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
00297 }
00298
00299 inline vector signed short
00300 vec_add (vector signed short a1, vector signed short a2)
00301 {
00302 return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
00303 }
00304
00305 inline vector unsigned short
00306 vec_add (vector signed short a1, vector unsigned short a2)
00307 {
00308 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
00309 }
00310
00311 inline vector unsigned short
00312 vec_add (vector unsigned short a1, vector signed short a2)
00313 {
00314 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
00315 }
00316
00317 inline vector unsigned short
00318 vec_add (vector unsigned short a1, vector unsigned short a2)
00319 {
00320 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
00321 }
00322
00323 inline vector signed int
00324 vec_add (vector signed int a1, vector signed int a2)
00325 {
00326 return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
00327 }
00328
00329 inline vector unsigned int
00330 vec_add (vector signed int a1, vector unsigned int a2)
00331 {
00332 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
00333 }
00334
00335 inline vector unsigned int
00336 vec_add (vector unsigned int a1, vector signed int a2)
00337 {
00338 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
00339 }
00340
00341 inline vector unsigned int
00342 vec_add (vector unsigned int a1, vector unsigned int a2)
00343 {
00344 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
00345 }
00346
00347 inline vector float
00348 vec_add (vector float a1, vector float a2)
00349 {
00350 return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
00351 }
00352
00353
00354
00355 inline vector float
00356 vec_vaddfp (vector float a1, vector float a2)
00357 {
00358 return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
00359 }
00360
00361
00362
00363 inline vector signed int
00364 vec_vadduwm (vector signed int a1, vector signed int a2)
00365 {
00366 return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
00367 }
00368
00369 inline vector unsigned int
00370 vec_vadduwm (vector signed int a1, vector unsigned int a2)
00371 {
00372 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
00373 }
00374
00375 inline vector unsigned int
00376 vec_vadduwm (vector unsigned int a1, vector signed int a2)
00377 {
00378 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
00379 }
00380
00381 inline vector unsigned int
00382 vec_vadduwm (vector unsigned int a1, vector unsigned int a2)
00383 {
00384 return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
00385 }
00386
00387
00388
00389 inline vector signed short
00390 vec_vadduhm (vector signed short a1, vector signed short a2)
00391 {
00392 return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
00393 }
00394
00395 inline vector unsigned short
00396 vec_vadduhm (vector signed short a1, vector unsigned short a2)
00397 {
00398 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
00399 }
00400
00401 inline vector unsigned short
00402 vec_vadduhm (vector unsigned short a1, vector signed short a2)
00403 {
00404 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
00405 }
00406
00407 inline vector unsigned short
00408 vec_vadduhm (vector unsigned short a1, vector unsigned short a2)
00409 {
00410 return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
00411 }
00412
00413
00414
00415 inline vector signed char
00416 vec_vaddubm (vector signed char a1, vector signed char a2)
00417 {
00418 return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
00419 }
00420
00421 inline vector unsigned char
00422 vec_vaddubm (vector signed char a1, vector unsigned char a2)
00423 {
00424 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
00425 }
00426
00427 inline vector unsigned char
00428 vec_vaddubm (vector unsigned char a1, vector signed char a2)
00429 {
00430 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
00431 }
00432
00433 inline vector unsigned char
00434 vec_vaddubm (vector unsigned char a1, vector unsigned char a2)
00435 {
00436 return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
00437 }
00438
00439
00440
00441 inline vector unsigned int
00442 vec_addc (vector unsigned int a1, vector unsigned int a2)
00443 {
00444 return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2);
00445 }
00446
00447
00448
00449 inline vector unsigned char
00450 vec_adds (vector signed char a1, vector unsigned char a2)
00451 {
00452 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
00453 }
00454
00455 inline vector unsigned char
00456 vec_adds (vector unsigned char a1, vector signed char a2)
00457 {
00458 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
00459 }
00460
00461 inline vector unsigned char
00462 vec_adds (vector unsigned char a1, vector unsigned char a2)
00463 {
00464 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
00465 }
00466
00467 inline vector signed char
00468 vec_adds (vector signed char a1, vector signed char a2)
00469 {
00470 return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
00471 }
00472
00473 inline vector unsigned short
00474 vec_adds (vector signed short a1, vector unsigned short a2)
00475 {
00476 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
00477 }
00478
00479 inline vector unsigned short
00480 vec_adds (vector unsigned short a1, vector signed short a2)
00481 {
00482 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
00483 }
00484
00485 inline vector unsigned short
00486 vec_adds (vector unsigned short a1, vector unsigned short a2)
00487 {
00488 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
00489 }
00490
00491 inline vector signed short
00492 vec_adds (vector signed short a1, vector signed short a2)
00493 {
00494 return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
00495 }
00496
00497 inline vector unsigned int
00498 vec_adds (vector signed int a1, vector unsigned int a2)
00499 {
00500 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
00501 }
00502
00503 inline vector unsigned int
00504 vec_adds (vector unsigned int a1, vector signed int a2)
00505 {
00506 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
00507 }
00508
00509 inline vector unsigned int
00510 vec_adds (vector unsigned int a1, vector unsigned int a2)
00511 {
00512 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
00513 }
00514
00515 inline vector signed int
00516 vec_adds (vector signed int a1, vector signed int a2)
00517 {
00518 return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
00519 }
00520
00521
00522
00523 inline vector signed int
00524 vec_vaddsws (vector signed int a1, vector signed int a2)
00525 {
00526 return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
00527 }
00528
00529
00530
00531 inline vector unsigned int
00532 vec_vadduws (vector signed int a1, vector unsigned int a2)
00533 {
00534 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
00535 }
00536
00537 inline vector unsigned int
00538 vec_vadduws (vector unsigned int a1, vector signed int a2)
00539 {
00540 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
00541 }
00542
00543 inline vector unsigned int
00544 vec_vadduws (vector unsigned int a1, vector unsigned int a2)
00545 {
00546 return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
00547 }
00548
00549
00550 inline vector signed short
00551 vec_vaddshs (vector signed short a1, vector signed short a2)
00552 {
00553 return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
00554 }
00555
00556
00557
00558 inline vector unsigned short
00559 vec_vadduhs (vector signed short a1, vector unsigned short a2)
00560 {
00561 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
00562 }
00563
00564 inline vector unsigned short
00565 vec_vadduhs (vector unsigned short a1, vector signed short a2)
00566 {
00567 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
00568 }
00569
00570 inline vector unsigned short
00571 vec_vadduhs (vector unsigned short a1, vector unsigned short a2)
00572 {
00573 return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
00574 }
00575
00576
00577
00578 inline vector signed char
00579 vec_vaddsbs (vector signed char a1, vector signed char a2)
00580 {
00581 return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
00582 }
00583
00584
00585
00586 inline vector unsigned char
00587 vec_vaddubs (vector signed char a1, vector unsigned char a2)
00588 {
00589 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
00590 }
00591
00592 inline vector unsigned char
00593 vec_vaddubs (vector unsigned char a1, vector signed char a2)
00594 {
00595 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
00596 }
00597
00598 inline vector unsigned char
00599 vec_vaddubs (vector unsigned char a1, vector unsigned char a2)
00600 {
00601 return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
00602 }
00603
00604
00605
00606 inline vector float
00607 vec_and (vector float a1, vector float a2)
00608 {
00609 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00610 }
00611
00612 inline vector float
00613 vec_and (vector float a1, vector signed int a2)
00614 {
00615 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00616 }
00617
00618 inline vector float
00619 vec_and (vector signed int a1, vector float a2)
00620 {
00621 return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00622 }
00623
00624 inline vector signed int
00625 vec_and (vector signed int a1, vector signed int a2)
00626 {
00627 return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00628 }
00629
00630 inline vector unsigned int
00631 vec_and (vector signed int a1, vector unsigned int a2)
00632 {
00633 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00634 }
00635
00636 inline vector unsigned int
00637 vec_and (vector unsigned int a1, vector signed int a2)
00638 {
00639 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00640 }
00641
00642 inline vector unsigned int
00643 vec_and (vector unsigned int a1, vector unsigned int a2)
00644 {
00645 return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00646 }
00647
00648 inline vector signed short
00649 vec_and (vector signed short a1, vector signed short a2)
00650 {
00651 return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00652 }
00653
00654 inline vector unsigned short
00655 vec_and (vector signed short a1, vector unsigned short a2)
00656 {
00657 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00658 }
00659
00660 inline vector unsigned short
00661 vec_and (vector unsigned short a1, vector signed short a2)
00662 {
00663 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00664 }
00665
00666 inline vector unsigned short
00667 vec_and (vector unsigned short a1, vector unsigned short a2)
00668 {
00669 return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00670 }
00671
00672 inline vector signed char
00673 vec_and (vector signed char a1, vector signed char a2)
00674 {
00675 return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00676 }
00677
00678 inline vector unsigned char
00679 vec_and (vector signed char a1, vector unsigned char a2)
00680 {
00681 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00682 }
00683
00684 inline vector unsigned char
00685 vec_and (vector unsigned char a1, vector signed char a2)
00686 {
00687 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00688 }
00689
00690 inline vector unsigned char
00691 vec_and (vector unsigned char a1, vector unsigned char a2)
00692 {
00693 return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
00694 }
00695
00696
00697
00698 inline vector float
00699 vec_andc (vector float a1, vector float a2)
00700 {
00701 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00702 }
00703
00704 inline vector float
00705 vec_andc (vector float a1, vector signed int a2)
00706 {
00707 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00708 }
00709
00710 inline vector float
00711 vec_andc (vector signed int a1, vector float a2)
00712 {
00713 return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00714 }
00715
00716 inline vector signed int
00717 vec_andc (vector signed int a1, vector signed int a2)
00718 {
00719 return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00720 }
00721
00722 inline vector unsigned int
00723 vec_andc (vector signed int a1, vector unsigned int a2)
00724 {
00725 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00726 }
00727
00728 inline vector unsigned int
00729 vec_andc (vector unsigned int a1, vector signed int a2)
00730 {
00731 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00732 }
00733
00734 inline vector unsigned int
00735 vec_andc (vector unsigned int a1, vector unsigned int a2)
00736 {
00737 return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00738 }
00739
00740 inline vector signed short
00741 vec_andc (vector signed short a1, vector signed short a2)
00742 {
00743 return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00744 }
00745
00746 inline vector unsigned short
00747 vec_andc (vector signed short a1, vector unsigned short a2)
00748 {
00749 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00750 }
00751
00752 inline vector unsigned short
00753 vec_andc (vector unsigned short a1, vector signed short a2)
00754 {
00755 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00756 }
00757
00758 inline vector unsigned short
00759 vec_andc (vector unsigned short a1, vector unsigned short a2)
00760 {
00761 return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00762 }
00763
00764 inline vector signed char
00765 vec_andc (vector signed char a1, vector signed char a2)
00766 {
00767 return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00768 }
00769
00770 inline vector unsigned char
00771 vec_andc (vector signed char a1, vector unsigned char a2)
00772 {
00773 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00774 }
00775
00776 inline vector unsigned char
00777 vec_andc (vector unsigned char a1, vector signed char a2)
00778 {
00779 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00780 }
00781
00782 inline vector unsigned char
00783 vec_andc (vector unsigned char a1, vector unsigned char a2)
00784 {
00785 return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
00786 }
00787
00788
00789
00790 inline vector unsigned char
00791 vec_avg (vector unsigned char a1, vector unsigned char a2)
00792 {
00793 return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
00794 }
00795
00796 inline vector signed char
00797 vec_avg (vector signed char a1, vector signed char a2)
00798 {
00799 return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
00800 }
00801
00802 inline vector unsigned short
00803 vec_avg (vector unsigned short a1, vector unsigned short a2)
00804 {
00805 return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
00806 }
00807
00808 inline vector signed short
00809 vec_avg (vector signed short a1, vector signed short a2)
00810 {
00811 return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
00812 }
00813
00814 inline vector unsigned int
00815 vec_avg (vector unsigned int a1, vector unsigned int a2)
00816 {
00817 return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
00818 }
00819
00820 inline vector signed int
00821 vec_avg (vector signed int a1, vector signed int a2)
00822 {
00823 return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
00824 }
00825
00826
00827
00828 inline vector signed int
00829 vec_vavgsw (vector signed int a1, vector signed int a2)
00830 {
00831 return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
00832 }
00833
00834
00835
00836 inline vector unsigned int
00837 vec_vavguw (vector unsigned int a1, vector unsigned int a2)
00838 {
00839 return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
00840 }
00841
00842
00843
00844 inline vector signed short
00845 vec_vavgsh (vector signed short a1, vector signed short a2)
00846 {
00847 return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
00848 }
00849
00850
00851
00852 inline vector unsigned short
00853 vec_vavguh (vector unsigned short a1, vector unsigned short a2)
00854 {
00855 return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
00856 }
00857
00858
00859
00860 inline vector signed char
00861 vec_vavgsb (vector signed char a1, vector signed char a2)
00862 {
00863 return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
00864 }
00865
00866
00867
00868 inline vector unsigned char
00869 vec_vavgub (vector unsigned char a1, vector unsigned char a2)
00870 {
00871 return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
00872 }
00873
00874
00875
00876 inline vector float
00877 vec_ceil (vector float a1)
00878 {
00879 return (vector float) __builtin_altivec_vrfip ((vector float) a1);
00880 }
00881
00882
00883
00884 inline vector signed int
00885 vec_cmpb (vector float a1, vector float a2)
00886 {
00887 return (vector signed int) __builtin_altivec_vcmpbfp ((vector float) a1, (vector float) a2);
00888 }
00889
00890
00891
00892 inline vector signed char
00893 vec_cmpeq (vector signed char a1, vector signed char a2)
00894 {
00895 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
00896 }
00897
00898 inline vector signed char
00899 vec_cmpeq (vector unsigned char a1, vector unsigned char a2)
00900 {
00901 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
00902 }
00903
00904 inline vector signed short
00905 vec_cmpeq (vector signed short a1, vector signed short a2)
00906 {
00907 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
00908 }
00909
00910 inline vector signed short
00911 vec_cmpeq (vector unsigned short a1, vector unsigned short a2)
00912 {
00913 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
00914 }
00915
00916 inline vector signed int
00917 vec_cmpeq (vector signed int a1, vector signed int a2)
00918 {
00919 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
00920 }
00921
00922 inline vector signed int
00923 vec_cmpeq (vector unsigned int a1, vector unsigned int a2)
00924 {
00925 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
00926 }
00927
00928 inline vector signed int
00929 vec_cmpeq (vector float a1, vector float a2)
00930 {
00931 return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
00932 }
00933
00934
00935
00936 inline vector signed int
00937 vec_vcmpeqfp (vector float a1, vector float a2)
00938 {
00939 return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
00940 }
00941
00942
00943
00944 inline vector signed int
00945 vec_vcmpequw (vector signed int a1, vector signed int a2)
00946 {
00947 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
00948 }
00949
00950 inline vector signed int
00951 vec_vcmpequw (vector unsigned int a1, vector unsigned int a2)
00952 {
00953 return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
00954 }
00955
00956
00957
00958 inline vector signed short
00959 vec_vcmpequh (vector signed short a1, vector signed short a2)
00960 {
00961 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
00962 }
00963
00964 inline vector signed short
00965 vec_vcmpequh (vector unsigned short a1, vector unsigned short a2)
00966 {
00967 return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
00968 }
00969
00970
00971
00972 inline vector signed char
00973 vec_vcmpequb (vector signed char a1, vector signed char a2)
00974 {
00975 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
00976 }
00977
00978 inline vector signed char
00979 vec_vcmpequb (vector unsigned char a1, vector unsigned char a2)
00980 {
00981 return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
00982 }
00983
00984
00985
00986 inline vector signed int
00987 vec_cmpge (vector float a1, vector float a2)
00988 {
00989 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
00990 }
00991
00992
00993
00994 inline vector signed char
00995 vec_cmpgt (vector unsigned char a1, vector unsigned char a2)
00996 {
00997 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
00998 }
00999
01000 inline vector signed char
01001 vec_cmpgt (vector signed char a1, vector signed char a2)
01002 {
01003 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
01004 }
01005
01006 inline vector signed short
01007 vec_cmpgt (vector unsigned short a1, vector unsigned short a2)
01008 {
01009 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
01010 }
01011
01012 inline vector signed short
01013 vec_cmpgt (vector signed short a1, vector signed short a2)
01014 {
01015 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
01016 }
01017
01018 inline vector signed int
01019 vec_cmpgt (vector unsigned int a1, vector unsigned int a2)
01020 {
01021 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
01022 }
01023
01024 inline vector signed int
01025 vec_cmpgt (vector signed int a1, vector signed int a2)
01026 {
01027 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
01028 }
01029
01030 inline vector signed int
01031 vec_cmpgt (vector float a1, vector float a2)
01032 {
01033 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
01034 }
01035
01036
01037
01038 inline vector signed int
01039 vec_vcmpgtfp (vector float a1, vector float a2)
01040 {
01041 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
01042 }
01043
01044
01045
01046 inline vector signed int
01047 vec_vcmpgtsw (vector signed int a1, vector signed int a2)
01048 {
01049 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
01050 }
01051
01052
01053
01054 inline vector signed int
01055 vec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2)
01056 {
01057 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
01058 }
01059
01060
01061
01062 inline vector signed short
01063 vec_cmpgtsh (vector signed short a1, vector signed short a2)
01064 {
01065 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
01066 }
01067
01068
01069
01070 inline vector signed short
01071 vec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2)
01072 {
01073 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
01074 }
01075
01076
01077
01078 inline vector signed char
01079 vec_vcmpgtsb (vector signed char a1, vector signed char a2)
01080 {
01081 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
01082 }
01083
01084
01085
01086 inline vector signed char
01087 vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2)
01088 {
01089 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
01090 }
01091
01092
01093
01094 inline vector signed int
01095 vec_cmple (vector float a1, vector float a2)
01096 {
01097 return (vector signed int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
01098 }
01099
01100
01101
01102 inline vector signed char
01103 vec_cmplt (vector unsigned char a1, vector unsigned char a2)
01104 {
01105 return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
01106 }
01107
01108 inline vector signed char
01109 vec_cmplt (vector signed char a1, vector signed char a2)
01110 {
01111 return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
01112 }
01113
01114 inline vector signed short
01115 vec_cmplt (vector unsigned short a1, vector unsigned short a2)
01116 {
01117 return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
01118 }
01119
01120 inline vector signed short
01121 vec_cmplt (vector signed short a1, vector signed short a2)
01122 {
01123 return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
01124 }
01125
01126 inline vector signed int
01127 vec_cmplt (vector unsigned int a1, vector unsigned int a2)
01128 {
01129 return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
01130 }
01131
01132 inline vector signed int
01133 vec_cmplt (vector signed int a1, vector signed int a2)
01134 {
01135 return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
01136 }
01137
01138 inline vector signed int
01139 vec_cmplt (vector float a1, vector float a2)
01140 {
01141 return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
01142 }
01143
01144
01145
01146 inline vector float
01147 vec_ctf (vector unsigned int a1, const char a2)
01148 {
01149 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
01150 }
01151
01152 inline vector float
01153 vec_ctf (vector signed int a1, const char a2)
01154 {
01155 return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
01156 }
01157
01158
01159
01160 inline vector float
01161 vec_vcfsx (vector signed int a1, const char a2)
01162 {
01163 return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
01164 }
01165
01166
01167
01168 inline vector float
01169 vec_vcfux (vector unsigned int a1, const char a2)
01170 {
01171 return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
01172 }
01173
01174
01175
01176 inline vector signed int
01177 vec_cts (vector float a1, const char a2)
01178 {
01179 return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2);
01180 }
01181
01182
01183
01184 inline vector unsigned int
01185 vec_ctu (vector float a1, const char a2)
01186 {
01187 return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2);
01188 }
01189
01190
01191
01192 inline void
01193 vec_dss (const char a1)
01194 {
01195 __builtin_altivec_dss (a1);
01196 }
01197
01198
01199
01200 inline void
01201 vec_dssall ()
01202 {
01203 __builtin_altivec_dssall ();
01204 }
01205
01206
01207
01208 inline void
01209 vec_dst (vector unsigned char *a1, int a2, const char a3)
01210 {
01211 __builtin_altivec_dst ((void *) a1, a2, a3);
01212 }
01213
01214 inline void
01215 vec_dst (vector signed char *a1, int a2, const char a3)
01216 {
01217 __builtin_altivec_dst ((void *) a1, a2, a3);
01218 }
01219
01220 inline void
01221 vec_dst (vector unsigned short *a1, int a2, const char a3)
01222 {
01223 __builtin_altivec_dst ((void *) a1, a2, a3);
01224 }
01225
01226 inline void
01227 vec_dst (vector signed short *a1, int a2, const char a3)
01228 {
01229 __builtin_altivec_dst ((void *) a1, a2, a3);
01230 }
01231
01232 inline void
01233 vec_dst (vector unsigned int *a1, int a2, const char a3)
01234 {
01235 __builtin_altivec_dst ((void *) a1, a2, a3);
01236 }
01237
01238 inline void
01239 vec_dst (vector signed int *a1, int a2, const char a3)
01240 {
01241 __builtin_altivec_dst ((void *) a1, a2, a3);
01242 }
01243
01244 inline void
01245 vec_dst (vector float *a1, int a2, const char a3)
01246 {
01247 __builtin_altivec_dst ((void *) a1, a2, a3);
01248 }
01249
01250 inline void
01251 vec_dst (unsigned char *a1, int a2, const char a3)
01252 {
01253 __builtin_altivec_dst ((void *) a1, a2, a3);
01254 }
01255
01256 inline void
01257 vec_dst (signed char *a1, int a2, const char a3)
01258 {
01259 __builtin_altivec_dst ((void *) a1, a2, a3);
01260 }
01261
01262 inline void
01263 vec_dst (unsigned short *a1, int a2, const char a3)
01264 {
01265 __builtin_altivec_dst ((void *) a1, a2, a3);
01266 }
01267
01268 inline void
01269 vec_dst (signed short *a1, int a2, const char a3)
01270 {
01271 __builtin_altivec_dst ((void *) a1, a2, a3);
01272 }
01273
01274 inline void
01275 vec_dst (unsigned int *a1, int a2, const char a3)
01276 {
01277 __builtin_altivec_dst ((void *) a1, a2, a3);
01278 }
01279
01280 inline void
01281 vec_dst (signed int *a1, int a2, const char a3)
01282 {
01283 __builtin_altivec_dst ((void *) a1, a2, a3);
01284 }
01285
01286 inline void
01287 vec_dst (unsigned long *a1, int a2, const char a3)
01288 {
01289 __builtin_altivec_dst ((void *) a1, a2, a3);
01290 }
01291
01292 inline void
01293 vec_dst (signed long *a1, int a2, const char a3)
01294 {
01295 __builtin_altivec_dst ((void *) a1, a2, a3);
01296 }
01297
01298 inline void
01299 vec_dst (float *a1, int a2, const char a3)
01300 {
01301 __builtin_altivec_dst ((void *) a1, a2, a3);
01302 }
01303
01304
01305
01306 inline void
01307 vec_dstst (vector unsigned char *a1, int a2, const char a3)
01308 {
01309 __builtin_altivec_dstst ((void *) a1, a2, a3);
01310 }
01311
01312 inline void
01313 vec_dstst (vector signed char *a1, int a2, const char a3)
01314 {
01315 __builtin_altivec_dstst ((void *) a1, a2, a3);
01316 }
01317
01318 inline void
01319 vec_dstst (vector unsigned short *a1, int a2, const char a3)
01320 {
01321 __builtin_altivec_dstst ((void *) a1, a2, a3);
01322 }
01323
01324 inline void
01325 vec_dstst (vector signed short *a1, int a2, const char a3)
01326 {
01327 __builtin_altivec_dstst ((void *) a1, a2, a3);
01328 }
01329
01330 inline void
01331 vec_dstst (vector unsigned int *a1, int a2, const char a3)
01332 {
01333 __builtin_altivec_dstst ((void *) a1, a2, a3);
01334 }
01335
01336 inline void
01337 vec_dstst (vector signed int *a1, int a2, const char a3)
01338 {
01339 __builtin_altivec_dstst ((void *) a1, a2, a3);
01340 }
01341
01342 inline void
01343 vec_dstst (vector float *a1, int a2, const char a3)
01344 {
01345 __builtin_altivec_dstst ((void *) a1, a2, a3);
01346 }
01347
01348 inline void
01349 vec_dstst (unsigned char *a1, int a2, const char a3)
01350 {
01351 __builtin_altivec_dstst ((void *) a1, a2, a3);
01352 }
01353
01354 inline void
01355 vec_dstst (signed char *a1, int a2, const char a3)
01356 {
01357 __builtin_altivec_dstst ((void *) a1, a2, a3);
01358 }
01359
01360 inline void
01361 vec_dstst (unsigned short *a1, int a2, const char a3)
01362 {
01363 __builtin_altivec_dstst ((void *) a1, a2, a3);
01364 }
01365
01366 inline void
01367 vec_dstst (signed short *a1, int a2, const char a3)
01368 {
01369 __builtin_altivec_dstst ((void *) a1, a2, a3);
01370 }
01371
01372 inline void
01373 vec_dstst (unsigned int *a1, int a2, const char a3)
01374 {
01375 __builtin_altivec_dstst ((void *) a1, a2, a3);
01376 }
01377
01378 inline void
01379 vec_dstst (signed int *a1, int a2, const char a3)
01380 {
01381 __builtin_altivec_dstst ((void *) a1, a2, a3);
01382 }
01383
01384 inline void
01385 vec_dstst (unsigned long *a1, int a2, const char a3)
01386 {
01387 __builtin_altivec_dstst ((void *) a1, a2, a3);
01388 }
01389
01390 inline void
01391 vec_dstst (signed long *a1, int a2, const char a3)
01392 {
01393 __builtin_altivec_dstst ((void *) a1, a2, a3);
01394 }
01395
01396 inline void
01397 vec_dstst (float *a1, int a2, const char a3)
01398 {
01399 __builtin_altivec_dstst ((void *) a1, a2, a3);
01400 }
01401
01402
01403
01404 inline void
01405 vec_dststt (vector unsigned char *a1, int a2, const char a3)
01406 {
01407 __builtin_altivec_dststt ((void *) a1, a2, a3);
01408 }
01409
01410 inline void
01411 vec_dststt (vector signed char *a1, int a2, const char a3)
01412 {
01413 __builtin_altivec_dststt ((void *) a1, a2, a3);
01414 }
01415
01416 inline void
01417 vec_dststt (vector unsigned short *a1, int a2, const char a3)
01418 {
01419 __builtin_altivec_dststt ((void *) a1, a2, a3);
01420 }
01421
01422 inline void
01423 vec_dststt (vector signed short *a1, int a2, const char a3)
01424 {
01425 __builtin_altivec_dststt ((void *) a1, a2, a3);
01426 }
01427
01428 inline void
01429 vec_dststt (vector unsigned int *a1, int a2, const char a3)
01430 {
01431 __builtin_altivec_dststt ((void *) a1, a2, a3);
01432 }
01433
01434 inline void
01435 vec_dststt (vector signed int *a1, int a2, const char a3)
01436 {
01437 __builtin_altivec_dststt ((void *) a1, a2, a3);
01438 }
01439
01440 inline void
01441 vec_dststt (vector float *a1, int a2, const char a3)
01442 {
01443 __builtin_altivec_dststt ((void *) a1, a2, a3);
01444 }
01445
01446 inline void
01447 vec_dststt (unsigned char *a1, int a2, const char a3)
01448 {
01449 __builtin_altivec_dststt ((void *) a1, a2, a3);
01450 }
01451
01452 inline void
01453 vec_dststt (signed char *a1, int a2, const char a3)
01454 {
01455 __builtin_altivec_dststt ((void *) a1, a2, a3);
01456 }
01457
01458 inline void
01459 vec_dststt (unsigned short *a1, int a2, const char a3)
01460 {
01461 __builtin_altivec_dststt ((void *) a1, a2, a3);
01462 }
01463
01464 inline void
01465 vec_dststt (signed short *a1, int a2, const char a3)
01466 {
01467 __builtin_altivec_dststt ((void *) a1, a2, a3);
01468 }
01469
01470 inline void
01471 vec_dststt (unsigned int *a1, int a2, const char a3)
01472 {
01473 __builtin_altivec_dststt ((void *) a1, a2, a3);
01474 }
01475
01476 inline void
01477 vec_dststt (signed int *a1, int a2, const char a3)
01478 {
01479 __builtin_altivec_dststt ((void *) a1, a2, a3);
01480 }
01481
01482 inline void
01483 vec_dststt (unsigned long *a1, int a2, const char a3)
01484 {
01485 __builtin_altivec_dststt ((void *) a1, a2, a3);
01486 }
01487
01488 inline void
01489 vec_dststt (signed long *a1, int a2, const char a3)
01490 {
01491 __builtin_altivec_dststt ((void *) a1, a2, a3);
01492 }
01493
01494 inline void
01495 vec_dststt (float *a1, int a2, const char a3)
01496 {
01497 __builtin_altivec_dststt ((void *) a1, a2, a3);
01498 }
01499
01500
01501
01502 inline void
01503 vec_dstt (vector unsigned char *a1, int a2, const char a3)
01504 {
01505 __builtin_altivec_dstt ((void *) a1, a2, a3);
01506 }
01507
01508 inline void
01509 vec_dstt (vector signed char *a1, int a2, const char a3)
01510 {
01511 __builtin_altivec_dstt ((void *) a1, a2, a3);
01512 }
01513
01514 inline void
01515 vec_dstt (vector unsigned short *a1, int a2, const char a3)
01516 {
01517 __builtin_altivec_dstt ((void *) a1, a2, a3);
01518 }
01519
01520 inline void
01521 vec_dstt (vector signed short *a1, int a2, const char a3)
01522 {
01523 __builtin_altivec_dstt ((void *) a1, a2, a3);
01524 }
01525
01526 inline void
01527 vec_dstt (vector unsigned int *a1, int a2, const char a3)
01528 {
01529 __builtin_altivec_dstt ((void *) a1, a2, a3);
01530 }
01531
01532 inline void
01533 vec_dstt (vector signed int *a1, int a2, const char a3)
01534 {
01535 __builtin_altivec_dstt ((void *) a1, a2, a3);
01536 }
01537
01538 inline void
01539 vec_dstt (vector float *a1, int a2, const char a3)
01540 {
01541 __builtin_altivec_dstt ((void *) a1, a2, a3);
01542 }
01543
01544 inline void
01545 vec_dstt (unsigned char *a1, int a2, const char a3)
01546 {
01547 __builtin_altivec_dstt ((void *) a1, a2, a3);
01548 }
01549
01550 inline void
01551 vec_dstt (signed char *a1, int a2, const char a3)
01552 {
01553 __builtin_altivec_dstt ((void *) a1, a2, a3);
01554 }
01555
01556 inline void
01557 vec_dstt (unsigned short *a1, int a2, const char a3)
01558 {
01559 __builtin_altivec_dstt ((void *) a1, a2, a3);
01560 }
01561
01562 inline void
01563 vec_dstt (signed short *a1, int a2, const char a3)
01564 {
01565 __builtin_altivec_dstt ((void *) a1, a2, a3);
01566 }
01567
01568 inline void
01569 vec_dstt (unsigned int *a1, int a2, const char a3)
01570 {
01571 __builtin_altivec_dstt ((void *) a1, a2, a3);
01572 }
01573
01574 inline void
01575 vec_dstt (signed int *a1, int a2, const char a3)
01576 {
01577 __builtin_altivec_dstt ((void *) a1, a2, a3);
01578 }
01579
01580 inline void
01581 vec_dstt (unsigned long *a1, int a2, const char a3)
01582 {
01583 __builtin_altivec_dstt ((void *) a1, a2, a3);
01584 }
01585
01586 inline void
01587 vec_dstt (signed long *a1, int a2, const char a3)
01588 {
01589 __builtin_altivec_dstt ((void *) a1, a2, a3);
01590 }
01591
01592 inline void
01593 vec_dstt (float *a1, int a2, const char a3)
01594 {
01595 __builtin_altivec_dstt ((void *) a1, a2, a3);
01596 }
01597
01598
01599
01600 inline vector float
01601 vec_expte (vector float a1)
01602 {
01603 return (vector float) __builtin_altivec_vexptefp ((vector float) a1);
01604 }
01605
01606
01607
01608 inline vector float
01609 vec_floor (vector float a1)
01610 {
01611 return (vector float) __builtin_altivec_vrfim ((vector float) a1);
01612 }
01613
01614
01615
01616 inline vector float
01617 vec_ld (int a1, vector float *a2)
01618 {
01619 return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
01620 }
01621
01622 inline vector float
01623 vec_ld (int a1, float *a2)
01624 {
01625 return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
01626 }
01627
01628 inline vector signed int
01629 vec_ld (int a1, vector signed int *a2)
01630 {
01631 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
01632 }
01633
01634 inline vector signed int
01635 vec_ld (int a1, signed int *a2)
01636 {
01637 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
01638 }
01639
01640 inline vector signed int
01641 vec_ld (int a1, signed long *a2)
01642 {
01643 return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
01644 }
01645
01646 inline vector unsigned int
01647 vec_ld (int a1, vector unsigned int *a2)
01648 {
01649 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
01650 }
01651
01652 inline vector unsigned int
01653 vec_ld (int a1, unsigned int *a2)
01654 {
01655 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
01656 }
01657
01658 inline vector unsigned int
01659 vec_ld (int a1, unsigned long *a2)
01660 {
01661 return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
01662 }
01663
01664 inline vector signed short
01665 vec_ld (int a1, vector signed short *a2)
01666 {
01667 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
01668 }
01669
01670 inline vector signed short
01671 vec_ld (int a1, signed short *a2)
01672 {
01673 return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
01674 }
01675
01676 inline vector unsigned short
01677 vec_ld (int a1, vector unsigned short *a2)
01678 {
01679 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
01680 }
01681
01682 inline vector unsigned short
01683 vec_ld (int a1, unsigned short *a2)
01684 {
01685 return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
01686 }
01687
01688 inline vector signed char
01689 vec_ld (int a1, vector signed char *a2)
01690 {
01691 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
01692 }
01693
01694 inline vector signed char
01695 vec_ld (int a1, signed char *a2)
01696 {
01697 return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
01698 }
01699
01700 inline vector unsigned char
01701 vec_ld (int a1, vector unsigned char *a2)
01702 {
01703 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
01704 }
01705
01706 inline vector unsigned char
01707 vec_ld (int a1, unsigned char *a2)
01708 {
01709 return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
01710 }
01711
01712
01713
01714 inline vector signed char
01715 vec_lde (int a1, signed char *a2)
01716 {
01717 return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
01718 }
01719
01720 inline vector unsigned char
01721 vec_lde (int a1, unsigned char *a2)
01722 {
01723 return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
01724 }
01725
01726 inline vector signed short
01727 vec_lde (int a1, signed short *a2)
01728 {
01729 return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
01730 }
01731
01732 inline vector unsigned short
01733 vec_lde (int a1, unsigned short *a2)
01734 {
01735 return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
01736 }
01737
01738 inline vector float
01739 vec_lde (int a1, float *a2)
01740 {
01741 return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
01742 }
01743
01744 inline vector signed int
01745 vec_lde (int a1, signed int *a2)
01746 {
01747 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
01748 }
01749
01750 inline vector unsigned int
01751 vec_lde (int a1, unsigned int *a2)
01752 {
01753 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
01754 }
01755
01756 inline vector signed int
01757 vec_lde (int a1, signed long *a2)
01758 {
01759 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
01760 }
01761
01762 inline vector unsigned int
01763 vec_lde (int a1, unsigned long *a2)
01764 {
01765 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
01766 }
01767
01768
01769
01770 inline vector float
01771 vec_lvewx (int a1, float *a2)
01772 {
01773 return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
01774 }
01775
01776 inline vector signed int
01777 vec_lvewx (int a1, signed int *a2)
01778 {
01779 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
01780 }
01781
01782 inline vector unsigned int
01783 vec_lvewx (int a1, unsigned int *a2)
01784 {
01785 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
01786 }
01787
01788 inline vector signed int
01789 vec_lvewx (int a1, signed long *a2)
01790 {
01791 return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
01792 }
01793
01794 inline vector unsigned int
01795 vec_lvewx (int a1, unsigned long *a2)
01796 {
01797 return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
01798 }
01799
01800
01801
01802 inline vector signed short
01803 vec_lvehx (int a1, signed short *a2)
01804 {
01805 return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
01806 }
01807
01808 inline vector unsigned short
01809 vec_lvehx (int a1, unsigned short *a2)
01810 {
01811 return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
01812 }
01813
01814
01815
01816 inline vector signed char
01817 vec_lvebx (int a1, signed char *a2)
01818 {
01819 return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
01820 }
01821
01822 inline vector unsigned char
01823 vec_lvebx (int a1, unsigned char *a2)
01824 {
01825 return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
01826 }
01827
01828
01829
01830 inline vector float
01831 vec_ldl (int a1, vector float *a2)
01832 {
01833 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
01834 }
01835
01836 inline vector float
01837 vec_ldl (int a1, float *a2)
01838 {
01839 return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
01840 }
01841
01842 inline vector signed int
01843 vec_ldl (int a1, vector signed int *a2)
01844 {
01845 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
01846 }
01847
01848 inline vector signed int
01849 vec_ldl (int a1, signed int *a2)
01850 {
01851 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
01852 }
01853
01854 inline vector signed int
01855 vec_ldl (int a1, signed long *a2)
01856 {
01857 return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
01858 }
01859
01860 inline vector unsigned int
01861 vec_ldl (int a1, vector unsigned int *a2)
01862 {
01863 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
01864 }
01865
01866 inline vector unsigned int
01867 vec_ldl (int a1, unsigned int *a2)
01868 {
01869 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
01870 }
01871
01872 inline vector unsigned int
01873 vec_ldl (int a1, unsigned long *a2)
01874 {
01875 return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
01876 }
01877
01878 inline vector signed short
01879 vec_ldl (int a1, vector signed short *a2)
01880 {
01881 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
01882 }
01883
01884 inline vector signed short
01885 vec_ldl (int a1, signed short *a2)
01886 {
01887 return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
01888 }
01889
01890 inline vector unsigned short
01891 vec_ldl (int a1, vector unsigned short *a2)
01892 {
01893 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
01894 }
01895
01896 inline vector unsigned short
01897 vec_ldl (int a1, unsigned short *a2)
01898 {
01899 return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
01900 }
01901
01902 inline vector signed char
01903 vec_ldl (int a1, vector signed char *a2)
01904 {
01905 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
01906 }
01907
01908 inline vector signed char
01909 vec_ldl (int a1, signed char *a2)
01910 {
01911 return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
01912 }
01913
01914 inline vector unsigned char
01915 vec_ldl (int a1, vector unsigned char *a2)
01916 {
01917 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
01918 }
01919
01920 inline vector unsigned char
01921 vec_ldl (int a1, unsigned char *a2)
01922 {
01923 return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
01924 }
01925
01926
01927
01928 inline vector float
01929 vec_loge (vector float a1)
01930 {
01931 return (vector float) __builtin_altivec_vlogefp ((vector float) a1);
01932 }
01933
01934
01935
01936 inline vector unsigned char
01937 vec_lvsl (int a1, unsigned char *a2)
01938 {
01939 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
01940 }
01941
01942 inline vector unsigned char
01943 vec_lvsl (int a1, signed char *a2)
01944 {
01945 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
01946 }
01947
01948 inline vector unsigned char
01949 vec_lvsl (int a1, unsigned short *a2)
01950 {
01951 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
01952 }
01953
01954 inline vector unsigned char
01955 vec_lvsl (int a1, signed short *a2)
01956 {
01957 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
01958 }
01959
01960 inline vector unsigned char
01961 vec_lvsl (int a1, unsigned int *a2)
01962 {
01963 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
01964 }
01965
01966 inline vector unsigned char
01967 vec_lvsl (int a1, signed int *a2)
01968 {
01969 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
01970 }
01971
01972 inline vector unsigned char
01973 vec_lvsl (int a1, unsigned long *a2)
01974 {
01975 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
01976 }
01977
01978 inline vector unsigned char
01979 vec_lvsl (int a1, signed long *a2)
01980 {
01981 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
01982 }
01983
01984 inline vector unsigned char
01985 vec_lvsl (int a1, float *a2)
01986 {
01987 return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
01988 }
01989
01990
01991
01992 inline vector unsigned char
01993 vec_lvsr (int a1, unsigned char *a2)
01994 {
01995 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
01996 }
01997
01998 inline vector unsigned char
01999 vec_lvsr (int a1, signed char *a2)
02000 {
02001 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
02002 }
02003
02004 inline vector unsigned char
02005 vec_lvsr (int a1, unsigned short *a2)
02006 {
02007 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
02008 }
02009
02010 inline vector unsigned char
02011 vec_lvsr (int a1, signed short *a2)
02012 {
02013 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
02014 }
02015
02016 inline vector unsigned char
02017 vec_lvsr (int a1, unsigned int *a2)
02018 {
02019 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
02020 }
02021
02022 inline vector unsigned char
02023 vec_lvsr (int a1, signed int *a2)
02024 {
02025 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
02026 }
02027
02028 inline vector unsigned char
02029 vec_lvsr (int a1, unsigned long *a2)
02030 {
02031 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
02032 }
02033
02034 inline vector unsigned char
02035 vec_lvsr (int a1, signed long *a2)
02036 {
02037 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
02038 }
02039
02040 inline vector unsigned char
02041 vec_lvsr (int a1, float *a2)
02042 {
02043 return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
02044 }
02045
02046
02047
02048 inline vector float
02049 vec_madd (vector float a1, vector float a2, vector float a3)
02050 {
02051 return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
02052 }
02053
02054
02055
02056
02057 inline vector signed short
02058 vec_madds (vector signed short a1, vector signed short a2, vector signed short a3)
02059 {
02060 return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
02061 }
02062
02063
02064
02065 inline vector unsigned char
02066 vec_max (vector signed char a1, vector unsigned char a2)
02067 {
02068 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
02069 }
02070
02071 inline vector unsigned char
02072 vec_max (vector unsigned char a1, vector signed char a2)
02073 {
02074 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
02075 }
02076
02077 inline vector unsigned char
02078 vec_max (vector unsigned char a1, vector unsigned char a2)
02079 {
02080 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
02081 }
02082
02083 inline vector signed char
02084 vec_max (vector signed char a1, vector signed char a2)
02085 {
02086 return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
02087 }
02088
02089 inline vector unsigned short
02090 vec_max (vector signed short a1, vector unsigned short a2)
02091 {
02092 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
02093 }
02094
02095 inline vector unsigned short
02096 vec_max (vector unsigned short a1, vector signed short a2)
02097 {
02098 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
02099 }
02100
02101 inline vector unsigned short
02102 vec_max (vector unsigned short a1, vector unsigned short a2)
02103 {
02104 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
02105 }
02106
02107 inline vector signed short
02108 vec_max (vector signed short a1, vector signed short a2)
02109 {
02110 return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
02111 }
02112
02113 inline vector unsigned int
02114 vec_max (vector signed int a1, vector unsigned int a2)
02115 {
02116 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
02117 }
02118
02119 inline vector unsigned int
02120 vec_max (vector unsigned int a1, vector signed int a2)
02121 {
02122 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
02123 }
02124
02125 inline vector unsigned int
02126 vec_max (vector unsigned int a1, vector unsigned int a2)
02127 {
02128 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
02129 }
02130
02131 inline vector signed int
02132 vec_max (vector signed int a1, vector signed int a2)
02133 {
02134 return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
02135 }
02136
02137 inline vector float
02138 vec_max (vector float a1, vector float a2)
02139 {
02140 return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
02141 }
02142
02143
02144
02145 inline vector float
02146 vec_vmaxfp (vector float a1, vector float a2)
02147 {
02148 return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
02149 }
02150
02151
02152
02153 inline vector signed int
02154 vec_vmaxsw (vector signed int a1, vector signed int a2)
02155 {
02156 return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
02157 }
02158
02159
02160
02161 inline vector unsigned int
02162 vec_vmaxuw (vector signed int a1, vector unsigned int a2)
02163 {
02164 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
02165 }
02166
02167 inline vector unsigned int
02168 vec_vmaxuw (vector unsigned int a1, vector signed int a2)
02169 {
02170 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
02171 }
02172
02173 inline vector unsigned int
02174 vec_vmaxuw (vector unsigned int a1, vector unsigned int a2)
02175 {
02176 return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
02177 }
02178
02179
02180
02181 inline vector signed short
02182 vec_vmaxsh (vector signed short a1, vector signed short a2)
02183 {
02184 return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
02185 }
02186
02187
02188
02189 inline vector unsigned short
02190 vec_vmaxuh (vector signed short a1, vector unsigned short a2)
02191 {
02192 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
02193 }
02194
02195 inline vector unsigned short
02196 vec_vmaxuh (vector unsigned short a1, vector signed short a2)
02197 {
02198 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
02199 }
02200
02201 inline vector unsigned short
02202 vec_vmaxuh (vector unsigned short a1, vector unsigned short a2)
02203 {
02204 return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
02205 }
02206
02207
02208
02209 inline vector signed char
02210 vec_vmaxsb (vector signed char a1, vector signed char a2)
02211 {
02212 return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
02213 }
02214
02215
02216
02217 inline vector unsigned char
02218 vec_vmaxub (vector signed char a1, vector unsigned char a2)
02219 {
02220 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
02221 }
02222
02223 inline vector unsigned char
02224 vec_vmaxub (vector unsigned char a1, vector signed char a2)
02225 {
02226 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
02227 }
02228
02229 inline vector unsigned char
02230 vec_vmaxub (vector unsigned char a1, vector unsigned char a2)
02231 {
02232 return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
02233 }
02234
02235
02236
02237 inline vector signed char
02238 vec_mergeh (vector signed char a1, vector signed char a2)
02239 {
02240 return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
02241 }
02242
02243 inline vector unsigned char
02244 vec_mergeh (vector unsigned char a1, vector unsigned char a2)
02245 {
02246 return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
02247 }
02248
02249 inline vector signed short
02250 vec_mergeh (vector signed short a1, vector signed short a2)
02251 {
02252 return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
02253 }
02254
02255 inline vector unsigned short
02256 vec_mergeh (vector unsigned short a1, vector unsigned short a2)
02257 {
02258 return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
02259 }
02260
02261 inline vector float
02262 vec_mergeh (vector float a1, vector float a2)
02263 {
02264 return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
02265 }
02266
02267 inline vector signed int
02268 vec_mergeh (vector signed int a1, vector signed int a2)
02269 {
02270 return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
02271 }
02272
02273 inline vector unsigned int
02274 vec_mergeh (vector unsigned int a1, vector unsigned int a2)
02275 {
02276 return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
02277 }
02278
02279
02280
02281 inline vector float
02282 vec_vmrghw (vector float a1, vector float a2)
02283 {
02284 return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
02285 }
02286
02287 inline vector signed int
02288 vec_vmrghw (vector signed int a1, vector signed int a2)
02289 {
02290 return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
02291 }
02292
02293 inline vector unsigned int
02294 vec_vmrghw (vector unsigned int a1, vector unsigned int a2)
02295 {
02296 return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
02297 }
02298
02299
02300
02301 inline vector signed short
02302 vec_vmrghh (vector signed short a1, vector signed short a2)
02303 {
02304 return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
02305 }
02306
02307 inline vector unsigned short
02308 vec_vmrghh (vector unsigned short a1, vector unsigned short a2)
02309 {
02310 return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
02311 }
02312
02313
02314
02315 inline vector signed char
02316 vec_vmrghb (vector signed char a1, vector signed char a2)
02317 {
02318 return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
02319 }
02320
02321 inline vector unsigned char
02322 vec_vmrghb (vector unsigned char a1, vector unsigned char a2)
02323 {
02324 return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
02325 }
02326
02327
02328
02329 inline vector signed char
02330 vec_mergel (vector signed char a1, vector signed char a2)
02331 {
02332 return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
02333 }
02334
02335 inline vector unsigned char
02336 vec_mergel (vector unsigned char a1, vector unsigned char a2)
02337 {
02338 return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
02339 }
02340
02341 inline vector signed short
02342 vec_mergel (vector signed short a1, vector signed short a2)
02343 {
02344 return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
02345 }
02346
02347 inline vector unsigned short
02348 vec_mergel (vector unsigned short a1, vector unsigned short a2)
02349 {
02350 return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
02351 }
02352
02353 inline vector float
02354 vec_mergel (vector float a1, vector float a2)
02355 {
02356 return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
02357 }
02358
02359 inline vector signed int
02360 vec_mergel (vector signed int a1, vector signed int a2)
02361 {
02362 return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
02363 }
02364
02365 inline vector unsigned int
02366 vec_mergel (vector unsigned int a1, vector unsigned int a2)
02367 {
02368 return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
02369 }
02370
02371
02372
02373 inline vector float
02374 vec_vmrglw (vector float a1, vector float a2)
02375 {
02376 return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
02377 }
02378
02379 inline vector signed int
02380 vec_vmrglw (vector signed int a1, vector signed int a2)
02381 {
02382 return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
02383 }
02384
02385 inline vector unsigned int
02386 vec_vmrglw (vector unsigned int a1, vector unsigned int a2)
02387 {
02388 return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
02389 }
02390
02391
02392
02393 inline vector signed short
02394 vec_vmrglh (vector signed short a1, vector signed short a2)
02395 {
02396 return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
02397 }
02398
02399 inline vector unsigned short
02400 vec_vmrglh (vector unsigned short a1, vector unsigned short a2)
02401 {
02402 return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
02403 }
02404
02405
02406
02407 inline vector signed char
02408 vec_vmrglb (vector signed char a1, vector signed char a2)
02409 {
02410 return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
02411 }
02412
02413 inline vector unsigned char
02414 vec_vmrglb (vector unsigned char a1, vector unsigned char a2)
02415 {
02416 return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
02417 }
02418
02419
02420
02421 inline vector unsigned short
02422 vec_mfvscr ()
02423 {
02424 return (vector unsigned short) __builtin_altivec_mfvscr ();
02425 }
02426
02427
02428
02429 inline vector unsigned char
02430 vec_min (vector signed char a1, vector unsigned char a2)
02431 {
02432 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
02433 }
02434
02435 inline vector unsigned char
02436 vec_min (vector unsigned char a1, vector signed char a2)
02437 {
02438 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
02439 }
02440
02441 inline vector unsigned char
02442 vec_min (vector unsigned char a1, vector unsigned char a2)
02443 {
02444 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
02445 }
02446
02447 inline vector signed char
02448 vec_min (vector signed char a1, vector signed char a2)
02449 {
02450 return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
02451 }
02452
02453 inline vector unsigned short
02454 vec_min (vector signed short a1, vector unsigned short a2)
02455 {
02456 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
02457 }
02458
02459 inline vector unsigned short
02460 vec_min (vector unsigned short a1, vector signed short a2)
02461 {
02462 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
02463 }
02464
02465 inline vector unsigned short
02466 vec_min (vector unsigned short a1, vector unsigned short a2)
02467 {
02468 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
02469 }
02470
02471 inline vector signed short
02472 vec_min (vector signed short a1, vector signed short a2)
02473 {
02474 return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
02475 }
02476
02477 inline vector unsigned int
02478 vec_min (vector signed int a1, vector unsigned int a2)
02479 {
02480 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
02481 }
02482
02483 inline vector unsigned int
02484 vec_min (vector unsigned int a1, vector signed int a2)
02485 {
02486 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
02487 }
02488
02489 inline vector unsigned int
02490 vec_min (vector unsigned int a1, vector unsigned int a2)
02491 {
02492 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
02493 }
02494
02495 inline vector signed int
02496 vec_min (vector signed int a1, vector signed int a2)
02497 {
02498 return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
02499 }
02500
02501 inline vector float
02502 vec_min (vector float a1, vector float a2)
02503 {
02504 return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
02505 }
02506
02507
02508
02509 inline vector float
02510 vec_vminfp (vector float a1, vector float a2)
02511 {
02512 return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
02513 }
02514
02515
02516
02517 inline vector signed int
02518 vec_vminsw (vector signed int a1, vector signed int a2)
02519 {
02520 return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
02521 }
02522
02523
02524
02525 inline vector unsigned int
02526 vec_vminuw (vector signed int a1, vector unsigned int a2)
02527 {
02528 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
02529 }
02530
02531 inline vector unsigned int
02532 vec_vminuw (vector unsigned int a1, vector signed int a2)
02533 {
02534 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
02535 }
02536
02537 inline vector unsigned int
02538 vec_vminuw (vector unsigned int a1, vector unsigned int a2)
02539 {
02540 return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
02541 }
02542
02543
02544
02545 inline vector signed short
02546 vec_vminsh (vector signed short a1, vector signed short a2)
02547 {
02548 return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
02549 }
02550
02551
02552
02553 inline vector unsigned short
02554 vec_vminuh (vector signed short a1, vector unsigned short a2)
02555 {
02556 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
02557 }
02558
02559 inline vector unsigned short
02560 vec_vminuh (vector unsigned short a1, vector signed short a2)
02561 {
02562 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
02563 }
02564
02565 inline vector unsigned short
02566 vec_vminuh (vector unsigned short a1, vector unsigned short a2)
02567 {
02568 return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
02569 }
02570
02571
02572
02573 inline vector signed char
02574 vec_vminsb (vector signed char a1, vector signed char a2)
02575 {
02576 return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
02577 }
02578
02579
02580
02581 inline vector unsigned char
02582 vec_vminub (vector signed char a1, vector unsigned char a2)
02583 {
02584 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
02585 }
02586
02587 inline vector unsigned char
02588 vec_vminub (vector unsigned char a1, vector signed char a2)
02589 {
02590 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
02591 }
02592
02593 inline vector unsigned char
02594 vec_vminub (vector unsigned char a1, vector unsigned char a2)
02595 {
02596 return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
02597 }
02598
02599
02600
02601 inline vector signed short
02602 vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
02603 {
02604 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
02605 }
02606
02607 inline vector signed short
02608 vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
02609 {
02610 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
02611 }
02612
02613 inline vector signed short
02614 vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
02615 {
02616 return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
02617 }
02618
02619 inline vector unsigned short
02620 vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
02621 {
02622 return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
02623 }
02624
02625
02626
02627 inline vector signed short
02628 vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
02629 {
02630 return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
02631 }
02632
02633
02634
02635 inline vector unsigned int
02636 vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
02637 {
02638 return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
02639 }
02640
02641 inline vector signed int
02642 vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
02643 {
02644 return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
02645 }
02646
02647 inline vector unsigned int
02648 vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
02649 {
02650 return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
02651 }
02652
02653 inline vector signed int
02654 vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
02655 {
02656 return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
02657 }
02658
02659
02660
02661 inline vector signed int
02662 vec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3)
02663 {
02664 return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
02665 }
02666
02667
02668
02669 inline vector unsigned int
02670 vec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
02671 {
02672 return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
02673 }
02674
02675
02676
02677 inline vector signed int
02678 vec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3)
02679 {
02680 return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
02681 }
02682
02683
02684
02685 inline vector unsigned int
02686 vec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
02687 {
02688 return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
02689 }
02690
02691
02692
02693 inline vector unsigned int
02694 vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
02695 {
02696 return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
02697 }
02698
02699 inline vector signed int
02700 vec_msums (vector signed short a1, vector signed short a2, vector signed int a3)
02701 {
02702 return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
02703 }
02704
02705
02706
02707 inline vector signed int
02708 vec_vmsumshs (vector signed short a1, vector signed short a2, vector signed int a3)
02709 {
02710 return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
02711 }
02712
02713
02714
02715 inline vector unsigned int
02716 vec_vmsumuhs (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
02717 {
02718 return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
02719 }
02720
02721
02722
02723 inline void
02724 vec_mtvscr (vector signed int a1)
02725 {
02726 __builtin_altivec_mtvscr ((vector signed int) a1);
02727 }
02728
02729 inline void
02730 vec_mtvscr (vector unsigned int a1)
02731 {
02732 __builtin_altivec_mtvscr ((vector signed int) a1);
02733 }
02734
02735 inline void
02736 vec_mtvscr (vector signed short a1)
02737 {
02738 __builtin_altivec_mtvscr ((vector signed int) a1);
02739 }
02740
02741 inline void
02742 vec_mtvscr (vector unsigned short a1)
02743 {
02744 __builtin_altivec_mtvscr ((vector signed int) a1);
02745 }
02746
02747 inline void
02748 vec_mtvscr (vector signed char a1)
02749 {
02750 __builtin_altivec_mtvscr ((vector signed int) a1);
02751 }
02752
02753 inline void
02754 vec_mtvscr (vector unsigned char a1)
02755 {
02756 __builtin_altivec_mtvscr ((vector signed int) a1);
02757 }
02758
02759
02760
02761 inline vector unsigned short
02762 vec_mule (vector unsigned char a1, vector unsigned char a2)
02763 {
02764 return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
02765 }
02766
02767 inline vector signed short
02768 vec_mule (vector signed char a1, vector signed char a2)
02769 {
02770 return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2);
02771 }
02772
02773 inline vector unsigned int
02774 vec_mule (vector unsigned short a1, vector unsigned short a2)
02775 {
02776 return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
02777 }
02778
02779 inline vector signed int
02780 vec_mule (vector signed short a1, vector signed short a2)
02781 {
02782 return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
02783 }
02784
02785
02786
02787 inline vector signed int
02788 vec_vmulesh (vector signed short a1, vector signed short a2)
02789 {
02790 return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
02791 }
02792
02793
02794
02795 inline vector unsigned int
02796 vec_vmuleuh (vector unsigned short a1, vector unsigned short a2)
02797 {
02798 return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
02799 }
02800
02801
02802 inline vector unsigned short
02803 vec_vmuleub (vector unsigned char a1, vector unsigned char a2)
02804 {
02805 return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
02806 }
02807
02808
02809
02810 inline vector unsigned short
02811 vec_mulo (vector unsigned char a1, vector unsigned char a2)
02812 {
02813 return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
02814 }
02815
02816 inline vector signed short
02817 vec_mulo (vector signed char a1, vector signed char a2)
02818 {
02819 return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
02820 }
02821
02822 inline vector unsigned int
02823 vec_mulo (vector unsigned short a1, vector unsigned short a2)
02824 {
02825 return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
02826 }
02827
02828 inline vector signed int
02829 vec_mulo (vector signed short a1, vector signed short a2)
02830 {
02831 return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
02832 }
02833
02834
02835
02836 inline vector signed int
02837 vec_vmulosh (vector signed short a1, vector signed short a2)
02838 {
02839 return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
02840 }
02841
02842
02843
02844 inline vector unsigned int
02845 vec_vmulouh (vector unsigned short a1, vector unsigned short a2)
02846 {
02847 return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
02848 }
02849
02850
02851
02852 inline vector signed short
02853 vec_vmulosb (vector signed char a1, vector signed char a2)
02854 {
02855 return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
02856 }
02857
02858
02859
02860 inline vector unsigned short
02861 vec_vmuloub (vector unsigned char a1, vector unsigned char a2)
02862 {
02863 return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
02864 }
02865
02866
02867
02868 inline vector float
02869 vec_nmsub (vector float a1, vector float a2, vector float a3)
02870 {
02871 return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3);
02872 }
02873
02874
02875
02876 inline vector float
02877 vec_nor (vector float a1, vector float a2)
02878 {
02879 return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
02880 }
02881
02882 inline vector signed int
02883 vec_nor (vector signed int a1, vector signed int a2)
02884 {
02885 return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
02886 }
02887
02888 inline vector unsigned int
02889 vec_nor (vector unsigned int a1, vector unsigned int a2)
02890 {
02891 return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
02892 }
02893
02894 inline vector signed short
02895 vec_nor (vector signed short a1, vector signed short a2)
02896 {
02897 return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
02898 }
02899
02900 inline vector unsigned short
02901 vec_nor (vector unsigned short a1, vector unsigned short a2)
02902 {
02903 return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
02904 }
02905
02906 inline vector signed char
02907 vec_nor (vector signed char a1, vector signed char a2)
02908 {
02909 return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
02910 }
02911
02912 inline vector unsigned char
02913 vec_nor (vector unsigned char a1, vector unsigned char a2)
02914 {
02915 return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
02916 }
02917
02918
02919
02920 inline vector float
02921 vec_or (vector float a1, vector float a2)
02922 {
02923 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02924 }
02925
02926 inline vector float
02927 vec_or (vector float a1, vector signed int a2)
02928 {
02929 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02930 }
02931
02932 inline vector float
02933 vec_or (vector signed int a1, vector float a2)
02934 {
02935 return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02936 }
02937
02938 inline vector signed int
02939 vec_or (vector signed int a1, vector signed int a2)
02940 {
02941 return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02942 }
02943
02944 inline vector unsigned int
02945 vec_or (vector signed int a1, vector unsigned int a2)
02946 {
02947 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02948 }
02949
02950 inline vector unsigned int
02951 vec_or (vector unsigned int a1, vector signed int a2)
02952 {
02953 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02954 }
02955
02956 inline vector unsigned int
02957 vec_or (vector unsigned int a1, vector unsigned int a2)
02958 {
02959 return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02960 }
02961
02962 inline vector signed short
02963 vec_or (vector signed short a1, vector signed short a2)
02964 {
02965 return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02966 }
02967
02968 inline vector unsigned short
02969 vec_or (vector signed short a1, vector unsigned short a2)
02970 {
02971 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02972 }
02973
02974 inline vector unsigned short
02975 vec_or (vector unsigned short a1, vector signed short a2)
02976 {
02977 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02978 }
02979
02980 inline vector unsigned short
02981 vec_or (vector unsigned short a1, vector unsigned short a2)
02982 {
02983 return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02984 }
02985
02986 inline vector signed char
02987 vec_or (vector signed char a1, vector signed char a2)
02988 {
02989 return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02990 }
02991
02992 inline vector unsigned char
02993 vec_or (vector signed char a1, vector unsigned char a2)
02994 {
02995 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
02996 }
02997
02998 inline vector unsigned char
02999 vec_or (vector unsigned char a1, vector signed char a2)
03000 {
03001 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
03002 }
03003
03004 inline vector unsigned char
03005 vec_or (vector unsigned char a1, vector unsigned char a2)
03006 {
03007 return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
03008 }
03009
03010
03011
03012 inline vector signed char
03013 vec_pack (vector signed short a1, vector signed short a2)
03014 {
03015 return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
03016 }
03017
03018 inline vector unsigned char
03019 vec_pack (vector unsigned short a1, vector unsigned short a2)
03020 {
03021 return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
03022 }
03023
03024 inline vector signed short
03025 vec_pack (vector signed int a1, vector signed int a2)
03026 {
03027 return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
03028 }
03029
03030 inline vector unsigned short
03031 vec_pack (vector unsigned int a1, vector unsigned int a2)
03032 {
03033 return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
03034 }
03035
03036
03037
03038 inline vector signed short
03039 vec_vpkuwum (vector signed int a1, vector signed int a2)
03040 {
03041 return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
03042 }
03043
03044 inline vector unsigned short
03045 vec_vpkuwum (vector unsigned int a1, vector unsigned int a2)
03046 {
03047 return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
03048 }
03049
03050
03051
03052 inline vector signed char
03053 vec_vpkuhum (vector signed short a1, vector signed short a2)
03054 {
03055 return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
03056 }
03057
03058 inline vector unsigned char
03059 vec_vpkuhum (vector unsigned short a1, vector unsigned short a2)
03060 {
03061 return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
03062 }
03063
03064
03065
03066 inline vector unsigned short
03067 vec_packpx (vector unsigned int a1, vector unsigned int a2)
03068 {
03069 return (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2);
03070 }
03071
03072
03073
03074 inline vector unsigned char
03075 vec_packs (vector unsigned short a1, vector unsigned short a2)
03076 {
03077 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
03078 }
03079
03080 inline vector signed char
03081 vec_packs (vector signed short a1, vector signed short a2)
03082 {
03083 return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
03084 }
03085
03086 inline vector unsigned short
03087 vec_packs (vector unsigned int a1, vector unsigned int a2)
03088 {
03089 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
03090 }
03091
03092 inline vector signed short
03093 vec_packs (vector signed int a1, vector signed int a2)
03094 {
03095 return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
03096 }
03097
03098
03099
03100 inline vector signed short
03101 vec_vpkswss (vector signed int a1, vector signed int a2)
03102 {
03103 return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
03104 }
03105
03106
03107
03108 inline vector unsigned short
03109 vec_vpkuwus (vector unsigned int a1, vector unsigned int a2)
03110 {
03111 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
03112 }
03113
03114
03115
03116 inline vector signed char
03117 vec_vpkshss (vector signed short a1, vector signed short a2)
03118 {
03119 return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
03120 }
03121
03122
03123
03124 inline vector unsigned char
03125 vec_vpkuhus (vector unsigned short a1, vector unsigned short a2)
03126 {
03127 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
03128 }
03129
03130
03131
03132 inline vector unsigned char
03133 vec_packsu (vector unsigned short a1, vector unsigned short a2)
03134 {
03135 return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
03136 }
03137
03138 inline vector unsigned char
03139 vec_packsu (vector signed short a1, vector signed short a2)
03140 {
03141 return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
03142 }
03143
03144 inline vector unsigned short
03145 vec_packsu (vector unsigned int a1, vector unsigned int a2)
03146 {
03147 return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
03148 }
03149
03150 inline vector unsigned short
03151 vec_packsu (vector signed int a1, vector signed int a2)
03152 {
03153 return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
03154 }
03155
03156
03157
03158 inline vector unsigned short
03159 vec_vpkswus (vector signed int a1, vector signed int a2)
03160 {
03161 return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
03162 }
03163
03164
03165
03166 inline vector unsigned char
03167 vec_vpkshus (vector signed short a1, vector signed short a2)
03168 {
03169 return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
03170 }
03171
03172
03173
03174 inline vector float
03175 vec_perm (vector float a1, vector float a2, vector unsigned char a3)
03176 {
03177 return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
03178 }
03179
03180 inline vector signed int
03181 vec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3)
03182 {
03183 return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
03184 }
03185
03186 inline vector unsigned int
03187 vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3)
03188 {
03189 return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
03190 }
03191
03192 inline vector signed short
03193 vec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3)
03194 {
03195 return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
03196 }
03197
03198 inline vector unsigned short
03199 vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3)
03200 {
03201 return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
03202 }
03203
03204 inline vector signed char
03205 vec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3)
03206 {
03207 return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
03208 }
03209
03210 inline vector unsigned char
03211 vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
03212 {
03213 return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
03214 }
03215
03216
03217
03218 inline vector float
03219 vec_re (vector float a1)
03220 {
03221 return (vector float) __builtin_altivec_vrefp ((vector float) a1);
03222 }
03223
03224
03225
03226 inline vector signed char
03227 vec_rl (vector signed char a1, vector unsigned char a2)
03228 {
03229 return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
03230 }
03231
03232 inline vector unsigned char
03233 vec_rl (vector unsigned char a1, vector unsigned char a2)
03234 {
03235 return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
03236 }
03237
03238 inline vector signed short
03239 vec_rl (vector signed short a1, vector unsigned short a2)
03240 {
03241 return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
03242 }
03243
03244 inline vector unsigned short
03245 vec_rl (vector unsigned short a1, vector unsigned short a2)
03246 {
03247 return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
03248 }
03249
03250 inline vector signed int
03251 vec_rl (vector signed int a1, vector unsigned int a2)
03252 {
03253 return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
03254 }
03255
03256 inline vector unsigned int
03257 vec_rl (vector unsigned int a1, vector unsigned int a2)
03258 {
03259 return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
03260 }
03261
03262
03263
03264 inline vector signed int
03265 vec_vrlw (vector signed int a1, vector unsigned int a2)
03266 {
03267 return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
03268 }
03269
03270 inline vector unsigned int
03271 vec_vrlw (vector unsigned int a1, vector unsigned int a2)
03272 {
03273 return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
03274 }
03275
03276
03277
03278 inline vector signed short
03279 vec_vrlh (vector signed short a1, vector unsigned short a2)
03280 {
03281 return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
03282 }
03283
03284 inline vector unsigned short
03285 vec_vrlh (vector unsigned short a1, vector unsigned short a2)
03286 {
03287 return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
03288 }
03289
03290
03291
03292 inline vector signed char
03293 vec_vrlb (vector signed char a1, vector unsigned char a2)
03294 {
03295 return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
03296 }
03297
03298 inline vector unsigned char
03299 vec_vrlb (vector unsigned char a1, vector unsigned char a2)
03300 {
03301 return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
03302 }
03303
03304
03305
03306 inline vector float
03307 vec_round (vector float a1)
03308 {
03309 return (vector float) __builtin_altivec_vrfin ((vector float) a1);
03310 }
03311
03312
03313
03314 inline vector float
03315 vec_rsqrte (vector float a1)
03316 {
03317 return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1);
03318 }
03319
03320
03321
03322 inline vector float
03323 vec_sel (vector float a1, vector float a2, vector signed int a3)
03324 {
03325 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03326 }
03327
03328 inline vector float
03329 vec_sel (vector float a1, vector float a2, vector unsigned int a3)
03330 {
03331 return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03332 }
03333
03334 inline vector signed int
03335 vec_sel (vector signed int a1, vector signed int a2, vector signed int a3)
03336 {
03337 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03338 }
03339
03340 inline vector signed int
03341 vec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3)
03342 {
03343 return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03344 }
03345
03346 inline vector unsigned int
03347 vec_sel (vector unsigned int a1, vector unsigned int a2, vector signed int a3)
03348 {
03349 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03350 }
03351
03352 inline vector unsigned int
03353 vec_sel (vector unsigned int a1, vector unsigned int a2, vector unsigned int a3)
03354 {
03355 return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03356 }
03357
03358 inline vector signed short
03359 vec_sel (vector signed short a1, vector signed short a2, vector signed short a3)
03360 {
03361 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03362 }
03363
03364 inline vector signed short
03365 vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3)
03366 {
03367 return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03368 }
03369
03370 inline vector unsigned short
03371 vec_sel (vector unsigned short a1, vector unsigned short a2, vector signed short a3)
03372 {
03373 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03374 }
03375
03376 inline vector unsigned short
03377 vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
03378 {
03379 return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03380 }
03381
03382 inline vector signed char
03383 vec_sel (vector signed char a1, vector signed char a2, vector signed char a3)
03384 {
03385 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03386 }
03387
03388 inline vector signed char
03389 vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3)
03390 {
03391 return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03392 }
03393
03394 inline vector unsigned char
03395 vec_sel (vector unsigned char a1, vector unsigned char a2, vector signed char a3)
03396 {
03397 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03398 }
03399
03400 inline vector unsigned char
03401 vec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
03402 {
03403 return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
03404 }
03405
03406
03407
03408 inline vector signed char
03409 vec_sl (vector signed char a1, vector unsigned char a2)
03410 {
03411 return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
03412 }
03413
03414 inline vector unsigned char
03415 vec_sl (vector unsigned char a1, vector unsigned char a2)
03416 {
03417 return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
03418 }
03419
03420 inline vector signed short
03421 vec_sl (vector signed short a1, vector unsigned short a2)
03422 {
03423 return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
03424 }
03425
03426 inline vector unsigned short
03427 vec_sl (vector unsigned short a1, vector unsigned short a2)
03428 {
03429 return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
03430 }
03431
03432 inline vector signed int
03433 vec_sl (vector signed int a1, vector unsigned int a2)
03434 {
03435 return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
03436 }
03437
03438 inline vector unsigned int
03439 vec_sl (vector unsigned int a1, vector unsigned int a2)
03440 {
03441 return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
03442 }
03443
03444
03445
03446 inline vector signed int
03447 vec_vslw (vector signed int a1, vector unsigned int a2)
03448 {
03449 return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
03450 }
03451
03452 inline vector unsigned int
03453 vec_vslw (vector unsigned int a1, vector unsigned int a2)
03454 {
03455 return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
03456 }
03457
03458
03459
03460 inline vector signed short
03461 vec_vslh (vector signed short a1, vector unsigned short a2)
03462 {
03463 return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
03464 }
03465
03466 inline vector unsigned short
03467 vec_vslh (vector unsigned short a1, vector unsigned short a2)
03468 {
03469 return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
03470 }
03471
03472
03473
03474 inline vector signed char
03475 vec_vslb (vector signed char a1, vector unsigned char a2)
03476 {
03477 return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
03478 }
03479
03480 inline vector unsigned char
03481 vec_vslb (vector unsigned char a1, vector unsigned char a2)
03482 {
03483 return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
03484 }
03485
03486
03487
03488 inline vector float
03489 vec_sld (vector float a1, vector float a2, const char a3)
03490 {
03491 return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
03492 }
03493
03494 inline vector signed int
03495 vec_sld (vector signed int a1, vector signed int a2, const char a3)
03496 {
03497 return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
03498 }
03499
03500 inline vector unsigned int
03501 vec_sld (vector unsigned int a1, vector unsigned int a2, const char a3)
03502 {
03503 return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
03504 }
03505
03506 inline vector signed short
03507 vec_sld (vector signed short a1, vector signed short a2, const char a3)
03508 {
03509 return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
03510 }
03511
03512 inline vector unsigned short
03513 vec_sld (vector unsigned short a1, vector unsigned short a2, const char a3)
03514 {
03515 return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
03516 }
03517
03518 inline vector signed char
03519 vec_sld (vector signed char a1, vector signed char a2, const char a3)
03520 {
03521 return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
03522 }
03523
03524 inline vector unsigned char
03525 vec_sld (vector unsigned char a1, vector unsigned char a2, const char a3)
03526 {
03527 return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
03528 }
03529
03530
03531
03532 inline vector signed int
03533 vec_sll (vector signed int a1, vector unsigned int a2)
03534 {
03535 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03536 }
03537
03538 inline vector signed int
03539 vec_sll (vector signed int a1, vector unsigned short a2)
03540 {
03541 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03542 }
03543
03544 inline vector signed int
03545 vec_sll (vector signed int a1, vector unsigned char a2)
03546 {
03547 return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03548 }
03549
03550 inline vector unsigned int
03551 vec_sll (vector unsigned int a1, vector unsigned int a2)
03552 {
03553 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03554 }
03555
03556 inline vector unsigned int
03557 vec_sll (vector unsigned int a1, vector unsigned short a2)
03558 {
03559 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03560 }
03561
03562 inline vector unsigned int
03563 vec_sll (vector unsigned int a1, vector unsigned char a2)
03564 {
03565 return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03566 }
03567
03568 inline vector signed short
03569 vec_sll (vector signed short a1, vector unsigned int a2)
03570 {
03571 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03572 }
03573
03574 inline vector signed short
03575 vec_sll (vector signed short a1, vector unsigned short a2)
03576 {
03577 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03578 }
03579
03580 inline vector signed short
03581 vec_sll (vector signed short a1, vector unsigned char a2)
03582 {
03583 return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03584 }
03585
03586 inline vector unsigned short
03587 vec_sll (vector unsigned short a1, vector unsigned int a2)
03588 {
03589 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03590 }
03591
03592 inline vector unsigned short
03593 vec_sll (vector unsigned short a1, vector unsigned short a2)
03594 {
03595 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03596 }
03597
03598 inline vector unsigned short
03599 vec_sll (vector unsigned short a1, vector unsigned char a2)
03600 {
03601 return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03602 }
03603
03604 inline vector signed char
03605 vec_sll (vector signed char a1, vector unsigned int a2)
03606 {
03607 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03608 }
03609
03610 inline vector signed char
03611 vec_sll (vector signed char a1, vector unsigned short a2)
03612 {
03613 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03614 }
03615
03616 inline vector signed char
03617 vec_sll (vector signed char a1, vector unsigned char a2)
03618 {
03619 return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03620 }
03621
03622 inline vector unsigned char
03623 vec_sll (vector unsigned char a1, vector unsigned int a2)
03624 {
03625 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03626 }
03627
03628 inline vector unsigned char
03629 vec_sll (vector unsigned char a1, vector unsigned short a2)
03630 {
03631 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03632 }
03633
03634 inline vector unsigned char
03635 vec_sll (vector unsigned char a1, vector unsigned char a2)
03636 {
03637 return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
03638 }
03639
03640
03641
03642 inline vector float
03643 vec_slo (vector float a1, vector signed char a2)
03644 {
03645 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03646 }
03647
03648 inline vector float
03649 vec_slo (vector float a1, vector unsigned char a2)
03650 {
03651 return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03652 }
03653
03654 inline vector signed int
03655 vec_slo (vector signed int a1, vector signed char a2)
03656 {
03657 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03658 }
03659
03660 inline vector signed int
03661 vec_slo (vector signed int a1, vector unsigned char a2)
03662 {
03663 return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03664 }
03665
03666 inline vector unsigned int
03667 vec_slo (vector unsigned int a1, vector signed char a2)
03668 {
03669 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03670 }
03671
03672 inline vector unsigned int
03673 vec_slo (vector unsigned int a1, vector unsigned char a2)
03674 {
03675 return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03676 }
03677
03678 inline vector signed short
03679 vec_slo (vector signed short a1, vector signed char a2)
03680 {
03681 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03682 }
03683
03684 inline vector signed short
03685 vec_slo (vector signed short a1, vector unsigned char a2)
03686 {
03687 return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03688 }
03689
03690 inline vector unsigned short
03691 vec_slo (vector unsigned short a1, vector signed char a2)
03692 {
03693 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03694 }
03695
03696 inline vector unsigned short
03697 vec_slo (vector unsigned short a1, vector unsigned char a2)
03698 {
03699 return (vector unsigned short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03700 }
03701
03702 inline vector signed char
03703 vec_slo (vector signed char a1, vector signed char a2)
03704 {
03705 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03706 }
03707
03708 inline vector signed char
03709 vec_slo (vector signed char a1, vector unsigned char a2)
03710 {
03711 return (vector signed char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03712 }
03713
03714 inline vector unsigned char
03715 vec_slo (vector unsigned char a1, vector signed char a2)
03716 {
03717 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03718 }
03719
03720 inline vector unsigned char
03721 vec_slo (vector unsigned char a1, vector unsigned char a2)
03722 {
03723 return (vector unsigned char) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
03724 }
03725
03726
03727
03728 inline vector signed char
03729 vec_splat (vector signed char a1, const char a2)
03730 {
03731 return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
03732 }
03733
03734 inline vector unsigned char
03735 vec_splat (vector unsigned char a1, const char a2)
03736 {
03737 return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
03738 }
03739
03740 inline vector signed short
03741 vec_splat (vector signed short a1, const char a2)
03742 {
03743 return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
03744 }
03745
03746 inline vector unsigned short
03747 vec_splat (vector unsigned short a1, const char a2)
03748 {
03749 return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
03750 }
03751
03752 inline vector float
03753 vec_splat (vector float a1, const char a2)
03754 {
03755 return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2);
03756 }
03757
03758 inline vector signed int
03759 vec_splat (vector signed int a1, const char a2)
03760 {
03761 return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
03762 }
03763
03764 inline vector unsigned int
03765 vec_splat (vector unsigned int a1, const char a2)
03766 {
03767 return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
03768 }
03769
03770
03771
03772 inline vector float
03773 vec_vspltw (vector float a1, const char a2)
03774 {
03775 return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2);
03776 }
03777
03778 inline vector signed int
03779 vec_vspltw (vector signed int a1, const char a2)
03780 {
03781 return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
03782 }
03783
03784 inline vector unsigned int
03785 vec_vspltw (vector unsigned int a1, const char a2)
03786 {
03787 return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
03788 }
03789
03790
03791
03792 inline vector signed short
03793 vec_vsplth (vector signed short a1, const char a2)
03794 {
03795 return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
03796 }
03797
03798 inline vector unsigned short
03799 vec_vsplth (vector unsigned short a1, const char a2)
03800 {
03801 return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
03802 }
03803
03804
03805
03806 inline vector signed char
03807 vec_vspltb (vector signed char a1, const char a2)
03808 {
03809 return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
03810 }
03811
03812 inline vector unsigned char
03813 vec_vspltb (vector unsigned char a1, const char a2)
03814 {
03815 return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
03816 }
03817
03818
03819
03820 inline vector signed char
03821 vec_splat_s8 (const char a1)
03822 {
03823 return (vector signed char) __builtin_altivec_vspltisb (a1);
03824 }
03825
03826
03827
03828 inline vector signed short
03829 vec_splat_s16 (const char a1)
03830 {
03831 return (vector signed short) __builtin_altivec_vspltish (a1);
03832 }
03833
03834
03835
03836 inline vector signed int
03837 vec_splat_s32 (const char a1)
03838 {
03839 return (vector signed int) __builtin_altivec_vspltisw (a1);
03840 }
03841
03842
03843
03844 inline vector unsigned char
03845 vec_splat_u8 (const char a1)
03846 {
03847 return (vector unsigned char) __builtin_altivec_vspltisb (a1);
03848 }
03849
03850
03851
03852 inline vector unsigned short
03853 vec_splat_u16 (const char a1)
03854 {
03855 return (vector unsigned short) __builtin_altivec_vspltish (a1);
03856 }
03857
03858
03859
03860 inline vector unsigned int
03861 vec_splat_u32 (const char a1)
03862 {
03863 return (vector unsigned int) __builtin_altivec_vspltisw (a1);
03864 }
03865
03866
03867
03868 inline vector signed char
03869 vec_sr (vector signed char a1, vector unsigned char a2)
03870 {
03871 return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
03872 }
03873
03874 inline vector unsigned char
03875 vec_sr (vector unsigned char a1, vector unsigned char a2)
03876 {
03877 return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
03878 }
03879
03880 inline vector signed short
03881 vec_sr (vector signed short a1, vector unsigned short a2)
03882 {
03883 return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
03884 }
03885
03886 inline vector unsigned short
03887 vec_sr (vector unsigned short a1, vector unsigned short a2)
03888 {
03889 return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
03890 }
03891
03892 inline vector signed int
03893 vec_sr (vector signed int a1, vector unsigned int a2)
03894 {
03895 return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
03896 }
03897
03898 inline vector unsigned int
03899 vec_sr (vector unsigned int a1, vector unsigned int a2)
03900 {
03901 return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
03902 }
03903
03904
03905
03906 inline vector signed int
03907 vec_vsrw (vector signed int a1, vector unsigned int a2)
03908 {
03909 return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
03910 }
03911
03912 inline vector unsigned int
03913 vec_vsrw (vector unsigned int a1, vector unsigned int a2)
03914 {
03915 return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
03916 }
03917
03918
03919
03920 inline vector signed short
03921 vec_vsrh (vector signed short a1, vector unsigned short a2)
03922 {
03923 return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
03924 }
03925
03926 inline vector unsigned short
03927 vec_vsrh (vector unsigned short a1, vector unsigned short a2)
03928 {
03929 return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
03930 }
03931
03932
03933
03934 inline vector signed char
03935 vec_vsrb (vector signed char a1, vector unsigned char a2)
03936 {
03937 return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
03938 }
03939
03940 inline vector unsigned char
03941 vec_vsrb (vector unsigned char a1, vector unsigned char a2)
03942 {
03943 return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
03944 }
03945
03946
03947
03948 inline vector signed char
03949 vec_sra (vector signed char a1, vector unsigned char a2)
03950 {
03951 return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
03952 }
03953
03954 inline vector unsigned char
03955 vec_sra (vector unsigned char a1, vector unsigned char a2)
03956 {
03957 return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
03958 }
03959
03960 inline vector signed short
03961 vec_sra (vector signed short a1, vector unsigned short a2)
03962 {
03963 return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
03964 }
03965
03966 inline vector unsigned short
03967 vec_sra (vector unsigned short a1, vector unsigned short a2)
03968 {
03969 return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
03970 }
03971
03972 inline vector signed int
03973 vec_sra (vector signed int a1, vector unsigned int a2)
03974 {
03975 return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
03976 }
03977
03978 inline vector unsigned int
03979 vec_sra (vector unsigned int a1, vector unsigned int a2)
03980 {
03981 return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
03982 }
03983
03984
03985
03986 inline vector signed int
03987 vec_vsraw (vector signed int a1, vector unsigned int a2)
03988 {
03989 return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
03990 }
03991
03992 inline vector unsigned int
03993 vec_vsraw (vector unsigned int a1, vector unsigned int a2)
03994 {
03995 return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
03996 }
03997
03998
03999
04000 inline vector signed short
04001 vec_vsrah (vector signed short a1, vector unsigned short a2)
04002 {
04003 return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
04004 }
04005
04006 inline vector unsigned short
04007 vec_vsrah (vector unsigned short a1, vector unsigned short a2)
04008 {
04009 return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
04010 }
04011
04012
04013
04014 inline vector signed char
04015 vec_vsrab (vector signed char a1, vector unsigned char a2)
04016 {
04017 return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
04018 }
04019
04020 inline vector unsigned char
04021 vec_vsrab (vector unsigned char a1, vector unsigned char a2)
04022 {
04023 return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
04024 }
04025
04026
04027
04028 inline vector signed int
04029 vec_srl (vector signed int a1, vector unsigned int a2)
04030 {
04031 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04032 }
04033
04034 inline vector signed int
04035 vec_srl (vector signed int a1, vector unsigned short a2)
04036 {
04037 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04038 }
04039
04040 inline vector signed int
04041 vec_srl (vector signed int a1, vector unsigned char a2)
04042 {
04043 return (vector signed int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04044 }
04045
04046 inline vector unsigned int
04047 vec_srl (vector unsigned int a1, vector unsigned int a2)
04048 {
04049 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04050 }
04051
04052 inline vector unsigned int
04053 vec_srl (vector unsigned int a1, vector unsigned short a2)
04054 {
04055 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04056 }
04057
04058 inline vector unsigned int
04059 vec_srl (vector unsigned int a1, vector unsigned char a2)
04060 {
04061 return (vector unsigned int) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04062 }
04063
04064 inline vector signed short
04065 vec_srl (vector signed short a1, vector unsigned int a2)
04066 {
04067 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04068 }
04069
04070 inline vector signed short
04071 vec_srl (vector signed short a1, vector unsigned short a2)
04072 {
04073 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04074 }
04075
04076 inline vector signed short
04077 vec_srl (vector signed short a1, vector unsigned char a2)
04078 {
04079 return (vector signed short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04080 }
04081
04082 inline vector unsigned short
04083 vec_srl (vector unsigned short a1, vector unsigned int a2)
04084 {
04085 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04086 }
04087
04088 inline vector unsigned short
04089 vec_srl (vector unsigned short a1, vector unsigned short a2)
04090 {
04091 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04092 }
04093
04094 inline vector unsigned short
04095 vec_srl (vector unsigned short a1, vector unsigned char a2)
04096 {
04097 return (vector unsigned short) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04098 }
04099
04100 inline vector signed char
04101 vec_srl (vector signed char a1, vector unsigned int a2)
04102 {
04103 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04104 }
04105
04106 inline vector signed char
04107 vec_srl (vector signed char a1, vector unsigned short a2)
04108 {
04109 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04110 }
04111
04112 inline vector signed char
04113 vec_srl (vector signed char a1, vector unsigned char a2)
04114 {
04115 return (vector signed char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04116 }
04117
04118 inline vector unsigned char
04119 vec_srl (vector unsigned char a1, vector unsigned int a2)
04120 {
04121 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04122 }
04123
04124 inline vector unsigned char
04125 vec_srl (vector unsigned char a1, vector unsigned short a2)
04126 {
04127 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04128 }
04129
04130 inline vector unsigned char
04131 vec_srl (vector unsigned char a1, vector unsigned char a2)
04132 {
04133 return (vector unsigned char) __builtin_altivec_vsr ((vector signed int) a1, (vector signed int) a2);
04134 }
04135
04136
04137
04138 inline vector float
04139 vec_sro (vector float a1, vector signed char a2)
04140 {
04141 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04142 }
04143
04144 inline vector float
04145 vec_sro (vector float a1, vector unsigned char a2)
04146 {
04147 return (vector float) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04148 }
04149
04150 inline vector signed int
04151 vec_sro (vector signed int a1, vector signed char a2)
04152 {
04153 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04154 }
04155
04156 inline vector signed int
04157 vec_sro (vector signed int a1, vector unsigned char a2)
04158 {
04159 return (vector signed int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04160 }
04161
04162 inline vector unsigned int
04163 vec_sro (vector unsigned int a1, vector signed char a2)
04164 {
04165 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04166 }
04167
04168 inline vector unsigned int
04169 vec_sro (vector unsigned int a1, vector unsigned char a2)
04170 {
04171 return (vector unsigned int) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04172 }
04173
04174 inline vector signed short
04175 vec_sro (vector signed short a1, vector signed char a2)
04176 {
04177 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04178 }
04179
04180 inline vector signed short
04181 vec_sro (vector signed short a1, vector unsigned char a2)
04182 {
04183 return (vector signed short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04184 }
04185
04186 inline vector unsigned short
04187 vec_sro (vector unsigned short a1, vector signed char a2)
04188 {
04189 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04190 }
04191
04192 inline vector unsigned short
04193 vec_sro (vector unsigned short a1, vector unsigned char a2)
04194 {
04195 return (vector unsigned short) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04196 }
04197
04198 inline vector signed char
04199 vec_sro (vector signed char a1, vector signed char a2)
04200 {
04201 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04202 }
04203
04204 inline vector signed char
04205 vec_sro (vector signed char a1, vector unsigned char a2)
04206 {
04207 return (vector signed char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04208 }
04209
04210 inline vector unsigned char
04211 vec_sro (vector unsigned char a1, vector signed char a2)
04212 {
04213 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04214 }
04215
04216 inline vector unsigned char
04217 vec_sro (vector unsigned char a1, vector unsigned char a2)
04218 {
04219 return (vector unsigned char) __builtin_altivec_vsro ((vector signed int) a1, (vector signed int) a2);
04220 }
04221
04222
04223
04224 inline void
04225 vec_st (vector float a1, int a2, void *a3)
04226 {
04227 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
04228 }
04229
04230 inline void
04231 vec_st (vector signed int a1, int a2, void *a3)
04232 {
04233 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
04234 }
04235
04236 inline void
04237 vec_st (vector unsigned int a1, int a2, void *a3)
04238 {
04239 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
04240 }
04241
04242 inline void
04243 vec_st (vector signed short a1, int a2, void *a3)
04244 {
04245 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
04246 }
04247
04248 inline void
04249 vec_st (vector unsigned short a1, int a2, void *a3)
04250 {
04251 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
04252 }
04253
04254 inline void
04255 vec_st (vector signed char a1, int a2, void *a3)
04256 {
04257 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
04258 }
04259
04260 inline void
04261 vec_st (vector unsigned char a1, int a2, void *a3)
04262 {
04263 __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3);
04264 }
04265
04266
04267
04268 inline void
04269 vec_ste (vector signed char a1, int a2, void *a3)
04270 {
04271 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
04272 }
04273
04274 inline void
04275 vec_ste (vector unsigned char a1, int a2, void *a3)
04276 {
04277 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
04278 }
04279
04280 inline void
04281 vec_ste (vector signed short a1, int a2, void *a3)
04282 {
04283 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
04284 }
04285
04286 inline void
04287 vec_ste (vector unsigned short a1, int a2, void *a3)
04288 {
04289 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
04290 }
04291
04292 inline void
04293 vec_ste (vector float a1, int a2, void *a3)
04294 {
04295 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
04296 }
04297
04298 inline void
04299 vec_ste (vector signed int a1, int a2, void *a3)
04300 {
04301 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
04302 }
04303
04304 inline void
04305 vec_ste (vector unsigned int a1, int a2, void *a3)
04306 {
04307 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
04308 }
04309
04310
04311
04312 inline void
04313 vec_stvewx (vector float a1, int a2, void *a3)
04314 {
04315 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
04316 }
04317
04318 inline void
04319 vec_stvewx (vector signed int a1, int a2, void *a3)
04320 {
04321 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
04322 }
04323
04324 inline void
04325 vec_stvewx (vector unsigned int a1, int a2, void *a3)
04326 {
04327 __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
04328 }
04329
04330
04331
04332 inline void
04333 vec_stvehx (vector signed short a1, int a2, void *a3)
04334 {
04335 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
04336 }
04337
04338 inline void
04339 vec_stvehx (vector unsigned short a1, int a2, void *a3)
04340 {
04341 __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
04342 }
04343
04344
04345
04346 inline void
04347 vec_stvebx (vector signed char a1, int a2, void *a3)
04348 {
04349 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
04350 }
04351
04352 inline void
04353 vec_stvebx (vector unsigned char a1, int a2, void *a3)
04354 {
04355 __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
04356 }
04357
04358
04359
04360 inline void
04361 vec_stl (vector float a1, int a2, void *a3)
04362 {
04363 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
04364 }
04365
04366 inline void
04367 vec_stl (vector signed int a1, int a2, void *a3)
04368 {
04369 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
04370 }
04371
04372 inline void
04373 vec_stl (vector unsigned int a1, int a2, void *a3)
04374 {
04375 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
04376 }
04377
04378 inline void
04379 vec_stl (vector signed short a1, int a2, void *a3)
04380 {
04381 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
04382 }
04383
04384 inline void
04385 vec_stl (vector unsigned short a1, int a2, void *a3)
04386 {
04387 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
04388 }
04389
04390 inline void
04391 vec_stl (vector signed char a1, int a2, void *a3)
04392 {
04393 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
04394 }
04395
04396 inline void
04397 vec_stl (vector unsigned char a1, int a2, void *a3)
04398 {
04399 __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3);
04400 }
04401
04402
04403
04404 inline vector signed char
04405 vec_sub (vector signed char a1, vector signed char a2)
04406 {
04407 return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
04408 }
04409
04410 inline vector unsigned char
04411 vec_sub (vector signed char a1, vector unsigned char a2)
04412 {
04413 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
04414 }
04415
04416 inline vector unsigned char
04417 vec_sub (vector unsigned char a1, vector signed char a2)
04418 {
04419 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
04420 }
04421
04422 inline vector unsigned char
04423 vec_sub (vector unsigned char a1, vector unsigned char a2)
04424 {
04425 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
04426 }
04427
04428 inline vector signed short
04429 vec_sub (vector signed short a1, vector signed short a2)
04430 {
04431 return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
04432 }
04433
04434 inline vector unsigned short
04435 vec_sub (vector signed short a1, vector unsigned short a2)
04436 {
04437 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
04438 }
04439
04440 inline vector unsigned short
04441 vec_sub (vector unsigned short a1, vector signed short a2)
04442 {
04443 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
04444 }
04445
04446 inline vector unsigned short
04447 vec_sub (vector unsigned short a1, vector unsigned short a2)
04448 {
04449 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
04450 }
04451
04452 inline vector signed int
04453 vec_sub (vector signed int a1, vector signed int a2)
04454 {
04455 return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
04456 }
04457
04458 inline vector unsigned int
04459 vec_sub (vector signed int a1, vector unsigned int a2)
04460 {
04461 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
04462 }
04463
04464 inline vector unsigned int
04465 vec_sub (vector unsigned int a1, vector signed int a2)
04466 {
04467 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
04468 }
04469
04470 inline vector unsigned int
04471 vec_sub (vector unsigned int a1, vector unsigned int a2)
04472 {
04473 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
04474 }
04475
04476 inline vector float
04477 vec_sub (vector float a1, vector float a2)
04478 {
04479 return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
04480 }
04481
04482
04483
04484 inline vector float
04485 vec_vsubfp (vector float a1, vector float a2)
04486 {
04487 return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
04488 }
04489
04490
04491
04492 inline vector signed int
04493 vec_vsubuwm (vector signed int a1, vector signed int a2)
04494 {
04495 return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
04496 }
04497
04498 inline vector unsigned int
04499 vec_vsubuwm (vector signed int a1, vector unsigned int a2)
04500 {
04501 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
04502 }
04503
04504 inline vector unsigned int
04505 vec_vsubuwm (vector unsigned int a1, vector signed int a2)
04506 {
04507 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
04508 }
04509
04510 inline vector unsigned int
04511 vec_vsubuwm (vector unsigned int a1, vector unsigned int a2)
04512 {
04513 return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
04514 }
04515
04516
04517
04518 inline vector signed short
04519 vec_vsubuhm (vector signed short a1, vector signed short a2)
04520 {
04521 return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
04522 }
04523
04524 inline vector unsigned short
04525 vec_vsubuhm (vector signed short a1, vector unsigned short a2)
04526 {
04527 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
04528 }
04529
04530 inline vector unsigned short
04531 vec_vsubuhm (vector unsigned short a1, vector signed short a2)
04532 {
04533 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
04534 }
04535
04536 inline vector unsigned short
04537 vec_vsubuhm (vector unsigned short a1, vector unsigned short a2)
04538 {
04539 return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
04540 }
04541
04542
04543
04544 inline vector signed char
04545 vec_vsububm (vector signed char a1, vector signed char a2)
04546 {
04547 return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
04548 }
04549
04550 inline vector unsigned char
04551 vec_vsububm (vector signed char a1, vector unsigned char a2)
04552 {
04553 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
04554 }
04555
04556 inline vector unsigned char
04557 vec_vsububm (vector unsigned char a1, vector signed char a2)
04558 {
04559 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
04560 }
04561
04562 inline vector unsigned char
04563 vec_vsububm (vector unsigned char a1, vector unsigned char a2)
04564 {
04565 return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
04566 }
04567
04568
04569
04570 inline vector unsigned int
04571 vec_subc (vector unsigned int a1, vector unsigned int a2)
04572 {
04573 return (vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) a1, (vector signed int) a2);
04574 }
04575
04576
04577
04578 inline vector unsigned char
04579 vec_subs (vector signed char a1, vector unsigned char a2)
04580 {
04581 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
04582 }
04583
04584 inline vector unsigned char
04585 vec_subs (vector unsigned char a1, vector signed char a2)
04586 {
04587 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
04588 }
04589
04590 inline vector unsigned char
04591 vec_subs (vector unsigned char a1, vector unsigned char a2)
04592 {
04593 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
04594 }
04595
04596 inline vector signed char
04597 vec_subs (vector signed char a1, vector signed char a2)
04598 {
04599 return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
04600 }
04601
04602 inline vector unsigned short
04603 vec_subs (vector signed short a1, vector unsigned short a2)
04604 {
04605 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
04606 }
04607
04608 inline vector unsigned short
04609 vec_subs (vector unsigned short a1, vector signed short a2)
04610 {
04611 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
04612 }
04613
04614 inline vector unsigned short
04615 vec_subs (vector unsigned short a1, vector unsigned short a2)
04616 {
04617 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
04618 }
04619
04620 inline vector signed short
04621 vec_subs (vector signed short a1, vector signed short a2)
04622 {
04623 return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
04624 }
04625
04626 inline vector unsigned int
04627 vec_subs (vector signed int a1, vector unsigned int a2)
04628 {
04629 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
04630 }
04631
04632 inline vector unsigned int
04633 vec_subs (vector unsigned int a1, vector signed int a2)
04634 {
04635 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
04636 }
04637
04638 inline vector unsigned int
04639 vec_subs (vector unsigned int a1, vector unsigned int a2)
04640 {
04641 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
04642 }
04643
04644 inline vector signed int
04645 vec_subs (vector signed int a1, vector signed int a2)
04646 {
04647 return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
04648 }
04649
04650
04651
04652 inline vector signed int
04653 vec_vsubsws (vector signed int a1, vector signed int a2)
04654 {
04655 return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
04656 }
04657
04658
04659
04660 inline vector unsigned int
04661 vec_vsubuws (vector signed int a1, vector unsigned int a2)
04662 {
04663 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
04664 }
04665
04666 inline vector unsigned int
04667 vec_vsubuws (vector unsigned int a1, vector signed int a2)
04668 {
04669 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
04670 }
04671
04672 inline vector unsigned int
04673 vec_vsubuws (vector unsigned int a1, vector unsigned int a2)
04674 {
04675 return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
04676 }
04677
04678
04679
04680 inline vector signed short
04681 vec_vsubshs (vector signed short a1, vector signed short a2)
04682 {
04683 return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
04684 }
04685
04686
04687
04688 inline vector unsigned short
04689 vec_vsubuhs (vector signed short a1, vector unsigned short a2)
04690 {
04691 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
04692 }
04693
04694 inline vector unsigned short
04695 vec_vsubuhs (vector unsigned short a1, vector signed short a2)
04696 {
04697 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
04698 }
04699
04700
04701
04702 inline vector unsigned short
04703 vec_vsubsuhs (vector signed short a1, vector unsigned short a2)
04704 {
04705 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
04706 }
04707
04708 inline vector unsigned short
04709 vec_vsubsuhs (vector unsigned short a1, vector signed short a2)
04710 {
04711 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
04712 }
04713
04714 inline vector unsigned short
04715 vec_vsubsuhs (vector unsigned short a1, vector unsigned short a2)
04716 {
04717 return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
04718 }
04719
04720
04721
04722 inline vector signed char
04723 vec_vsubsbs (vector signed char a1, vector signed char a2)
04724 {
04725 return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
04726 }
04727
04728
04729
04730 inline vector unsigned char
04731 vec_vsubsubs (vector signed char a1, vector unsigned char a2)
04732 {
04733 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
04734 }
04735
04736 inline vector unsigned char
04737 vec_vsubsubs (vector unsigned char a1, vector signed char a2)
04738 {
04739 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
04740 }
04741
04742 inline vector unsigned char
04743 vec_vsubsubs (vector unsigned char a1, vector unsigned char a2)
04744 {
04745 return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
04746 }
04747
04748
04749
04750 inline vector unsigned int
04751 vec_sum4s (vector unsigned char a1, vector unsigned int a2)
04752 {
04753 return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
04754 }
04755
04756 inline vector signed int
04757 vec_sum4s (vector signed char a1, vector signed int a2)
04758 {
04759 return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
04760 }
04761
04762 inline vector signed int
04763 vec_sum4s (vector signed short a1, vector signed int a2)
04764 {
04765 return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
04766 }
04767
04768
04769
04770 inline vector signed int
04771 vec_vsum4shss (vector signed short a1, vector signed int a2)
04772 {
04773 return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
04774 }
04775
04776
04777
04778 inline vector signed int
04779 vec_vsum4sbs (vector signed char a1, vector signed int a2)
04780 {
04781 return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
04782 }
04783
04784
04785
04786 inline vector unsigned int
04787 vec_vsum4ubs (vector unsigned char a1, vector unsigned int a2)
04788 {
04789 return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
04790 }
04791
04792
04793
04794 inline vector signed int
04795 vec_sum2s (vector signed int a1, vector signed int a2)
04796 {
04797 return (vector signed int) __builtin_altivec_vsum2sws ((vector signed int) a1, (vector signed int) a2);
04798 }
04799
04800
04801
04802 inline vector signed int
04803 vec_sums (vector signed int a1, vector signed int a2)
04804 {
04805 return (vector signed int) __builtin_altivec_vsumsws ((vector signed int) a1, (vector signed int) a2);
04806 }
04807
04808
04809
04810 inline vector float
04811 vec_trunc (vector float a1)
04812 {
04813 return (vector float) __builtin_altivec_vrfiz ((vector float) a1);
04814 }
04815
04816
04817
04818 inline vector signed short
04819 vec_unpackh (vector signed char a1)
04820 {
04821 return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
04822 }
04823
04824 inline vector signed int
04825 vec_unpackh (vector signed short a1)
04826 {
04827 return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
04828 }
04829
04830 inline vector unsigned int
04831 vec_unpackh (vector unsigned short a1)
04832 {
04833 return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
04834 }
04835
04836
04837
04838 inline vector signed int
04839 vec_vupkhsh (vector signed short a1)
04840 {
04841 return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
04842 }
04843
04844
04845
04846 inline vector unsigned int
04847 vec_vupkhpx (vector unsigned short a1)
04848 {
04849 return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
04850 }
04851
04852
04853
04854 inline vector signed short
04855 vec_vupkhsb (vector signed char a1)
04856 {
04857 return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
04858 }
04859
04860
04861
04862 inline vector signed short
04863 vec_unpackl (vector signed char a1)
04864 {
04865 return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
04866 }
04867
04868 inline vector unsigned int
04869 vec_unpackl (vector unsigned short a1)
04870 {
04871 return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
04872 }
04873
04874 inline vector signed int
04875 vec_unpackl (vector signed short a1)
04876 {
04877 return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
04878 }
04879
04880
04881
04882 inline vector unsigned int
04883 vec_vupklpx (vector unsigned short a1)
04884 {
04885 return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
04886 }
04887
04888
04889
04890 inline vector signed int
04891 vec_vupklsh (vector signed short a1)
04892 {
04893 return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
04894 }
04895
04896
04897
04898 inline vector signed short
04899 vec_vupklsb (vector signed char a1)
04900 {
04901 return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
04902 }
04903
04904
04905
04906 inline vector float
04907 vec_xor (vector float a1, vector float a2)
04908 {
04909 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04910 }
04911
04912 inline vector float
04913 vec_xor (vector float a1, vector signed int a2)
04914 {
04915 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04916 }
04917
04918 inline vector float
04919 vec_xor (vector signed int a1, vector float a2)
04920 {
04921 return (vector float) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04922 }
04923
04924 inline vector signed int
04925 vec_xor (vector signed int a1, vector signed int a2)
04926 {
04927 return (vector signed int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04928 }
04929
04930 inline vector unsigned int
04931 vec_xor (vector signed int a1, vector unsigned int a2)
04932 {
04933 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04934 }
04935
04936 inline vector unsigned int
04937 vec_xor (vector unsigned int a1, vector signed int a2)
04938 {
04939 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04940 }
04941
04942 inline vector unsigned int
04943 vec_xor (vector unsigned int a1, vector unsigned int a2)
04944 {
04945 return (vector unsigned int) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04946 }
04947
04948 inline vector signed short
04949 vec_xor (vector signed short a1, vector signed short a2)
04950 {
04951 return (vector signed short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04952 }
04953
04954 inline vector unsigned short
04955 vec_xor (vector signed short a1, vector unsigned short a2)
04956 {
04957 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04958 }
04959
04960 inline vector unsigned short
04961 vec_xor (vector unsigned short a1, vector signed short a2)
04962 {
04963 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04964 }
04965
04966 inline vector unsigned short
04967 vec_xor (vector unsigned short a1, vector unsigned short a2)
04968 {
04969 return (vector unsigned short) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04970 }
04971
04972 inline vector signed char
04973 vec_xor (vector signed char a1, vector signed char a2)
04974 {
04975 return (vector signed char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04976 }
04977
04978 inline vector unsigned char
04979 vec_xor (vector signed char a1, vector unsigned char a2)
04980 {
04981 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04982 }
04983
04984 inline vector unsigned char
04985 vec_xor (vector unsigned char a1, vector signed char a2)
04986 {
04987 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04988 }
04989
04990 inline vector unsigned char
04991 vec_xor (vector unsigned char a1, vector unsigned char a2)
04992 {
04993 return (vector unsigned char) __builtin_altivec_vxor ((vector signed int) a1, (vector signed int) a2);
04994 }
04995
04996
04997
04998 inline int
04999 vec_all_eq (vector signed char a1, vector unsigned char a2)
05000 {
05001 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, (vector signed char) a2);
05002 }
05003
05004 inline int
05005 vec_all_eq (vector signed char a1, vector signed char a2)
05006 {
05007 return __builtin_altivec_vcmpequb_p (__CR6_LT, a1, a2);
05008 }
05009
05010 inline int
05011 vec_all_eq (vector unsigned char a1, vector signed char a2)
05012 {
05013 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
05014 }
05015
05016 inline int
05017 vec_all_eq (vector unsigned char a1, vector unsigned char a2)
05018 {
05019 return __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
05020 }
05021
05022 inline int
05023 vec_all_eq (vector signed short a1, vector unsigned short a2)
05024 {
05025 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
05026 }
05027
05028 inline int
05029 vec_all_eq (vector signed short a1, vector signed short a2)
05030 {
05031 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
05032 }
05033
05034 inline int
05035 vec_all_eq (vector unsigned short a1, vector signed short a2)
05036 {
05037 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
05038 }
05039
05040 inline int
05041 vec_all_eq (vector unsigned short a1, vector unsigned short a2)
05042 {
05043 return __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
05044 }
05045
05046 inline int
05047 vec_all_eq (vector signed int a1, vector unsigned int a2)
05048 {
05049 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
05050 }
05051
05052 inline int
05053 vec_all_eq (vector signed int a1, vector signed int a2)
05054 {
05055 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
05056 }
05057
05058 inline int
05059 vec_all_eq (vector unsigned int a1, vector signed int a2)
05060 {
05061 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
05062 }
05063
05064 inline int
05065 vec_all_eq (vector unsigned int a1, vector unsigned int a2)
05066 {
05067 return __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
05068 }
05069
05070 inline int
05071 vec_all_eq (vector float a1, vector float a2)
05072 {
05073 return __builtin_altivec_vcmpeqfp_p (__CR6_LT, a1, a2);
05074 }
05075
05076
05077
05078 inline int
05079 vec_all_ge (vector signed char a1, vector unsigned char a2)
05080 {
05081 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
05082 }
05083
05084 inline int
05085 vec_all_ge (vector unsigned char a1, vector signed char a2)
05086 {
05087 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
05088 }
05089
05090 inline int
05091 vec_all_ge (vector unsigned char a1, vector unsigned char a2)
05092 {
05093 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
05094 }
05095
05096 inline int
05097 vec_all_ge (vector signed char a1, vector signed char a2)
05098 {
05099 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a2, (vector signed char) a1);
05100 }
05101
05102 inline int
05103 vec_all_ge (vector signed short a1, vector unsigned short a2)
05104 {
05105 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
05106 }
05107
05108 inline int
05109 vec_all_ge (vector unsigned short a1, vector signed short a2)
05110 {
05111 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
05112 }
05113
05114 inline int
05115 vec_all_ge (vector unsigned short a1, vector unsigned short a2)
05116 {
05117 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
05118 }
05119
05120 inline int
05121 vec_all_ge (vector signed short a1, vector signed short a2)
05122 {
05123 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a2, (vector signed short) a1);
05124 }
05125
05126 inline int
05127 vec_all_ge (vector signed int a1, vector unsigned int a2)
05128 {
05129 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
05130 }
05131
05132 inline int
05133 vec_all_ge (vector unsigned int a1, vector signed int a2)
05134 {
05135 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
05136 }
05137
05138 inline int
05139 vec_all_ge (vector unsigned int a1, vector unsigned int a2)
05140 {
05141 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
05142 }
05143
05144 inline int
05145 vec_all_ge (vector signed int a1, vector signed int a2)
05146 {
05147 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a2, (vector signed int) a1);
05148 }
05149
05150 inline int
05151 vec_all_ge (vector float a1, vector float a2)
05152 {
05153 return __builtin_altivec_vcmpgefp_p (__CR6_LT, a1, a2);
05154 }
05155
05156
05157
05158 inline int
05159 vec_all_gt (vector signed char a1, vector unsigned char a2)
05160 {
05161 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
05162 }
05163
05164 inline int
05165 vec_all_gt (vector unsigned char a1, vector signed char a2)
05166 {
05167 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
05168 }
05169
05170 inline int
05171 vec_all_gt (vector unsigned char a1, vector unsigned char a2)
05172 {
05173 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
05174 }
05175
05176 inline int
05177 vec_all_gt (vector signed char a1, vector signed char a2)
05178 {
05179 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a1, (vector signed char) a2);
05180 }
05181
05182 inline int
05183 vec_all_gt (vector signed short a1, vector unsigned short a2)
05184 {
05185 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
05186 }
05187
05188 inline int
05189 vec_all_gt (vector unsigned short a1, vector signed short a2)
05190 {
05191 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
05192 }
05193
05194 inline int
05195 vec_all_gt (vector unsigned short a1, vector unsigned short a2)
05196 {
05197 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
05198 }
05199
05200 inline int
05201 vec_all_gt (vector signed short a1, vector signed short a2)
05202 {
05203 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a1, (vector signed short) a2);
05204 }
05205
05206 inline int
05207 vec_all_gt (vector signed int a1, vector unsigned int a2)
05208 {
05209 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
05210 }
05211
05212 inline int
05213 vec_all_gt (vector unsigned int a1, vector signed int a2)
05214 {
05215 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
05216 }
05217
05218 inline int
05219 vec_all_gt (vector unsigned int a1, vector unsigned int a2)
05220 {
05221 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
05222 }
05223
05224 inline int
05225 vec_all_gt (vector signed int a1, vector signed int a2)
05226 {
05227 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a1, (vector signed int) a2);
05228 }
05229
05230 inline int
05231 vec_all_gt (vector float a1, vector float a2)
05232 {
05233 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a1, a2);
05234 }
05235
05236
05237
05238 inline int
05239 vec_all_in (vector float a1, vector float a2)
05240 {
05241 return __builtin_altivec_vcmpbfp_p (__CR6_EQ, a1, a2);
05242 }
05243
05244
05245
05246 inline int
05247 vec_all_le (vector signed char a1, vector unsigned char a2)
05248 {
05249 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
05250 }
05251
05252 inline int
05253 vec_all_le (vector unsigned char a1, vector signed char a2)
05254 {
05255 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
05256 }
05257
05258 inline int
05259 vec_all_le (vector unsigned char a1, vector unsigned char a2)
05260 {
05261 return __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
05262 }
05263
05264 inline int
05265 vec_all_le (vector signed char a1, vector signed char a2)
05266 {
05267 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
05268 }
05269
05270 inline int
05271 vec_all_le (vector signed short a1, vector unsigned short a2)
05272 {
05273 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
05274 }
05275
05276 inline int
05277 vec_all_le (vector unsigned short a1, vector signed short a2)
05278 {
05279 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
05280 }
05281
05282 inline int
05283 vec_all_le (vector unsigned short a1, vector unsigned short a2)
05284 {
05285 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
05286 }
05287
05288 inline int
05289 vec_all_le (vector signed short a1, vector signed short a2)
05290 {
05291 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
05292 }
05293
05294 inline int
05295 vec_all_le (vector signed int a1, vector unsigned int a2)
05296 {
05297 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
05298 }
05299
05300 inline int
05301 vec_all_le (vector unsigned int a1, vector signed int a2)
05302 {
05303 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
05304 }
05305
05306 inline int
05307 vec_all_le (vector unsigned int a1, vector unsigned int a2)
05308 {
05309 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
05310 }
05311
05312 inline int
05313 vec_all_le (vector signed int a1, vector signed int a2)
05314 {
05315 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
05316 }
05317
05318 inline int
05319 vec_all_le (vector float a1, vector float a2)
05320 {
05321 return __builtin_altivec_vcmpgefp_p (__CR6_LT, a2, a1);
05322 }
05323
05324
05325
05326 inline int
05327 vec_all_lt (vector signed char a1, vector unsigned char a2)
05328 {
05329 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
05330 }
05331
05332 inline int
05333 vec_all_lt (vector unsigned char a1, vector signed char a2)
05334 {
05335 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
05336 }
05337
05338 inline int
05339 vec_all_lt (vector unsigned char a1, vector unsigned char a2)
05340 {
05341 return __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
05342 }
05343
05344 inline int
05345 vec_all_lt (vector signed char a1, vector signed char a2)
05346 {
05347 return __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) a2, (vector signed char) a1);
05348 }
05349
05350 inline int
05351 vec_all_lt (vector signed short a1, vector unsigned short a2)
05352 {
05353 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
05354 }
05355
05356 inline int
05357 vec_all_lt (vector unsigned short a1, vector signed short a2)
05358 {
05359 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
05360 }
05361
05362 inline int
05363 vec_all_lt (vector unsigned short a1, vector unsigned short a2)
05364 {
05365 return __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
05366 }
05367
05368 inline int
05369 vec_all_lt (vector signed short a1, vector signed short a2)
05370 {
05371 return __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) a2, (vector signed short) a1);
05372 }
05373
05374 inline int
05375 vec_all_lt (vector signed int a1, vector unsigned int a2)
05376 {
05377 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
05378 }
05379
05380 inline int
05381 vec_all_lt (vector unsigned int a1, vector signed int a2)
05382 {
05383 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
05384 }
05385
05386 inline int
05387 vec_all_lt (vector unsigned int a1, vector unsigned int a2)
05388 {
05389 return __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
05390 }
05391
05392 inline int
05393 vec_all_lt (vector signed int a1, vector signed int a2)
05394 {
05395 return __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) a2, (vector signed int) a1);
05396 }
05397
05398 inline int
05399 vec_all_lt (vector float a1, vector float a2)
05400 {
05401 return __builtin_altivec_vcmpgtfp_p (__CR6_LT, a2, a1);
05402 }
05403
05404
05405
05406 inline int
05407 vec_all_nan (vector float a1)
05408 {
05409 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
05410 }
05411
05412
05413
05414 inline int
05415 vec_all_ne (vector signed char a1, vector unsigned char a2)
05416 {
05417 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
05418 }
05419
05420 inline int
05421 vec_all_ne (vector signed char a1, vector signed char a2)
05422 {
05423 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
05424 }
05425
05426 inline int
05427 vec_all_ne (vector unsigned char a1, vector signed char a2)
05428 {
05429 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
05430 }
05431
05432 inline int
05433 vec_all_ne (vector unsigned char a1, vector unsigned char a2)
05434 {
05435 return __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) a1, (vector signed char) a2);
05436 }
05437
05438 inline int
05439 vec_all_ne (vector signed short a1, vector unsigned short a2)
05440 {
05441 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
05442 }
05443
05444 inline int
05445 vec_all_ne (vector signed short a1, vector signed short a2)
05446 {
05447 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
05448 }
05449
05450 inline int
05451 vec_all_ne (vector unsigned short a1, vector signed short a2)
05452 {
05453 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
05454 }
05455
05456 inline int
05457 vec_all_ne (vector unsigned short a1, vector unsigned short a2)
05458 {
05459 return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2);
05460 }
05461
05462 inline int
05463 vec_all_ne (vector signed int a1, vector unsigned int a2)
05464 {
05465 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
05466 }
05467
05468 inline int
05469 vec_all_ne (vector signed int a1, vector signed int a2)
05470 {
05471 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
05472 }
05473
05474 inline int
05475 vec_all_ne (vector unsigned int a1, vector signed int a2)
05476 {
05477 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
05478 }
05479
05480 inline int
05481 vec_all_ne (vector unsigned int a1, vector unsigned int a2)
05482 {
05483 return __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) a1, (vector signed int) a2);
05484 }
05485
05486 inline int
05487 vec_all_ne (vector float a1, vector float a2)
05488 {
05489 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a2);
05490 }
05491
05492
05493
05494 inline int
05495 vec_all_nge (vector float a1, vector float a2)
05496 {
05497 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a1, a2);
05498 }
05499
05500
05501
05502 inline int
05503 vec_all_ngt (vector float a1, vector float a2)
05504 {
05505 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a1, a2);
05506 }
05507
05508
05509
05510 inline int
05511 vec_all_nle (vector float a1, vector float a2)
05512 {
05513 return __builtin_altivec_vcmpgefp_p (__CR6_EQ, a2, a1);
05514 }
05515
05516
05517
05518 inline int
05519 vec_all_nlt (vector float a1, vector float a2)
05520 {
05521 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ, a2, a1);
05522 }
05523
05524
05525
05526 inline int
05527 vec_all_numeric (vector float a1)
05528 {
05529 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ, a1, a1);
05530 }
05531
05532
05533
05534 inline int
05535 vec_any_eq (vector signed char a1, vector unsigned char a2)
05536 {
05537 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
05538 }
05539
05540 inline int
05541 vec_any_eq (vector signed char a1, vector signed char a2)
05542 {
05543 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
05544 }
05545
05546 inline int
05547 vec_any_eq (vector unsigned char a1, vector signed char a2)
05548 {
05549 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
05550 }
05551
05552 inline int
05553 vec_any_eq (vector unsigned char a1, vector unsigned char a2)
05554 {
05555 return __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
05556 }
05557
05558 inline int
05559 vec_any_eq (vector signed short a1, vector unsigned short a2)
05560 {
05561 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
05562 }
05563
05564 inline int
05565 vec_any_eq (vector signed short a1, vector signed short a2)
05566 {
05567 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
05568 }
05569
05570 inline int
05571 vec_any_eq (vector unsigned short a1, vector signed short a2)
05572 {
05573 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
05574 }
05575
05576 inline int
05577 vec_any_eq (vector unsigned short a1, vector unsigned short a2)
05578 {
05579 return __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
05580 }
05581
05582 inline int
05583 vec_any_eq (vector signed int a1, vector unsigned int a2)
05584 {
05585 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
05586 }
05587
05588 inline int
05589 vec_any_eq (vector signed int a1, vector signed int a2)
05590 {
05591 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
05592 }
05593
05594 inline int
05595 vec_any_eq (vector unsigned int a1, vector signed int a2)
05596 {
05597 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
05598 }
05599
05600 inline int
05601 vec_any_eq (vector unsigned int a1, vector unsigned int a2)
05602 {
05603 return __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
05604 }
05605
05606 inline int
05607 vec_any_eq (vector float a1, vector float a2)
05608 {
05609 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a2);
05610 }
05611
05612
05613
05614 inline int
05615 vec_any_ge (vector signed char a1, vector unsigned char a2)
05616 {
05617 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
05618 }
05619
05620 inline int
05621 vec_any_ge (vector unsigned char a1, vector signed char a2)
05622 {
05623 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
05624 }
05625
05626 inline int
05627 vec_any_ge (vector unsigned char a1, vector unsigned char a2)
05628 {
05629 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
05630 }
05631
05632 inline int
05633 vec_any_ge (vector signed char a1, vector signed char a2)
05634 {
05635 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a2, (vector signed char) a1);
05636 }
05637
05638 inline int
05639 vec_any_ge (vector signed short a1, vector unsigned short a2)
05640 {
05641 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
05642 }
05643
05644 inline int
05645 vec_any_ge (vector unsigned short a1, vector signed short a2)
05646 {
05647 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
05648 }
05649
05650 inline int
05651 vec_any_ge (vector unsigned short a1, vector unsigned short a2)
05652 {
05653 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
05654 }
05655
05656 inline int
05657 vec_any_ge (vector signed short a1, vector signed short a2)
05658 {
05659 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1);
05660 }
05661
05662 inline int
05663 vec_any_ge (vector signed int a1, vector unsigned int a2)
05664 {
05665 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
05666 }
05667
05668 inline int
05669 vec_any_ge (vector unsigned int a1, vector signed int a2)
05670 {
05671 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
05672 }
05673
05674 inline int
05675 vec_any_ge (vector unsigned int a1, vector unsigned int a2)
05676 {
05677 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
05678 }
05679
05680 inline int
05681 vec_any_ge (vector signed int a1, vector signed int a2)
05682 {
05683 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a2, (vector signed int) a1);
05684 }
05685
05686 inline int
05687 vec_any_ge (vector float a1, vector float a2)
05688 {
05689 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a1, a2);
05690 }
05691
05692
05693
05694 inline int
05695 vec_any_gt (vector signed char a1, vector unsigned char a2)
05696 {
05697 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
05698 }
05699
05700 inline int
05701 vec_any_gt (vector unsigned char a1, vector signed char a2)
05702 {
05703 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
05704 }
05705
05706 inline int
05707 vec_any_gt (vector unsigned char a1, vector unsigned char a2)
05708 {
05709 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
05710 }
05711
05712 inline int
05713 vec_any_gt (vector signed char a1, vector signed char a2)
05714 {
05715 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a1, (vector signed char) a2);
05716 }
05717
05718 inline int
05719 vec_any_gt (vector signed short a1, vector unsigned short a2)
05720 {
05721 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
05722 }
05723
05724 inline int
05725 vec_any_gt (vector unsigned short a1, vector signed short a2)
05726 {
05727 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
05728 }
05729
05730 inline int
05731 vec_any_gt (vector unsigned short a1, vector unsigned short a2)
05732 {
05733 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
05734 }
05735
05736 inline int
05737 vec_any_gt (vector signed short a1, vector signed short a2)
05738 {
05739 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a1, (vector signed short) a2);
05740 }
05741
05742 inline int
05743 vec_any_gt (vector signed int a1, vector unsigned int a2)
05744 {
05745 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
05746 }
05747
05748 inline int
05749 vec_any_gt (vector unsigned int a1, vector signed int a2)
05750 {
05751 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
05752 }
05753
05754 inline int
05755 vec_any_gt (vector unsigned int a1, vector unsigned int a2)
05756 {
05757 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
05758 }
05759
05760 inline int
05761 vec_any_gt (vector signed int a1, vector signed int a2)
05762 {
05763 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a1, (vector signed int) a2);
05764 }
05765
05766 inline int
05767 vec_any_gt (vector float a1, vector float a2)
05768 {
05769 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a1, a2);
05770 }
05771
05772
05773
05774 inline int
05775 vec_any_le (vector signed char a1, vector unsigned char a2)
05776 {
05777 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
05778 }
05779
05780 inline int
05781 vec_any_le (vector unsigned char a1, vector signed char a2)
05782 {
05783 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
05784 }
05785
05786 inline int
05787 vec_any_le (vector unsigned char a1, vector unsigned char a2)
05788 {
05789 return __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
05790 }
05791
05792 inline int
05793 vec_any_le (vector signed char a1, vector signed char a2)
05794 {
05795 return __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
05796 }
05797
05798 inline int
05799 vec_any_le (vector signed short a1, vector unsigned short a2)
05800 {
05801 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
05802 }
05803
05804 inline int
05805 vec_any_le (vector unsigned short a1, vector signed short a2)
05806 {
05807 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
05808 }
05809
05810 inline int
05811 vec_any_le (vector unsigned short a1, vector unsigned short a2)
05812 {
05813 return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
05814 }
05815
05816 inline int
05817 vec_any_le (vector signed short a1, vector signed short a2)
05818 {
05819 return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
05820 }
05821
05822 inline int
05823 vec_any_le (vector signed int a1, vector unsigned int a2)
05824 {
05825 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
05826 }
05827
05828 inline int
05829 vec_any_le (vector unsigned int a1, vector signed int a2)
05830 {
05831 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
05832 }
05833
05834 inline int
05835 vec_any_le (vector unsigned int a1, vector unsigned int a2)
05836 {
05837 return __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
05838 }
05839
05840 inline int
05841 vec_any_le (vector signed int a1, vector signed int a2)
05842 {
05843 return __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
05844 }
05845
05846 inline int
05847 vec_any_le (vector float a1, vector float a2)
05848 {
05849 return __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, a2, a1);
05850 }
05851
05852
05853
05854 inline int
05855 vec_any_lt (vector signed char a1, vector unsigned char a2)
05856 {
05857 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
05858 }
05859
05860 inline int
05861 vec_any_lt (vector unsigned char a1, vector signed char a2)
05862 {
05863 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
05864 }
05865
05866 inline int
05867 vec_any_lt (vector unsigned char a1, vector unsigned char a2)
05868 {
05869 return __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
05870 }
05871
05872 inline int
05873 vec_any_lt (vector signed char a1, vector signed char a2)
05874 {
05875 return __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) a2, (vector signed char) a1);
05876 }
05877
05878 inline int
05879 vec_any_lt (vector signed short a1, vector unsigned short a2)
05880 {
05881 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
05882 }
05883
05884 inline int
05885 vec_any_lt (vector unsigned short a1, vector signed short a2)
05886 {
05887 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
05888 }
05889
05890 inline int
05891 vec_any_lt (vector unsigned short a1, vector unsigned short a2)
05892 {
05893 return __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
05894 }
05895
05896 inline int
05897 vec_any_lt (vector signed short a1, vector signed short a2)
05898 {
05899 return __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) a2, (vector signed short) a1);
05900 }
05901
05902 inline int
05903 vec_any_lt (vector signed int a1, vector unsigned int a2)
05904 {
05905 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
05906 }
05907
05908 inline int
05909 vec_any_lt (vector unsigned int a1, vector signed int a2)
05910 {
05911 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
05912 }
05913
05914 inline int
05915 vec_any_lt (vector unsigned int a1, vector unsigned int a2)
05916 {
05917 return __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
05918 }
05919
05920 inline int
05921 vec_any_lt (vector signed int a1, vector signed int a2)
05922 {
05923 return __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) a2, (vector signed int) a1);
05924 }
05925
05926 inline int
05927 vec_any_lt (vector float a1, vector float a2)
05928 {
05929 return __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, a2, a1);
05930 }
05931
05932
05933
05934 inline int
05935 vec_any_nan (vector float a1)
05936 {
05937 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1);
05938 }
05939
05940
05941
05942 inline int
05943 vec_any_ne (vector signed char a1, vector unsigned char a2)
05944 {
05945 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
05946 }
05947
05948 inline int
05949 vec_any_ne (vector signed char a1, vector signed char a2)
05950 {
05951 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
05952 }
05953
05954 inline int
05955 vec_any_ne (vector unsigned char a1, vector signed char a2)
05956 {
05957 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
05958 }
05959
05960 inline int
05961 vec_any_ne (vector unsigned char a1, vector unsigned char a2)
05962 {
05963 return __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) a1, (vector signed char) a2);
05964 }
05965
05966 inline int
05967 vec_any_ne (vector signed short a1, vector unsigned short a2)
05968 {
05969 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
05970 }
05971
05972 inline int
05973 vec_any_ne (vector signed short a1, vector signed short a2)
05974 {
05975 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
05976 }
05977
05978 inline int
05979 vec_any_ne (vector unsigned short a1, vector signed short a2)
05980 {
05981 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
05982 }
05983
05984 inline int
05985 vec_any_ne (vector unsigned short a1, vector unsigned short a2)
05986 {
05987 return __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) a1, (vector signed short) a2);
05988 }
05989
05990 inline int
05991 vec_any_ne (vector signed int a1, vector unsigned int a2)
05992 {
05993 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
05994 }
05995
05996 inline int
05997 vec_any_ne (vector signed int a1, vector signed int a2)
05998 {
05999 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
06000 }
06001
06002 inline int
06003 vec_any_ne (vector unsigned int a1, vector signed int a2)
06004 {
06005 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
06006 }
06007
06008 inline int
06009 vec_any_ne (vector unsigned int a1, vector unsigned int a2)
06010 {
06011 return __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) a1, (vector signed int) a2);
06012 }
06013
06014 inline int
06015 vec_any_ne (vector float a1, vector float a2)
06016 {
06017 return __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a2);
06018 }
06019
06020
06021
06022 inline int
06023 vec_any_nge (vector float a1, vector float a2)
06024 {
06025 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a1, a2);
06026 }
06027
06028
06029
06030 inline int
06031 vec_any_ngt (vector float a1, vector float a2)
06032 {
06033 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a1, a2);
06034 }
06035
06036
06037
06038 inline int
06039 vec_any_nle (vector float a1, vector float a2)
06040 {
06041 return __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, a2, a1);
06042 }
06043
06044
06045
06046 inline int
06047 vec_any_nlt (vector float a1, vector float a2)
06048 {
06049 return __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, a2, a1);
06050 }
06051
06052
06053
06054 inline int
06055 vec_any_numeric (vector float a1)
06056 {
06057 return __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, a1, a1);
06058 }
06059
06060
06061
06062 inline int
06063 vec_any_out (vector float a1, vector float a2)
06064 {
06065 return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2);
06066 }
06067
06068
06069
06070 template<typename _Tp>
06071 struct __vec_step_help
06072 {
06073
06074 };
06075
06076 template<>
06077 struct __vec_step_help<vector signed short>
06078 {
06079 static const int _S_elem = 8;
06080 };
06081
06082 template<>
06083 struct __vec_step_help<vector unsigned short>
06084 {
06085 static const int _S_elem = 8;
06086 };
06087
06088 template<>
06089 struct __vec_step_help<vector signed int>
06090 {
06091 static const int _S_elem = 4;
06092 };
06093
06094 template<>
06095 struct __vec_step_help<vector unsigned int>
06096 {
06097 static const int _S_elem = 4;
06098 };
06099
06100 template<>
06101 struct __vec_step_help<vector unsigned char>
06102 {
06103 static const int _S_elem = 16;
06104 };
06105
06106 template<>
06107 struct __vec_step_help<vector signed char>
06108 {
06109 static const int _S_elem = 16;
06110 };
06111
06112 template<>
06113 struct __vec_step_help<vector float>
06114 {
06115 static const int _S_elem = 4;
06116 };
06117
06118 #define vec_step(t) __vec_step_help<typeof(t)>::_S_elem
06119
06120 #else
06121
06122
06123
06124
06125 #define vec_abs(a) \
06126 __ch (__un_args_eq (vector signed char, (a)), \
06127 ((vector signed char) __builtin_altivec_abs_v16qi ((vector signed char) (a))), \
06128 __ch (__un_args_eq (vector signed short, (a)), \
06129 ((vector signed short) __builtin_altivec_abs_v8hi ((vector signed short) (a))), \
06130 __ch (__un_args_eq (vector signed int, (a)), \
06131 ((vector signed int) __builtin_altivec_abs_v4si ((vector signed int) (a))), \
06132 __ch (__un_args_eq (vector float, (a)), \
06133 ((vector float) __builtin_altivec_abs_v4sf ((vector float) (a))), \
06134 __altivec_link_error_invalid_argument ()))))
06135
06136 #define vec_abss(a) \
06137 __ch (__un_args_eq (vector signed char, (a)), \
06138 ((vector signed char) __builtin_altivec_abss_v16qi ((vector signed char) (a))), \
06139 __ch (__un_args_eq (vector signed short, (a)), \
06140 ((vector signed short) __builtin_altivec_abss_v8hi ((vector signed short) (a))), \
06141 __ch (__un_args_eq (vector signed int, (a)), \
06142 ((vector signed int) __builtin_altivec_abss_v4si ((vector signed int) (a))), \
06143 __altivec_link_error_invalid_argument ())))
06144
06145 #define vec_step(t) \
06146 __ch (__builtin_types_compatible_p (typeof (t), vector signed int), 4, \
06147 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned int), 4, \
06148 __ch (__builtin_types_compatible_p (typeof (t), vector signed short), 8, \
06149 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned short), 8, \
06150 __ch (__builtin_types_compatible_p (typeof (t), vector signed char), 16, \
06151 __ch (__builtin_types_compatible_p (typeof (t), vector unsigned char), 16, \
06152 __ch (__builtin_types_compatible_p (typeof (t), vector float), 4, \
06153 __altivec_link_error_invalid_argument ())))))))
06154
06155 #define vec_vaddubm(a1, a2) \
06156 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06157 ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
06158 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
06159 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
06160 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
06161 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
06162 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06163 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
06164 __altivec_link_error_invalid_argument ()))))
06165
06166 #define vec_vadduhm(a1, a2) \
06167 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06168 ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
06169 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
06170 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
06171 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
06172 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
06173 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06174 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
06175 __altivec_link_error_invalid_argument ()))))
06176
06177 #define vec_vadduwm(a1, a2) \
06178 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06179 ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
06180 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
06181 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
06182 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
06183 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
06184 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06185 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
06186 __altivec_link_error_invalid_argument ()))))
06187
06188 #define vec_vaddfp(a1, a2) \
06189 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06190 ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
06191 __altivec_link_error_invalid_argument ())
06192
06193 #define vec_add(a1, a2) \
06194 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06195 ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
06196 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
06197 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
06198 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
06199 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
06200 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06201 ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
06202 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06203 ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
06204 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
06205 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
06206 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
06207 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
06208 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06209 ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
06210 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06211 ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
06212 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
06213 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
06214 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
06215 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
06216 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06217 ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
06218 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06219 ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
06220 __altivec_link_error_invalid_argument ())))))))))))))
06221
06222 #define vec_addc(a1, a2) \
06223 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06224 ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
06225 __altivec_link_error_invalid_argument ())
06226
06227 #define vec_adds(a1, a2) \
06228 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
06229 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
06230 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
06231 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
06232 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06233 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
06234 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06235 ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
06236 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
06237 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
06238 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
06239 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
06240 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06241 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
06242 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06243 ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
06244 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
06245 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
06246 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
06247 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
06248 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06249 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
06250 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06251 ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
06252 __altivec_link_error_invalid_argument ()))))))))))))
06253
06254 #define vec_vaddsws(a1, a2) \
06255 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06256 ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
06257 __altivec_link_error_invalid_argument ())
06258
06259 #define vec_vadduws(a1, a2) \
06260 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
06261 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
06262 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
06263 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
06264 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06265 ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
06266 __altivec_link_error_invalid_argument ())))
06267
06268 #define vec_vaddshs(a1, a2) \
06269 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06270 ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
06271 __altivec_link_error_invalid_argument ())
06272
06273 #define vec_vadduhs(a1, a2) \
06274 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
06275 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
06276 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
06277 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
06278 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06279 ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
06280 __altivec_link_error_invalid_argument ())))
06281
06282 #define vec_vaddsbs(a1, a2) \
06283 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06284 ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
06285 __altivec_link_error_invalid_argument ())
06286
06287 #define vec_vaddubs(a1, a2) \
06288 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
06289 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
06290 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
06291 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
06292 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06293 ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
06294 __altivec_link_error_invalid_argument ())))
06295
06296 #define vec_and(a1, a2) \
06297 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06298 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06299 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
06300 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06301 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
06302 ((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06303 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06304 ((vector signed int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06305 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
06306 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06307 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
06308 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06309 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06310 ((vector unsigned int) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06311 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06312 ((vector signed short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06313 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
06314 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06315 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
06316 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06317 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06318 ((vector unsigned short) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06319 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06320 ((vector signed char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06321 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
06322 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06323 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
06324 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06325 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06326 ((vector unsigned char) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
06327 __altivec_link_error_invalid_argument ())))))))))))))))
06328
06329 #define vec_andc(a1, a2) \
06330 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06331 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06332 __ch (__bin_args_eq (vector float, (a1), vector unsigned int, (a2)), \
06333 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06334 __ch (__bin_args_eq (vector unsigned int, (a1), vector float, (a2)), \
06335 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06336 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
06337 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06338 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
06339 ((vector float) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06340 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
06341 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06342 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06343 ((vector signed int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06344 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
06345 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06346 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06347 ((vector unsigned int) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06348 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06349 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06350 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
06351 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06352 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
06353 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06354 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06355 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06356 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06357 ((vector signed short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06358 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
06359 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06360 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
06361 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06362 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06363 ((vector unsigned short) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06364 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06365 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06366 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
06367 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06368 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
06369 ((vector unsigned char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06370 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06371 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06372 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06373 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06374 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
06375 ((vector signed char) __builtin_altivec_vandc ((vector signed int) (a1), (vector signed int) (a2))), \
06376 __altivec_link_error_invalid_argument ())))))))))))))))))))))))
06377
06378 #define vec_avg(a1, a2) \
06379 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06380 ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
06381 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06382 ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
06383 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06384 ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
06385 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06386 ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
06387 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06388 ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
06389 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06390 ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
06391 __altivec_link_error_invalid_argument ()))))))
06392
06393 #define vec_vavgsw(a1, a2) \
06394 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06395 ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
06396 __altivec_link_error_invalid_argument ())
06397
06398 #define vec_vavguw(a1, a2) \
06399 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06400 ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
06401 __altivec_link_error_invalid_argument ())
06402
06403 #define vec_vavgsh(a1, a2) \
06404 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06405 ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
06406 __altivec_link_error_invalid_argument ())
06407
06408 #define vec_vavguh(a1, a2) \
06409 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06410 ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
06411 __altivec_link_error_invalid_argument ())
06412
06413 #define vec_vavgsb(a1, a2) \
06414 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06415 ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
06416 __altivec_link_error_invalid_argument ())
06417
06418 #define vec_vavgub(a1, a2) \
06419 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06420 ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
06421 __altivec_link_error_invalid_argument ())
06422
06423 #define vec_ceil(a1) __builtin_altivec_vrfip ((a1))
06424
06425 #define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2))
06426
06427 #define vec_cmpeq(a1, a2) \
06428 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06429 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
06430 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06431 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
06432 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06433 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
06434 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06435 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
06436 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06437 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
06438 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06439 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
06440 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06441 ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
06442 __altivec_link_error_invalid_argument ())))))))
06443
06444 #define vec_vcmpeqfp(a1, a2) \
06445 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06446 ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
06447 __altivec_link_error_invalid_argument ())
06448
06449 #define vec_vcmpequw(a1, a2) \
06450 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06451 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
06452 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06453 ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
06454 __altivec_link_error_invalid_argument ()))
06455
06456 #define vec_vcmpequh(a1, a2) \
06457 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06458 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
06459 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06460 ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
06461 __altivec_link_error_invalid_argument ()))
06462
06463 #define vec_vcmpequb(a1, a2) \
06464 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06465 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
06466 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06467 ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
06468 __altivec_link_error_invalid_argument ()))
06469
06470 #define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2))
06471
06472 #define vec_cmpgt(a1, a2) \
06473 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06474 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
06475 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06476 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
06477 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06478 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
06479 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06480 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
06481 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06482 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
06483 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06484 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
06485 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06486 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
06487 __altivec_link_error_invalid_argument ())))))))
06488
06489 #define vec_vcmpgtfp(a1, a2) \
06490 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06491 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
06492 __altivec_link_error_invalid_argument ())
06493
06494 #define vec_vcmpgtsw(a1, a2) \
06495 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06496 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
06497 __altivec_link_error_invalid_argument ())
06498
06499 #define vec_vcmpgtuw(a1, a2) \
06500 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06501 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
06502 __altivec_link_error_invalid_argument ())
06503
06504 #define vec_vcmpgtsh(a1, a2) \
06505 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06506 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
06507 __altivec_link_error_invalid_argument ())
06508
06509 #define vec_vcmpgtuh(a1, a2) \
06510 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06511 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
06512 __altivec_link_error_invalid_argument ())
06513
06514 #define vec_vcmpgtsb(a1, a2) \
06515 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06516 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
06517 __altivec_link_error_invalid_argument ())
06518
06519 #define vec_vcmpgtub(a1, a2) \
06520 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06521 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
06522 __altivec_link_error_invalid_argument ())
06523
06524 #define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
06525
06526 #define vec_cmplt(a1, a2) \
06527 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06528 ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
06529 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06530 ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
06531 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06532 ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
06533 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06534 ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
06535 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06536 ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
06537 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06538 ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
06539 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06540 ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
06541 __altivec_link_error_invalid_argument ())))))))
06542
06543 #define vec_ctf(a1, a2) \
06544 __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
06545 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
06546 __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
06547 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
06548 __ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
06549 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
06550 __ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
06551 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
06552 __altivec_link_error_invalid_argument ()))))
06553
06554 #define vec_vcfsx(a1, a2) \
06555 __ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
06556 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
06557 __ch (__bin_args_eq (vector signed int, (a1), unsigned int, (a2)), \
06558 ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
06559 __altivec_link_error_invalid_argument ()))
06560
06561 #define vec_vcfux(a1, a2) \
06562 __ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
06563 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
06564 __ch (__bin_args_eq (vector unsigned int, (a1), unsigned int, (a2)), \
06565 ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
06566 __altivec_link_error_invalid_argument ()))
06567
06568 #define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
06569
06570 #define vec_ctu(a1, a2) (vector unsigned int) __builtin_altivec_vctuxs ((a1), (a2))
06571
06572 #define vec_dss(a1) __builtin_altivec_dss ((a1))
06573
06574 #define vec_dssall() __builtin_altivec_dssall ()
06575
06576 #define vec_dst(a1, a2, a3) \
06577 __ch (__un_args_eq (vector unsigned char, *(a1)), \
06578 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06579 __ch (__un_args_eq (vector signed char, *(a1)), \
06580 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06581 __ch (__un_args_eq (vector unsigned short, *(a1)), \
06582 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06583 __ch (__un_args_eq (vector signed short, *(a1)), \
06584 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06585 __ch (__un_args_eq (vector unsigned int, *(a1)), \
06586 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06587 __ch (__un_args_eq (vector signed int, *(a1)), \
06588 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06589 __ch (__un_args_eq (vector float, *(a1)), \
06590 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06591 __ch (__un_args_eq (unsigned char, *(a1)), \
06592 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06593 __ch (__un_args_eq (signed char, *(a1)), \
06594 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06595 __ch (__un_args_eq (unsigned short, *(a1)), \
06596 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06597 __ch (__un_args_eq (signed short, *(a1)), \
06598 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06599 __ch (__un_args_eq (unsigned int, *(a1)), \
06600 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06601 __ch (__un_args_eq (signed int, *(a1)), \
06602 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06603 __ch (__un_args_eq (unsigned long, *(a1)), \
06604 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06605 __ch (__un_args_eq (signed long, *(a1)), \
06606 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06607 __ch (__un_args_eq (float, *(a1)), \
06608 __builtin_altivec_dst ((void *) (a1), (a2), (a3)), \
06609 __altivec_link_error_invalid_argument ()))))))))))))))))
06610
06611 #define vec_dstst(a1, a2, a3) \
06612 __ch (__un_args_eq (vector unsigned char, *(a1)), \
06613 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06614 __ch (__un_args_eq (vector signed char, *(a1)), \
06615 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06616 __ch (__un_args_eq (vector unsigned short, *(a1)), \
06617 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06618 __ch (__un_args_eq (vector signed short, *(a1)), \
06619 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06620 __ch (__un_args_eq (vector unsigned int, *(a1)), \
06621 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06622 __ch (__un_args_eq (vector signed int, *(a1)), \
06623 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06624 __ch (__un_args_eq (vector float, *(a1)), \
06625 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06626 __ch (__un_args_eq (unsigned char, *(a1)), \
06627 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06628 __ch (__un_args_eq (signed char, *(a1)), \
06629 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06630 __ch (__un_args_eq (unsigned short, *(a1)), \
06631 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06632 __ch (__un_args_eq (signed short, *(a1)), \
06633 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06634 __ch (__un_args_eq (unsigned int, *(a1)), \
06635 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06636 __ch (__un_args_eq (signed int, *(a1)), \
06637 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06638 __ch (__un_args_eq (unsigned long, *(a1)), \
06639 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06640 __ch (__un_args_eq (signed long, *(a1)), \
06641 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06642 __ch (__un_args_eq (float, *(a1)), \
06643 __builtin_altivec_dstst ((void *) (a1), (a2), (a3)), \
06644 __altivec_link_error_invalid_argument ()))))))))))))))))
06645
06646 #define vec_dststt(a1, a2, a3) \
06647 __ch (__un_args_eq (vector unsigned char, *(a1)), \
06648 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06649 __ch (__un_args_eq (vector signed char, *(a1)), \
06650 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06651 __ch (__un_args_eq (vector unsigned short, *(a1)), \
06652 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06653 __ch (__un_args_eq (vector signed short, *(a1)), \
06654 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06655 __ch (__un_args_eq (vector unsigned int, *(a1)), \
06656 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06657 __ch (__un_args_eq (vector signed int, *(a1)), \
06658 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06659 __ch (__un_args_eq (vector float, *(a1)), \
06660 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06661 __ch (__un_args_eq (unsigned char, *(a1)), \
06662 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06663 __ch (__un_args_eq (signed char, *(a1)), \
06664 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06665 __ch (__un_args_eq (unsigned short, *(a1)), \
06666 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06667 __ch (__un_args_eq (signed short, *(a1)), \
06668 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06669 __ch (__un_args_eq (unsigned int, *(a1)), \
06670 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06671 __ch (__un_args_eq (signed int, *(a1)), \
06672 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06673 __ch (__un_args_eq (unsigned long, *(a1)), \
06674 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06675 __ch (__un_args_eq (signed long, *(a1)), \
06676 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06677 __ch (__un_args_eq (float, *(a1)), \
06678 __builtin_altivec_dststt ((void *) (a1), (a2), (a3)), \
06679 __altivec_link_error_invalid_argument ()))))))))))))))))
06680
06681 #define vec_dstt(a1, a2, a3) \
06682 __ch (__un_args_eq (vector unsigned char, *(a1)), \
06683 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06684 __ch (__un_args_eq (vector signed char, *(a1)), \
06685 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06686 __ch (__un_args_eq (vector unsigned short, *(a1)), \
06687 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06688 __ch (__un_args_eq (vector signed short, *(a1)), \
06689 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06690 __ch (__un_args_eq (vector unsigned int, *(a1)), \
06691 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06692 __ch (__un_args_eq (vector signed int, *(a1)), \
06693 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06694 __ch (__un_args_eq (vector float, *(a1)), \
06695 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06696 __ch (__un_args_eq (unsigned char, *(a1)), \
06697 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06698 __ch (__un_args_eq (signed char, *(a1)), \
06699 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06700 __ch (__un_args_eq (unsigned short, *(a1)), \
06701 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06702 __ch (__un_args_eq (signed short, *(a1)), \
06703 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06704 __ch (__un_args_eq (unsigned int, *(a1)), \
06705 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06706 __ch (__un_args_eq (signed int, *(a1)), \
06707 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06708 __ch (__un_args_eq (unsigned long, *(a1)), \
06709 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06710 __ch (__un_args_eq (signed long, *(a1)), \
06711 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06712 __ch (__un_args_eq (float, *(a1)), \
06713 __builtin_altivec_dstt ((void *) (a1), (a2), (a3)), \
06714 __altivec_link_error_invalid_argument ()))))))))))))))))
06715
06716 #define vec_expte(a1) __builtin_altivec_vexptefp ((a1))
06717
06718 #define vec_floor(a1) __builtin_altivec_vrfim (a1)
06719
06720 #define vec_ld(a, b) \
06721 __ch (__un_args_eq (vector unsigned char, *(b)), \
06722 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
06723 __ch (__un_args_eq (unsigned char, *(b)), \
06724 ((vector unsigned char) __builtin_altivec_lvx ((a), (b))), \
06725 __ch (__un_args_eq (vector signed char, *(b)), \
06726 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
06727 __ch (__un_args_eq (signed char, *(b)), \
06728 ((vector signed char) __builtin_altivec_lvx ((a), (b))), \
06729 __ch (__un_args_eq (vector unsigned short, *(b)), \
06730 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
06731 __ch (__un_args_eq (unsigned short, *(b)), \
06732 ((vector unsigned short) __builtin_altivec_lvx ((a), (b))), \
06733 __ch (__un_args_eq (vector signed short, *(b)), \
06734 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
06735 __ch (__un_args_eq (signed short, *(b)), \
06736 ((vector signed short) __builtin_altivec_lvx ((a), (b))), \
06737 __ch (__un_args_eq (vector unsigned int, *(b)), \
06738 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
06739 __ch (__un_args_eq (unsigned int, *(b)), \
06740 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
06741 __ch (__un_args_eq (unsigned long, *(b)), \
06742 ((vector unsigned int) __builtin_altivec_lvx ((a), (b))), \
06743 __ch (__un_args_eq (vector signed int, *(b)), \
06744 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
06745 __ch (__un_args_eq (signed int, *(b)), \
06746 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
06747 __ch (__un_args_eq (signed long, *(b)), \
06748 ((vector signed int) __builtin_altivec_lvx ((a), (b))), \
06749 __ch (__un_args_eq (vector float, *(b)), \
06750 ((vector float) __builtin_altivec_lvx ((a), (b))), \
06751 __ch (__un_args_eq (float, *(b)), \
06752 ((vector float) __builtin_altivec_lvx ((a), (b))), \
06753 __altivec_link_error_invalid_argument ()))))))))))))))))
06754
06755 #define vec_lde(a, b) \
06756 __ch (__un_args_eq (unsigned char, *(b)), \
06757 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
06758 __ch (__un_args_eq (signed char, *(b)), \
06759 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
06760 __ch (__un_args_eq (unsigned short, *(b)), \
06761 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
06762 __ch (__un_args_eq (signed short, *(b)), \
06763 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
06764 __ch (__un_args_eq (unsigned long, *(b)), \
06765 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
06766 __ch (__un_args_eq (signed long, *(b)), \
06767 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
06768 __ch (__un_args_eq (unsigned int, *(b)), \
06769 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
06770 __ch (__un_args_eq (signed int, *(b)), \
06771 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
06772 __ch (__un_args_eq (float, *(b)), \
06773 ((vector float) __builtin_altivec_lvewx ((a), (b))), \
06774 __altivec_link_error_invalid_argument ())))))))))
06775
06776 #define vec_lvewx(a, b) \
06777 __ch (__un_args_eq (unsigned int, *(b)), \
06778 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
06779 __ch (__un_args_eq (signed int, *(b)), \
06780 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
06781 __ch (__un_args_eq (unsigned long, *(b)), \
06782 ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
06783 __ch (__un_args_eq (signed long, *(b)), \
06784 ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
06785 __ch (__un_args_eq (float, *(b)), \
06786 ((vector float) __builtin_altivec_lvewx ((a), (b))), \
06787 __altivec_link_error_invalid_argument ())))))
06788
06789 #define vec_lvehx(a, b) \
06790 __ch (__un_args_eq (unsigned short, *(b)), \
06791 ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
06792 __ch (__un_args_eq (signed short, *(b)), \
06793 ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
06794 __altivec_link_error_invalid_argument ()))
06795
06796 #define vec_lvebx(a, b) \
06797 __ch (__un_args_eq (unsigned char, *(b)), \
06798 ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
06799 __ch (__un_args_eq (signed char, *(b)), \
06800 ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
06801 __altivec_link_error_invalid_argument ()))
06802
06803 #define vec_ldl(a, b) \
06804 __ch (__un_args_eq (vector unsigned char, *(b)), \
06805 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
06806 __ch (__un_args_eq (unsigned char, *(b)), \
06807 ((vector unsigned char) __builtin_altivec_lvxl ((a), (b))), \
06808 __ch (__un_args_eq (vector signed char, *(b)), \
06809 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
06810 __ch (__un_args_eq (signed char, *(b)), \
06811 ((vector signed char) __builtin_altivec_lvxl ((a), (b))), \
06812 __ch (__un_args_eq (vector unsigned short, *(b)), \
06813 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
06814 __ch (__un_args_eq (unsigned short, *(b)), \
06815 ((vector unsigned short) __builtin_altivec_lvxl ((a), (b))), \
06816 __ch (__un_args_eq (vector signed short, *(b)), \
06817 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
06818 __ch (__un_args_eq (signed short, *(b)), \
06819 ((vector signed short) __builtin_altivec_lvxl ((a), (b))), \
06820 __ch (__un_args_eq (vector unsigned int, *(b)), \
06821 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
06822 __ch (__un_args_eq (unsigned int, *(b)), \
06823 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
06824 __ch (__un_args_eq (unsigned long, *(b)), \
06825 ((vector unsigned int) __builtin_altivec_lvxl ((a), (b))), \
06826 __ch (__un_args_eq (vector signed int, *(b)), \
06827 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
06828 __ch (__un_args_eq (signed int, *(b)), \
06829 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
06830 __ch (__un_args_eq (signed long, *(b)), \
06831 ((vector signed int) __builtin_altivec_lvxl ((a), (b))), \
06832 __ch (__un_args_eq (vector float, *(b)), \
06833 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
06834 __ch (__un_args_eq (float, *(b)), \
06835 ((vector float) __builtin_altivec_lvxl ((a), (b))), \
06836 __altivec_link_error_invalid_argument ()))))))))))))))))
06837
06838 #define vec_loge(a1) __builtin_altivec_vlogefp ((a1))
06839
06840 #define vec_lvsl(a1, a2) \
06841 __ch (__un_args_eq (unsigned char, *(a2)), \
06842 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
06843 __ch (__un_args_eq (signed char, *(a2)), \
06844 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
06845 __ch (__un_args_eq (unsigned short, *(a2)), \
06846 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
06847 __ch (__un_args_eq (signed short, *(a2)), \
06848 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
06849 __ch (__un_args_eq (unsigned int, *(a2)), \
06850 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
06851 __ch (__un_args_eq (signed int, *(a2)), \
06852 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
06853 __ch (__un_args_eq (unsigned long, *(a2)), \
06854 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
06855 __ch (__un_args_eq (signed long, *(a2)), \
06856 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
06857 __ch (__un_args_eq (float, *(a2)), \
06858 ((vector unsigned char) __builtin_altivec_lvsl ((a1), (void *) (a2))), \
06859 __altivec_link_error_invalid_argument ())))))))))
06860
06861 #define vec_lvsr(a1, a2) \
06862 __ch (__un_args_eq (unsigned char, *(a2)), \
06863 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
06864 __ch (__un_args_eq (signed char, *(a2)), \
06865 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
06866 __ch (__un_args_eq (unsigned short, *(a2)), \
06867 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
06868 __ch (__un_args_eq (signed short, *(a2)), \
06869 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
06870 __ch (__un_args_eq (unsigned int, *(a2)), \
06871 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
06872 __ch (__un_args_eq (signed int, *(a2)), \
06873 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
06874 __ch (__un_args_eq (unsigned long, *(a2)), \
06875 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
06876 __ch (__un_args_eq (signed long, *(a2)), \
06877 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
06878 __ch (__un_args_eq (float, *(a2)), \
06879 ((vector unsigned char) __builtin_altivec_lvsr ((a1), (void *) (a2))), \
06880 __altivec_link_error_invalid_argument ())))))))))
06881
06882 #define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3)))
06883
06884 #define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))
06885
06886 #define vec_max(a1, a2) \
06887 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
06888 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
06889 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
06890 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
06891 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06892 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
06893 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06894 ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
06895 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
06896 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
06897 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
06898 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
06899 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06900 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
06901 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06902 ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
06903 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
06904 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
06905 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
06906 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
06907 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06908 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
06909 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06910 ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
06911 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06912 ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
06913 __altivec_link_error_invalid_argument ())))))))))))))
06914
06915 #define vec_vmaxfp(a1, a2) \
06916 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06917 ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
06918 __altivec_link_error_invalid_argument ())
06919
06920 #define vec_vmaxsw(a1, a2) \
06921 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06922 ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
06923 __altivec_link_error_invalid_argument ())
06924
06925 #define vec_vmaxuw(a1, a2) \
06926 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
06927 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
06928 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
06929 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
06930 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06931 ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
06932 __altivec_link_error_invalid_argument ())))
06933
06934 #define vec_vmaxsh(a1, a2) \
06935 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06936 ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
06937 __altivec_link_error_invalid_argument ())
06938
06939 #define vec_vmaxuh(a1, a2) \
06940 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
06941 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
06942 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
06943 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
06944 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06945 ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
06946 __altivec_link_error_invalid_argument ())))
06947
06948 #define vec_vmaxsb(a1, a2) \
06949 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06950 ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
06951 __altivec_link_error_invalid_argument ())
06952
06953 #define vec_vmaxub(a1, a2) \
06954 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
06955 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
06956 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
06957 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
06958 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06959 ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
06960 __altivec_link_error_invalid_argument ())))
06961
06962 #define vec_mergeh(a1, a2) \
06963 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06964 ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
06965 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06966 ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
06967 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06968 ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
06969 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06970 ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
06971 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06972 ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
06973 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06974 ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
06975 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06976 ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
06977 __altivec_link_error_invalid_argument ())))))))
06978
06979 #define vec_vmrghw(a1, a2) \
06980 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
06981 ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
06982 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
06983 ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
06984 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
06985 ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
06986 __altivec_link_error_invalid_argument ())))
06987
06988 #define vec_vmrghh(a1, a2) \
06989 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
06990 ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
06991 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
06992 ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
06993 __altivec_link_error_invalid_argument ()))
06994
06995 #define vec_vmrghb(a1, a2) \
06996 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
06997 ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
06998 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
06999 ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
07000 __altivec_link_error_invalid_argument ()))
07001
07002 #define vec_mergel(a1, a2) \
07003 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07004 ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
07005 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07006 ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
07007 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07008 ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
07009 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07010 ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
07011 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
07012 ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
07013 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07014 ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
07015 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07016 ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
07017 __altivec_link_error_invalid_argument ())))))))
07018
07019 #define vec_vmrglw(a1, a2) \
07020 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
07021 ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
07022 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07023 ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
07024 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07025 ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
07026 __altivec_link_error_invalid_argument ())))
07027
07028 #define vec_vmrglh(a1, a2) \
07029 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07030 ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
07031 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07032 ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
07033 __altivec_link_error_invalid_argument ()))
07034
07035 #define vec_vmrglb(a1, a2) \
07036 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07037 ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
07038 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07039 ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
07040 __altivec_link_error_invalid_argument ()))
07041
07042 #define vec_mfvscr() (((vector unsigned short) __builtin_altivec_mfvscr ()))
07043
07044 #define vec_min(a1, a2) \
07045 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07046 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
07047 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
07048 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
07049 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07050 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
07051 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07052 ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
07053 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07054 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
07055 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
07056 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
07057 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07058 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
07059 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07060 ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
07061 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07062 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
07063 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
07064 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
07065 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07066 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
07067 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07068 ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
07069 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
07070 ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
07071 __altivec_link_error_invalid_argument ())))))))))))))
07072
07073 #define vec_vminfp(a1, a2) \
07074 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
07075 ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
07076 __altivec_link_error_invalid_argument ())
07077
07078 #define vec_vminsw(a1, a2) \
07079 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07080 ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
07081 __altivec_link_error_invalid_argument ())
07082
07083 #define vec_vminuw(a1, a2) \
07084 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07085 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
07086 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
07087 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
07088 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07089 ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
07090 __altivec_link_error_invalid_argument ())))
07091
07092 #define vec_vminsh(a1, a2) \
07093 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07094 ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
07095 __altivec_link_error_invalid_argument ())
07096
07097 #define vec_vminuh(a1, a2) \
07098 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07099 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
07100 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
07101 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
07102 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07103 ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
07104 __altivec_link_error_invalid_argument ())))
07105
07106 #define vec_vminsb(a1, a2) \
07107 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07108 ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
07109 __altivec_link_error_invalid_argument ())
07110
07111 #define vec_vminub(a1, a2) \
07112 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07113 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
07114 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
07115 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
07116 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07117 ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
07118 __altivec_link_error_invalid_argument ())))
07119
07120 #define vec_mladd(a1, a2, a3) \
07121 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
07122 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
07123 __ch (__tern_args_eq (vector signed short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
07124 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
07125 __ch (__tern_args_eq (vector unsigned short, (a1), vector signed short, (a2), vector signed short, (a3)), \
07126 ((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
07127 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
07128 ((vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
07129 __altivec_link_error_invalid_argument ()))))
07130
07131 #define vec_mradds(a1, a2, a3) __builtin_altivec_vmhraddshs ((a1), (a2), (a3))
07132
07133 #define vec_msum(a1, a2, a3) \
07134 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
07135 ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
07136 __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
07137 ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
07138 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
07139 ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
07140 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
07141 ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
07142 __altivec_link_error_invalid_argument ()))))
07143
07144 #define vec_vmsumshm(a1, a2, a3) \
07145 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
07146 ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
07147 __altivec_link_error_invalid_argument ())
07148
07149 #define vec_vmsumuhm(a1, a2, a3) \
07150 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
07151 ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
07152 __altivec_link_error_invalid_argument ())
07153
07154 #define vec_vmsummbm(a1, a2, a3) \
07155 __ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
07156 ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
07157 __altivec_link_error_invalid_argument ())
07158
07159 #define vec_vmsumubm(a1, a2, a3) \
07160 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
07161 ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
07162 __altivec_link_error_invalid_argument ())
07163
07164 #define vec_msums(a1, a2, a3) \
07165 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
07166 ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
07167 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
07168 ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
07169 __altivec_link_error_invalid_argument ()))
07170
07171 #define vec_vmsumshs(a1, a2, a3) \
07172 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
07173 ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
07174 __altivec_link_error_invalid_argument ())
07175
07176 #define vec_vmsumuhs(a1, a2, a3) \
07177 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
07178 ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
07179 __altivec_link_error_invalid_argument ())
07180
07181 #define vec_mtvscr(a1) \
07182 __ch (__un_args_eq (vector signed int, (a1)), \
07183 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
07184 __ch (__un_args_eq (vector unsigned int, (a1)), \
07185 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
07186 __ch (__un_args_eq (vector signed short, (a1)), \
07187 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
07188 __ch (__un_args_eq (vector unsigned short, (a1)), \
07189 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
07190 __ch (__un_args_eq (vector signed char, (a1)), \
07191 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
07192 __ch (__un_args_eq (vector unsigned char, (a1)), \
07193 __builtin_altivec_mtvscr ((vector signed int) (a1)), \
07194 __altivec_link_error_invalid_argument ()))))))
07195
07196 #define vec_mule(a1, a2) \
07197 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07198 ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
07199 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07200 ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
07201 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07202 ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
07203 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07204 ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
07205 __altivec_link_error_invalid_argument ()))))
07206
07207 #define vec_vmulesh(a1, a2) \
07208 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07209 ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
07210 __altivec_link_error_invalid_argument ())
07211
07212 #define vec_vmuleuh(a1, a2) \
07213 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07214 ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
07215 __altivec_link_error_invalid_argument ())
07216
07217 #define vec_vmulesb(a1, a2) \
07218 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07219 ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
07220 __altivec_link_error_invalid_argument ())
07221
07222 #define vec_vmuleub(a1, a2) \
07223 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07224 ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
07225 __altivec_link_error_invalid_argument ())
07226
07227 #define vec_mulo(a1, a2) \
07228 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07229 ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
07230 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07231 ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
07232 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07233 ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
07234 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07235 ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
07236 __altivec_link_error_invalid_argument ()))))
07237
07238 #define vec_vmulosh(a1, a2) \
07239 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07240 ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
07241 __altivec_link_error_invalid_argument ())
07242
07243 #define vec_vmulouh(a1, a2) \
07244 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07245 ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
07246 __altivec_link_error_invalid_argument ())
07247
07248 #define vec_vmulosb(a1, a2) \
07249 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07250 ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
07251 __altivec_link_error_invalid_argument ())
07252
07253 #define vec_vmuloub(a1, a2) \
07254 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07255 ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
07256 __altivec_link_error_invalid_argument ())
07257
07258 #define vec_nmsub(a1, a2, a3) \
07259 __ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \
07260 ((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \
07261 __altivec_link_error_invalid_argument ())
07262
07263 #define vec_nor(a1, a2) \
07264 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
07265 ((vector float) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
07266 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07267 ((vector signed int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
07268 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07269 ((vector unsigned int) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
07270 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07271 ((vector signed short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
07272 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07273 ((vector unsigned short) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
07274 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07275 ((vector signed char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
07276 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07277 ((vector unsigned char) __builtin_altivec_vnor ((vector signed int) (a1), (vector signed int) (a2))), \
07278 __altivec_link_error_invalid_argument ())))))))
07279
07280 #define vec_or(a1, a2) \
07281 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
07282 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07283 __ch (__bin_args_eq (vector float, (a1), vector signed int, (a2)), \
07284 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07285 __ch (__bin_args_eq (vector signed int, (a1), vector float, (a2)), \
07286 ((vector float) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07287 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07288 ((vector signed int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07289 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07290 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07291 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
07292 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07293 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07294 ((vector unsigned int) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07295 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07296 ((vector signed short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07297 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07298 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07299 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
07300 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07301 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07302 ((vector unsigned short) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07303 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07304 ((vector signed char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07305 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07306 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07307 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
07308 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07309 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07310 ((vector unsigned char) __builtin_altivec_vor ((vector signed int) (a1), (vector signed int) (a2))), \
07311 __altivec_link_error_invalid_argument ())))))))))))))))
07312
07313 #define vec_pack(a1, a2) \
07314 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07315 ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
07316 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07317 ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
07318 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07319 ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
07320 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07321 ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
07322 __altivec_link_error_invalid_argument ()))))
07323
07324 #define vec_vpkuwum(a1, a2) \
07325 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07326 ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
07327 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07328 ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
07329 __altivec_link_error_invalid_argument ()))
07330
07331 #define vec_vpkuhum(a1, a2) \
07332 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07333 ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
07334 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07335 ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
07336 __altivec_link_error_invalid_argument ()))
07337
07338 #define vec_packpx(a1, a2) \
07339 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07340 (vector unsigned short) __builtin_altivec_vpkpx ((vector signed int) (a1), (vector signed int) (a2)), \
07341 __altivec_link_error_invalid_argument ())
07342
07343 #define vec_packs(a1, a2) \
07344 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07345 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
07346 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07347 ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
07348 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07349 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
07350 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07351 ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
07352 __altivec_link_error_invalid_argument ()))))
07353
07354 #define vec_vpkswss(a1, a2) \
07355 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07356 ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
07357 __altivec_link_error_invalid_argument ())
07358
07359 #define vec_vpkuwus(a1, a2) \
07360 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07361 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
07362 __altivec_link_error_invalid_argument ())
07363
07364 #define vec_vpkshss(a1, a2) \
07365 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07366 ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
07367 __altivec_link_error_invalid_argument ())
07368
07369 #define vec_vpkuhus(a1, a2) \
07370 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07371 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
07372 __altivec_link_error_invalid_argument ())
07373
07374 #define vec_packsu(a1, a2) \
07375 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07376 ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
07377 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07378 ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
07379 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07380 ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
07381 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07382 ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
07383 __altivec_link_error_invalid_argument ()))))
07384
07385 #define vec_vpkswus(a1, a2) \
07386 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07387 ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
07388 __altivec_link_error_invalid_argument ())
07389
07390 #define vec_vpkshus(a1, a2) \
07391 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07392 ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
07393 __altivec_link_error_invalid_argument ())
07394
07395 #define vec_perm(a1, a2, a3) \
07396 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \
07397 ((vector float) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
07398 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned char, (a3)), \
07399 ((vector signed int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
07400 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned char, (a3)), \
07401 ((vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
07402 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned char, (a3)), \
07403 ((vector signed short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
07404 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned char, (a3)), \
07405 ((vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
07406 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
07407 ((vector signed char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
07408 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
07409 ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
07410 __altivec_link_error_invalid_argument ())))))))
07411
07412 #define vec_re(a1) __builtin_altivec_vrefp ((a1))
07413
07414 #define vec_rl(a1, a2) \
07415 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07416 ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
07417 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07418 ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
07419 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07420 ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
07421 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07422 ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
07423 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07424 ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
07425 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07426 ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
07427 __altivec_link_error_invalid_argument ()))))))
07428
07429 #define vec_vrlw(a1, a2) \
07430 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07431 ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
07432 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07433 ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
07434 __altivec_link_error_invalid_argument ()))
07435
07436 #define vec_vrlh(a1, a2) \
07437 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07438 ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
07439 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07440 ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
07441 __altivec_link_error_invalid_argument ()))
07442
07443 #define vec_vrlb(a1, a2) \
07444 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07445 ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
07446 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07447 ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
07448 __altivec_link_error_invalid_argument ()))
07449
07450 #define vec_round(a1) __builtin_altivec_vrfin ((a1))
07451
07452 #define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1))
07453
07454 #define vec_sel(a1, a2, a3) \
07455 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector signed int, (a3)), \
07456 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07457 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned int, (a3)), \
07458 ((vector float) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07459 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector signed int, (a3)), \
07460 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07461 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), vector unsigned int, (a3)), \
07462 ((vector signed int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07463 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector signed int, (a3)), \
07464 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07465 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), vector unsigned int, (a3)), \
07466 ((vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07467 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
07468 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07469 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector unsigned short, (a3)), \
07470 ((vector signed short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07471 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector signed short, (a3)), \
07472 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07473 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned short, (a3)), \
07474 ((vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07475 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector signed char, (a3)), \
07476 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07477 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), vector unsigned char, (a3)), \
07478 ((vector signed char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07479 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector signed char, (a3)), \
07480 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07481 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
07482 ((vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed int) (a3))), \
07483 __altivec_link_error_invalid_argument ()))))))))))))))
07484
07485 #define vec_sl(a1, a2) \
07486 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07487 ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
07488 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07489 ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
07490 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07491 ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
07492 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07493 ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
07494 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07495 ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
07496 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07497 ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
07498 __altivec_link_error_invalid_argument ()))))))
07499
07500 #define vec_vslw(a1, a2) \
07501 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07502 ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
07503 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07504 ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
07505 __altivec_link_error_invalid_argument ()))
07506
07507 #define vec_vslh(a1, a2) \
07508 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07509 ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
07510 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07511 ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
07512 __altivec_link_error_invalid_argument ()))
07513
07514 #define vec_vslb(a1, a2) \
07515 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07516 ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
07517 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07518 ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
07519 __altivec_link_error_invalid_argument ()))
07520
07521 #define vec_sld(a1, a2, a3) \
07522 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \
07523 ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07524 __ch (__tern_args_eq (vector float, (a1), vector float, (a2), unsigned int, (a3)), \
07525 ((vector float) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07526 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), int, (a3)), \
07527 ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07528 __ch (__tern_args_eq (vector signed int, (a1), vector signed int, (a2), unsigned int, (a3)), \
07529 ((vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07530 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), int, (a3)), \
07531 ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07532 __ch (__tern_args_eq (vector unsigned int, (a1), vector unsigned int, (a2), unsigned int, (a3)), \
07533 ((vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07534 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), int, (a3)), \
07535 ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07536 __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), unsigned int, (a3)), \
07537 ((vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07538 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), int, (a3)), \
07539 ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07540 __ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), unsigned int, (a3)), \
07541 ((vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07542 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), int, (a3)), \
07543 ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07544 __ch (__tern_args_eq (vector signed char, (a1), vector signed char, (a2), unsigned int, (a3)), \
07545 ((vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07546 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), int, (a3)), \
07547 ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07548 __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), unsigned int, (a3)), \
07549 ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3))), \
07550 __altivec_link_error_invalid_argument ()))))))))))))))
07551
07552 #define vec_sll(a1, a2) \
07553 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07554 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07555 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
07556 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07557 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
07558 ((vector signed int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07559 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07560 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07561 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
07562 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07563 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
07564 ((vector unsigned int) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07565 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
07566 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07567 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07568 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07569 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
07570 ((vector signed short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07571 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
07572 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07573 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07574 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07575 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
07576 ((vector unsigned short) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07577 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
07578 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07579 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
07580 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07581 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07582 ((vector signed char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07583 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
07584 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07585 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
07586 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07587 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07588 ((vector unsigned char) __builtin_altivec_vsl ((vector signed int) (a1), (vector signed int) (a2))), \
07589 __altivec_link_error_invalid_argument ()))))))))))))))))))
07590
07591 #define vec_slo(a1, a2) \
07592 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
07593 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07594 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
07595 ((vector float) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07596 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
07597 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07598 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
07599 ((vector signed int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07600 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
07601 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07602 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
07603 ((vector unsigned int) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07604 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
07605 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07606 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
07607 ((vector signed short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07608 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
07609 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07610 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
07611 ((vector unsigned short) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07612 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07613 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07614 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07615 ((vector signed char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07616 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
07617 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07618 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07619 ((vector unsigned char) __builtin_altivec_vslo ((vector signed int) (a1), (vector signed int) (a2))), \
07620 __altivec_link_error_invalid_argument ()))))))))))))))
07621
07622 #define vec_splat(a1, a2) \
07623 __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
07624 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
07625 __ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \
07626 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
07627 __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
07628 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
07629 __ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \
07630 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
07631 __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
07632 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
07633 __ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \
07634 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
07635 __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
07636 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
07637 __ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \
07638 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
07639 __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
07640 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
07641 __ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \
07642 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
07643 __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
07644 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
07645 __ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \
07646 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
07647 __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
07648 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
07649 __ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
07650 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
07651 __altivec_link_error_invalid_argument ()))))))))))))))
07652
07653 #define vec_vspltw(a1, a2) \
07654 __ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
07655 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
07656 __ch (__bin_args_eq (vector float, ((a1)), unsigned int, ((a2))), \
07657 ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
07658 __ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
07659 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
07660 __ch (__bin_args_eq (vector signed int, ((a1)), unsigned int, ((a2))), \
07661 ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
07662 __ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
07663 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
07664 __ch (__bin_args_eq (vector unsigned int, ((a1)), unsigned int, ((a2))), \
07665 ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
07666 __altivec_link_error_invalid_argument ()))))))
07667
07668 #define vec_vsplth(a1, a2) \
07669 __ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
07670 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
07671 __ch (__bin_args_eq (vector signed short, ((a1)), unsigned int, ((a2))), \
07672 ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
07673 __ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
07674 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
07675 __ch (__bin_args_eq (vector unsigned short, ((a1)), unsigned int, ((a2))), \
07676 ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
07677 __altivec_link_error_invalid_argument ()))))
07678
07679 #define vec_vspltb(a1, a2) \
07680 __ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
07681 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
07682 __ch (__bin_args_eq (vector signed char, ((a1)), unsigned int, ((a2))), \
07683 ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
07684 __ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
07685 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
07686 __ch (__bin_args_eq (vector unsigned char, ((a1)), unsigned int, ((a2))), \
07687 ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
07688 __altivec_link_error_invalid_argument ()))))
07689
07690 #define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1))
07691
07692 #define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1))
07693
07694 #define vec_splat_s32(a1) __builtin_altivec_vspltisw ((a1))
07695
07696 #define vec_splat_u8(a1) ((vector unsigned char) __builtin_altivec_vspltisb ((a1)))
07697
07698 #define vec_splat_u16(a1) ((vector unsigned short) __builtin_altivec_vspltish ((a1)))
07699
07700 #define vec_splat_u32(a1) ((vector unsigned int) __builtin_altivec_vspltisw ((a1)))
07701
07702 #define vec_sr(a1, a2) \
07703 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07704 ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
07705 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07706 ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
07707 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07708 ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
07709 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07710 ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
07711 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07712 ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
07713 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07714 ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
07715 __altivec_link_error_invalid_argument ()))))))
07716
07717 #define vec_vsrw(a1, a2) \
07718 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07719 ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
07720 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07721 ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
07722 __altivec_link_error_invalid_argument ()))
07723
07724 #define vec_vsrh(a1, a2) \
07725 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07726 ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
07727 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07728 ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
07729 __altivec_link_error_invalid_argument ()))
07730
07731 #define vec_vsrb(a1, a2) \
07732 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07733 ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
07734 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07735 ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
07736 __altivec_link_error_invalid_argument ()))
07737
07738 #define vec_sra(a1, a2) \
07739 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07740 ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
07741 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07742 ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
07743 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07744 ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
07745 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07746 ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
07747 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07748 ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
07749 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07750 ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
07751 __altivec_link_error_invalid_argument ()))))))
07752
07753 #define vec_vsraw(a1, a2) \
07754 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07755 ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
07756 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07757 ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
07758 __altivec_link_error_invalid_argument ()))
07759
07760 #define vec_vsrah(a1, a2) \
07761 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07762 ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
07763 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07764 ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
07765 __altivec_link_error_invalid_argument ()))
07766
07767 #define vec_vsrab(a1, a2) \
07768 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07769 ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
07770 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07771 ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
07772 __altivec_link_error_invalid_argument ()))
07773
07774 #define vec_srl(a1, a2) \
07775 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07776 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07777 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned short, (a2)), \
07778 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07779 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
07780 ((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07781 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07782 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07783 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned short, (a2)), \
07784 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07785 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
07786 ((vector unsigned int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07787 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned int, (a2)), \
07788 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07789 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07790 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07791 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
07792 ((vector signed short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07793 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned int, (a2)), \
07794 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07795 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07796 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07797 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
07798 ((vector unsigned short) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07799 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned int, (a2)), \
07800 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07801 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned short, (a2)), \
07802 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07803 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07804 ((vector signed char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07805 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
07806 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07807 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned short, (a2)), \
07808 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07809 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07810 ((vector unsigned char) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
07811 __altivec_link_error_invalid_argument ()))))))))))))))))))
07812
07813 #define vec_sro(a1, a2) \
07814 __ch (__bin_args_eq (vector float, (a1), vector signed char, (a2)), \
07815 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07816 __ch (__bin_args_eq (vector float, (a1), vector unsigned char, (a2)), \
07817 ((vector float) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07818 __ch (__bin_args_eq (vector signed int, (a1), vector signed char, (a2)), \
07819 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07820 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned char, (a2)), \
07821 ((vector signed int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07822 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed char, (a2)), \
07823 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07824 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned char, (a2)), \
07825 ((vector unsigned int) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07826 __ch (__bin_args_eq (vector signed short, (a1), vector signed char, (a2)), \
07827 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07828 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned char, (a2)), \
07829 ((vector signed short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07830 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed char, (a2)), \
07831 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07832 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned char, (a2)), \
07833 ((vector unsigned short) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07834 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07835 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07836 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07837 ((vector signed char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07838 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
07839 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07840 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07841 ((vector unsigned char) __builtin_altivec_vsro ((vector signed int) (a1), (vector signed int) (a2))), \
07842 __altivec_link_error_invalid_argument ()))))))))))))))
07843
07844 #define vec_st(a1, a2, a3) \
07845 __builtin_altivec_stvx ((vector signed int) (a1), (a2), (a3))
07846
07847 #define vec_stl(a1, a2, a3) \
07848 __builtin_altivec_stvxl ((vector signed int) (a1), (a2), (a3))
07849
07850 #define vec_ste(a, b, c) \
07851 __ch (__un_args_eq (vector unsigned char, (a)), \
07852 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
07853 __ch (__un_args_eq (vector signed char, (a)), \
07854 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
07855 __ch (__un_args_eq (vector unsigned short, (a)), \
07856 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
07857 __ch (__un_args_eq (vector signed short, (a)), \
07858 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
07859 __ch (__un_args_eq (vector unsigned int, (a)), \
07860 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
07861 __ch (__un_args_eq (vector signed int, (a)), \
07862 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
07863 __ch (__un_args_eq (vector float, (a)), \
07864 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
07865 __altivec_link_error_invalid_argument ())))))))
07866
07867 #define vec_stvewx(a, b, c) \
07868 __ch (__un_args_eq (vector unsigned int, (a)), \
07869 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
07870 __ch (__un_args_eq (vector signed int, (a)), \
07871 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
07872 __ch (__un_args_eq (vector float, (a)), \
07873 __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
07874 __altivec_link_error_invalid_argument ())))
07875
07876 #define vec_stvehx(a, b, c) \
07877 __ch (__un_args_eq (vector unsigned short, (a)), \
07878 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
07879 __ch (__un_args_eq (vector signed short, (a)), \
07880 __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
07881 __altivec_link_error_invalid_argument ()))
07882
07883 #define vec_stvebx(a, b, c) \
07884 __ch (__un_args_eq (vector unsigned char, (a)), \
07885 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
07886 __ch (__un_args_eq (vector signed char, (a)), \
07887 __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
07888 __altivec_link_error_invalid_argument ()))
07889
07890 #define vec_sub(a1, a2) \
07891 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07892 ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
07893 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07894 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
07895 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
07896 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
07897 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07898 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
07899 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07900 ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
07901 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07902 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
07903 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
07904 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
07905 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07906 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
07907 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07908 ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
07909 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07910 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
07911 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
07912 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
07913 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07914 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
07915 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
07916 ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
07917 __altivec_link_error_invalid_argument ())))))))))))))
07918
07919 #define vec_vsubfp(a1, a2) \
07920 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
07921 ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
07922 __altivec_link_error_invalid_argument ())
07923
07924 #define vec_vsubuwm(a1, a2) \
07925 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07926 ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
07927 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07928 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
07929 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
07930 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
07931 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07932 ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
07933 __altivec_link_error_invalid_argument ()))))
07934
07935 #define vec_vsubuhm(a1, a2) \
07936 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07937 ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
07938 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07939 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
07940 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
07941 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
07942 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07943 ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
07944 __altivec_link_error_invalid_argument ()))))
07945
07946 #define vec_vsububm(a1, a2) \
07947 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07948 ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
07949 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07950 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
07951 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
07952 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
07953 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07954 ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
07955 __altivec_link_error_invalid_argument ()))))
07956
07957 #define vec_subc(a1, a2) \
07958 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07959 ((vector unsigned int) __builtin_altivec_vsubcuw ((vector signed int) (a1), (vector signed int) (a2))), \
07960 __altivec_link_error_invalid_argument ())
07961
07962 #define vec_subs(a1, a2) \
07963 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
07964 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
07965 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
07966 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
07967 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
07968 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
07969 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
07970 ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
07971 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
07972 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
07973 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
07974 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
07975 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
07976 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
07977 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
07978 ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
07979 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07980 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
07981 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
07982 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
07983 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
07984 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
07985 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07986 ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
07987 __altivec_link_error_invalid_argument ()))))))))))))
07988
07989 #define vec_vsubsws(a1, a2) \
07990 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
07991 ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
07992 __altivec_link_error_invalid_argument ())
07993
07994 #define vec_vsubuws(a1, a2) \
07995 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
07996 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
07997 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
07998 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
07999 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08000 ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
08001 __altivec_link_error_invalid_argument ())))
08002
08003 #define vec_vsubshs(a1, a2) \
08004 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08005 ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
08006 __altivec_link_error_invalid_argument ())
08007
08008 #define vec_vsubuhs(a1, a2) \
08009 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08010 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
08011 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08012 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
08013 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08014 ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
08015 __altivec_link_error_invalid_argument ())))
08016
08017 #define vec_vsubsbs(a1, a2) \
08018 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08019 ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
08020 __altivec_link_error_invalid_argument ())
08021
08022 #define vec_vsububs(a1, a2) \
08023 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08024 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
08025 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08026 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
08027 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08028 ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
08029 __altivec_link_error_invalid_argument ())))
08030
08031 #define vec_sum4s(a1, a2) \
08032 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
08033 ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
08034 __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
08035 ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
08036 __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
08037 ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
08038 __altivec_link_error_invalid_argument ())))
08039
08040 #define vec_vsum4shs(a1, a2) \
08041 __ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
08042 ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
08043 __altivec_link_error_invalid_argument ())
08044
08045 #define vec_vsum4sbs(a1, a2) \
08046 __ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
08047 ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
08048 __altivec_link_error_invalid_argument ())
08049
08050 #define vec_vsum4ubs(a1, a2) \
08051 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
08052 ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
08053 __altivec_link_error_invalid_argument ())
08054
08055 #define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2))
08056
08057 #define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2))
08058
08059 #define vec_trunc(a1) __builtin_altivec_vrfiz ((a1))
08060
08061 #define vec_unpackh(a1) \
08062 __ch (__un_args_eq (vector signed char, (a1)), \
08063 ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
08064 __ch (__un_args_eq (vector unsigned short, (a1)), \
08065 ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
08066 __ch (__un_args_eq (vector signed short, (a1)), \
08067 ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
08068 __altivec_link_error_invalid_argument ())))
08069
08070 #define vec_vupkhsh(a1) \
08071 __ch (__un_args_eq (vector signed short, (a1)), \
08072 ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
08073 __altivec_link_error_invalid_argument ())
08074
08075 #define vec_vupkhpx(a1) \
08076 __ch (__un_args_eq (vector unsigned short, (a1)), \
08077 ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
08078 __altivec_link_error_invalid_argument ())
08079
08080 #define vec_vupkhsb(a1) \
08081 __ch (__un_args_eq (vector signed char, (a1)), \
08082 ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
08083 __altivec_link_error_invalid_argument ())
08084
08085 #define vec_unpackl(a1) \
08086 __ch (__un_args_eq (vector signed char, (a1)), \
08087 ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
08088 __ch (__un_args_eq (vector unsigned short, (a1)), \
08089 ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
08090 __ch (__un_args_eq (vector signed short, (a1)), \
08091 ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
08092 __altivec_link_error_invalid_argument ())))
08093
08094 #define vec_vupklsh(a1) \
08095 __ch (__un_args_eq (vector signed short, (a1)), \
08096 ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
08097 __altivec_link_error_invalid_argument ())
08098
08099 #define vec_vupklpx(a1) \
08100 __ch (__un_args_eq (vector unsigned short, (a1)), \
08101 ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
08102 __altivec_link_error_invalid_argument ())
08103
08104 #define vec_vupklsb(a1) \
08105 __ch (__un_args_eq (vector signed char, (a1)), \
08106 ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
08107 __altivec_link_error_invalid_argument ())
08108
08109 #define vec_xor(a1, a2) \
08110 __ch (__bin_args_eq (vector float, ((a1)), vector float, ((a2))), \
08111 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08112 __ch (__bin_args_eq (vector float, ((a1)), vector unsigned int, ((a2))), \
08113 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08114 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector float, ((a2))), \
08115 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08116 __ch (__bin_args_eq (vector signed int, ((a1)), vector float, ((a2))), \
08117 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08118 __ch (__bin_args_eq (vector float, ((a1)), vector signed int, ((a2))), \
08119 ((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08120 __ch (__bin_args_eq (vector signed int, ((a1)), vector signed int, ((a2))), \
08121 ((vector signed int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08122 __ch (__bin_args_eq (vector signed int, ((a1)), vector unsigned int, ((a2))), \
08123 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08124 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector signed int, ((a2))), \
08125 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08126 __ch (__bin_args_eq (vector unsigned int, ((a1)), vector unsigned int, ((a2))), \
08127 ((vector unsigned int) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08128 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
08129 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08130 __ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \
08131 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08132 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \
08133 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08134 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
08135 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08136 __ch (__bin_args_eq (vector signed short, ((a1)), vector signed short, ((a2))), \
08137 ((vector signed short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08138 __ch (__bin_args_eq (vector signed short, ((a1)), vector unsigned short, ((a2))), \
08139 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08140 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector signed short, ((a2))), \
08141 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08142 __ch (__bin_args_eq (vector unsigned short, ((a1)), vector unsigned short, ((a2))), \
08143 ((vector unsigned short) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08144 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \
08145 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08146 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
08147 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08148 __ch (__bin_args_eq (vector signed char, ((a1)), vector signed char, ((a2))), \
08149 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08150 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector unsigned char, ((a2))), \
08151 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08152 __ch (__bin_args_eq (vector signed char, ((a1)), vector unsigned char, ((a2))), \
08153 ((vector signed char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08154 __ch (__bin_args_eq (vector unsigned char, ((a1)), vector signed char, ((a2))), \
08155 ((vector unsigned char) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \
08156 __altivec_link_error_invalid_argument ())))))))))))))))))))))))
08157
08158
08159
08160 #define vec_all_eq(a1, a2) \
08161 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08162 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
08163 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08164 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
08165 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08166 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
08167 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08168 __builtin_altivec_vcmpequb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
08169 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08170 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
08171 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08172 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
08173 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08174 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
08175 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08176 __builtin_altivec_vcmpequh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
08177 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08178 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
08179 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08180 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
08181 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08182 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
08183 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08184 __builtin_altivec_vcmpequw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
08185 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08186 __builtin_altivec_vcmpeqfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
08187 __altivec_link_error_invalid_argument ())))))))))))))
08188
08189 #define vec_all_ge(a1, a2) \
08190 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08191 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
08192 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08193 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
08194 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08195 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
08196 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08197 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a2), (vector signed char) (a1)), \
08198 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08199 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
08200 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08201 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
08202 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08203 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
08204 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08205 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a2), (vector signed short) (a1)), \
08206 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08207 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
08208 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08209 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
08210 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08211 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
08212 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08213 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a2), (vector signed int) (a1)), \
08214 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08215 __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
08216 __altivec_link_error_invalid_argument ())))))))))))))
08217
08218 #define vec_all_gt(a1, a2) \
08219 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08220 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
08221 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08222 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
08223 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08224 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
08225 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08226 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a1), (vector signed char) (a2)), \
08227 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08228 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
08229 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08230 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
08231 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08232 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
08233 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08234 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a1), (vector signed short) (a2)), \
08235 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08236 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
08237 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08238 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
08239 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08240 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
08241 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08242 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a1), (vector signed int) (a2)), \
08243 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08244 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a1), (vector float) (a2)), \
08245 __altivec_link_error_invalid_argument ())))))))))))))
08246
08247 #define vec_all_in(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ, (a1), (a2))
08248
08249 #define vec_all_le(a1, a2) \
08250 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08251 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
08252 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08253 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
08254 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08255 __builtin_altivec_vcmpgtub_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
08256 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08257 __builtin_altivec_vcmpgtsb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
08258 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08259 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
08260 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08261 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
08262 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08263 __builtin_altivec_vcmpgtuh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
08264 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08265 __builtin_altivec_vcmpgtsh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
08266 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08267 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
08268 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08269 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
08270 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08271 __builtin_altivec_vcmpgtuw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
08272 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08273 __builtin_altivec_vcmpgtsw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
08274 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08275 __builtin_altivec_vcmpgefp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
08276 __altivec_link_error_invalid_argument ())))))))))))))
08277
08278 #define vec_all_lt(a1, a2) \
08279 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08280 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
08281 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08282 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
08283 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08284 __builtin_altivec_vcmpgtub_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
08285 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08286 __builtin_altivec_vcmpgtsb_p (__CR6_LT, (vector signed char) (a2), (vector signed char) (a1)), \
08287 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08288 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
08289 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08290 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
08291 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08292 __builtin_altivec_vcmpgtuh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
08293 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08294 __builtin_altivec_vcmpgtsh_p (__CR6_LT, (vector signed short) (a2), (vector signed short) (a1)), \
08295 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08296 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
08297 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08298 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
08299 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08300 __builtin_altivec_vcmpgtuw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
08301 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08302 __builtin_altivec_vcmpgtsw_p (__CR6_LT, (vector signed int) (a2), (vector signed int) (a1)), \
08303 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08304 __builtin_altivec_vcmpgtfp_p (__CR6_LT, (vector float) (a2), (vector float) (a1)), \
08305 __altivec_link_error_invalid_argument ())))))))))))))
08306
08307 #define vec_all_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
08308
08309 #define vec_all_ne(a1, a2) \
08310 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08311 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
08312 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08313 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
08314 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08315 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
08316 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08317 __builtin_altivec_vcmpequb_p (__CR6_EQ, (vector signed char) (a1), (vector signed char) (a2)), \
08318 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08319 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
08320 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08321 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
08322 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08323 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
08324 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08325 __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) (a1), (vector signed short) (a2)), \
08326 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08327 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
08328 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08329 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
08330 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08331 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
08332 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08333 __builtin_altivec_vcmpequw_p (__CR6_EQ, (vector signed int) (a1), (vector signed int) (a2)), \
08334 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08335 __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (vector float) (a1), (vector float) (a2)), \
08336 __altivec_link_error_invalid_argument ())))))))))))))
08337
08338 #define vec_all_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a1), (a2))
08339
08340 #define vec_all_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a1), (a2))
08341
08342 #define vec_all_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_EQ, (a2), (a1))
08343
08344 #define vec_all_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_EQ, (a2), (a1))
08345
08346 #define vec_all_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ, (a1), (a1))
08347
08348 #define vec_any_eq(a1, a2) \
08349 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08350 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08351 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08352 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08353 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08354 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08355 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08356 __builtin_altivec_vcmpequb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08357 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08358 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08359 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08360 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08361 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08362 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08363 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08364 __builtin_altivec_vcmpequh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08365 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08366 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08367 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08368 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08369 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08370 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08371 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08372 __builtin_altivec_vcmpequw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08373 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08374 __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
08375 __altivec_link_error_invalid_argument ())))))))))))))
08376
08377 #define vec_any_ge(a1, a2) \
08378 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08379 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
08380 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08381 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
08382 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08383 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
08384 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08385 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a2), (vector signed char) (a1)), \
08386 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08387 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
08388 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08389 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
08390 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08391 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
08392 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08393 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a2), (vector signed short) (a1)), \
08394 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08395 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
08396 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08397 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
08398 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08399 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
08400 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08401 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a2), (vector signed int) (a1)), \
08402 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08403 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
08404 __altivec_link_error_invalid_argument ())))))))))))))
08405
08406 #define vec_any_gt(a1, a2) \
08407 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08408 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08409 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08410 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08411 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08412 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08413 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08414 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08415 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08416 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08417 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08418 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08419 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08420 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08421 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08422 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08423 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08424 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08425 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08426 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08427 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08428 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08429 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08430 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08431 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08432 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a1), (vector float) (a2)), \
08433 __altivec_link_error_invalid_argument ())))))))))))))
08434
08435 #define vec_any_le(a1, a2) \
08436 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08437 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08438 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08439 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08440 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08441 __builtin_altivec_vcmpgtub_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08442 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08443 __builtin_altivec_vcmpgtsb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08444 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08445 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08446 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08447 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08448 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08449 __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08450 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08451 __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08452 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08453 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08454 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08455 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08456 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08457 __builtin_altivec_vcmpgtuw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08458 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08459 __builtin_altivec_vcmpgtsw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08460 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08461 __builtin_altivec_vcmpgefp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
08462 __altivec_link_error_invalid_argument ())))))))))))))
08463
08464 #define vec_any_lt(a1, a2) \
08465 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08466 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
08467 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08468 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
08469 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08470 __builtin_altivec_vcmpgtub_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
08471 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08472 __builtin_altivec_vcmpgtsb_p (__CR6_EQ_REV, (vector signed char) (a2), (vector signed char) (a1)), \
08473 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08474 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
08475 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08476 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
08477 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08478 __builtin_altivec_vcmpgtuh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
08479 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08480 __builtin_altivec_vcmpgtsh_p (__CR6_EQ_REV, (vector signed short) (a2), (vector signed short) (a1)), \
08481 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08482 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
08483 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08484 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
08485 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08486 __builtin_altivec_vcmpgtuw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
08487 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08488 __builtin_altivec_vcmpgtsw_p (__CR6_EQ_REV, (vector signed int) (a2), (vector signed int) (a1)), \
08489 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08490 __builtin_altivec_vcmpgtfp_p (__CR6_EQ_REV, (vector float) (a2), (vector float) (a1)), \
08491 __altivec_link_error_invalid_argument ())))))))))))))
08492
08493 #define vec_any_nan(a1) __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, a1, a1)
08494
08495 #define vec_any_ne(a1, a2) \
08496 __ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
08497 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08498 __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
08499 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08500 __ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
08501 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08502 __ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
08503 __builtin_altivec_vcmpequb_p (__CR6_LT_REV, (vector signed char) (a1), (vector signed char) (a2)), \
08504 __ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
08505 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08506 __ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
08507 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08508 __ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
08509 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08510 __ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
08511 __builtin_altivec_vcmpequh_p (__CR6_LT_REV, (vector signed short) (a1), (vector signed short) (a2)), \
08512 __ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
08513 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08514 __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
08515 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08516 __ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
08517 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08518 __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
08519 __builtin_altivec_vcmpequw_p (__CR6_LT_REV, (vector signed int) (a1), (vector signed int) (a2)), \
08520 __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
08521 __builtin_altivec_vcmpeqfp_p (__CR6_LT_REV, (vector float) (a1), (vector float) (a2)), \
08522 __altivec_link_error_invalid_argument ())))))))))))))
08523
08524 #define vec_any_nge(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a1), (a2))
08525
08526 #define vec_any_ngt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a1), (a2))
08527
08528 #define vec_any_nle(a1, a2) __builtin_altivec_vcmpgefp_p (__CR6_LT_REV, (a2), (a1))
08529
08530 #define vec_any_nlt(a1, a2) __builtin_altivec_vcmpgtfp_p (__CR6_LT_REV, (a2), (a1))
08531
08532 #define vec_any_numeric(a1) __builtin_altivec_vcmpeqfp_p (__CR6_EQ_REV, (a1), (a1))
08533
08534 #define vec_any_out(a1, a2) __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, (a1), (a2))
08535
08536 #endif
08537
08538 #endif