diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2002-04-24 10:57:33 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2002-04-24 10:57:33 +0000 |
commit | 4287a893480b74be977b5ac56a595eae3350637a (patch) | |
tree | 04ae220ecf65c4fcfcae63a36d4dc4a2b3faa266 | |
parent | 985723ce6c6c8b35a35e9a7a78dc96d376402667 (diff) | |
download | gcc-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/ChangeLog | 159 | ||||
-rw-r--r-- | gcc/config/rs6000/altivec.h | 2178 |
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)))), \ |