aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2002-04-24 10:57:33 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2002-04-24 10:57:33 +0000
commit4287a893480b74be977b5ac56a595eae3350637a (patch)
tree04ae220ecf65c4fcfcae63a36d4dc4a2b3faa266
parent985723ce6c6c8b35a35e9a7a78dc96d376402667 (diff)
downloadgcc-4287a893480b74be977b5ac56a595eae3350637a.zip
gcc-4287a893480b74be977b5ac56a595eae3350637a.tar.gz
gcc-4287a893480b74be977b5ac56a595eae3350637a.tar.bz2
altivec.h: Cleanup file.
2002-04-24 Aldy Hernandez <aldyh@redhat.com> * config/rs6000/altivec.h: Cleanup file. Add non individual variants. (vec_vaddubm): New. (vec_vadduhm): New. (vec_vadduwm): New. (vec_vaddfp): New. (vec_vaddcuw): New. (vec_vaddubs): New. (vec_vaddsbs): New. (vec_vadduhs): New. (vec_vadduws): New. (vec_vaddsws): New. (vec_vand): New. (vec_vandc): New. (vec_vavgub): New. (vec_vavgsb): New. (vec_vavguh): New. (vec_vavgsh): New. (vec_vavguw): New. (vec_vavgsw): New. (vec_vrfip): New. (vec_vcmpbfp): New. (vec_vcmpequb): New. (vec_vcmpequh): New. (vec_vcmpequw): New. (vec_vcmpeqfp): New. (vec_vcmpgefp): New. (vec_vcmpgtub): New. (vec_vcmpgtsb): New. (vec_vcmpgtuh): New. (vec_vcmpgtsh): New. (vec_vcmpgtuw): New. (vec_vcmpgtsw): New. (vec_vcmpgtfp): New. (vec_vcmpgefp): New. (vec_vcfux): New. (vec_vcfsx): New. (vec_vctsxs): New. (vec_vctuxs): New. (vec_vexptefp): New. (vec_vrfim): New. (vec_lvx): New. (vec_lvebx): New. (vec_lvehx): New. (vec_lde): Add vector float variant. (vec_lvewx): New. (vec_lvxl): New. (vec_vlogefp): New. (vec_vmaddfp): New. (vec_vmhaddshs): New. (vec_vmaxub): New. (vec_vmaxsb): New. (vec_vmaxuh): New. (vec_vmaxsh): New. (vec_vmaxuw): New. (vec_vmaxsw): New. (vec_vmaxsw): New. (vec_vmaxfp): New. (vec_vmrghb): New. (vec_vmrghh): New. (vec_vmrghw): New. (vec_vmrglb): New. (vec_vmrglh): New. (vec_vmrglw): New. (vec_vminub): New. (vec_vminsb): New. (vec_vminuh): New. (vec_vminsh): New. (vec_vminuw): New. (vec_vminsw): New. (vec_vminfp): New. (vec_vmladduhm): New. (vec_vmhraddshs): New. (vec_msumubm): New. (vec_vmsummbm): New. (vec_vmsumuhm): New. (vec_vmsumshm): New. (vec_vmsumuhs): New. (vec_vmsumshs): New. (vec_vmuleub): New. (vec_vmulesb): New. (vec_vmuleuh): New. (vec_vmulesh): New. (vec_vmuloub): New. (vec_mulosb): New. (vec_vmulouh): New. (vec_vmulosh): New. (vec_vnmsubfp): New. (vec_vnor): New. (vec_vor): New. (vec_vpkuhum): New. (vec_vpkuwum): New. (vec_vpkpx): New. (vec_vpkuhus): New. (vec_vpkshss): New. (vec_vpkuwus): New. (vec_vpkswss): New. (vec_vpkshus): New. (vec_vpkswus): New. (vec_vperm): New. (vec_vrefp): New. (vec_vrlb): New. (vec_vrlh): New. (vec_vrlw): New. (vec_vrfin): New. (vec_vrsqrtefp): New. (vec_vsel): New. (vec_vslb): New. (vec_vslh): New. (vec_vslw): New. (vec_vsldoi): New. (vec_vsl): New. (vec_vslo): New. (vec_vspltb): New. (vec_vsplth): New. (vec_vspltw): New. (vec_vspltisb): New. (vec_vspltish): New. (vec_vspltisw): New. (vec_vsrb): New. (vec_vsrh): New. (vec_vsrw): New. (vec_vsrab): New. (vec_vsrah): New. (vec_vsraw): New. (vec_vsr): New. (vec_vsro): New. (vec_stvx): New. (vec_stvebx): New. (vec_stvehx): New. (vec_stvewx): New. (vec_stvxl): New. (vec_vsububm): New. (vec_vsubuhm): New. (vec_vsubuwm): New. (vec_vsubfp): New. (vec_vsubcuw): New. (vec_vsububs): New. (vec_vsubsbs): New. (vec_vsubuhs): New. (vec_vsubshs): New. (vec_vsubuws): New. (vec_vsubsws): New. (vec_vsum4ubs): New. (vec_vsum4sbs): New. (vec_vsum4shs): New. (vec_vsum2sws): New. (vec_vsumsws): New. (vec_vrfiz): New. (vec_vupkhsb): New. (vec_vupkhpx): New. (vec_vupkhsh): New. (vec_vupklsb): New. (vec_vupklpx): New. (vec_vupklsh): New. (vec_vxor): New. From-SVN: r52711
-rw-r--r--gcc/ChangeLog159
-rw-r--r--gcc/config/rs6000/altivec.h2178
2 files changed, 2295 insertions, 42 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e62f858..c3916cb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,162 @@
+2002-04-24 Aldy Hernandez <aldyh@redhat.com>
+
+ * config/rs6000/altivec.h: Cleanup file. Add non individual
+ variants.
+ (vec_vaddubm): New.
+ (vec_vadduhm): New.
+ (vec_vadduwm): New.
+ (vec_vaddfp): New.
+ (vec_vaddcuw): New.
+ (vec_vaddubs): New.
+ (vec_vaddsbs): New.
+ (vec_vadduhs): New.
+ (vec_vadduws): New.
+ (vec_vaddsws): New.
+ (vec_vand): New.
+ (vec_vandc): New.
+ (vec_vavgub): New.
+ (vec_vavgsb): New.
+ (vec_vavguh): New.
+ (vec_vavgsh): New.
+ (vec_vavguw): New.
+ (vec_vavgsw): New.
+ (vec_vrfip): New.
+ (vec_vcmpbfp): New.
+ (vec_vcmpequb): New.
+ (vec_vcmpequh): New.
+ (vec_vcmpequw): New.
+ (vec_vcmpeqfp): New.
+ (vec_vcmpgefp): New.
+ (vec_vcmpgtub): New.
+ (vec_vcmpgtsb): New.
+ (vec_vcmpgtuh): New.
+ (vec_vcmpgtsh): New.
+ (vec_vcmpgtuw): New.
+ (vec_vcmpgtsw): New.
+ (vec_vcmpgtfp): New.
+ (vec_vcmpgefp): New.
+ (vec_vcfux): New.
+ (vec_vcfsx): New.
+ (vec_vctsxs): New.
+ (vec_vctuxs): New.
+ (vec_vexptefp): New.
+ (vec_vrfim): New.
+ (vec_lvx): New.
+ (vec_lvebx): New.
+ (vec_lvehx): New.
+ (vec_lde): Add vector float variant.
+ (vec_lvewx): New.
+ (vec_lvxl): New.
+ (vec_vlogefp): New.
+ (vec_vmaddfp): New.
+ (vec_vmhaddshs): New.
+ (vec_vmaxub): New.
+ (vec_vmaxsb): New.
+ (vec_vmaxuh): New.
+ (vec_vmaxsh): New.
+ (vec_vmaxuw): New.
+ (vec_vmaxsw): New.
+ (vec_vmaxsw): New.
+ (vec_vmaxfp): New.
+ (vec_vmrghb): New.
+ (vec_vmrghh): New.
+ (vec_vmrghw): New.
+ (vec_vmrglb): New.
+ (vec_vmrglh): New.
+ (vec_vmrglw): New.
+ (vec_vminub): New.
+ (vec_vminsb): New.
+ (vec_vminuh): New.
+ (vec_vminsh): New.
+ (vec_vminuw): New.
+ (vec_vminsw): New.
+ (vec_vminfp): New.
+ (vec_vmladduhm): New.
+ (vec_vmhraddshs): New.
+ (vec_msumubm): New.
+ (vec_vmsummbm): New.
+ (vec_vmsumuhm): New.
+ (vec_vmsumshm): New.
+ (vec_vmsumuhs): New.
+ (vec_vmsumshs): New.
+ (vec_vmuleub): New.
+ (vec_vmulesb): New.
+ (vec_vmuleuh): New.
+ (vec_vmulesh): New.
+ (vec_vmuloub): New.
+ (vec_mulosb): New.
+ (vec_vmulouh): New.
+ (vec_vmulosh): New.
+ (vec_vnmsubfp): New.
+ (vec_vnor): New.
+ (vec_vor): New.
+ (vec_vpkuhum): New.
+ (vec_vpkuwum): New.
+ (vec_vpkpx): New.
+ (vec_vpkuhus): New.
+ (vec_vpkshss): New.
+ (vec_vpkuwus): New.
+ (vec_vpkswss): New.
+ (vec_vpkshus): New.
+ (vec_vpkswus): New.
+ (vec_vperm): New.
+ (vec_vrefp): New.
+ (vec_vrlb): New.
+ (vec_vrlh): New.
+ (vec_vrlw): New.
+ (vec_vrfin): New.
+ (vec_vrsqrtefp): New.
+ (vec_vsel): New.
+ (vec_vslb): New.
+ (vec_vslh): New.
+ (vec_vslw): New.
+ (vec_vsldoi): New.
+ (vec_vsl): New.
+ (vec_vslo): New.
+ (vec_vspltb): New.
+ (vec_vsplth): New.
+ (vec_vspltw): New.
+ (vec_vspltisb): New.
+ (vec_vspltish): New.
+ (vec_vspltisw): New.
+ (vec_vsrb): New.
+ (vec_vsrh): New.
+ (vec_vsrw): New.
+ (vec_vsrab): New.
+ (vec_vsrah): New.
+ (vec_vsraw): New.
+ (vec_vsr): New.
+ (vec_vsro): New.
+ (vec_stvx): New.
+ (vec_stvebx): New.
+ (vec_stvehx): New.
+ (vec_stvewx): New.
+ (vec_stvxl): New.
+ (vec_vsububm): New.
+ (vec_vsubuhm): New.
+ (vec_vsubuwm): New.
+ (vec_vsubfp): New.
+ (vec_vsubcuw): New.
+ (vec_vsububs): New.
+ (vec_vsubsbs): New.
+ (vec_vsubuhs): New.
+ (vec_vsubshs): New.
+ (vec_vsubuws): New.
+ (vec_vsubsws): New.
+ (vec_vsum4ubs): New.
+ (vec_vsum4sbs): New.
+ (vec_vsum4shs): New.
+ (vec_vsum2sws): New.
+ (vec_vsumsws): New.
+ (vec_vrfiz): New.
+ (vec_vupkhsb): New.
+ (vec_vupkhpx): New.
+ (vec_vupkhsh): New.
+ (vec_vupklsb): New.
+ (vec_vupklpx): New.
+ (vec_vupklsh): New.
+ (vec_vxor): New.
+
2002-04-23 Eric Botcazou <ebotcazou@multimania.com>
PR c/5430
diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h
index cbe94d4..85869dc 100644
--- a/gcc/config/rs6000/altivec.h
+++ b/gcc/config/rs6000/altivec.h
@@ -44,7 +44,7 @@ Boston, MA 02111-1307, USA. */
/* You are allowed to undef this for C++ compatability. */
#define vector __vector
-#define bool unsigned
+#define bool signed
#define pixel short
#define __pixel short
@@ -72,6 +72,50 @@ extern int __altivec_link_error_invalid_argument ();
#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
@@ -232,6 +276,92 @@ vec_add (vector float a1, vector float a2)
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
@@ -314,6 +444,89 @@ vec_adds (vector signed int a1, vector signed int a2)
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
@@ -536,6 +749,54 @@ vec_avg (vector signed int a1, vector signed int a2)
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
@@ -596,6 +857,56 @@ vec_cmpeq (vector float a1, vector float a2)
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
@@ -648,6 +959,62 @@ vec_cmpgt (vector float a1, vector float a2)
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
@@ -709,17 +1076,27 @@ vec_ctf (vector unsigned int a1, const char a2)
}
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
@@ -930,6 +1307,54 @@ vec_lde (int a1, unsigned int *a2)
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
@@ -1121,12 +1546,6 @@ vec_madd (vector float a1, vector float a2, vector float a3)
}
-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
@@ -1215,6 +1634,98 @@ vec_max (vector float a1, vector float a2)
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
@@ -1259,6 +1770,54 @@ vec_mergeh (vector unsigned int a1, vector unsigned int a2)
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
@@ -1303,6 +1862,54 @@ vec_mergel (vector unsigned int a1, vector unsigned int a2)
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
@@ -1391,6 +1998,98 @@ vec_min (vector float a1, vector float a2)
return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
}
+/* vec_vminfp */
+
+inline vector float
+vec_vminfp (vector float a1, vector float a2)
+{
+ return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
+}
+
+/* vec_vminsw */
+
+inline vector signed int
+vec_vminsw (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vminuw */
+
+inline vector unsigned int
+vec_vminuw (vector signed int a1, vector unsigned int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
+}
+
+inline vector unsigned int
+vec_vminuw (vector unsigned int a1, vector signed int a2)
+{
+ return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
+}
+
+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_vminsh (vector signed short a1, vector signed short a2)
+{
+ return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vminuh */
+
+inline vector unsigned short
+vec_vminuh (vector signed short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vminuh (vector unsigned short a1, vector signed short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
+}
+
+inline vector unsigned short
+vec_vminuh (vector unsigned short a1, vector unsigned short a2)
+{
+ return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
+}
+
+/* vec_vminsb */
+
+inline vector signed char
+vec_vminsb (vector signed char a1, vector signed char a2)
+{
+ return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
+}
+
+/* vec_vminub */
+
+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
@@ -1451,6 +2150,38 @@ 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
@@ -1465,6 +2196,22 @@ vec_msums (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
@@ -1529,6 +2276,29 @@ vec_mule (vector signed short a1, vector signed short a2)
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
@@ -1555,6 +2325,38 @@ vec_mulo (vector signed short a1, vector signed short a2)
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
@@ -1725,6 +2527,34 @@ vec_pack (vector unsigned int a1, vector unsigned int a2)
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
@@ -1759,6 +2589,38 @@ vec_packs (vector signed int a1, vector signed int a2)
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
@@ -1785,6 +2647,22 @@ vec_packsu (vector signed int a1, vector signed int a2)
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
@@ -1875,6 +2753,48 @@ vec_rl (vector unsigned int a1, vector unsigned int a2)
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
@@ -2015,16 +2935,52 @@ vec_sl (vector unsigned int a1, vector unsigned int a2)
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 unsigned int
+vec_vslw (vector unsigned int a1, vector unsigned int a2)
+{
+ 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_vsldoi (vector float a1, vector float a2, const char a3)
+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);
}
@@ -2305,6 +3261,54 @@ vec_splat (vector unsigned int a1, const char a2)
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
@@ -2391,6 +3395,48 @@ vec_sr (vector unsigned int a1, vector unsigned int a2)
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
@@ -2429,6 +3475,48 @@ vec_sra (vector unsigned int a1, vector unsigned int a2)
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
@@ -2713,6 +3801,54 @@ vec_ste (vector unsigned int a1, int a2, void *a3)
__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
@@ -2837,6 +3973,92 @@ vec_sub (vector float a1, vector float a2)
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
@@ -2919,6 +4141,104 @@ vec_subs (vector signed int a1, vector signed int a2)
return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
}
+/* vec_vsubsws */
+
+inline vector signed int
+vec_vsubsws (vector signed int a1, vector signed int a2)
+{
+ return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2);
+}
+
+/* vec_vsubuws */
+
+inline vector unsigned int
+vec_vsubuws (vector signed int a1, vector unsigned 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 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
@@ -2939,6 +4259,30 @@ 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
@@ -2977,6 +4321,30 @@ vec_unpackh (vector signed short a1)
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
@@ -2985,12 +4353,34 @@ vec_unpackl (vector signed char a1)
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
@@ -4242,6 +5632,44 @@ struct __vec_step_help<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))), \
@@ -4276,15 +5704,6 @@ __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))), \
__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))), \
@@ -4312,6 +5731,48 @@ __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_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))), \
@@ -4407,6 +5868,36 @@ __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_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))
@@ -4428,7 +5919,33 @@ __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_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)), \
@@ -4447,6 +5964,41 @@ __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_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) \
@@ -4473,7 +6025,15 @@ __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) __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))
@@ -4493,11 +6053,6 @@ __ch (__bin_args_eq (vector signed int, (a1), int, (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) \
@@ -4584,7 +6139,48 @@ __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))), \
-__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)), \
@@ -4653,8 +6249,6 @@ __altivec_link_error_invalid_argument ()))))))))))))))))))))))))))))
#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) \
@@ -4686,6 +6280,53 @@ __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_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))), \
@@ -4703,6 +6344,29 @@ __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_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))), \
@@ -4720,6 +6384,29 @@ __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_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) \
@@ -4751,6 +6438,53 @@ __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_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))), \
@@ -4775,6 +6509,26 @@ __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vect
((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))), \
@@ -4782,6 +6536,16 @@ __ch (__tern_args_eq (vector signed short, (a1), vector signed short, (a2), vect
((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)), \
@@ -4808,6 +6572,26 @@ __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_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))), \
@@ -4819,6 +6603,26 @@ __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_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)))), \
@@ -4885,6 +6689,20 @@ __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_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) \
@@ -4898,6 +6716,26 @@ __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_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))), \
@@ -4909,6 +6747,16 @@ __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_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))), \
@@ -4926,15 +6774,8 @@ __ch (__tern_args_eq (vector unsigned char, (a1), vector unsigned char, (a2), ve
((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))), \
@@ -4950,6 +6791,27 @@ __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_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))
@@ -5000,7 +6862,26 @@ __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_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)), \
@@ -5106,6 +6987,29 @@ __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_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))
@@ -5133,6 +7037,27 @@ __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_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))), \
@@ -5148,6 +7073,27 @@ __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_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))), \
@@ -5241,6 +7187,29 @@ __ch (__un_args_eq (vector float, (a)), \
__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))), \
@@ -5270,6 +7239,44 @@ __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_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) \
@@ -5299,6 +7306,48 @@ __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_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))), \
@@ -5308,6 +7357,21 @@ __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_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))
@@ -5323,6 +7387,21 @@ __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_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))), \
@@ -5332,6 +7411,21 @@ __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_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)))), \