diff options
| author | Craig Topper <craig.topper@gmail.com> | 2016-10-31 04:30:51 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@gmail.com> | 2016-10-31 04:30:51 +0000 |
| commit | 66b2fd1209865d978e5d15b8c84e3d87b00dc486 (patch) | |
| tree | 3281842b5c19141ce2c4d1926ab4dc34f0622b80 /clang/test/CodeGen/avx512vlbw-builtins.c | |
| parent | ebcc86e469f8d62c3397f902fd59982886507646 (diff) | |
| download | bcm5719-llvm-66b2fd1209865d978e5d15b8c84e3d87b00dc486.tar.gz bcm5719-llvm-66b2fd1209865d978e5d15b8c84e3d87b00dc486.zip | |
[AVX-512] Remove many of the masked 128/256-bit shift builtins and replace them with unmasked builtins and selects.
llvm-svn: 285539
Diffstat (limited to 'clang/test/CodeGen/avx512vlbw-builtins.c')
| -rw-r--r-- | clang/test/CodeGen/avx512vlbw-builtins.c | 208 |
1 files changed, 200 insertions, 8 deletions
diff --git a/clang/test/CodeGen/avx512vlbw-builtins.c b/clang/test/CodeGen/avx512vlbw-builtins.c index 795a1b48b19..ab5cc3d0c44 100644 --- a/clang/test/CodeGen/avx512vlbw-builtins.c +++ b/clang/test/CodeGen/avx512vlbw-builtins.c @@ -2042,52 +2042,244 @@ __m128i test_mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B) { __m128i test_mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_mask_sll_epi16 - // CHECK: @llvm.x86.avx512.mask.psll.w.128 + // CHECK: @llvm.x86.sse2.psll.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} return _mm_mask_sll_epi16(__W, __U, __A, __B); } __m128i test_mm_maskz_sll_epi16(__mmask8 __U, __m128i __A, __m128i __B) { // CHECK-LABEL: @test_mm_maskz_sll_epi16 - // CHECK: @llvm.x86.avx512.mask.psll.w.128 + // CHECK: @llvm.x86.sse2.psll.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} return _mm_maskz_sll_epi16(__U, __A, __B); } __m256i test_mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) { // CHECK-LABEL: @test_mm256_mask_sll_epi16 - // CHECK: @llvm.x86.avx512.mask.psll.w.256 + // CHECK: @llvm.x86.avx2.psll.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} return _mm256_mask_sll_epi16(__W, __U, __A, __B); } __m256i test_mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B) { // CHECK-LABEL: @test_mm256_maskz_sll_epi16 - // CHECK: @llvm.x86.avx512.mask.psll.w.256 + // CHECK: @llvm.x86.avx2.psll.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} return _mm256_maskz_sll_epi16(__U, __A, __B); } __m128i test_mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_slli_epi16 - // CHECK: @llvm.x86.avx512.mask.psll.wi.128 + // CHECK: @llvm.x86.sse2.pslli.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} return _mm_mask_slli_epi16(__W, __U, __A, 5); } __m128i test_mm_maskz_slli_epi16(__mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_maskz_slli_epi16 - // CHECK: @llvm.x86.avx512.mask.psll.wi.128 + // CHECK: @llvm.x86.sse2.pslli.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} return _mm_maskz_slli_epi16(__U, __A, 5); } __m256i test_mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_mask_slli_epi16 - // CHECK: @llvm.x86.avx512.mask.psll.wi.256 + // CHECK: @llvm.x86.avx2.pslli.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} return _mm256_mask_slli_epi16(__W, __U, __A, 5); } __m256i test_mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A) { // CHECK-LABEL: @test_mm256_maskz_slli_epi16 - // CHECK: @llvm.x86.avx512.mask.psll.wi.256 + // CHECK: @llvm.x86.avx2.pslli.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} return _mm256_maskz_slli_epi16(__U, __A, 5); } +__m256i test_mm256_srlv_epi16(__m256i __A, __m256i __B) { + // CHECK-LABEL: @test_mm256_srlv_epi16 + // CHECK: @llvm.x86.avx512.mask.psrlv + return _mm256_srlv_epi16(__A, __B); +} + +__m256i test_mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { + // CHECK-LABEL: @test_mm256_mask_srlv_epi16 + // CHECK: @llvm.x86.avx512.mask.psrlv + return _mm256_mask_srlv_epi16(__W, __U, __A, __B); +} + +__m256i test_mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B) { + // CHECK-LABEL: @test_mm256_maskz_srlv_epi16 + // CHECK: @llvm.x86.avx512.mask.psrlv + return _mm256_maskz_srlv_epi16(__U, __A, __B); +} + +__m128i test_mm_srlv_epi16(__m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_srlv_epi16 + // CHECK: @llvm.x86.avx512.mask.psrlv + return _mm_srlv_epi16(__A, __B); +} + +__m128i test_mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_mask_srlv_epi16 + // CHECK: @llvm.x86.avx512.mask.psrlv + return _mm_mask_srlv_epi16(__W, __U, __A, __B); +} + +__m128i test_mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_maskz_srlv_epi16 + // CHECK: @llvm.x86.avx512.mask.psrlv + return _mm_maskz_srlv_epi16(__U, __A, __B); +} + +__m128i test_mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_mask_srl_epi16 + // CHECK: @llvm.x86.sse2.psrl.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + return _mm_mask_srl_epi16(__W, __U, __A, __B); +} + +__m128i test_mm_maskz_srl_epi16(__mmask8 __U, __m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_maskz_srl_epi16 + // CHECK: @llvm.x86.sse2.psrl.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + return _mm_maskz_srl_epi16(__U, __A, __B); +} + +__m256i test_mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) { + // CHECK-LABEL: @test_mm256_mask_srl_epi16 + // CHECK: @llvm.x86.avx2.psrl.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + return _mm256_mask_srl_epi16(__W, __U, __A, __B); +} + +__m256i test_mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B) { + // CHECK-LABEL: @test_mm256_maskz_srl_epi16 + // CHECK: @llvm.x86.avx2.psrl.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + return _mm256_maskz_srl_epi16(__U, __A, __B); +} + +__m128i test_mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A) { + // CHECK-LABEL: @test_mm_mask_srli_epi16 + // CHECK: @llvm.x86.sse2.psrli.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + return _mm_mask_srli_epi16(__W, __U, __A, 5); +} + +__m128i test_mm_maskz_srli_epi16(__mmask8 __U, __m128i __A) { + // CHECK-LABEL: @test_mm_maskz_srli_epi16 + // CHECK: @llvm.x86.sse2.psrli.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + return _mm_maskz_srli_epi16(__U, __A, 5); +} + +__m256i test_mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A) { + // CHECK-LABEL: @test_mm256_mask_srli_epi16 + // CHECK: @llvm.x86.avx2.psrli.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + return _mm256_mask_srli_epi16(__W, __U, __A, 5); +} + +__m256i test_mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A) { + // CHECK-LABEL: @test_mm256_maskz_srli_epi16 + // CHECK: @llvm.x86.avx2.psrli.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + return _mm256_maskz_srli_epi16(__U, __A, 5); +} + +__m256i test_mm256_srav_epi16(__m256i __A, __m256i __B) { + // CHECK-LABEL: @test_mm256_srav_epi16 + // CHECK: @llvm.x86.avx512.mask.psrav + return _mm256_srav_epi16(__A, __B); +} + +__m256i test_mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { + // CHECK-LABEL: @test_mm256_mask_srav_epi16 + // CHECK: @llvm.x86.avx512.mask.psrav + return _mm256_mask_srav_epi16(__W, __U, __A, __B); +} + +__m256i test_mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B) { + // CHECK-LABEL: @test_mm256_maskz_srav_epi16 + // CHECK: @llvm.x86.avx512.mask.psrav + return _mm256_maskz_srav_epi16(__U, __A, __B); +} + +__m128i test_mm_srav_epi16(__m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_srav_epi16 + // CHECK: @llvm.x86.avx512.mask.psrav + return _mm_srav_epi16(__A, __B); +} + +__m128i test_mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_mask_srav_epi16 + // CHECK: @llvm.x86.avx512.mask.psrav + return _mm_mask_srav_epi16(__W, __U, __A, __B); +} + +__m128i test_mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_maskz_srav_epi16 + // CHECK: @llvm.x86.avx512.mask.psrav + return _mm_maskz_srav_epi16(__U, __A, __B); +} + +__m128i test_mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_mask_sra_epi16 + // CHECK: @llvm.x86.sse2.psra.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + return _mm_mask_sra_epi16(__W, __U, __A, __B); +} + +__m128i test_mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B) { + // CHECK-LABEL: @test_mm_maskz_sra_epi16 + // CHECK: @llvm.x86.sse2.psra.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + return _mm_maskz_sra_epi16(__U, __A, __B); +} + +__m256i test_mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) { + // CHECK-LABEL: @test_mm256_mask_sra_epi16 + // CHECK: @llvm.x86.avx2.psra.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + return _mm256_mask_sra_epi16(__W, __U, __A, __B); +} + +__m256i test_mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B) { + // CHECK-LABEL: @test_mm256_maskz_sra_epi16 + // CHECK: @llvm.x86.avx2.psra.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + return _mm256_maskz_sra_epi16(__U, __A, __B); +} + +__m128i test_mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A) { + // CHECK-LABEL: @test_mm_mask_srai_epi16 + // CHECK: @llvm.x86.sse2.psrai.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + return _mm_mask_srai_epi16(__W, __U, __A, 5); +} + +__m128i test_mm_maskz_srai_epi16(__mmask8 __U, __m128i __A) { + // CHECK-LABEL: @test_mm_maskz_srai_epi16 + // CHECK: @llvm.x86.sse2.psrai.w + // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} + return _mm_maskz_srai_epi16(__U, __A, 5); +} + +__m256i test_mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A) { + // CHECK-LABEL: @test_mm256_mask_srai_epi16 + // CHECK: @llvm.x86.avx2.psrai.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + return _mm256_mask_srai_epi16(__W, __U, __A, 5); +} + +__m256i test_mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A) { + // CHECK-LABEL: @test_mm256_maskz_srai_epi16 + // CHECK: @llvm.x86.avx2.psrai.w + // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}} + return _mm256_maskz_srai_epi16(__U, __A, 5); +} + __m128i test_mm_mask_mov_epi16(__m128i __W, __mmask8 __U, __m128i __A) { // CHECK-LABEL: @test_mm_mask_mov_epi16 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}} |

