summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorTony Jiang <jtony@ca.ibm.com>2017-01-11 20:59:42 +0000
committerTony Jiang <jtony@ca.ibm.com>2017-01-11 20:59:42 +0000
commit974e4c78999ad00af0505a9bf50b7432b219f717 (patch)
tree457f2551e77e75a4543769a1b76f56c2b539ae11 /clang/lib
parent83962656557bdea5499ec022094fd6c60c1db389 (diff)
downloadbcm5719-llvm-974e4c78999ad00af0505a9bf50b7432b219f717.tar.gz
bcm5719-llvm-974e4c78999ad00af0505a9bf50b7432b219f717.zip
[PowerPC] Fix the wrong implementation of builtin vec_rlnm.
llvm-svn: 291702
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Headers/altivec.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Headers/altivec.h b/clang/lib/Headers/altivec.h
index a8618816d5b..a01d9d837ad 100644
--- a/clang/lib/Headers/altivec.h
+++ b/clang/lib/Headers/altivec.h
@@ -7664,13 +7664,15 @@ vec_rlmi(vector unsigned long long __a, vector unsigned long long __b,
static __inline__ vector unsigned int __ATTRS_o_ai
vec_rlnm(vector unsigned int __a, vector unsigned int __b,
vector unsigned int __c) {
- return __builtin_altivec_vrlwnm(__a, __b) & __c;
+ vector unsigned int OneByte = { 0x8, 0x8, 0x8, 0x8 };
+ return __builtin_altivec_vrlwnm(__a, ((__c << OneByte) | __b));
}
static __inline__ vector unsigned long long __ATTRS_o_ai
vec_rlnm(vector unsigned long long __a, vector unsigned long long __b,
vector unsigned long long __c) {
- return __builtin_altivec_vrldnm(__a, __b) & __c;
+ vector unsigned long long OneByte = { 0x8, 0x8 };
+ return __builtin_altivec_vrldnm(__a, ((__c << OneByte) | __b));
}
#endif
OpenPOWER on IntegriCloud