summaryrefslogtreecommitdiffstats
path: root/clang/lib/Headers/xopintrin.h
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2017-02-18 21:15:30 +0000
committerCraig Topper <craig.topper@gmail.com>2017-02-18 21:15:30 +0000
commit117892098ad0c54d95d37785c61db8f0d9d05dc9 (patch)
treef585276801daed91705afee96e4b83e857f2ae0a /clang/lib/Headers/xopintrin.h
parentdc8a24ea4c2060f08897762524ebb85895e3de42 (diff)
downloadbcm5719-llvm-117892098ad0c54d95d37785c61db8f0d9d05dc9.tar.gz
bcm5719-llvm-117892098ad0c54d95d37785c61db8f0d9d05dc9.zip
[X86] Replace XOP vpcmov builtins with native vector logical operations.
llvm-svn: 295570
Diffstat (limited to 'clang/lib/Headers/xopintrin.h')
-rw-r--r--clang/lib/Headers/xopintrin.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/Headers/xopintrin.h b/clang/lib/Headers/xopintrin.h
index bdf0cec3264..6104bc66738 100644
--- a/clang/lib/Headers/xopintrin.h
+++ b/clang/lib/Headers/xopintrin.h
@@ -198,13 +198,13 @@ _mm_hsubq_epi32(__m128i __A)
static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C)
{
- return (__m128i)__builtin_ia32_vpcmov((__v2di)__A, (__v2di)__B, (__v2di)__C);
+ return (__m128i)((__v2du)__A & (__v2du)__C) | ((__v2du)__B & ~(__v2du)__C);
}
static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cmov_si256(__m256i __A, __m256i __B, __m256i __C)
{
- return (__m256i)__builtin_ia32_vpcmov_256((__v4di)__A, (__v4di)__B, (__v4di)__C);
+ return (__m256i)((__v4du)__A & (__v4du)__C) | ((__v4du)__B & ~(__v4du)__C);
}
static __inline__ __m128i __DEFAULT_FN_ATTRS
OpenPOWER on IntegriCloud