From 4b21f7c9e19ee4bd4ccbee5a6f757174a4e73489 Mon Sep 17 00:00:00 2001 From: Michael Kuperstein Date: Tue, 19 May 2015 13:05:46 +0000 Subject: [PATCH] [X86] Added _mm256_bslli_epi128 and _mm256_bsrli_epi128. These two intrinsics are alternative names for _mm256_slli_si256 and _mm256_srli_si256, respectively. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@237693 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Headers/avx2intrin.h | 4 ++++ test/CodeGen/avx2-builtins.c | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/Headers/avx2intrin.h b/lib/Headers/avx2intrin.h index 949195bea4..b0df91f205 100644 --- a/lib/Headers/avx2intrin.h +++ b/lib/Headers/avx2intrin.h @@ -542,6 +542,8 @@ _mm256_sign_epi32(__m256i __a, __m256i __b) __m256i __a = (a); \ (__m256i)__builtin_ia32_pslldqi256(__a, (count)*8); }) +#define _mm256_bslli_epi128(a, count) _mm256_slli_si256((a), (count)) + static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) _mm256_slli_epi16(__m256i __a, int __count) { @@ -606,6 +608,8 @@ _mm256_sra_epi32(__m256i __a, __m128i __count) __m256i __a = (a); \ (__m256i)__builtin_ia32_psrldqi256(__a, (count)*8); }) +#define _mm256_bsrli_epi128(a, count) _mm256_srli_si256((a), (count)) + static __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) _mm256_srli_epi16(__m256i __a, int __count) { diff --git a/test/CodeGen/avx2-builtins.c b/test/CodeGen/avx2-builtins.c index fa5a27c7d3..bdcaa9cc00 100644 --- a/test/CodeGen/avx2-builtins.c +++ b/test/CodeGen/avx2-builtins.c @@ -466,6 +466,11 @@ __m256i test_mm256_slli_si256(__m256i a) { return _mm256_slli_si256(a, 3); } +__m256i test_mm256_bslli_epi128(__m256i a) { + // CHECK: shufflevector <32 x i8> zeroinitializer, <32 x i8> %{{.*}}, <32 x i32> + return _mm256_bslli_epi128(a, 3); +} + __m256i test_mm256_slli_epi16(__m256i a) { // CHECK: @llvm.x86.avx2.pslli.w return _mm256_slli_epi16(a, 3); @@ -521,6 +526,11 @@ __m256i test_mm256_srli_si256(__m256i a) { return _mm256_srli_si256(a, 3); } +__m256i test_mm256_bsrli_epi128(__m256i a) { + // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> zeroinitializer, <32 x i32> + return _mm256_bsrli_epi128(a, 3); +} + __m256i test_mm256_srli_epi16(__m256i a) { // CHECK: @llvm.x86.avx2.psrli.w return _mm256_srli_epi16(a, 3); -- 2.40.0