From: Janis Johnson Date: Fri, 23 Jul 2004 18:32:06 +0000 (+0000) Subject: altivec.h (vec_vadduwm): (vec_vadduwm... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e0b9f33575839952b119bf9c9e7e8c7c97bd9588;p=gcc.git altivec.h (vec_vadduwm): (vec_vadduwm... 2004-07-23 Janis Johnson * config/rs6000/altivec.h (vec_vadduwm): (vec_vadduwm, vec_vadduhm, vec_vaddubm, vec_vsubuwm, vec_vsubuhm, vec_vsububm): Fix types used for vector bool and/or vector pixel, add C++ and C missing support. (vec_vaddsws, vec_vaddshs, vec_vaddsbs, vec_vmaxsw, vec_vmaxsh, vec_vmaxsb, vec_vmrghw, vec_vmrghh, vec_vmrghb, vec_vmrglw, vec_vmrglh, vec_vmrglb, vec_vminsw, vec_vminsh, vec_vminsb, vec_vpkuwum, vec_vpkuhum, vec_vspltw, vec_vsplth, vec_vspltb, vec_vsubsws, vec_vsubshs, vec_vsubsbs, vec_vupklsh, vec_vupkhsh, vec_vupklsb): Add missing C++ and C support for vector bool and/or vector pixel. (vec_vadduws, vec_vadduhs, vec_vaddubs, vec_vcmpeqfp, vec_vcmpequw, vec_vcmpequh, vec_vcmpequb, vec_vcmpgtfp, vec_vcmpgtsw, vec_vcmpgtuw, vec_vcmpgtsh, vec_vcmpgtuh, vec_vcmpgtsb, vec_vcmpgtub, vec_vmaxuw, vec_vmaxuh, vec_vmaxub, vec_vminuw, vec_vminuh, vec_vminub, vec_vsubuws, vec_vsubuhs, vec_vsububs, vec_vupkhpx, vec_vupklpx): Fix C++ and C types used for vector bool and/or vector pixel. (vec_st, vec_stl): Add C++ support for vector pixel. (vec_unpackh, vec_unpackl, vec_any_ge): Fix C++ support for vector bool. (vec_all_ne): Add C++ support for vector pixel. From-SVN: r85090 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f181f8d680c..e454d142d33 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,24 @@ 2004-07-23 Janis Johnson + * config/rs6000/altivec.h (vec_vadduwm): (vec_vadduwm, vec_vadduhm, + vec_vaddubm, vec_vsubuwm, vec_vsubuhm, vec_vsububm): Fix types used + for vector bool and/or vector pixel, add C++ and C missing support. + (vec_vaddsws, vec_vaddshs, vec_vaddsbs, vec_vmaxsw, vec_vmaxsh, + vec_vmaxsb, vec_vmrghw, vec_vmrghh, vec_vmrghb, vec_vmrglw, vec_vmrglh, + vec_vmrglb, vec_vminsw, vec_vminsh, vec_vminsb, vec_vpkuwum, + vec_vpkuhum, vec_vspltw, vec_vsplth, vec_vspltb, vec_vsubsws, + vec_vsubshs, vec_vsubsbs, vec_vupklsh, vec_vupkhsh, vec_vupklsb): Add + missing C++ and C support for vector bool and/or vector pixel. + (vec_vadduws, vec_vadduhs, vec_vaddubs, vec_vcmpeqfp, vec_vcmpequw, + vec_vcmpequh, vec_vcmpequb, vec_vcmpgtfp, vec_vcmpgtsw, vec_vcmpgtuw, + vec_vcmpgtsh, vec_vcmpgtuh, vec_vcmpgtsb, vec_vcmpgtub, vec_vmaxuw, + vec_vmaxuh, vec_vmaxub, vec_vminuw, vec_vminuh, vec_vminub, + vec_vsubuws, vec_vsubuhs, vec_vsububs, vec_vupkhpx, vec_vupklpx): Fix + C++ and C types used for vector bool and/or vector pixel. + (vec_st, vec_stl): Add C++ support for vector pixel. + (vec_unpackh, vec_unpackl, vec_any_ge): Fix C++ support for vector bool. + (vec_all_ne): Add C++ support for vector pixel. + * config/rs6000/altivec.h (vec_vcmpgtsh): Fix C++ function name. (vec_vmulesb): Add missing C++ function. (vec_perm): Fix type of third argument in C++ function. diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h index 6b09d7b0e86..cda0a5c2009 100644 --- a/gcc/config/rs6000/altivec.h +++ b/gcc/config/rs6000/altivec.h @@ -226,10 +226,14 @@ inline vector unsigned char vec_splat_u8 (const int) __attribute__ ((always_inli inline vector unsigned short vec_splat_u16 (const int) __attribute__ ((always_inline)); inline vector unsigned int vec_splat_u32 (const int) __attribute__ ((always_inline)); inline vector float vec_vspltw (vector float a1, const int a2) __attribute__ ((always_inline)); +inline vector bool int vec_vspltw (vector bool int a1, const int a2) __attribute__ ((always_inline)); inline vector signed int vec_vspltw (vector signed int a1, const int a2) __attribute__ ((always_inline)); inline vector unsigned int vec_vspltw (vector unsigned int a1, const int a2) __attribute__ ((always_inline)); +inline vector bool short vec_vsplth (vector bool short a1, const int a2) __attribute__ ((always_inline)); inline vector signed short vec_vsplth (vector signed short a1, const int a2) __attribute__ ((always_inline)); inline vector unsigned short vec_vsplth (vector unsigned short a1, const int a2) __attribute__ ((always_inline)); +inline vector pixel vec_vsplth (vector pixel a1, const int a2) __attribute__ ((always_inline)); +inline vector bool char vec_vspltb (vector bool char a1, const int a2) __attribute__ ((always_inline)); inline vector signed char vec_vspltb (vector signed char a1, const int a2) __attribute__ ((always_inline)); inline vector unsigned char vec_vspltb (vector unsigned char a1, const int a2) __attribute__ ((always_inline)); @@ -481,6 +485,18 @@ vec_vaddfp (vector float a1, vector float a2) /* vec_vadduwm */ +inline vector signed int +vec_vadduwm (vector bool int a1, vector signed int a2) +{ + return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); +} + +inline vector signed int +vec_vadduwm (vector signed int a1, vector bool int a2) +{ + return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); +} + inline vector signed int vec_vadduwm (vector signed int a1, vector signed int a2) { @@ -488,13 +504,13 @@ vec_vadduwm (vector signed int a1, vector signed int a2) } inline vector unsigned int -vec_vadduwm (vector signed int a1, vector unsigned int a2) +vec_vadduwm (vector bool 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) +vec_vadduwm (vector unsigned int a1, vector bool int a2) { return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2); } @@ -507,6 +523,18 @@ vec_vadduwm (vector unsigned int a1, vector unsigned int a2) /* vec_vadduhm */ +inline vector signed short +vec_vadduhm (vector bool short a1, vector signed short a2) +{ + return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); +} + +inline vector signed short +vec_vadduhm (vector signed short a1, vector bool short a2) +{ + return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); +} + inline vector signed short vec_vadduhm (vector signed short a1, vector signed short a2) { @@ -514,13 +542,13 @@ vec_vadduhm (vector signed short a1, vector signed short a2) } inline vector unsigned short -vec_vadduhm (vector signed short a1, vector unsigned short a2) +vec_vadduhm (vector bool 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) +vec_vadduhm (vector unsigned short a1, vector bool short a2) { return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2); } @@ -533,6 +561,18 @@ vec_vadduhm (vector unsigned short a1, vector unsigned short a2) /* vec_vaddubm */ +inline vector signed char +vec_vaddubm (vector bool char a1, vector signed char a2) +{ + return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); +} + +inline vector signed char +vec_vaddubm (vector signed char a1, vector bool char a2) +{ + return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); +} + inline vector signed char vec_vaddubm (vector signed char a1, vector signed char a2) { @@ -540,13 +580,13 @@ vec_vaddubm (vector signed char a1, vector signed char a2) } inline vector unsigned char -vec_vaddubm (vector signed char a1, vector unsigned char a2) +vec_vaddubm (vector bool 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) +vec_vaddubm (vector unsigned char a1, vector bool char a2) { return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2); } @@ -677,6 +717,18 @@ vec_adds (vector signed int a1, vector signed int a2) /* vec_vaddsws */ +inline vector signed int +vec_vaddsws (vector bool int a1, vector signed int a2) +{ + return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2); +} + +inline vector signed int +vec_vaddsws (vector signed int a1, vector bool int a2) +{ + return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2); +} + inline vector signed int vec_vaddsws (vector signed int a1, vector signed int a2) { @@ -686,13 +738,13 @@ vec_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) +vec_vadduws (vector bool 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) +vec_vadduws (vector unsigned int a1, vector bool int a2) { return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2); } @@ -704,6 +756,19 @@ vec_vadduws (vector unsigned int a1, vector unsigned int a2) } /* vec_vaddshs */ + +inline vector signed short +vec_vaddshs (vector bool short a1, vector signed short a2) +{ + return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2); +} + +inline vector signed short +vec_vaddshs (vector signed short a1, vector bool short a2) +{ + return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2); +} + inline vector signed short vec_vaddshs (vector signed short a1, vector signed short a2) { @@ -713,13 +778,13 @@ vec_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) +vec_vadduhs (vector bool 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) +vec_vadduhs (vector unsigned short a1, vector bool short a2) { return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2); } @@ -732,6 +797,18 @@ vec_vadduhs (vector unsigned short a1, vector unsigned short a2) /* vec_vaddsbs */ +inline vector signed char +vec_vaddsbs (vector bool char a1, vector signed char a2) +{ + return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2); +} + +inline vector signed char +vec_vaddsbs (vector signed char a1, vector bool char a2) +{ + return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2); +} + inline vector signed char vec_vaddsbs (vector signed char a1, vector signed char a2) { @@ -741,13 +818,13 @@ vec_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) +vec_vaddubs (vector bool 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) +vec_vaddubs (vector unsigned char a1, vector bool char a2) { return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2); } @@ -1198,52 +1275,52 @@ vec_cmpeq (vector float a1, vector float a2) /* vec_vcmpeqfp */ -inline vector signed int +inline vector bool int vec_vcmpeqfp (vector float a1, vector float a2) { - return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2); + return (vector bool int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2); } /* vec_vcmpequw */ -inline vector signed int +inline vector bool 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); + return (vector bool int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); } -inline vector signed int +inline vector bool 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); + return (vector bool int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2); } /* vec_vcmpequh */ -inline vector signed short +inline vector bool 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); + return (vector bool short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); } -inline vector signed short +inline vector bool 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); + return (vector bool short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2); } /* vec_vcmpequb */ -inline vector signed char +inline vector bool 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); + return (vector bool char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); } -inline vector signed char +inline vector bool 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); + return (vector bool char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2); } /* vec_cmpge */ @@ -1300,58 +1377,58 @@ vec_cmpgt (vector float a1, vector float a2) /* vec_vcmpgtfp */ -inline vector signed int +inline vector bool int vec_vcmpgtfp (vector float a1, vector float a2) { - return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); + return (vector bool int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2); } /* vec_vcmpgtsw */ -inline vector signed int +inline vector bool 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); + return (vector bool int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2); } /* vec_vcmpgtuw */ -inline vector signed int +inline vector bool 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); + return (vector bool int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2); } /* vec_vcmpgtsh */ -inline vector signed short +inline vector bool short vec_vcmpgtsh (vector signed short a1, vector signed short a2) { - return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2); + return (vector bool short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2); } /* vec_vcmpgtuh */ -inline vector signed short +inline vector bool 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); + return (vector bool short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2); } /* vec_vcmpgtsb */ -inline vector signed char +inline vector bool 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); + return (vector bool char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2); } /* vec_vcmpgtub */ -inline vector signed char +inline vector bool 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); + return (vector bool char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2); } /* vec_cmple */ @@ -2594,6 +2671,18 @@ vec_vmaxfp (vector float a1, vector float a2) /* vec_vmaxsw */ +inline vector signed int +vec_vmaxsw (vector bool int a1, vector signed int a2) +{ + return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2); +} + +inline vector signed int +vec_vmaxsw (vector signed int a1, vector bool int a2) +{ + return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2); +} + inline vector signed int vec_vmaxsw (vector signed int a1, vector signed int a2) { @@ -2603,13 +2692,13 @@ vec_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) +vec_vmaxuw (vector bool 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) +vec_vmaxuw (vector unsigned int a1, vector bool int a2) { return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2); } @@ -2622,6 +2711,18 @@ vec_vmaxuw (vector unsigned int a1, vector unsigned int a2) /* vec_vmaxsh */ +inline vector signed short +vec_vmaxsh (vector bool short a1, vector signed short a2) +{ + return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2); +} + +inline vector signed short +vec_vmaxsh (vector signed short a1, vector bool short a2) +{ + return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2); +} + inline vector signed short vec_vmaxsh (vector signed short a1, vector signed short a2) { @@ -2631,13 +2732,13 @@ vec_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) +vec_vmaxuh (vector bool 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) +vec_vmaxuh (vector unsigned short a1, vector bool short a2) { return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2); } @@ -2650,6 +2751,18 @@ vec_vmaxuh (vector unsigned short a1, vector unsigned short a2) /* vec_vmaxsb */ +inline vector signed char +vec_vmaxsb (vector bool char a1, vector signed char a2) +{ + return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2); +} + +inline vector signed char +vec_vmaxsb (vector signed char a1, vector bool char a2) +{ + return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2); +} + inline vector signed char vec_vmaxsb (vector signed char a1, vector signed char a2) { @@ -2659,13 +2772,13 @@ vec_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) +vec_vmaxub (vector bool 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) +vec_vmaxub (vector unsigned char a1, vector bool char a2) { return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2); } @@ -2752,6 +2865,12 @@ vec_vmrghw (vector float a1, vector float a2) return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2); } +inline vector bool int +vec_vmrghw (vector bool int a1, vector bool int a2) +{ + return (vector bool int) __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) { @@ -2766,6 +2885,12 @@ vec_vmrghw (vector unsigned int a1, vector unsigned int a2) /* vec_vmrghh */ +inline vector bool short +vec_vmrghh (vector bool short a1, vector bool short a2) +{ + return (vector bool short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); +} + inline vector signed short vec_vmrghh (vector signed short a1, vector signed short a2) { @@ -2778,8 +2903,20 @@ 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); } +inline vector pixel +vec_vmrghh (vector pixel a1, vector pixel a2) +{ + return (vector pixel) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2); +} + /* vec_vmrghb */ +inline vector bool char +vec_vmrghb (vector bool char a1, vector bool char a2) +{ + return (vector bool char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2); +} + inline vector signed char vec_vmrghb (vector signed char a1, vector signed char a2) { @@ -2880,8 +3017,20 @@ 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); } +inline vector bool int +vec_vmrglw (vector bool int a1, vector bool int a2) +{ + return (vector bool int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2); +} + /* vec_vmrglh */ +inline vector bool short +vec_vmrglh (vector bool short a1, vector bool short a2) +{ + return (vector bool short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); +} + inline vector signed short vec_vmrglh (vector signed short a1, vector signed short a2) { @@ -2894,8 +3043,20 @@ 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); } +inline vector pixel +vec_vmrglh (vector pixel a1, vector pixel a2) +{ + return (vector pixel) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2); +} + /* vec_vmrglb */ +inline vector bool char +vec_vmrglb (vector bool char a1, vector bool char a2) +{ + return (vector bool char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2); +} + inline vector signed char vec_vmrglb (vector signed char a1, vector signed char a2) { @@ -3042,6 +3203,18 @@ vec_vminfp (vector float a1, vector float a2) /* vec_vminsw */ +inline vector signed int +vec_vminsw (vector bool int a1, vector signed int a2) +{ + return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2); +} + +inline vector signed int +vec_vminsw (vector signed int a1, vector bool int a2) +{ + return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2); +} + inline vector signed int vec_vminsw (vector signed int a1, vector signed int a2) { @@ -3051,13 +3224,13 @@ vec_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) +vec_vminuw (vector bool 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) +vec_vminuw (vector unsigned int a1, vector bool int a2) { return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2); } @@ -3070,6 +3243,18 @@ vec_vminuw (vector unsigned int a1, vector unsigned int a2) /* vec_vminsh */ +inline vector signed short +vec_vminsh (vector bool short a1, vector signed short a2) +{ + return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2); +} + +inline vector signed short +vec_vminsh (vector signed short a1, vector bool short a2) +{ + return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2); +} + inline vector signed short vec_vminsh (vector signed short a1, vector signed short a2) { @@ -3079,13 +3264,13 @@ vec_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) +vec_vminuh (vector bool 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) +vec_vminuh (vector unsigned short a1, vector bool short a2) { return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2); } @@ -3098,6 +3283,18 @@ vec_vminuh (vector unsigned short a1, vector unsigned short a2) /* vec_vminsb */ +inline vector signed char +vec_vminsb (vector bool char a1, vector signed char a2) +{ + return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2); +} + +inline vector signed char +vec_vminsb (vector signed char a1, vector bool char a2) +{ + return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2); +} + inline vector signed char vec_vminsb (vector signed char a1, vector signed char a2) { @@ -3107,13 +3304,13 @@ vec_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) +vec_vminub (vector bool 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) +vec_vminub (vector unsigned char a1, vector bool char a2) { return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2); } @@ -3359,6 +3556,7 @@ vec_vmulesb (vector signed char a1, vector signed char a2) } /* vec_vmuleub */ + inline vector unsigned short vec_vmuleub (vector unsigned char a1, vector unsigned char a2) { @@ -3679,6 +3877,12 @@ vec_pack (vector bool int a1, vector bool int a2) /* vec_vpkuwum */ +inline vector bool short +vec_vpkuwum (vector bool int a1, vector bool int a2) +{ + return (vector bool short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2); +} + inline vector signed short vec_vpkuwum (vector signed int a1, vector signed int a2) { @@ -3693,6 +3897,12 @@ vec_vpkuwum (vector unsigned int a1, vector unsigned int a2) /* vec_vpkuhum */ +inline vector bool char +vec_vpkuhum (vector bool short a1, vector bool short a2) +{ + return (vector bool char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2); +} + inline vector signed char vec_vpkuhum (vector signed short a1, vector signed short a2) { @@ -4623,8 +4833,20 @@ vec_vspltw (vector unsigned int a1, const int a2) return (vector unsigned int) __builtin_altivec_vspltw ((vector signed int) a1, a2); } +inline vector bool int +vec_vspltw (vector bool int a1, const int a2) +{ + return (vector bool int) __builtin_altivec_vspltw ((vector signed int) a1, a2); +} + /* vec_vsplth */ +inline vector bool short +vec_vsplth (vector bool short a1, const int a2) +{ + return (vector bool short) __builtin_altivec_vsplth ((vector signed short) a1, a2); +} + inline vector signed short vec_vsplth (vector signed short a1, const int a2) { @@ -4637,6 +4859,12 @@ vec_vsplth (vector unsigned short a1, const int a2) return (vector unsigned short) __builtin_altivec_vsplth ((vector signed short) a1, a2); } +inline vector pixel +vec_vsplth (vector pixel a1, const int a2) +{ + return (vector pixel) __builtin_altivec_vsplth ((vector signed short) a1, a2); +} + /* vec_vspltb */ inline vector signed char @@ -4651,6 +4879,12 @@ vec_vspltb (vector unsigned char a1, const int a2) return (vector unsigned char) __builtin_altivec_vspltb ((vector signed char) a1, a2); } +inline vector bool char +vec_vspltb (vector bool char a1, const int a2) +{ + return (vector bool char) __builtin_altivec_vspltb ((vector signed char) a1, a2); +} + /* vec_splat_s8 */ inline vector signed char @@ -5231,6 +5465,24 @@ vec_st (vector bool short a1, int a2, unsigned short *a3) __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); } +inline void +vec_st (vector pixel a1, int a2, vector pixel *a3) +{ + __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); +} + +inline void +vec_st (vector pixel a1, int a2, unsigned short *a3) +{ + __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); +} + +inline void +vec_st (vector pixel a1, int a2, short *a3) +{ + __builtin_altivec_stvx ((vector signed int) a1, a2, (void *) a3); +} + inline void vec_st (vector bool short a1, int a2, short *a3) { @@ -5518,31 +5770,49 @@ vec_stl (vector bool short a1, int a2, short *a3) } inline void -vec_stl (vector signed char a1, int a2, vector signed char *a3) +vec_stl (vector pixel a1, int a2, vector pixel *a3) { __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector signed char a1, int a2, signed char *a3) +vec_stl (vector pixel a1, int a2, unsigned short *a3) { __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector unsigned char a1, int a2, vector unsigned char *a3) +vec_stl (vector pixel a1, int a2, short *a3) { __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector unsigned char a1, int a2, unsigned char *a3) +vec_stl (vector signed char a1, int a2, vector signed char *a3) { __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); } inline void -vec_stl (vector bool char a1, int a2, vector bool char *a3) +vec_stl (vector signed char a1, int a2, signed char *a3) +{ + __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); +} + +inline void +vec_stl (vector unsigned char a1, int a2, vector unsigned char *a3) +{ + __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); +} + +inline void +vec_stl (vector unsigned char a1, int a2, unsigned char *a3) +{ + __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); +} + +inline void +vec_stl (vector bool char a1, int a2, vector bool char *a3) { __builtin_altivec_stvxl ((vector signed int) a1, a2, (void *) a3); } @@ -5685,6 +5955,18 @@ vec_vsubfp (vector float a1, vector float a2) /* vec_vsubuwm */ +inline vector signed int +vec_vsubuwm (vector bool int a1, vector signed int a2) +{ + return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); +} + +inline vector signed int +vec_vsubuwm (vector signed int a1, vector bool int a2) +{ + return (vector signed int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); +} + inline vector signed int vec_vsubuwm (vector signed int a1, vector signed int a2) { @@ -5692,13 +5974,13 @@ vec_vsubuwm (vector signed int a1, vector signed int a2) } inline vector unsigned int -vec_vsubuwm (vector signed int a1, vector unsigned int a2) +vec_vsubuwm (vector bool 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) +vec_vsubuwm (vector unsigned int a1, vector bool int a2) { return (vector unsigned int) __builtin_altivec_vsubuwm ((vector signed int) a1, (vector signed int) a2); } @@ -5711,6 +5993,18 @@ vec_vsubuwm (vector unsigned int a1, vector unsigned int a2) /* vec_vsubuhm */ +inline vector signed short +vec_vsubuhm (vector bool short a1, vector signed short a2) +{ + return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); +} + +inline vector signed short +vec_vsubuhm (vector signed short a1, vector bool short a2) +{ + return (vector signed short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); +} + inline vector signed short vec_vsubuhm (vector signed short a1, vector signed short a2) { @@ -5718,13 +6012,13 @@ vec_vsubuhm (vector signed short a1, vector signed short a2) } inline vector unsigned short -vec_vsubuhm (vector signed short a1, vector unsigned short a2) +vec_vsubuhm (vector bool 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) +vec_vsubuhm (vector unsigned short a1, vector bool short a2) { return (vector unsigned short) __builtin_altivec_vsubuhm ((vector signed short) a1, (vector signed short) a2); } @@ -5737,6 +6031,18 @@ vec_vsubuhm (vector unsigned short a1, vector unsigned short a2) /* vec_vsububm */ +inline vector signed char +vec_vsububm (vector bool char a1, vector signed char a2) +{ + return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); +} + +inline vector signed char +vec_vsububm (vector signed char a1, vector bool char a2) +{ + return (vector signed char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); +} + inline vector signed char vec_vsububm (vector signed char a1, vector signed char a2) { @@ -5744,13 +6050,13 @@ vec_vsububm (vector signed char a1, vector signed char a2) } inline vector unsigned char -vec_vsububm (vector signed char a1, vector unsigned char a2) +vec_vsububm (vector bool 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) +vec_vsububm (vector unsigned char a1, vector bool char a2) { return (vector unsigned char) __builtin_altivec_vsububm ((vector signed char) a1, (vector signed char) a2); } @@ -5881,6 +6187,18 @@ vec_subs (vector signed int a1, vector signed int a2) /* vec_vsubsws */ +inline vector signed int +vec_vsubsws (vector bool int a1, vector signed int a2) +{ + return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2); +} + +inline vector signed int +vec_vsubsws (vector signed int a1, vector bool int a2) +{ + return (vector signed int) __builtin_altivec_vsubsws ((vector signed int) a1, (vector signed int) a2); +} + inline vector signed int vec_vsubsws (vector signed int a1, vector signed int a2) { @@ -5890,13 +6208,13 @@ vec_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) +vec_vsubuws (vector bool 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) +vec_vsubuws (vector unsigned int a1, vector bool int a2) { return (vector unsigned int) __builtin_altivec_vsubuws ((vector signed int) a1, (vector signed int) a2); } @@ -5909,6 +6227,18 @@ vec_vsubuws (vector unsigned int a1, vector unsigned int a2) /* vec_vsubshs */ +inline vector signed short +vec_vsubshs (vector bool short a1, vector signed short a2) +{ + return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2); +} + +inline vector signed short +vec_vsubshs (vector signed short a1, vector bool short a2) +{ + return (vector signed short) __builtin_altivec_vsubshs ((vector signed short) a1, (vector signed short) a2); +} + inline vector signed short vec_vsubshs (vector signed short a1, vector signed short a2) { @@ -5918,13 +6248,13 @@ vec_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) +vec_vsubuhs (vector bool 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) +vec_vsubuhs (vector unsigned short a1, vector bool short a2) { return (vector unsigned short) __builtin_altivec_vsubuhs ((vector signed short) a1, (vector signed short) a2); } @@ -5937,6 +6267,18 @@ vec_vsubuhs (vector unsigned short a1, vector unsigned short a2) /* vec_vsubsbs */ +inline vector signed char +vec_vsubsbs (vector bool char a1, vector signed char a2) +{ + return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2); +} + +inline vector signed char +vec_vsubsbs (vector signed char a1, vector bool char a2) +{ + return (vector signed char) __builtin_altivec_vsubsbs ((vector signed char) a1, (vector signed char) a2); +} + inline vector signed char vec_vsubsbs (vector signed char a1, vector signed char a2) { @@ -5946,13 +6288,13 @@ vec_vsubsbs (vector signed char a1, vector signed char a2) /* vec_vsububs */ inline vector unsigned char -vec_vsububs (vector signed char a1, vector unsigned char a2) +vec_vsububs (vector bool 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_vsububs (vector unsigned char a1, vector signed char a2) +vec_vsububs (vector unsigned char a1, vector bool char a2) { return (vector unsigned char) __builtin_altivec_vsububs ((vector signed char) a1, (vector signed char) a2); } @@ -6039,10 +6381,10 @@ vec_unpackh (vector signed char a1) return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1); } -inline vector signed short +inline vector bool short vec_unpackh (vector bool char a1) { - return (vector signed short) __builtin_altivec_vupkhsb ((vector signed char) a1); + return (vector bool short) __builtin_altivec_vupkhsb ((vector signed char) a1); } inline vector signed int @@ -6051,10 +6393,10 @@ vec_unpackh (vector signed short a1) return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1); } -inline vector signed int +inline vector bool int vec_unpackh (vector bool short a1) { - return (vector signed int) __builtin_altivec_vupkhsh ((vector signed short) a1); + return (vector bool int) __builtin_altivec_vupkhsh ((vector signed short) a1); } inline vector unsigned int @@ -6065,6 +6407,12 @@ vec_unpackh (vector pixel a1) /* vec_vupkhsh */ +inline vector bool int +vec_vupkhsh (vector bool short a1) +{ + return (vector bool int) __builtin_altivec_vupkhsh ((vector signed short) a1); +} + inline vector signed int vec_vupkhsh (vector signed short a1) { @@ -6074,13 +6422,19 @@ vec_vupkhsh (vector signed short a1) /* vec_vupkhpx */ inline vector unsigned int -vec_vupkhpx (vector unsigned short a1) +vec_vupkhpx (vector pixel a1) { return (vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) a1); } /* vec_vupkhsb */ +inline vector bool short +vec_vupkhsb (vector bool char a1) +{ + return (vector bool short) __builtin_altivec_vupkhsb ((vector signed char) a1); +} + inline vector signed short vec_vupkhsb (vector signed char a1) { @@ -6095,10 +6449,10 @@ vec_unpackl (vector signed char a1) return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1); } -inline vector signed short +inline vector bool short vec_unpackl (vector bool char a1) { - return (vector signed short) __builtin_altivec_vupklsb ((vector signed char) a1); + return (vector bool short) __builtin_altivec_vupklsb ((vector signed char) a1); } inline vector unsigned int @@ -6113,22 +6467,28 @@ vec_unpackl (vector signed short a1) return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1); } -inline vector signed int +inline vector bool int vec_unpackl (vector bool short a1) { - return (vector signed int) __builtin_altivec_vupklsh ((vector signed short) a1); + return (vector bool int) __builtin_altivec_vupklsh ((vector signed short) a1); } /* vec_vupklpx */ inline vector unsigned int -vec_vupklpx (vector unsigned short a1) +vec_vupklpx (vector pixel a1) { return (vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) a1); } /* vec_upklsh */ +inline vector bool int +vec_vupklsh (vector bool short a1) +{ + return (vector bool int) __builtin_altivec_vupklsh ((vector signed short) a1); +} + inline vector signed int vec_vupklsh (vector signed short a1) { @@ -6137,6 +6497,12 @@ vec_vupklsh (vector signed short a1) /* vec_vupklsb */ +inline vector bool short +vec_vupklsb (vector bool char a1) +{ + return (vector bool short) __builtin_altivec_vupklsb ((vector signed char) a1); +} + inline vector signed short vec_vupklsb (vector signed char a1) { @@ -6995,6 +7361,12 @@ vec_all_ne (vector bool short a1, vector signed short a2) return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); } +inline int +vec_all_ne (vector pixel a1, vector pixel a2) +{ + return __builtin_altivec_vcmpequh_p (__CR6_EQ, (vector signed short) a1, (vector signed short) a2); +} + inline int vec_all_ne (vector signed int a1, vector bool int a2) { @@ -7262,25 +7634,25 @@ vec_any_ge (vector bool char a1, vector signed char a2) } inline int -vec_any_ge (vector signed short a1, vector bool short a2) +vec_any_ge (vector unsigned short a1, vector bool short a2) { return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); } inline int -vec_any_ge (vector unsigned short a1, vector bool short a2) +vec_any_ge (vector unsigned short a1, vector unsigned short a2) { return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); } inline int -vec_any_ge (vector unsigned short a1, vector unsigned short a2) +vec_any_ge (vector signed short a1, vector signed short a2) { - return __builtin_altivec_vcmpgtuh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); + return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); } inline int -vec_any_ge (vector signed short a1, vector signed short a2) +vec_any_ge (vector signed short a1, vector bool short a2) { return __builtin_altivec_vcmpgtsh_p (__CR6_LT_REV, (vector signed short) a2, (vector signed short) a1); } @@ -7941,37 +8313,49 @@ vec_any_out (vector float a1, vector float a2) __builtin_altivec_compiletime_error ("vec_abss")))) #define vec_vaddubm(a1, a2) \ +__ch (__bin_args_eq (vector bool 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 bool 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 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)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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))), \ - __builtin_altivec_compiletime_error ("vec_vaddubm"))))) + __builtin_altivec_compiletime_error ("vec_vaddubm"))))))) #define vec_vadduhm(a1, a2) \ +__ch (__bin_args_eq (vector bool 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 bool 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 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)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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))), \ - __builtin_altivec_compiletime_error ("vec_vadduhm"))))) + __builtin_altivec_compiletime_error ("vec_vadduhm"))))))) #define vec_vadduwm(a1, a2) \ +__ch (__bin_args_eq (vector bool 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 bool 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 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)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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))), \ - __builtin_altivec_compiletime_error ("vec_vadduwm"))))) + __builtin_altivec_compiletime_error ("vec_vadduwm"))))))) #define vec_vaddfp(a1, a2) \ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ @@ -8064,42 +8448,54 @@ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ __builtin_altivec_compiletime_error ("vec_adds"))))))))))))))))))) #define vec_vaddsws(a1, a2) \ +__ch (__bin_args_eq (vector bool int, (a1), vector signed int, (a2)), \ + ((vector signed int) __builtin_altivec_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \ +__ch (__bin_args_eq (vector signed int, (a1), vector bool int, (a2)), \ + ((vector signed int) __builtin_altivec_vaddsws ((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_vaddsws ((vector signed int) (a1), (vector signed int) (a2))), \ - __builtin_altivec_compiletime_error ("vec_vaddsws")) + __builtin_altivec_compiletime_error ("vec_vaddsws")))) #define vec_vadduws(a1, a2) \ -__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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))), \ __builtin_altivec_compiletime_error ("vec_vadduws")))) #define vec_vaddshs(a1, a2) \ +__ch (__bin_args_eq (vector bool short, (a1), vector signed short, (a2)), \ + ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (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))), \ - __builtin_altivec_compiletime_error ("vec_vaddshs")) +__ch (__bin_args_eq (vector signed short, (a1), vector bool short, (a2)), \ + ((vector signed short) __builtin_altivec_vaddshs ((vector signed short) (a1), (vector signed short) (a2))), \ + __builtin_altivec_compiletime_error ("vec_vaddshs")))) #define vec_vadduhs(a1, a2) \ -__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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))), \ __builtin_altivec_compiletime_error ("vec_vadduhs")))) #define vec_vaddsbs(a1, a2) \ +__ch (__bin_args_eq (vector bool char, (a1), vector signed char, (a2)), \ + ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (a2))), \ +__ch (__bin_args_eq (vector signed char, (a1), vector bool char, (a2)), \ + ((vector signed char) __builtin_altivec_vaddsbs ((vector signed char) (a1), (vector signed char) (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))), \ - __builtin_altivec_compiletime_error ("vec_vaddsbs")) + __builtin_altivec_compiletime_error ("vec_vaddsbs")))) #define vec_vaddubs(a1, a2) \ -__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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))), \ @@ -8281,28 +8677,28 @@ __ch (__bin_args_eq (vector float, (a1), vector float, (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))), \ + ((vector bool int) __builtin_altivec_vcmpeqfp ((vector float) (a1), (vector float) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpeqfp")) #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))), \ + ((vector bool 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))), \ + ((vector bool int) __builtin_altivec_vcmpequw ((vector signed int) (a1), (vector signed int) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpequw"))) #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))), \ + ((vector bool 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))), \ + ((vector bool short) __builtin_altivec_vcmpequh ((vector signed short) (a1), (vector signed short) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpequh"))) #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))), \ + ((vector bool 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))), \ + ((vector bool char) __builtin_altivec_vcmpequb ((vector signed char) (a1), (vector signed char) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpequb"))) #define vec_cmpge(a1, a2) \ @@ -8329,37 +8725,37 @@ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ #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))), \ + ((vector bool int) __builtin_altivec_vcmpgtfp ((vector float) (a1), (vector float) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpgtfp")) #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))), \ + ((vector bool int) __builtin_altivec_vcmpgtsw ((vector signed int) (a1), (vector signed int) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpgtsw")) #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))), \ + ((vector bool int) __builtin_altivec_vcmpgtuw ((vector signed int) (a1), (vector signed int) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpgtuw")) #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))), \ + ((vector bool short) __builtin_altivec_vcmpgtsh ((vector signed short) (a1), (vector signed short) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpgtsh")) #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))), \ + ((vector bool short) __builtin_altivec_vcmpgtuh ((vector signed short) (a1), (vector signed short) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpgtuh")) #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))), \ + ((vector bool char) __builtin_altivec_vcmpgtsb ((vector signed char) (a1), (vector signed char) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpgtsb")) #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))), \ + ((vector bool char) __builtin_altivec_vcmpgtub ((vector signed char) (a1), (vector signed char) (a2))), \ __builtin_altivec_compiletime_error ("vec_vcmpgtub")) #define vec_cmple(a1, a2) \ @@ -8835,42 +9231,54 @@ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ __builtin_altivec_compiletime_error ("vec_vmaxfp")) #define vec_vmaxsw(a1, a2) \ +__ch (__bin_args_eq (vector bool int, (a1), vector signed int, (a2)), \ + ((vector signed int) __builtin_altivec_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \ +__ch (__bin_args_eq (vector signed int, (a1), vector bool int, (a2)), \ + ((vector signed int) __builtin_altivec_vmaxsw ((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_vmaxsw ((vector signed int) (a1), (vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vmaxsw")) +__builtin_altivec_compiletime_error ("vec_vmaxsw")))) #define vec_vmaxuw(a1, a2) \ -__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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))), \ __builtin_altivec_compiletime_error ("vec_vmaxuw")))) #define vec_vmaxsh(a1, a2) \ +__ch (__bin_args_eq (vector bool short, (a1), vector signed short, (a2)), \ + ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (a2))), \ +__ch (__bin_args_eq (vector signed short, (a1), vector bool short, (a2)), \ + ((vector signed short) __builtin_altivec_vmaxsh ((vector signed short) (a1), (vector signed short) (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))), \ -__builtin_altivec_compiletime_error ("vec_vmaxsh")) +__builtin_altivec_compiletime_error ("vec_vmaxsh")))) #define vec_vmaxuh(a1, a2) \ -__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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))), \ __builtin_altivec_compiletime_error ("vec_vmaxuh")))) #define vec_vmaxsb(a1, a2) \ +__ch (__bin_args_eq (vector bool char, (a1), vector signed char, (a2)), \ + ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (a2))), \ +__ch (__bin_args_eq (vector signed char, (a1), vector bool char, (a2)), \ + ((vector signed char) __builtin_altivec_vmaxsb ((vector signed char) (a1), (vector signed char) (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))), \ -__builtin_altivec_compiletime_error ("vec_vmaxsb")) +__builtin_altivec_compiletime_error ("vec_vmaxsb")))) #define vec_vmaxub(a1, a2) \ -__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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))), \ @@ -8904,25 +9312,33 @@ __ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \ #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 bool int, (a1), vector bool int, (a2)), \ + ((vector bool int) __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))), \ -__builtin_altivec_compiletime_error ("vec_vmrghw")))) +__builtin_altivec_compiletime_error ("vec_vmrghw"))))) #define vec_vmrghh(a1, a2) \ +__ch (__bin_args_eq (vector bool short, (a1), vector bool short, (a2)), \ + ((vector bool short) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (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))), \ -__builtin_altivec_compiletime_error ("vec_vmrghh"))) +__ch (__bin_args_eq (vector pixel, (a1), vector pixel, (a2)), \ + ((vector pixel) __builtin_altivec_vmrghh ((vector signed short) (a1), (vector signed short) (a2))), \ +__builtin_altivec_compiletime_error ("vec_vmrghh"))))) #define vec_vmrghb(a1, a2) \ +__ch (__bin_args_eq (vector bool char, (a1), vector bool char, (a2)), \ + ((vector bool char) __builtin_altivec_vmrghb ((vector signed char) (a1), (vector signed char) (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))), \ -__builtin_altivec_compiletime_error ("vec_vmrghb"))) +__builtin_altivec_compiletime_error ("vec_vmrghb")))) #define vec_mergel(a1, a2) \ __ch (__bin_args_eq (vector signed char, (a1), vector signed char, (a2)), \ @@ -8956,21 +9372,29 @@ __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))), \ -__builtin_altivec_compiletime_error ("vec_vmrglw")))) +__ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \ + ((vector bool int) __builtin_altivec_vmrglw ((vector signed int) (a1), (vector signed int) (a2))), \ +__builtin_altivec_compiletime_error ("vec_vmrglw"))))) #define vec_vmrglh(a1, a2) \ +__ch (__bin_args_eq (vector bool short, (a1), vector bool short, (a2)), \ + ((vector bool short) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (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))), \ -__builtin_altivec_compiletime_error ("vec_vmrglh"))) +__ch (__bin_args_eq (vector pixel, (a1), vector pixel, (a2)), \ + ((vector pixel) __builtin_altivec_vmrglh ((vector signed short) (a1), (vector signed short) (a2))), \ +__builtin_altivec_compiletime_error ("vec_vmrglh"))))) #define vec_vmrglb(a1, a2) \ +__ch (__bin_args_eq (vector bool char, (a1), vector bool char, (a2)), \ + ((vector bool char) __builtin_altivec_vmrglb ((vector signed char) (a1), (vector signed char) (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))), \ -__builtin_altivec_compiletime_error ("vec_vmrglb"))) +__builtin_altivec_compiletime_error ("vec_vmrglb")))) #define vec_mfvscr() (((vector unsigned short) __builtin_altivec_mfvscr ())) @@ -9021,42 +9445,54 @@ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ __builtin_altivec_compiletime_error ("vec_vminfp")) #define vec_vminsw(a1, a2) \ +__ch (__bin_args_eq (vector bool int, (a1), vector signed int, (a2)), \ + ((vector signed int) __builtin_altivec_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \ +__ch (__bin_args_eq (vector signed int, (a1), vector bool int, (a2)), \ + ((vector signed int) __builtin_altivec_vminsw ((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_vminsw ((vector signed int) (a1), (vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vminsw")) +__builtin_altivec_compiletime_error ("vec_vminsw")))) #define vec_vminuw(a1, a2) \ -__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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))), \ __builtin_altivec_compiletime_error ("vec_vminuw")))) #define vec_vminsh(a1, a2) \ +__ch (__bin_args_eq (vector bool short, (a1), vector signed short, (a2)), \ + ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (a2))), \ +__ch (__bin_args_eq (vector signed short, (a1), vector bool short, (a2)), \ + ((vector signed short) __builtin_altivec_vminsh ((vector signed short) (a1), (vector signed short) (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))), \ -__builtin_altivec_compiletime_error ("vec_vminsh")) +__builtin_altivec_compiletime_error ("vec_vminsh")))) #define vec_vminuh(a1, a2) \ -__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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))), \ __builtin_altivec_compiletime_error ("vec_vminuh")))) #define vec_vminsb(a1, a2) \ +__ch (__bin_args_eq (vector bool char, (a1), vector signed char, (a2)), \ + ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (a2))), \ +__ch (__bin_args_eq (vector signed char, (a1), vector bool char, (a2)), \ + ((vector signed char) __builtin_altivec_vminsb ((vector signed char) (a1), (vector signed char) (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))), \ -__builtin_altivec_compiletime_error ("vec_vminsb")) +__builtin_altivec_compiletime_error ("vec_minsb")))) #define vec_vminub(a1, a2) \ -__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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))), \ @@ -9306,18 +9742,22 @@ __ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \ __builtin_altivec_compiletime_error ("vec_pack"))))))) #define vec_vpkuwum(a1, a2) \ +__ch (__bin_args_eq (vector bool int, (a1), vector bool int, (a2)), \ + ((vector bool short) __builtin_altivec_vpkuwum ((vector signed int) (a1), (vector signed int) (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))), \ -__builtin_altivec_compiletime_error ("vec_vpkuwum"))) +__builtin_altivec_compiletime_error ("vec_vpkuwum")))) #define vec_vpkuhum(a1, a2) \ +__ch (__bin_args_eq (vector bool short, (a1), vector bool short, (a2)), \ + ((vector bool char) __builtin_altivec_vpkuhum ((vector signed short) (a1), (vector signed short) (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))), \ -__builtin_altivec_compiletime_error ("vec_vpkuhum"))) +__builtin_altivec_compiletime_error ("vec_vpkuhum")))) #define vec_packpx(a1, a2) \ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ @@ -9682,25 +10122,33 @@ __ch (__un_args_eq (vector bool int, (a1)), \ #define vec_vspltw(a1, a2) \ __ch (__un_args_eq (vector float, (a1)), \ ((vector float) __builtin_altivec_vspltw ((vector signed int) (a1), (const int) (a2))), \ +__ch (__un_args_eq (vector bool int, (a1)), \ + ((vector bool int) __builtin_altivec_vspltw ((vector signed int) (a1), (const int) (a2))), \ __ch (__un_args_eq (vector signed int, (a1)), \ ((vector signed int) __builtin_altivec_vspltw ((vector signed int) (a1), (const int) (a2))), \ __ch (__un_args_eq (vector unsigned int, (a1)), \ ((vector unsigned int) __builtin_altivec_vspltw ((vector signed int) (a1), (const int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vspltw")))) +__builtin_altivec_compiletime_error ("vec_vspltw"))))) #define vec_vsplth(a1, a2) \ +__ch (__un_args_eq (vector bool short, (a1)), \ + ((vector bool short) __builtin_altivec_vsplth ((vector signed short) (a1), (const int) (a2))), \ __ch (__un_args_eq (vector signed short, (a1)), \ ((vector signed short) __builtin_altivec_vsplth ((vector signed short) (a1), (const int) (a2))), \ __ch (__un_args_eq (vector unsigned short, (a1)), \ ((vector unsigned short) __builtin_altivec_vsplth ((vector signed short) (a1), (const int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsplth"))) +__ch (__un_args_eq (vector pixel, (a1)), \ + ((vector pixel) __builtin_altivec_vsplth ((vector signed short) (a1), (const int) (a2))), \ +__builtin_altivec_compiletime_error ("vec_vsplth"))))) #define vec_vspltb(a1, a2) \ +__ch (__un_args_eq (vector bool char, (a1)), \ + ((vector bool char) __builtin_altivec_vspltb ((vector signed char) (a1), (const int) (a2))), \ __ch (__un_args_eq (vector signed char, (a1)), \ ((vector signed char) __builtin_altivec_vspltb ((vector signed char) (a1), (const int) (a2))), \ __ch (__un_args_eq (vector unsigned char, (a1)), \ ((vector unsigned char) __builtin_altivec_vspltb ((vector signed char) (a1), (const int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vspltb"))) +__builtin_altivec_compiletime_error ("vec_vspltb")))) #define vec_splat_s8(a1) ((vector signed char) __builtin_altivec_vspltisb (a1)) @@ -10097,37 +10545,49 @@ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \ __builtin_altivec_compiletime_error ("vec_vsubfp")) #define vec_vsubuwm(a1, a2) \ +__ch (__bin_args_eq (vector bool 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 bool 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 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)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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))), \ -__builtin_altivec_compiletime_error ("vec_vsubuwm"))))) +__builtin_altivec_compiletime_error ("vec_vsubuwm"))))))) #define vec_vsubuhm(a1, a2) \ +__ch (__bin_args_eq (vector bool 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 bool 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 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)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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))), \ -__builtin_altivec_compiletime_error ("vec_vsubuhm"))))) +__builtin_altivec_compiletime_error ("vec_vsubuhm"))))))) #define vec_vsububm(a1, a2) \ +__ch (__bin_args_eq (vector bool 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 bool 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 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)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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))), \ -__builtin_altivec_compiletime_error ("vec_vsububm"))))) +__builtin_altivec_compiletime_error ("vec_vsububm"))))))) #define vec_subc(a1, a2) \ __ch (__bin_args_eq (vector unsigned int, (a1), vector unsigned int, (a2)), \ @@ -10174,42 +10634,54 @@ __ch (__bin_args_eq (vector signed int, (a1), vector signed int, (a2)), \ __builtin_altivec_compiletime_error ("vec_subs"))))))))))))))))))) #define vec_vsubsws(a1, a2) \ +__ch (__bin_args_eq (vector bool int, (a1), vector signed int, (a2)), \ + ((vector signed int) __builtin_altivec_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \ +__ch (__bin_args_eq (vector signed int, (a1), vector bool int, (a2)), \ + ((vector signed int) __builtin_altivec_vsubsws ((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_vsubsws ((vector signed int) (a1), (vector signed int) (a2))), \ -__builtin_altivec_compiletime_error ("vec_vsubsws")) +__builtin_altivec_compiletime_error ("vec_vsubsws")))) #define vec_vsubuws(a1, a2) \ -__ch (__bin_args_eq (vector signed int, (a1), vector unsigned int, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned int, (a1), vector bool 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))), \ __builtin_altivec_compiletime_error ("vec_vsubuws")))) #define vec_vsubshs(a1, a2) \ +__ch (__bin_args_eq (vector bool short, (a1), vector signed short, (a2)), \ + ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (a2))), \ +__ch (__bin_args_eq (vector signed short, (a1), vector bool short, (a2)), \ + ((vector signed short) __builtin_altivec_vsubshs ((vector signed short) (a1), (vector signed short) (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))), \ -__builtin_altivec_compiletime_error ("vec_vsubshs")) +__builtin_altivec_compiletime_error ("vec_vsubshs")))) #define vec_vsubuhs(a1, a2) \ -__ch (__bin_args_eq (vector signed short, (a1), vector unsigned short, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned short, (a1), vector bool 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))), \ __builtin_altivec_compiletime_error ("vec_vsubuhs")))) #define vec_vsubsbs(a1, a2) \ +__ch (__bin_args_eq (vector bool char, (a1), vector signed char, (a2)), \ + ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (a2))), \ +__ch (__bin_args_eq (vector signed char, (a1), vector bool char, (a2)), \ + ((vector signed char) __builtin_altivec_vsubsbs ((vector signed char) (a1), (vector signed char) (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))), \ -__builtin_altivec_compiletime_error ("vec_vsubsbs")) +__builtin_altivec_compiletime_error ("vec_vsubsbs")))) #define vec_vsububs(a1, a2) \ -__ch (__bin_args_eq (vector signed char, (a1), vector unsigned char, (a2)), \ +__ch (__bin_args_eq (vector bool 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)), \ +__ch (__bin_args_eq (vector unsigned char, (a1), vector bool 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))), \ @@ -10268,19 +10740,23 @@ __ch (__un_args_eq (vector bool short, (a1)), \ __builtin_altivec_compiletime_error ("vec_unpackh")))))) #define vec_vupkhsh(a1) \ +__ch (__un_args_eq (vector bool short, (a1)), \ + ((vector bool int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \ __ch (__un_args_eq (vector signed short, (a1)), \ ((vector signed int) __builtin_altivec_vupkhsh ((vector signed short) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupkhsh")) +__builtin_altivec_compiletime_error ("vec_vupkhsh"))) #define vec_vupkhpx(a1) \ -__ch (__un_args_eq (vector unsigned short, (a1)), \ +__ch (__un_args_eq (vector pixel, (a1)), \ ((vector unsigned int) __builtin_altivec_vupkhpx ((vector signed short) (a1))), \ __builtin_altivec_compiletime_error ("vec_vupkhpx")) #define vec_vupkhsb(a1) \ +__ch (__un_args_eq (vector bool char, (a1)), \ + ((vector bool short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \ __ch (__un_args_eq (vector signed char, (a1)), \ ((vector signed short) __builtin_altivec_vupkhsb ((vector signed char) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupkhsb")) +__builtin_altivec_compiletime_error ("vec_vupkhsb"))) #define vec_unpackl(a1) \ __ch (__un_args_eq (vector signed char, (a1)), \ @@ -10296,19 +10772,23 @@ __ch (__un_args_eq (vector bool short, (a1)), \ __builtin_altivec_compiletime_error ("vec_unpackl")))))) #define vec_vupklsh(a1) \ +__ch (__un_args_eq (vector bool short, (a1)), \ + ((vector bool int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \ __ch (__un_args_eq (vector signed short, (a1)), \ ((vector signed int) __builtin_altivec_vupklsh ((vector signed short) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupklsh")) +__builtin_altivec_compiletime_error ("vec_vupklsh"))) #define vec_vupklpx(a1) \ -__ch (__un_args_eq (vector unsigned short, (a1)), \ +__ch (__un_args_eq (vector pixel, (a1)), \ ((vector unsigned int) __builtin_altivec_vupklpx ((vector signed short) (a1))), \ __builtin_altivec_compiletime_error ("vec_vupklpx")) #define vec_vupklsb(a1) \ +__ch (__un_args_eq (vector bool char, (a1)), \ + ((vector bool short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \ __ch (__un_args_eq (vector signed char, (a1)), \ ((vector signed short) __builtin_altivec_vupklsb ((vector signed char) (a1))), \ -__builtin_altivec_compiletime_error ("vec_vupklsb")) +__builtin_altivec_compiletime_error ("vec_vupklsb"))) #define vec_xor(a1, a2) \ __ch (__bin_args_eq (vector float, (a1), vector float, (a2)), \