/* You are allowed to undef this for C++ compatability. */
#define vector __vector
-#define bool unsigned
+#define bool signed
#define pixel short
#define __pixel short
#define __ch(x, y, z) __builtin_choose_expr (x, y, z)
+/* These are easy... Same exact arguments. */
+
+#define vec_vaddcuw vec_addc
+#define vec_vand vec_and
+#define vec_vandc vec_andc
+#define vec_vrfip vec_ceil
+#define vec_vcmpbfp vec_cmpb
+#define vec_vcmpgefp vec_cmpge
+#define vec_vctsxs vec_cts
+#define vec_vctuxs vec_ctu
+#define vec_vexptefp vec_expte
+#define vec_vrfim vec_floor
+#define vec_lvx vec_ld
+#define vec_lvxl vec_ldl
+#define vec_vlogefp vec_loge
+#define vec_vmaddfp vec_madd
+#define vec_vmhaddshs vec_madds
+#define vec_vmladduhm vec_mladd
+#define vec_vmhraddshs vec_mradds
+#define vec_vnmsubfp vec_nmsub
+#define vec_vnor vec_nor
+#define vec_vor vec_or
+#define vec_vpkpx vec_packpx
+#define vec_vperm vec_perm
+#define vec_vrefp vec_re
+#define vec_vrfin vec_round
+#define vec_vrsqrtefp vec_rsqrte
+#define vec_vsel vec_sel
+#define vec_vsldoi vec_sld
+#define vec_vsl vec_sll
+#define vec_vslo vec_slo
+#define vec_vspltisb vec_splat_s8
+#define vec_vspltish vec_splat_s16
+#define vec_vspltisw vec_splat_s32
+#define vec_vsr vec_srl
+#define vec_vsro vec_sro
+#define vec_stvx vec_st
+#define vec_stvxl vec_stl
+#define vec_vsubcuw vec_subc
+#define vec_vsum2sws vec_sum2s
+#define vec_vsumsws vec_sums
+#define vec_vrfiz vec_trunc
+#define vec_vxor vec_xor
+
#ifdef __cplusplus
/* Prototypes for builtins that take literals and must always be
return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
}
+/* vec_vaddfp */
+
+inline vector float
+vec_vaddfp (vector float a1, vector float a2)
+{
+ return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
+}
+
+/* vec_vadduwm */
+
+inline vector signed int
+vec_vadduwm (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vadduwm (vector signed int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vadduwm (vector unsigned int a1, vector signed int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vadduwm (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vadduhm */
+
+inline vector signed short
+vec_vadduhm (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vadduhm (vector signed short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vadduhm (vector unsigned short a1, vector signed short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vadduhm (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vaddubm */
+
+inline vector signed char
+vec_vaddubm (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vaddubm (vector signed char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vaddubm (vector unsigned char a1, vector signed char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vaddubm (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_addc */
inline vector unsigned int
return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vaddsws */
+
+inline vector signed int
+vec_vaddsws (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vadduws */
+
+inline vector unsigned int
+vec_vadduws (vector signed int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vadduws (vector unsigned int a1, vector signed int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vadduws (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vaddshs */
+inline vector signed short
+vec_vaddshs (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vadduhs */
+
+inline vector unsigned short
+vec_vadduhs (vector signed short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vadduhs (vector unsigned short a1, vector signed short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vadduhs (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vaddsbs */
+
+inline vector signed char
+vec_vaddsbs (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_vaddubs */
+
+inline vector unsigned char
+vec_vaddubs (vector signed char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vaddubs (vector unsigned char a1, vector signed char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vaddubs (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_and */
inline vector float
return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vavgsw */
+
+inline vector signed int
+vec_vavgsw (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vavguw */
+
+inline vector unsigned int
+vec_vavguw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vavgsh */
+
+inline vector signed short
+vec_vavgsh (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vavguh */
+
+inline vector unsigned short
+vec_vavguh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vavgsb */
+
+inline vector signed char
+vec_vavgsb (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_vavgub */
+
+inline vector unsigned char
+vec_vavgub (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_ceil */
inline vector float
return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
}
+/* vec_vcmpeqfp */
+
+inline vector signed int
+vec_vcmpeqfp (vector float a1, vector float a2)
+{
+ return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
+}
+
+/* vec_vcmpequw */
+
+inline vector signed int
+vec_vcmpequw (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_vcmpequw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vcmpequh */
+
+inline vector signed short
+vec_vcmpequh (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector signed short
+vec_vcmpequh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vcmpequb */
+
+inline vector signed char
+vec_vcmpequb (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector signed char
+vec_vcmpequb (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_cmpge */
inline vector signed int
return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
}
+/* vec_vcmpgtfp */
+
+inline vector signed int
+vec_vcmpgtfp (vector float a1, vector float a2)
+{
+ return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
+}
+
+/* vec_vcmpgtsw */
+
+inline vector signed int
+vec_vcmpgtsw (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vcmpgtuw */
+
+inline vector signed int
+vec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vcmpgtsh */
+
+inline vector signed short
+vec_cmpgtsh (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vcmpgtuh */
+
+inline vector signed short
+vec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vcmpgtsb */
+
+inline vector signed char
+vec_vcmpgtsb (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_vcmpgtub */
+
+inline vector signed char
+vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_cmple */
inline vector signed int
}
inline vector float
-vec_vcfux (vector unsigned int a1, const char a2)
+vec_ctf (vector signed int a1, const char a2)
{
- return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
+ return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
}
+/* vec_vcfsx */
+
inline vector float
-vec_ctf (vector signed int a1, const char a2)
+vec_vcfsx (vector signed int a1, const char a2)
{
return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
}
+/* vec_vcfux */
+
+inline vector float
+vec_vcfux (vector unsigned int a1, const char a2)
+{
+ return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
+}
+
/* vec_cts */
inline vector signed int
return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
}
+/* vec_lvewx */
+
+inline vector float
+vec_lvewx (int a1, float *a2)
+{
+ return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
+}
+
+inline vector signed int
+vec_lvewx (int a1, signed int *a2)
+{
+ return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
+}
+
+inline vector unsigned int
+vec_lvewx (int a1, unsigned int *a2)
+{
+ return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
+}
+
+/* vec_lvehx */
+
+inline vector signed short
+vec_lvehx (int a1, signed short *a2)
+{
+ return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
+}
+
+inline vector unsigned short
+vec_lvehx (int a1, unsigned short *a2)
+{
+ return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
+}
+
+/* vec_lvebx */
+
+inline vector signed char
+vec_lvebx (int a1, signed char *a2)
+{
+ return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
+}
+
+inline vector unsigned char
+vec_lvebx (int a1, unsigned char *a2)
+{
+ return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
+}
+
/* vec_ldl */
inline vector float
}
-inline vector float
-vec_vmaddfp (vector float a1, vector float a2, vector float a3)
-{
- return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
-}
-
/* vec_madds */
inline vector signed short
return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
}
+/* vec_vmaxfp */
+
+inline vector float
+vec_vmaxfp (vector float a1, vector float a2)
+{
+ return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
+}
+
+/* vec_vmaxsw */
+
+inline vector signed int
+vec_vmaxsw (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vmaxuw */
+
+inline vector unsigned int
+vec_vmaxuw (vector signed int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vmaxuw (vector unsigned int a1, vector signed int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vmaxuw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vmaxsh */
+
+inline vector signed short
+vec_vmaxsh (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vmaxuh */
+
+inline vector unsigned short
+vec_vmaxuh (vector signed short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vmaxuh (vector unsigned short a1, vector signed short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vmaxuh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vmaxsb */
+
+inline vector signed char
+vec_vmaxsb (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_vmaxub */
+
+inline vector unsigned char
+vec_vmaxub (vector signed char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vmaxub (vector unsigned char a1, vector signed char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vmaxub (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_mergeh */
inline vector signed char
return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vmrghw */
+
+inline vector float
+vec_vmrghw (vector float a1, vector float a2)
+{
+ return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_vmrghw (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vmrghw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vmrghh */
+
+inline vector signed short
+vec_vmrghh (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vmrghh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vmrghb */
+
+inline vector signed char
+vec_vmrghb (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vmrghb (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_mergel */
inline vector signed char
return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vmrglw */
+
+inline vector float
+vec_vmrglw (vector float a1, vector float a2)
+{
+ return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_vmrglw (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vmrglw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vmrglh */
+
+inline vector signed short
+vec_vmrglh (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vmrglh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vmrglb */
+
+inline vector signed char
+vec_vmrglb (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vmrglb (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_mfvscr */
inline vector unsigned short
return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
}
-/* vec_mladd */
+/* vec_vminfp */
-inline vector signed short
-vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
+inline vector float
+vec_vminfp (vector float a1, vector float a2)
{
- return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+ return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
}
-inline vector signed short
-vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
+/* vec_vminsw */
+
+inline vector signed int
+vec_vminsw (vector signed int a1, vector signed int a2)
{
- return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+ return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
}
-inline vector signed short
-vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
+/* vec_vminuw */
+
+inline vector unsigned int
+vec_vminuw (vector signed int a1, vector unsigned int a2)
{
- return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+ return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
}
-inline vector unsigned short
-vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
+inline vector unsigned int
+vec_vminuw (vector unsigned int a1, vector signed int a2)
{
- return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+ return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
}
-/* vec_mradds */
+inline vector unsigned int
+vec_vminuw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vminsh */
inline vector signed short
-vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
+vec_vminsh (vector signed short a1, vector signed short a2)
{
- return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+ return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
}
-/* vec_msum */
+/* vec_vminuh */
-inline vector unsigned int
-vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
+inline vector unsigned short
+vec_vminuh (vector signed short a1, vector unsigned short a2)
{
- return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
+ return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
}
-inline vector signed int
-vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
+inline vector unsigned short
+vec_vminuh (vector unsigned short a1, vector signed short a2)
{
- return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
+ return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
}
-inline vector unsigned int
-vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
+inline vector unsigned short
+vec_vminuh (vector unsigned short a1, vector unsigned short a2)
{
- return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
+ return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
}
-inline vector signed int
-vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
+/* vec_vminsb */
+
+inline vector signed char
+vec_vminsb (vector signed char a1, vector signed char a2)
{
- return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
+ return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
}
-/* vec_msums */
+/* vec_vminub */
-inline vector unsigned int
+inline vector unsigned char
+vec_vminub (vector signed char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vminub (vector unsigned char a1, vector signed char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vminub (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_mladd */
+
+inline vector signed short
+vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
+{
+ return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+}
+
+inline vector signed short
+vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
+{
+ return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+}
+
+inline vector signed short
+vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
+{
+ return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+}
+
+inline vector unsigned short
+vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
+{
+ return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+}
+
+/* vec_mradds */
+
+inline vector signed short
+vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
+{
+ return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
+}
+
+/* vec_msum */
+
+inline vector unsigned int
+vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
+{
+ return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
+}
+
+inline vector signed int
+vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
+{
+ return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
+}
+
+inline vector unsigned int
+vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
+{
+ return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
+}
+
+inline vector signed int
+vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
+{
+ return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
+}
+
+/* vec_vmsumshm */
+
+inline vector signed int
+vec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3)
+{
+ return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
+}
+
+/* vec_vmsumuhm */
+
+inline vector unsigned int
+vec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
+{
+ return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
+}
+
+/* vec_vmsummbm */
+
+inline vector signed int
+vec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3)
+{
+ return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
+}
+
+/* vec_vmsumubm */
+
+inline vector unsigned int
+vec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
+{
+ return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
+}
+
+/* vec_msums */
+
+inline vector unsigned int
vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
{
return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
}
+/* vec_vmsumshs */
+
+inline vector signed int
+vec_vmsumshs (vector signed short a1, vector signed short a2, vector signed int a3)
+{
+ return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
+}
+
+/* vec_vmsumuhs */
+
+inline vector unsigned int
+vec_vmsumuhs (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
+{
+ return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
+}
+
/* vec_mtvscr */
inline void
return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
}
+/* vec_vmulesh */
+
+inline vector signed int
+vec_vmulesh (vector signed short a1, vector signed short a2)
+{
+ return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vmuleuh */
+
+inline vector unsigned int
+vec_vmuleuh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vmuleub */
+inline vector unsigned short
+vec_vmuleub (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_mulo */
inline vector unsigned short
return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
}
+/* vec_vmulosh */
+
+inline vector signed int
+vec_vmulosh (vector signed short a1, vector signed short a2)
+{
+ return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vmulouh */
+
+inline vector unsigned int
+vec_vmulouh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vmulosb */
+
+inline vector signed short
+vec_vmulosb (vector signed char a1, vector signed char a2)
+{
+ return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_vmuloub */
+
+inline vector unsigned short
+vec_vmuloub (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_nmsub */
inline vector float
return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vpkuwum */
+
+inline vector signed short
+vec_vpkuwum (vector signed int a1, vector signed int a2)
+{
+ return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned short
+vec_vpkuwum (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vpkuhum */
+
+inline vector signed char
+vec_vpkuhum (vector signed short a1, vector signed short a2)
+{
+ return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned char
+vec_vpkuhum (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
+}
+
/* vec_packpx */
inline vector signed short
return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vpkswss */
+
+inline vector signed short
+vec_vpkswss (vector signed int a1, vector signed int a2)
+{
+ return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vpkuwus */
+
+inline vector unsigned short
+vec_vpkuwus (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vpkshss */
+
+inline vector signed char
+vec_vpkshss (vector signed short a1, vector signed short a2)
+{
+ return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vpkuhus */
+
+inline vector unsigned char
+vec_vpkuhus (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
+}
+
/* vec_packsu */
inline vector unsigned char
return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vpkswus */
+
+inline vector unsigned short
+vec_vpkswus (vector signed int a1, vector signed int a2)
+{
+ return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vpkshus */
+
+inline vector unsigned char
+vec_vpkshus (vector signed short a1, vector signed short a2)
+{
+ return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
+}
+
/* vec_perm */
inline vector float
return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vrlw */
+
+inline vector signed int
+vec_vrlw (vector signed int a1, vector unsigned int a2)
+{
+ return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vrlw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vrlh */
+
+inline vector signed short
+vec_vrlh (vector signed short a1, vector unsigned short a2)
+{
+ return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vrlh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vrlb */
+
+inline vector signed char
+vec_vrlb (vector signed char a1, vector unsigned char a2)
+{
+ return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vrlb (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_round */
inline vector float
return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
}
-/* vec_sld */
+/* vec_vslw */
-inline vector float
-vec_sld (vector float a1, vector float a2, const char a3)
+inline vector signed int
+vec_vslw (vector signed int a1, vector unsigned int a2)
{
- return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
+ return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
}
-inline vector float
-vec_vsldoi (vector float a1, vector float a2, const char a3)
+inline vector unsigned int
+vec_vslw (vector unsigned int a1, vector unsigned int a2)
{
- return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
+ return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vslh */
+
+inline vector signed short
+vec_vslh (vector signed short a1, vector unsigned short a2)
+{
+ return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vslh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vslb */
+
+inline vector signed char
+vec_vslb (vector signed char a1, vector unsigned char a2)
+{
+ return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vslb (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_sld */
+
+inline vector float
+vec_sld (vector float a1, vector float a2, const char a3)
+{
+ return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
}
inline vector signed int
return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
}
+/* vec_vspltw */
+
+inline vector float
+vec_vspltw (vector float a1, const char a2)
+{
+ return (vector float) __builtin_altivec_vspltw ((vector signed int) a1, a2);
+}
+
+inline vector signed int
+vec_vspltw (vector signed int a1, const char a2)
+{
+ return (vector signed int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
+}
+
+inline vector unsigned int
+vec_vspltw (vector unsigned int a1, const char a2)
+{
+ return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2);
+}
+
+/* vec_vsplth */
+
+inline vector signed short
+vec_vsplth (vector signed short a1, const char a2)
+{
+ return (vector signed short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
+}
+
+inline vector unsigned short
+vec_vsplth (vector unsigned short a1, const char a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2);
+}
+
+/* vec_vspltb */
+
+inline vector signed char
+vec_vspltb (vector signed char a1, const char a2)
+{
+ return (vector signed char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
+}
+
+inline vector unsigned char
+vec_vspltb (vector unsigned char a1, const char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2);
+}
+
/* vec_splat_s8 */
inline vector signed char
return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vsrw */
+
+inline vector signed int
+vec_vsrw (vector signed int a1, vector unsigned int a2)
+{
+ return (vector signed int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vsrw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vsrw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vsrh */
+
+inline vector signed short
+vec_vsrh (vector signed short a1, vector unsigned short a2)
+{
+ return (vector signed short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vsrh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsrh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vsrb */
+
+inline vector signed char
+vec_vsrb (vector signed char a1, vector unsigned char a2)
+{
+ return (vector signed char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vsrb (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vsrb ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_sra */
inline vector signed char
return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vsraw */
+
+inline vector signed int
+vec_vsraw (vector signed int a1, vector unsigned int a2)
+{
+ return (vector signed int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vsraw (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vsraw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vsrah */
+
+inline vector signed short
+vec_vsrah (vector signed short a1, vector unsigned short a2)
+{
+ return (vector signed short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vsrah (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsrah ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vsrab */
+
+inline vector signed char
+vec_vsrab (vector signed char a1, vector unsigned char a2)
+{
+ return (vector signed char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vsrab (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vsrab ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_srl */
inline vector signed int
__builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
}
+/* vec_stvewx */
+
+inline void
+vec_stvewx (vector float a1, int a2, void *a3)
+{
+ __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stvewx (vector signed int a1, int a2, void *a3)
+{
+ __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stvewx (vector unsigned int a1, int a2, void *a3)
+{
+ __builtin_altivec_stvewx ((vector signed int) a1, a2, (void *) a3);
+}
+
+/* vec_stvehx */
+
+inline void
+vec_stvehx (vector signed short a1, int a2, void *a3)
+{
+ __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stvehx (vector unsigned short a1, int a2, void *a3)
+{
+ __builtin_altivec_stvehx ((vector signed short) a1, a2, (void *) a3);
+}
+
+/* vec_stvebx */
+
+inline void
+vec_stvebx (vector signed char a1, int a2, void *a3)
+{
+ __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
+}
+
+inline void
+vec_stvebx (vector unsigned char a1, int a2, void *a3)
+{
+ __builtin_altivec_stvebx ((vector signed char) a1, a2, (void *) a3);
+}
+
/* vec_stl */
inline void
return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
}
+/* vec_vsubfp */
+
+inline vector float
+vec_vsubfp (vector float a1, vector float a2)
+{
+ return (vector float) __builtin_altivec_vsubfp ((vector float) a1, (vector float) a2);
+}
+
+/* vec_vsubuwm */
+
+inline vector signed int
+vec_vsubuwm (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vsubuwm (vector signed int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vsubuwm (vector unsigned int a1, vector signed int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vsubuwm (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vsubuhm */
+
+inline vector signed short
+vec_vsubuhm (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vsubuhm (vector signed short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vsubuhm (vector unsigned short a1, vector signed short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vsubuhm (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vsububm */
+
+inline vector signed char
+vec_vsububm (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vsububm (vector signed char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vsububm (vector unsigned char a1, vector signed char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vsububm (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2);
+}
+
/* vec_subc */
inline vector unsigned int
return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
}
-/* vec_sum4s */
+/* vec_vsubsws */
-inline vector unsigned int
-vec_sum4s (vector unsigned char a1, vector unsigned int a2)
+inline vector signed int
+vec_vsubsws (vector signed int a1, vector signed int a2)
{
- return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
+ return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
}
-inline vector signed int
-vec_sum4s (vector signed char a1, vector signed int a2)
+/* vec_vsubuws */
+
+inline vector unsigned int
+vec_vsubuws (vector signed int a1, vector unsigned int a2)
{
- return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
+ return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
}
-inline vector signed int
-vec_sum4s (vector signed short a1, vector signed int a2)
+inline vector unsigned int
+vec_vsubuws (vector unsigned int a1, vector signed int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vsubuws (vector unsigned int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vsubshs */
+
+inline vector signed short
+vec_vsubshs (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vsubuhs */
+
+inline vector unsigned short
+vec_vsubuhs (vector signed short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vsubuhs (vector unsigned short a1, vector signed short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vsubuhs */
+
+inline vector unsigned short
+vec_vsubsuhs (vector signed short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vsubsuhs (vector unsigned short a1, vector signed short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vsubsuhs (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vsubsbs */
+
+inline vector signed char
+vec_vsubsbs (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_vsububs */
+
+inline vector unsigned char
+vec_vsubsubs (vector signed char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vsubsubs (vector unsigned char a1, vector signed char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
+}
+
+inline vector unsigned char
+vec_vsubsubs (vector unsigned char a1, vector unsigned char a2)
+{
+ return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_sum4s */
+
+inline vector unsigned int
+vec_sum4s (vector unsigned char a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_sum4s (vector signed char a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
+}
+
+inline vector signed int
+vec_sum4s (vector signed short a1, vector signed int a2)
{
return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
}
+/* vec_vsum4shs */
+
+inline vector signed int
+vec_vsum4shss (vector signed short a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vsum4shs ((vector signed short) a1, (vector signed int) a2);
+}
+
+/* vec_vsum4sbs */
+
+inline vector signed int
+vec_vsum4sbs (vector signed char a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) a1, (vector signed int) a2);
+}
+
+/* vec_vsum4ubs */
+
+inline vector unsigned int
+vec_vsum4ubs (vector unsigned char a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) a1, (vector signed int) a2);
+}
+
/* vec_sum2s */
inline vector signed int
return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
}
+/* vec_vupkhsh */
+
+inline vector signed int
+vec_vupkhsh (vector signed short a1)
+{
+ return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1);
+}
+
+/* vec_vupkhpx */
+
+inline vector unsigned int
+vec_vupkhpx (vector signed short a1)
+{
+ return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1);
+}
+
+/* vec_vupkhsb */
+
+inline vector signed short
+vec_vupkhsb (vector signed char a1)
+{
+ return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1);
+}
+
/* vec_unpackl */
inline vector signed short
return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
}
+inline vector unsigned int
+vec_vupklpx (vector signed short a1)
+{
+ return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1);
+}
+
inline vector signed int
vec_unpackl (vector signed short a1)
{
return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
}
+/* vec_upklsh */
+
+inline vector signed int
+vec_vupklsh (vector signed short a1)
+{
+ return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1);
+}
+
+/* vec_vupklsb */
+
+inline vector signed short
+vec_vupklsb (vector signed char a1)
+{
+ return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1);
+}
+
/* vec_xor */
inline vector float
__ch (__builtin_types_compatible_p (t, vector float), 4, \
__altivec_link_error_invalid_argument ())))))))
+#define vec_vaddubm(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ()))))
+
+#define vec_vadduhm(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ()))))
+
+#define vec_vadduwm(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ()))))
+
+#define vec_vaddfp(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector float) __builtin_altivec_vaddfp ((vector float) (a1), (vector float) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
#define vec_add(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vaddubm ((vector signed char) (a1), (vector signed char) (a2))), \
((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ())
-#define vec_vaddcuw(a1, a2) \
-__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
- ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
-__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
- ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) (a1), (vector signed int) (a2))), \
-__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
- ((vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int ) (a1), (vector signed int ) (a2))), \
- __altivec_link_error_invalid_argument ())))
-
#define vec_adds(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))))))))))
+#define vec_vaddsws(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vadduws(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vadduws ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+
+#define vec_vaddshs(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vadduhs(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+
+#define vec_vaddsbs(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vaddubs(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())))
+
#define vec_and(a1, a2) \
__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
((vector float) __builtin_altivec_vand ((vector signed int) (a1), (vector signed int) (a2))), \
((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))))
+#define vec_vavgsw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vavgsw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vavguw(a1, a2) \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vavguw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vavgsh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vavgsh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vavguh(a1, a2) \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vavguh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vavgsb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vavgsb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vavgub(a1, a2) \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vavgub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
#define vec_ceil(a1) __builtin_altivec_vrfip ((a1))
#define vec_cmpb(a1, a2) __builtin_altivec_vcmpbfp ((a1), (a2))
((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
__altivec_link_error_invalid_argument ())))))))
-#define vec_cmpge(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
+#define vec_vcmpeqfp(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector signed int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vcmpequw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector signed int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+
+#define vec_vcmpequh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector signed short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+
+#define vec_vcmpequb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector signed char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ()))
+
+#define vec_cmpge(a1, a2) (vector signed int) __builtin_altivec_vcmpgefp ((a1), (a2))
#define vec_cmpgt(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
__altivec_link_error_invalid_argument ())))))))
+#define vec_vcmpgtfp(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector signed int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vcmpgtsw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vcmpgtuw(a1, a2) \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vcmpgtsh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vcmpgtuh(a1, a2) \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vcmpgtsb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vcmpgtub(a1, a2) \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
#define vec_cmple(a1, a2) __builtin_altivec_vcmpgefp ((a1), (a2))
#define vec_cmplt(a1, a2) \
((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
__altivec_link_error_invalid_argument ()))
-#define vec_vcfux(a1, a2) __builtin_altivec_vcfux ((vector signed int)(a1), (a2))
+#define vec_vcfsx(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), int, (a2)), \
+ ((vector float) __builtin_altivec_vcfsx ((vector signed int) (a1), (const char) (a2))), \
+ __altivec_link_error_invalid_argument ())
+
+#define vec_vcfux(a1, a2) \
+__ch (__bin_args_eq (vector unsigned int, (a1), int, (a2)), \
+ ((vector float) __builtin_altivec_vcfux ((vector signed int) (a1), (const char) (a2))), \
+ __altivec_link_error_invalid_argument ())
#define vec_cts(a1, a2) __builtin_altivec_vctsxs ((a1), (a2))
#define vec_expte(a1) __builtin_altivec_vexptefp ((a1))
-#define vec_vexptefp(a1) \
-__ch (__un_args_eq (vector float, (a1)), \
- ((vector float) __builtin_altivec_vexptefp ((a1))), \
- __altivec_link_error_invalid_argument ())
-
#define vec_floor(a1) __builtin_altivec_vrfim (a1)
#define vec_ld(a, b) \
((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
__ch (__un_args_eq (signed int [], (b)), \
((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
-__altivec_link_error_invalid_argument ()))))))))))))
+__ch (__un_args_eq (float *, (b)), \
+ ((vector float) __builtin_altivec_lvewx ((a), (b))), \
+__ch (__un_args_eq (float [], (b)), \
+ ((vector float) __builtin_altivec_lvewx ((a), (b))), \
+__altivec_link_error_invalid_argument ()))))))))))))))
+
+#define vec_lvewx(a, b) \
+__ch (__un_args_eq (unsigned int *, (b)), \
+ ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
+__ch (__un_args_eq (unsigned int [], (b)), \
+ ((vector unsigned int) __builtin_altivec_lvewx ((a), (b))), \
+__ch (__un_args_eq (signed int *, (b)), \
+ ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
+__ch (__un_args_eq (signed int [], (b)), \
+ ((vector signed int) __builtin_altivec_lvewx ((a), (b))), \
+__ch (__un_args_eq (float *, (b)), \
+ ((vector float) __builtin_altivec_lvewx ((a), (b))), \
+__ch (__un_args_eq (float [], (b)), \
+ ((vector float) __builtin_altivec_lvewx ((a), (b))), \
+__altivec_link_error_invalid_argument ()))))))
+
+#define vec_lvehx(a, b) \
+__ch (__un_args_eq (unsigned short *, (b)), \
+ ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
+__ch (__un_args_eq (unsigned short [], (b)), \
+ ((vector unsigned short) __builtin_altivec_lvehx ((a), (b))), \
+__ch (__un_args_eq (signed short *, (b)), \
+ ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
+__ch (__un_args_eq (signed short [], (b)), \
+ ((vector signed short) __builtin_altivec_lvehx ((a), (b))), \
+__altivec_link_error_invalid_argument ()))))
+
+#define vec_lvebx(a, b) \
+__ch (__un_args_eq (unsigned char *, (b)), \
+ ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
+__ch (__un_args_eq (unsigned char [], (b)), \
+ ((vector unsigned char) __builtin_altivec_lvebx ((a), (b))), \
+__ch (__un_args_eq (signed char *, (b)), \
+ ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
+__ch (__un_args_eq (signed char [], (b)), \
+ ((vector signed char) __builtin_altivec_lvebx ((a), (b))), \
+__altivec_link_error_invalid_argument ()))))
#define vec_ldl(a, b) \
__ch (__un_args_eq (vector unsigned char *, (b)), \
#define vec_madd(a1, a2, a3) (__builtin_altivec_vmaddfp ((a1), (a2), (a3)))
-#define vec_vmaddfp(a1, a2, a3) ((vector float)(__builtin_altivec_vmaddfp ((a1), (a2), (a3))))
-
#define vec_madds(a1, a2, a3) __builtin_altivec_vmhaddshs ((a1), (a2), (a3))
#define vec_max(a1, a2) \
((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
__altivec_link_error_invalid_argument ())))))))))))))
+#define vec_vmaxfp(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector float) __builtin_altivec_vmaxfp ((vector float) (a1), (vector float) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmaxsw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmaxuw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_vmaxsh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmaxuh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_vmaxsb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmaxub(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
#define vec_mergeh(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ())))))))
+#define vec_vmrghw(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector float) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_vmrghh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vmrghb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
#define vec_mergel(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ())))))))
+#define vec_vmrglw(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector float) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_vmrglh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vmrglb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
#define vec_mfvscr() (((vector unsigned short) __builtin_altivec_mfvscr ()))
#define vec_min(a1, a2) \
((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
__altivec_link_error_invalid_argument ())))))))))))))
+#define vec_vminfp(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector float) __builtin_altivec_vminfp ((vector float) (a1), (vector float) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vminsw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vminuw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vminuw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_vminsh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vminuh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vminuh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_vminsb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vminub(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vminub ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
#define vec_mladd(a1, a2, a3) \
__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed short, (a3)), \
((vector signed short) __builtin_altivec_vmladduhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed short) (a3))), \
((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
__altivec_link_error_invalid_argument ()))))
+#define vec_vmsumshm(a1, a2, a3) \
+__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
+ ((vector signed int) __builtin_altivec_vmsumshm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmsumuhm(a1, a2, a3) \
+__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
+ ((vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmsummbm(a1, a2, a3) \
+__ch (__tern_args_eq (vector signed char, (a1), vector unsigned char, (a2), vector signed int, (a3)), \
+ ((vector signed int) __builtin_altivec_vmsummbm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_msumubm(a1, a2, a3) \
+__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned int, (a3)), \
+ ((vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) (a1), (vector signed char) (a2), (vector signed int) (a3))), \
+__altivec_link_error_invalid_argument ())
+
#define vec_msums(a1, a2, a3) \
__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
__altivec_link_error_invalid_argument ()))
+#define vec_vmsumshs(a1, a2, a3) \
+__ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vector signed int, (a3)), \
+ ((vector signed int) __builtin_altivec_vmsumshs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmsumuhs(a1, a2, a3) \
+__ch (__tern_args_eq (vector unsigned short, (a1), vector unsigned short, (a2), vector unsigned int, (a3)), \
+ ((vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) (a1), (vector signed short) (a2), (vector signed int) (a3))), \
+__altivec_link_error_invalid_argument ())
+
#define vec_mtvscr(a1) \
__ch (__un_args_eq (vector signed int, (a1)), \
__builtin_altivec_mtvscr ((vector signed int) (a1)), \
((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
__altivec_link_error_invalid_argument ()))))
+#define vec_vmulesh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed int) __builtin_altivec_vmulesh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmuleuh(a1, a2) \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmulesb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed short) __builtin_altivec_vmulesb ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmuleub(a1, a2) \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())
+
#define vec_mulo(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
__altivec_link_error_invalid_argument ()))))
+#define vec_vmulosh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed int) __builtin_altivec_vmulosh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmulouh(a1, a2) \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_mulosb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed short) __builtin_altivec_vmulosb ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vmuloub(a1, a2) \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())
+
#define vec_nmsub(a1, a2, a3) \
__ch (__tern_args_eq (vector float, ((a1)), vector float, ((a2)) , vector float, ((a3))), \
((vector float) __builtin_altivec_vnmsubfp ((vector float) ((a1)), (vector float) ((a2)), (vector float)((a3)))), \
((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))
+#define vec_vpkuwum(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vpkuhum(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
#define vec_packpx(a1, a2) __builtin_altivec_vpkpx ((a1), (a2))
#define vec_packs(a1, a2) \
((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))
+#define vec_vpkswss(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed short) __builtin_altivec_vpkswss ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vpkuwus(a1, a2) \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vpkshss(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed char) __builtin_altivec_vpkshss ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vpkuhus(a1, a2) \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
#define vec_packsu(a1, a2) \
__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
((vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) (a1), (vector signed short) (a2))), \
((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))
+#define vec_vpkswus(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vpkshus(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
#define vec_perm(a1, a2, a3) \
__ch (__tern_args_eq (vector float, (a1), vector float, (a2), vector unsigned char, (a3)), \
((vector float) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
__altivec_link_error_invalid_argument ())))))))
-#define vec_vperm(a1, a2, a3) \
-__ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), vector unsigned char, (a3)), \
- ((vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) (a1), (vector signed int) (a2), (vector signed char) (a3))), \
- __altivec_link_error_invalid_argument ())
-
#define vec_re(a1) __builtin_altivec_vrefp ((a1))
-#define vec_vrefp(a1) __builtin_altivec_vrefp ((a1))
-
#define vec_rl(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))))
+#define vec_vrlw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector signed int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vrlw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vrlh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector signed short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vrlh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vrlb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector signed char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vrlb ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
#define vec_round(a1) __builtin_altivec_vrfin ((a1))
#define vec_rsqrte(a1) __builtin_altivec_vrsqrtefp ((a1))
((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))))
-#define vec_vsldoi(a1,a2,a3) ((vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) (a1), (vector signed int) (a2), (const char) (a3)))
+#define vec_vslw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector signed int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vslw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vslh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector signed short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vslh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vslb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector signed char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vslb ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ()))
#define vec_sld(a1, a2, a3) \
__ch (__tern_args_eq (vector float, (a1), vector float, (a2), int, (a3)), \
((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
__altivec_link_error_invalid_argument ())))))))
+#define vec_vspltw(a1, a2) \
+__ch (__bin_args_eq (vector float, ((a1)), int, ((a2))), \
+ ((vector float) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+__ch (__bin_args_eq (vector signed int, ((a1)), int, ((a2))), \
+ ((vector signed int) __builtin_altivec_vspltw ((vector signed int) ((a1)), (const char) ((a2)))), \
+__ch (__bin_args_eq (vector unsigned int, ((a1)), int, ((a2))), \
+ ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const char) ((a2)))), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_vsplth(a1, a2) \
+__ch (__bin_args_eq (vector signed short, ((a1)), int, ((a2))), \
+ ((vector signed short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
+__ch (__bin_args_eq (vector unsigned short, ((a1)), int, ((a2))), \
+ ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) ((a1)), (const char) ((a2)))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vspltb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, ((a1)), int, ((a2))), \
+ ((vector signed char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
+__ch (__bin_args_eq (vector unsigned char, ((a1)), int, ((a2))), \
+ ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) ((a1)), (const char) ((a2)))), \
+__altivec_link_error_invalid_argument ()))
+
#define vec_splat_s8(a1) __builtin_altivec_vspltisb ((a1))
#define vec_splat_s16(a1) __builtin_altivec_vspltish ((a1))
((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))))
+#define vec_vsrw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vsrw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vsrh(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector signed short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vsrh ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vsrb(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector signed char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vsrb ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
#define vec_sra(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))))
+#define vec_vsraw(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vsraw ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vsrah(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector signed short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vsrah ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_vsrab(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector signed char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vsrab ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ()))
+
#define vec_srl(a1, a2) \
__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
((vector signed int) __builtin_altivec_vsr ((vector signed int) (a1), (vector signed int) (a2))), \
__builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
__altivec_link_error_invalid_argument ())))))))
+#define vec_stvewx(a, b, c) \
+__ch (__un_args_eq (vector unsigned int, (a)), \
+ __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
+__ch (__un_args_eq (vector signed int, (a)), \
+ __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
+__ch (__un_args_eq (vector float, (a)), \
+ __builtin_altivec_stvewx ((vector signed int) (a), (b), (c)), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_stvehx(a, b, c) \
+__ch (__un_args_eq (vector unsigned short, (a)), \
+ __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
+__ch (__un_args_eq (vector signed short, (a)), \
+ __builtin_altivec_stvehx ((vector signed short) (a), (b), (c)), \
+__altivec_link_error_invalid_argument ()))
+
+#define vec_stvebx(a, b, c) \
+__ch (__un_args_eq (vector unsigned char, (a)), \
+ __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
+__ch (__un_args_eq (vector signed char, (a)), \
+ __builtin_altivec_stvebx ((vector signed char) (a), (b), (c)), \
+__altivec_link_error_invalid_argument ()))
+
#define vec_sub(a1, a2) \
__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
__altivec_link_error_invalid_argument ())))))))))))))
+#define vec_vsubfp(a1, a2) \
+__ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \
+ ((vector float) __builtin_altivec_vsubfp ((vector float) (a1), (vector float) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vsubuwm(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ()))))
+
+#define vec_vsubuhm(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ()))))
+
+#define vec_vsububm(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vsububm ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ()))))
+
#define vec_subc(a1, a2) ((vector unsigned int) __builtin_altivec_vsubcuw ((vector unsigned int) (a1), (vector unsigned int) (a2)))
#define vec_subs(a1, a2) \
((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ()))))))))))))
+#define vec_vsubsws(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vsubuws(a1, a2) \
+__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector signed int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
+__ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_vsubshs(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed short, (a2)), \
+ ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vsubuhs(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector signed short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
+__ch (__bin_args_eq (vector unsigned short, (a1), vector unsigned short, (a2)), \
+ ((vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) (a1), (vector signed short) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
+#define vec_vsubsbs(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \
+ ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vsububs(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector signed char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned char, (a2)), \
+ ((vector unsigned char) __builtin_altivec_vsububs ((vector signed char) (a1), (vector signed char) (a2))), \
+__altivec_link_error_invalid_argument ())))
+
#define vec_sum4s(a1, a2) \
__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
__altivec_link_error_invalid_argument ())))
+#define vec_vsum4shs(a1, a2) \
+__ch (__bin_args_eq (vector signed short, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsum4shs ((vector signed short) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vsum4sbs(a1, a2) \
+__ch (__bin_args_eq (vector signed char, (a1), vector signed int, (a2)), \
+ ((vector signed int) __builtin_altivec_vsum4sbs ((vector signed char) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vsum4ubs(a1, a2) \
+__ch (__bin_args_eq (vector unsigned char, (a1), vector unsigned int, (a2)), \
+ ((vector unsigned int) __builtin_altivec_vsum4ubs ((vector signed char) (a1), (vector signed int) (a2))), \
+__altivec_link_error_invalid_argument ())
+
#define vec_sum2s(a1, a2) __builtin_altivec_vsum2sws ((a1), (a2))
#define vec_sums(a1, a2) __builtin_altivec_vsumsws ((a1), (a2))
((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
__altivec_link_error_invalid_argument ())))
+#define vec_vupkhsh(a1) \
+__ch (__un_args_eq (vector signed short, (a1)), \
+ ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vupkhpx(a1) \
+__ch (__un_args_eq (vector signed short, (a1)), \
+ ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vupkhsb(a1) \
+__ch (__un_args_eq (vector signed char, (a1)), \
+ ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \
+__altivec_link_error_invalid_argument ())
+
#define vec_unpackl(a1) \
__ch (__un_args_eq (vector signed char, (a1)), \
((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
__altivec_link_error_invalid_argument ())))
+#define vec_vupklsh(a1) \
+__ch (__un_args_eq (vector signed short, (a1)), \
+ ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vupklpx(a1) \
+__ch (__un_args_eq (vector signed short, (a1)), \
+ ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \
+__altivec_link_error_invalid_argument ())
+
+#define vec_vupklsb(a1) \
+__ch (__un_args_eq (vector signed char, (a1)), \
+ ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \
+__altivec_link_error_invalid_argument ())
+
#define vec_xor(a1, a2) \
__ch (__bin_args_eq (vector float, ((a1)), vector float, ((a2))), \
((vector float) __builtin_altivec_vxor ((vector signed int) ((a1)), (vector signed int) ((a2)))), \