aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Yartsev <anton.yartsev@gmail.com>2010-08-19 03:21:36 +0000
committerAnton Yartsev <anton.yartsev@gmail.com>2010-08-19 03:21:36 +0000
commita2fc0f54d69461795433d42c46de337850be15cd (patch)
treec7e4754a5070e9aba6b29d8d9cbccf65c68eaf1b
parent1bf8d6f3a9dc636c3d1217d6fff11acf358e44be (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.h2270
-rw-r--r--test/CodeGen/builtins-ppc-altivec.c558
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;
+}
+