diff options
author | Anton Yartsev <anton.yartsev@gmail.com> | 2010-08-19 03:21:36 +0000 |
---|---|---|
committer | Anton Yartsev <anton.yartsev@gmail.com> | 2010-08-19 03:21:36 +0000 |
commit | a2fc0f54d69461795433d42c46de337850be15cd (patch) | |
tree | c7e4754a5070e9aba6b29d8d9cbccf65c68eaf1b | |
parent | 1bf8d6f3a9dc636c3d1217d6fff11acf358e44be (diff) |
support for the rest of AltiVec functions with bool/pixel arguments and return values (except predicates)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111511 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Headers/altivec.h | 2270 | ||||
-rw-r--r-- | test/CodeGen/builtins-ppc-altivec.c | 558 |
2 files changed, 2695 insertions, 133 deletions
diff --git a/lib/Headers/altivec.h b/lib/Headers/altivec.h index 1350eb5bd1..5d251de283 100644 --- a/lib/Headers/altivec.h +++ b/lib/Headers/altivec.h @@ -1339,214 +1339,218 @@ vec_vcmpbfp(vector float a, vector float b) /* vec_cmpeq */ -static vector /*bool*/ char __ATTRS_o_ai +static vector bool char __ATTRS_o_ai vec_cmpeq(vector signed char a, vector signed char b) { - return __builtin_altivec_vcmpequb((vector char)a, (vector char)b); + return (vector bool char) + __builtin_altivec_vcmpequb((vector char)a, (vector char)b); } -static vector /*bool*/ char __ATTRS_o_ai +static vector bool char __ATTRS_o_ai vec_cmpeq(vector unsigned char a, vector unsigned char b) { - return __builtin_altivec_vcmpequb((vector char)a, (vector char)b); + return (vector bool char) + __builtin_altivec_vcmpequb((vector char)a, (vector char)b); } -static vector /*bool*/ short __ATTRS_o_ai +static vector bool short __ATTRS_o_ai vec_cmpeq(vector short a, vector short b) { - return __builtin_altivec_vcmpequh(a, b); + return (vector bool short)__builtin_altivec_vcmpequh(a, b); } -static vector /*bool*/ short __ATTRS_o_ai +static vector bool short __ATTRS_o_ai vec_cmpeq(vector unsigned short a, vector unsigned short b) { - return __builtin_altivec_vcmpequh((vector short)a, (vector short)b); + return (vector bool short) + __builtin_altivec_vcmpequh((vector short)a, (vector short)b); } -static vector /*bool*/ int __ATTRS_o_ai +static vector bool int __ATTRS_o_ai vec_cmpeq(vector int a, vector int b) { - return __builtin_altivec_vcmpequw(a, b); + return (vector bool int)__builtin_altivec_vcmpequw(a, b); } -static vector /*bool*/ int __ATTRS_o_ai +static vector bool int __ATTRS_o_ai vec_cmpeq(vector unsigned int a, vector unsigned int b) { - return __builtin_altivec_vcmpequw((vector int)a, (vector int)b); + return (vector bool int) + __builtin_altivec_vcmpequw((vector int)a, (vector int)b); } -static vector /*bool*/ int __ATTRS_o_ai +static vector bool int __ATTRS_o_ai vec_cmpeq(vector float a, vector float b) { - return __builtin_altivec_vcmpeqfp(a, b); + return (vector bool int)__builtin_altivec_vcmpeqfp(a, b); } /* vec_cmpge */ -static vector /*bool*/ int __attribute__((__always_inline__)) +static vector bool int __attribute__((__always_inline__)) vec_cmpge(vector float a, vector float b) { - return __builtin_altivec_vcmpgefp(a, b); + return (vector bool int)__builtin_altivec_vcmpgefp(a, b); } /* vec_vcmpgefp */ -static vector /*bool*/ int __attribute__((__always_inline__)) +static vector bool int __attribute__((__always_inline__)) vec_vcmpgefp(vector float a, vector float b) { - return __builtin_altivec_vcmpgefp(a, b); + return (vector bool int)__builtin_altivec_vcmpgefp(a, b); } /* vec_cmpgt */ -static vector /*bool*/ char __ATTRS_o_ai +static vector bool char __ATTRS_o_ai vec_cmpgt(vector signed char a, vector signed char b) { - return __builtin_altivec_vcmpgtsb(a, b); + return (vector bool char)__builtin_altivec_vcmpgtsb(a, b); } -static vector /*bool*/ char __ATTRS_o_ai +static vector bool char __ATTRS_o_ai vec_cmpgt(vector unsigned char a, vector unsigned char b) { - return __builtin_altivec_vcmpgtub(a, b); + return (vector bool char)__builtin_altivec_vcmpgtub(a, b); } -static vector /*bool*/ short __ATTRS_o_ai +static vector bool short __ATTRS_o_ai vec_cmpgt(vector short a, vector short b) { - return __builtin_altivec_vcmpgtsh(a, b); + return (vector bool short)__builtin_altivec_vcmpgtsh(a, b); } -static vector /*bool*/ short __ATTRS_o_ai +static vector bool short __ATTRS_o_ai vec_cmpgt(vector unsigned short a, vector unsigned short b) { - return __builtin_altivec_vcmpgtuh(a, b); + return (vector bool short)__builtin_altivec_vcmpgtuh(a, b); } -static vector /*bool*/ int __ATTRS_o_ai +static vector bool int __ATTRS_o_ai vec_cmpgt(vector int a, vector int b) { - return __builtin_altivec_vcmpgtsw(a, b); + return (vector bool int)__builtin_altivec_vcmpgtsw(a, b); } -static vector /*bool*/ int __ATTRS_o_ai +static vector bool int __ATTRS_o_ai vec_cmpgt(vector unsigned int a, vector unsigned int b) { - return __builtin_altivec_vcmpgtuw(a, b); + return (vector bool int)__builtin_altivec_vcmpgtuw(a, b); } -static vector /*bool*/ int __ATTRS_o_ai +static vector bool int __ATTRS_o_ai vec_cmpgt(vector float a, vector float b) { - return __builtin_altivec_vcmpgtfp(a, b); + return (vector bool int)__builtin_altivec_vcmpgtfp(a, b); } /* vec_vcmpgtsb */ -static vector /*bool*/ char __attribute__((__always_inline__)) +static vector bool char __attribute__((__always_inline__)) vec_vcmpgtsb(vector signed char a, vector signed char b) { - return __builtin_altivec_vcmpgtsb(a, b); + return (vector bool char)__builtin_altivec_vcmpgtsb(a, b); } /* vec_vcmpgtub */ -static vector /*bool*/ char __attribute__((__always_inline__)) +static vector bool char __attribute__((__always_inline__)) vec_vcmpgtub(vector unsigned char a, vector unsigned char b) { - return __builtin_altivec_vcmpgtub(a, b); + return (vector bool char)__builtin_altivec_vcmpgtub(a, b); } /* vec_vcmpgtsh */ -static vector /*bool*/ short __attribute__((__always_inline__)) +static vector bool short __attribute__((__always_inline__)) vec_vcmpgtsh(vector short a, vector short b) { - return __builtin_altivec_vcmpgtsh(a, b); + return (vector bool short)__builtin_altivec_vcmpgtsh(a, b); } /* vec_vcmpgtuh */ -static vector /*bool*/ short __attribute__((__always_inline__)) +static vector bool short __attribute__((__always_inline__)) vec_vcmpgtuh(vector unsigned short a, vector unsigned short b) { - return __builtin_altivec_vcmpgtuh(a, b); + return (vector bool short)__builtin_altivec_vcmpgtuh(a, b); } /* vec_vcmpgtsw */ -static vector /*bool*/ int __attribute__((__always_inline__)) +static vector bool int __attribute__((__always_inline__)) vec_vcmpgtsw(vector int a, vector int b) { - return __builtin_altivec_vcmpgtsw(a, b); + return (vector bool int)__builtin_altivec_vcmpgtsw(a, b); } /* vec_vcmpgtuw */ -static vector /*bool*/ int __attribute__((__always_inline__)) +static vector bool int __attribute__((__always_inline__)) vec_vcmpgtuw(vector unsigned int a, vector unsigned int b) { - return __builtin_altivec_vcmpgtuw(a, b); + return (vector bool int)__builtin_altivec_vcmpgtuw(a, b); } /* vec_vcmpgtfp */ -static vector /*bool*/ int __attribute__((__always_inline__)) +static vector bool int __attribute__((__always_inline__)) vec_vcmpgtfp(vector float a, vector float b) { - return __builtin_altivec_vcmpgtfp(a, b); + return (vector bool int)__builtin_altivec_vcmpgtfp(a, b); } /* vec_cmple */ -static vector /*bool*/ int __attribute__((__always_inline__)) +static vector bool int __attribute__((__always_inline__)) vec_cmple(vector float a, vector float b) { - return __builtin_altivec_vcmpgefp(b, a); + return (vector bool int)__builtin_altivec_vcmpgefp(b, a); } /* vec_cmplt */ -static vector /*bool*/ char __ATTRS_o_ai +static vector bool char __ATTRS_o_ai vec_cmplt(vector signed char a, vector signed char b) { - return __builtin_altivec_vcmpgtsb(b, a); + return (vector bool char)__builtin_altivec_vcmpgtsb(b, a); } -static vector /*bool*/ char __ATTRS_o_ai +static vector bool char __ATTRS_o_ai vec_cmplt(vector unsigned char a, vector unsigned char b) { - return __builtin_altivec_vcmpgtub(b, a); + return (vector bool char)__builtin_altivec_vcmpgtub(b, a); } -static vector /*bool*/ short __ATTRS_o_ai +static vector bool short __ATTRS_o_ai vec_cmplt(vector short a, vector short b) { - return __builtin_altivec_vcmpgtsh(b, a); + return (vector bool short)__builtin_altivec_vcmpgtsh(b, a); } -static vector /*bool*/ short __ATTRS_o_ai +static vector bool short __ATTRS_o_ai vec_cmplt(vector unsigned short a, vector unsigned short b) { - return __builtin_altivec_vcmpgtuh(b, a); + return (vector bool short)__builtin_altivec_vcmpgtuh(b, a); } -static vector /*bool*/ int __ATTRS_o_ai +static vector bool int __ATTRS_o_ai vec_cmplt(vector int a, vector int b) { - return __builtin_altivec_vcmpgtsw(b, a); + return (vector bool int)__builtin_altivec_vcmpgtsw(b, a); } -static vector /*bool*/ int __ATTRS_o_ai +static vector bool int __ATTRS_o_ai vec_cmplt(vector unsigned int a, vector unsigned int b) { - return __builtin_altivec_vcmpgtuw(b, a); + return (vector bool int)__builtin_altivec_vcmpgtuw(b, a); } -static vector /*bool*/ int __ATTRS_o_ai +static vector bool int __ATTRS_o_ai vec_cmplt(vector float a, vector float b) { - return __builtin_altivec_vcmpgtfp(b, a); + return (vector bool int)__builtin_altivec_vcmpgtfp(b, a); } /* vec_ctf */ @@ -1717,6 +1721,12 @@ vec_ld(int a, unsigned char *b) return (vector unsigned char)__builtin_altivec_lvx(a, b); } +static vector bool char __ATTRS_o_ai +vec_ld(int a, vector bool char *b) +{ + return (vector bool char)__builtin_altivec_lvx(a, b); +} + static vector short __ATTRS_o_ai vec_ld(int a, vector short *b) { @@ -1741,6 +1751,18 @@ vec_ld(int a, unsigned short *b) return (vector unsigned short)__builtin_altivec_lvx(a, b); } +static vector bool short __ATTRS_o_ai +vec_ld(int a, vector bool short *b) +{ + return (vector bool short)__builtin_altivec_lvx(a, b); +} + +static vector pixel __ATTRS_o_ai +vec_ld(int a, vector pixel *b) +{ + return (vector pixel)__builtin_altivec_lvx(a, b); +} + static vector int __ATTRS_o_ai vec_ld(int a, vector int *b) { @@ -1765,6 +1787,12 @@ vec_ld(int a, unsigned int *b) return (vector unsigned int)__builtin_altivec_lvx(a, b); } +static vector bool int __ATTRS_o_ai +vec_ld(int a, vector bool int *b) +{ + return (vector bool int)__builtin_altivec_lvx(a, b); +} + static vector float __ATTRS_o_ai vec_ld(int a, vector float *b) { @@ -1803,6 +1831,12 @@ vec_lvx(int a, unsigned char *b) return (vector unsigned char)__builtin_altivec_lvx(a, b); } +static vector bool char __ATTRS_o_ai +vec_lvx(int a, vector bool char *b) +{ + return (vector bool char)__builtin_altivec_lvx(a, b); +} + static vector short __ATTRS_o_ai vec_lvx(int a, vector short *b) { @@ -1827,6 +1861,18 @@ vec_lvx(int a, unsigned short *b) return (vector unsigned short)__builtin_altivec_lvx(a, b); } +static vector bool short __ATTRS_o_ai +vec_lvx(int a, vector bool short *b) +{ + return (vector bool short)__builtin_altivec_lvx(a, b); +} + +static vector pixel __ATTRS_o_ai +vec_lvx(int a, vector pixel *b) +{ + return (vector pixel)__builtin_altivec_lvx(a, b); +} + static vector int __ATTRS_o_ai vec_lvx(int a, vector int *b) { @@ -1851,6 +1897,12 @@ vec_lvx(int a, unsigned int *b) return (vector unsigned int)__builtin_altivec_lvx(a, b); } +static vector bool int __ATTRS_o_ai +vec_lvx(int a, vector bool int *b) +{ + return (vector bool int)__builtin_altivec_lvx(a, b); +} + static vector float __ATTRS_o_ai vec_lvx(int a, vector float *b) { @@ -1981,6 +2033,12 @@ vec_ldl(int a, unsigned char *b) return (vector unsigned char)__builtin_altivec_lvxl(a, b); } +static vector bool char __ATTRS_o_ai +vec_ldl(int a, vector bool char *b) +{ + return (vector bool char)__builtin_altivec_lvxl(a, b); +} + static vector short __ATTRS_o_ai vec_ldl(int a, vector short *b) { @@ -2005,6 +2063,18 @@ vec_ldl(int a, unsigned short *b) return (vector unsigned short)__builtin_altivec_lvxl(a, b); } +static vector bool short __ATTRS_o_ai +vec_ldl(int a, vector bool short *b) +{ + return (vector bool short)__builtin_altivec_lvxl(a, b); +} + +static vector pixel __ATTRS_o_ai +vec_ldl(int a, vector pixel *b) +{ + return (vector pixel short)__builtin_altivec_lvxl(a, b); +} + static vector int __ATTRS_o_ai vec_ldl(int a, vector int *b) { @@ -2029,6 +2099,12 @@ vec_ldl(int a, unsigned int *b) return (vector unsigned int)__builtin_altivec_lvxl(a, b); } +static vector bool int __ATTRS_o_ai +vec_ldl(int a, vector bool int *b) +{ + return (vector bool int)__builtin_altivec_lvxl(a, b); +} + static vector float __ATTRS_o_ai vec_ldl(int a, vector float *b) { @@ -2067,6 +2143,12 @@ vec_lvxl(int a, unsigned char *b) return (vector unsigned char)__builtin_altivec_lvxl(a, b); } +static vector bool char __ATTRS_o_ai +vec_lvxl(int a, vector bool char *b) +{ + return (vector bool char)__builtin_altivec_lvxl(a, b); +} + static vector short __ATTRS_o_ai vec_lvxl(int a, vector short *b) { @@ -2091,6 +2173,18 @@ vec_lvxl(int a, unsigned short *b) return (vector unsigned short)__builtin_altivec_lvxl(a, b); } +static vector bool short __ATTRS_o_ai +vec_lvxl(int a, vector bool short *b) +{ + return (vector bool short)__builtin_altivec_lvxl(a, b); +} + +static vector pixel __ATTRS_o_ai +vec_lvxl(int a, vector pixel *b) +{ + return (vector pixel)__builtin_altivec_lvxl(a, b); +} + static vector int __ATTRS_o_ai vec_lvxl(int a, vector int *b) { @@ -2115,6 +2209,12 @@ vec_lvxl(int a, unsigned int *b) return (vector unsigned int)__builtin_altivec_lvxl(a, b); } +static vector bool int __ATTRS_o_ai +vec_lvxl(int a, vector bool int *b) +{ + return (vector bool int)__builtin_altivec_lvxl(a, b); +} + static vector float __ATTRS_o_ai vec_lvxl(int a, vector float *b) { @@ -2270,36 +2370,108 @@ vec_max(vector signed char a, vector signed char b) return __builtin_altivec_vmaxsb(a, b); } +static vector signed char __ATTRS_o_ai +vec_max(vector bool char a, vector signed char b) +{ + return __builtin_altivec_vmaxsb((vector signed char)a, b); +} + +static vector signed char __ATTRS_o_ai +vec_max(vector signed char a, vector bool char b) +{ + return __builtin_altivec_vmaxsb(a, (vector signed char)b); +} + static vector unsigned char __ATTRS_o_ai vec_max(vector unsigned char a, vector unsigned char b) { return __builtin_altivec_vmaxub(a, b); } +static vector unsigned char __ATTRS_o_ai +vec_max(vector bool char a, vector unsigned char b) +{ + return __builtin_altivec_vmaxub((vector unsigned char)a, b); +} + +static vector unsigned char __ATTRS_o_ai +vec_max(vector unsigned char a, vector bool char b) +{ + return __builtin_altivec_vmaxub(a, (vector unsigned char)b); +} + static vector short __ATTRS_o_ai vec_max(vector short a, vector short b) { return __builtin_altivec_vmaxsh(a, b); } +static vector short __ATTRS_o_ai +vec_max(vector bool short a, vector short b) +{ + return __builtin_altivec_vmaxsh((vector short)a, b); +} + +static vector short __ATTRS_o_ai +vec_max(vector short a, vector bool short b) +{ + return __builtin_altivec_vmaxsh(a, (vector short)b); +} + static vector unsigned short __ATTRS_o_ai vec_max(vector unsigned short a, vector unsigned short b) { return __builtin_altivec_vmaxuh(a, b); } +static vector unsigned short __ATTRS_o_ai +vec_max(vector bool short a, vector unsigned short b) +{ + return __builtin_altivec_vmaxuh((vector unsigned short)a, b); +} + +static vector unsigned short __ATTRS_o_ai +vec_max(vector unsigned short a, vector bool short b) +{ + return __builtin_altivec_vmaxuh(a, (vector unsigned short)b); +} + static vector int __ATTRS_o_ai vec_max(vector int a, vector int b) { return __builtin_altivec_vmaxsw(a, b); } +static vector int __ATTRS_o_ai +vec_max(vector bool int a, vector int b) +{ + return __builtin_altivec_vmaxsw((vector int)a, b); +} + +static vector int __ATTRS_o_ai +vec_max(vector int a, vector bool int b) +{ + return __builtin_altivec_vmaxsw(a, (vector int)b); +} + static vector unsigned int __ATTRS_o_ai vec_max(vector unsigned int a, vector unsigned int b) { return __builtin_altivec_vmaxuw(a, b); } +static vector unsigned int __ATTRS_o_ai +vec_max(vector bool int a, vector unsigned int b) +{ + return __builtin_altivec_vmaxuw((vector unsigned int)a, b); +} + +static vector unsigned int __ATTRS_o_ai +vec_max(vector unsigned int a, vector bool int b) +{ + return __builtin_altivec_vmaxuw(a, (vector unsigned int)b); +} + static vector float __ATTRS_o_ai vec_max(vector float a, vector float b) { @@ -2308,52 +2480,124 @@ vec_max(vector float a, vector float b) /* vec_vmaxsb */ -static vector signed char __attribute__((__always_inline__)) +static vector signed char __ATTRS_o_ai vec_vmaxsb(vector signed char a, vector signed char b) { return __builtin_altivec_vmaxsb(a, b); } +static vector signed char __ATTRS_o_ai +vec_vmaxsb(vector bool char a, vector signed char b) +{ + return __builtin_altivec_vmaxsb((vector signed char)a, b); +} + +static vector signed char __ATTRS_o_ai +vec_vmaxsb(vector signed char a, vector bool char b) +{ + return __builtin_altivec_vmaxsb(a, (vector signed char)b); +} + /* vec_vmaxub */ -static vector unsigned char __attribute__((__always_inline__)) +static vector unsigned char __ATTRS_o_ai vec_vmaxub(vector unsigned char a, vector unsigned char b) { return __builtin_altivec_vmaxub(a, b); } +static vector unsigned char __ATTRS_o_ai +vec_vmaxub(vector bool char a, vector unsigned char b) +{ + return __builtin_altivec_vmaxub((vector unsigned char)a, b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vmaxub(vector unsigned char a, vector bool char b) +{ + return __builtin_altivec_vmaxub(a, (vector unsigned char)b); +} + /* vec_vmaxsh */ -static vector short __attribute__((__always_inline__)) +static vector short __ATTRS_o_ai vec_vmaxsh(vector short a, vector short b) { return __builtin_altivec_vmaxsh(a, b); } +static vector short __ATTRS_o_ai +vec_vmaxsh(vector bool short a, vector short b) +{ + return __builtin_altivec_vmaxsh((vector short)a, b); +} + +static vector short __ATTRS_o_ai +vec_vmaxsh(vector short a, vector bool short b) +{ + return __builtin_altivec_vmaxsh(a, (vector short)b); +} + /* vec_vmaxuh */ -static vector unsigned short __attribute__((__always_inline__)) +static vector unsigned short __ATTRS_o_ai vec_vmaxuh(vector unsigned short a, vector unsigned short b) { return __builtin_altivec_vmaxuh(a, b); } +static vector unsigned short __ATTRS_o_ai +vec_vmaxuh(vector bool short a, vector unsigned short b) +{ + return __builtin_altivec_vmaxuh((vector unsigned short)a, b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vmaxuh(vector unsigned short a, vector bool short b) +{ + return __builtin_altivec_vmaxuh(a, (vector unsigned short)b); +} + /* vec_vmaxsw */ -static vector int __attribute__((__always_inline__)) +static vector int __ATTRS_o_ai vec_vmaxsw(vector int a, vector int b) { return __builtin_altivec_vmaxsw(a, b); } +static vector int __ATTRS_o_ai +vec_vmaxsw(vector bool int a, vector int b) +{ + return __builtin_altivec_vmaxsw((vector int)a, b); +} + +static vector int __ATTRS_o_ai +vec_vmaxsw(vector int a, vector bool int b) +{ + return __builtin_altivec_vmaxsw(a, (vector int)b); +} + /* vec_vmaxuw */ -static vector unsigned int __attribute__((__always_inline__)) +static vector unsigned int __ATTRS_o_ai vec_vmaxuw(vector unsigned int a, vector unsigned int b) { return __builtin_altivec_vmaxuw(a, b); } +static vector unsigned int __ATTRS_o_ai +vec_vmaxuw(vector bool int a, vector unsigned int b) +{ + return __builtin_altivec_vmaxuw((vector unsigned int)a, b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vmaxuw(vector unsigned int a, vector bool int b) +{ + return __builtin_altivec_vmaxuw(a, (vector unsigned int)b); +} + /* vec_vmaxfp */ static vector float __attribute__((__always_inline__)) @@ -2758,36 +3002,108 @@ vec_min(vector signed char a, vector signed char b) return __builtin_altivec_vminsb(a, b); } +static vector signed char __ATTRS_o_ai +vec_min(vector bool char a, vector signed char b) +{ + return __builtin_altivec_vminsb((vector signed char)a, b); +} + +static vector signed char __ATTRS_o_ai +vec_min(vector signed char a, vector bool char b) +{ + return __builtin_altivec_vminsb(a, (vector signed char)b); +} + static vector unsigned char __ATTRS_o_ai vec_min(vector unsigned char a, vector unsigned char b) { return __builtin_altivec_vminub(a, b); } +static vector unsigned char __ATTRS_o_ai +vec_min(vector bool char a, vector unsigned char b) +{ + return __builtin_altivec_vminub((vector unsigned char)a, b); +} + +static vector unsigned char __ATTRS_o_ai +vec_min(vector unsigned char a, vector bool char b) +{ + return __builtin_altivec_vminub(a, (vector unsigned char)b); +} + static vector short __ATTRS_o_ai vec_min(vector short a, vector short b) { return __builtin_altivec_vminsh(a, b); } +static vector short __ATTRS_o_ai +vec_min(vector bool short a, vector short b) +{ + return __builtin_altivec_vminsh((vector short)a, b); +} + +static vector short __ATTRS_o_ai +vec_min(vector short a, vector bool short b) +{ + return __builtin_altivec_vminsh(a, (vector short)b); +} + static vector unsigned short __ATTRS_o_ai vec_min(vector unsigned short a, vector unsigned short b) { return __builtin_altivec_vminuh(a, b); } +static vector unsigned short __ATTRS_o_ai +vec_min(vector bool short a, vector unsigned short b) +{ + return __builtin_altivec_vminuh((vector unsigned short)a, b); +} + +static vector unsigned short __ATTRS_o_ai +vec_min(vector unsigned short a, vector bool short b) +{ + return __builtin_altivec_vminuh(a, (vector unsigned short)b); +} + static vector int __ATTRS_o_ai vec_min(vector int a, vector int b) { return __builtin_altivec_vminsw(a, b); } +static vector int __ATTRS_o_ai +vec_min(vector bool int a, vector int b) +{ + return __builtin_altivec_vminsw((vector int)a, b); +} + +static vector int __ATTRS_o_ai +vec_min(vector int a, vector bool int b) +{ + return __builtin_altivec_vminsw(a, (vector int)b); +} + static vector unsigned int __ATTRS_o_ai vec_min(vector unsigned int a, vector unsigned int b) { return __builtin_altivec_vminuw(a, b); } +static vector unsigned int __ATTRS_o_ai +vec_min(vector bool int a, vector unsigned int b) +{ + return __builtin_altivec_vminuw((vector unsigned int)a, b); +} + +static vector unsigned int __ATTRS_o_ai +vec_min(vector unsigned int a, vector bool int b) +{ + return __builtin_altivec_vminuw(a, (vector unsigned int)b); +} + static vector float __ATTRS_o_ai vec_min(vector float a, vector float b) { @@ -2796,52 +3112,124 @@ vec_min(vector float a, vector float b) /* vec_vminsb */ -static vector signed char __attribute__((__always_inline__)) +static vector signed char __ATTRS_o_ai vec_vminsb(vector signed char a, vector signed char b) { return __builtin_altivec_vminsb(a, b); } +static vector signed char __ATTRS_o_ai +vec_vminsb(vector bool char a, vector signed char b) +{ + return __builtin_altivec_vminsb((vector signed char)a, b); +} + +static vector signed char __ATTRS_o_ai +vec_vminsb(vector signed char a, vector bool char b) +{ + return __builtin_altivec_vminsb(a, (vector signed char)b); +} + /* vec_vminub */ -static vector unsigned char __attribute__((__always_inline__)) +static vector unsigned char __ATTRS_o_ai vec_vminub(vector unsigned char a, vector unsigned char b) { return __builtin_altivec_vminub(a, b); } +static vector unsigned char __ATTRS_o_ai +vec_vminub(vector bool char a, vector unsigned char b) +{ + return __builtin_altivec_vminub((vector unsigned char)a, b); +} + +static vector unsigned char __ATTRS_o_ai +vec_vminub(vector unsigned char a, vector bool char b) +{ + return __builtin_altivec_vminub(a, (vector unsigned char)b); +} + /* vec_vminsh */ -static vector short __attribute__((__always_inline__)) +static vector short __ATTRS_o_ai vec_vminsh(vector short a, vector short b) { return __builtin_altivec_vminsh(a, b); } +static vector short __ATTRS_o_ai +vec_vminsh(vector bool short a, vector short b) +{ + return __builtin_altivec_vminsh((vector short)a, b); +} + +static vector short __ATTRS_o_ai +vec_vminsh(vector short a, vector bool short b) +{ + return __builtin_altivec_vminsh(a, (vector short)b); +} + /* vec_vminuh */ -static vector unsigned short __attribute__((__always_inline__)) +static vector unsigned short __ATTRS_o_ai vec_vminuh(vector unsigned short a, vector unsigned short b) { return __builtin_altivec_vminuh(a, b); } +static vector unsigned short __ATTRS_o_ai +vec_vminuh(vector bool short a, vector unsigned short b) +{ + return __builtin_altivec_vminuh((vector unsigned short)a, b); +} + +static vector unsigned short __ATTRS_o_ai +vec_vminuh(vector unsigned short a, vector bool short b) +{ + return __builtin_altivec_vminuh(a, (vector unsigned short)b); +} + /* vec_vminsw */ -static vector int __attribute__((__always_inline__)) +static vector int __ATTRS_o_ai vec_vminsw(vector int a, vector int b) { return __builtin_altivec_vminsw(a, b); } +static vector int __ATTRS_o_ai +vec_vminsw(vector bool int a, vector int b) +{ + return __builtin_altivec_vminsw((vector int)a, b); +} + +static vector int __ATTRS_o_ai +vec_vminsw(vector int a, vector bool int b) +{ + return __builtin_altivec_vminsw(a, (vector int)b); +} + /* vec_vminuw */ -static vector unsigned int __attribute__((__always_inline__)) +static vector unsigned int __ATTRS_o_ai vec_vminuw(vector unsigned int a, vector unsigned int b) { return __builtin_altivec_vminuw(a, b); } +static vector unsigned int __ATTRS_o_ai +vec_vminuw(vector bool int a, vector unsigned int b) +{ + return __builtin_altivec_vminuw((vector unsigned int)a, b); +} + +static vector unsigned int __ATTRS_o_ai +vec_vminuw(vector unsigned int a, vector bool int b) +{ + return __builtin_altivec_vminuw(a, (vector unsigned int)b); +} + /* vec_vminfp */ static vector float __attribute__((__always_inline__)) @@ -3023,6 +3411,12 @@ vec_mtvscr(vector unsigned char a) } static void __ATTRS_o_ai +vec_mtvscr(vector bool char a) +{ + __builtin_altivec_mtvscr((vector int)a); +} + +static void __ATTRS_o_ai vec_mtvscr(vector short a) { __builtin_altivec_mtvscr((vector int)a); @@ -3035,6 +3429,18 @@ vec_mtvscr(vector unsigned short a) } static void __ATTRS_o_ai +vec_mtvscr(vector bool short a) +{ + __builtin_altivec_mtvscr((vector int)a); +} + +static void __ATTRS_o_ai +vec_mtvscr(vector pixel a) +{ + __builtin_altivec_mtvscr((vector int)a); +} + +static void __ATTRS_o_ai vec_mtvscr(vector int a) { __builtin_altivec_mtvscr((vector int)a); @@ -3047,6 +3453,12 @@ vec_mtvscr(vector unsigned int a) } static void __ATTRS_o_ai +vec_mtvscr(vector bool int a) +{ + __builtin_altivec_mtvscr((vector int)a); +} + +static void __ATTRS_o_ai vec_mtvscr(vector float a) { __builtin_altivec_mtvscr((vector int)a); @@ -3200,6 +3612,12 @@ vec_nor(vector unsigned char a, vector unsigned char b) return ~(a | b); } +static vector bool char __ATTRS_o_ai +vec_nor(vector bool char a, vector bool char b) +{ + return ~(a | b); +} + static vector short __ATTRS_o_ai vec_nor(vector short a, vector short b) { @@ -3212,6 +3630,12 @@ vec_nor(vector unsigned short a, vector unsigned short b) return ~(a | b); } +static vector bool short __ATTRS_o_ai +vec_nor(vector bool short a, vector bool short b) +{ + return ~(a | b); +} + static vector int __ATTRS_o_ai vec_nor(vector int a, vector int b) { @@ -3224,6 +3648,12 @@ vec_nor(vector unsigned int a, vector unsigned int b) return ~(a | b); } +static vector bool int __ATTRS_o_ai +vec_nor(vector bool int a, vector bool int b) +{ + return ~(a | b); +} + static vector float __ATTRS_o_ai vec_nor(vector float a, vector float b) { @@ -3245,6 +3675,12 @@ vec_vnor(vector unsigned char a, vector unsigned char b) return ~(a | b); } +static vector bool char __ATTRS_o_ai +vec_vnor(vector bool char a, vector bool char b) +{ + return ~(a | b); +} + static vector short __ATTRS_o_ai vec_vnor(vector short a, vector short b) { @@ -3257,6 +3693,12 @@ vec_vnor(vector unsigned short a, vector unsigned short b) return ~(a | b); } +static vector bool short __ATTRS_o_ai +vec_vnor(vector bool short a, vector bool short b) +{ + return ~(a | b); +} + static vector int __ATTRS_o_ai vec_vnor(vector int a, vector int b) { @@ -3269,6 +3711,12 @@ vec_vnor(vector unsigned int a, vector unsigned int b) return ~(a | b); } +static vector bool int __ATTRS_o_ai +vec_vnor(vector bool int a, vector bool int b) +{ + return ~(a | b); +} + static vector float __ATTRS_o_ai vec_vnor(vector float a, vector float b) { @@ -3286,36 +3734,126 @@ vec_or(vector signed char a, vector signed char b) return a | b; } +static vector signed char __ATTRS_o_ai +vec_or(vector bool char a, vector signed char b) +{ + return (vector signed char)a | b; +} + +static vector signed char __ATTRS_o_ai +vec_or(vector signed char a, vector bool char b) +{ + return a | (vector signed char)b; +} + static vector unsigned char __ATTRS_o_ai vec_or(vector unsigned char a, vector unsigned char b) { return a | b; } +static vector unsigned char __ATTRS_o_ai +vec_or(vector bool char a, vector unsigned char b) +{ + return (vector unsigned char)a | b; +} + +static vector unsigned char __ATTRS_o_ai +vec_or(vector unsigned char a, vector bool char b) +{ + return a | (vector unsigned char)b; +} + +static vector bool char __ATTRS_o_ai +vec_or(vector bool char a, vector bool char b) +{ + return a | b; +} + static vector short __ATTRS_o_ai vec_or(vector short a, vector short b) { return a | b; } +static vector short __ATTRS_o_ai +vec_or(vector bool short a, vector short b) +{ + return (vector short)a | b; +} + +static vector short __ATTRS_o_ai +vec_or(vector short a, vector bool short b) +{ + return a | (vector short)b; +} + static vector unsigned short __ATTRS_o_ai vec_or(vector unsigned short a, vector unsigned short b) { return a | b; } +static vector unsigned short __ATTRS_o_ai +vec_or(vector bool short a, vector unsigned short b) +{ + return (vector unsigned short)a | b; +} + +static vector unsigned short __ATTRS_o_ai +vec_or(vector unsigned short a, vector bool short b) +{ + return a | (vector unsigned short)b; +} + +static vector bool short __ATTRS_o_ai +vec_or(vector bool short a, vector bool short b) +{ + return a | b; +} + static vector int __ATTRS_o_ai vec_or(vector int a, vector int b) { return a | b; } +static vector int __ATTRS_o_ai +vec_or(vector bool int a, vector int b) +{ + return (vector int)a | b; +} + +static vector int __ATTRS_o_ai +vec_or(vector int a, vector bool int b) +{ + return a | (vector int)b; +} + static vector unsigned int __ATTRS_o_ai vec_or(vector unsigned int a, vector unsigned int b) { return a | b; } +static vector unsigned int __ATTRS_o_ai +vec_or(vector bool int a, vector unsigned int b) +{ + return (vector unsigned int)a | b; +} + +static vector unsigned int __ATTRS_o_ai +vec_or(vector unsigned int a, vector bool int b) +{ + return a | (vector unsigned int)b; +} + +static vector bool int __ATTRS_o_ai +vec_or(vector bool int a, vector bool int b) +{ + return a | b; +} + static vector float __ATTRS_o_ai vec_or(vector float a, vector float b) { @@ -3323,6 +3861,20 @@ vec_or(vector float a, vector float b) return (vector float)res; } +static vector float __ATTRS_o_ai +vec_or(vector bool int a, vector float b) +{ + vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; + return (vector float)res; +} + +static vector float __ATTRS_o_ai +vec_or(vector float a, vector bool int b) +{ + vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; + return (vector float)res; +} + /* vec_vor */ static vector signed char __ATTRS_o_ai @@ -3331,36 +3883,126 @@ vec_vor(vector signed char a, vector signed char b) return a | b; } +static vector signed char __ATTRS_o_ai +vec_vor(vector bool char a, vector signed char b) +{ + return (vector signed char)a | b; +} + +static vector signed char __ATTRS_o_ai +vec_vor(vector signed char a, vector bool char b) +{ + return a | (vector signed char)b; +} + |