summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/CodeGen')
-rw-r--r--clang/test/CodeGen/avx512bw-builtins.c17
-rw-r--r--clang/test/CodeGen/avx512f-builtins.c108
-rw-r--r--clang/test/CodeGen/avx512vbmi-builtins.c19
-rw-r--r--clang/test/CodeGen/avx512vbmivl-builtin.c35
-rw-r--r--clang/test/CodeGen/avx512vl-builtins.c103
-rw-r--r--clang/test/CodeGen/avx512vlbw-builtins.c35
6 files changed, 316 insertions, 1 deletions
diff --git a/clang/test/CodeGen/avx512bw-builtins.c b/clang/test/CodeGen/avx512bw-builtins.c
index 5de57929dc6..3023e606004 100644
--- a/clang/test/CodeGen/avx512bw-builtins.c
+++ b/clang/test/CodeGen/avx512bw-builtins.c
@@ -1470,3 +1470,20 @@ __m512i test_mm512_maskz_set1_epi16(__mmask32 __M, short __A) {
// CHECK: @llvm.x86.avx512.mask.pbroadcast.w.gpr.512
return _mm512_maskz_set1_epi16(__M, __A);
}
+__m512i test_mm512_permutexvar_epi16(__m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_permutexvar_epi16
+ // CHECK: @llvm.x86.avx512.mask.permvar.hi.512
+ return _mm512_permutexvar_epi16(__A, __B);
+}
+
+__m512i test_mm512_maskz_permutexvar_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi16
+ // CHECK: @llvm.x86.avx512.mask.permvar.hi.512
+ return _mm512_maskz_permutexvar_epi16(__M, __A, __B);
+}
+
+__m512i test_mm512_mask_permutexvar_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_mask_permutexvar_epi16
+ // CHECK: @llvm.x86.avx512.mask.permvar.hi.512
+ return _mm512_mask_permutexvar_epi16(__W, __M, __A, __B);
+}
diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c
index 21d116cfe1f..e869f51872f 100644
--- a/clang/test/CodeGen/avx512f-builtins.c
+++ b/clang/test/CodeGen/avx512f-builtins.c
@@ -4801,3 +4801,111 @@ __m128d test_mm_mask3_fnmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __m
// CHECK: @llvm.x86.avx512.mask3.vfmadd.sd
return _mm_mask3_fnmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION);
}
+
+__m512d test_mm512_permutex_pd(__m512d __X) {
+ // CHECK-LABEL: @test_mm512_permutex_pd
+ // CHECK: @llvm.x86.avx512.mask.perm.df.512
+ return _mm512_permutex_pd(__X, 0);
+}
+
+__m512d test_mm512_mask_permutex_pd(__m512d __W, __mmask8 __U, __m512d __X) {
+ // CHECK-LABEL: @test_mm512_mask_permutex_pd
+ // CHECK: @llvm.x86.avx512.mask.perm.df.512
+ return _mm512_mask_permutex_pd(__W, __U, __X, 0);
+}
+
+__m512d test_mm512_maskz_permutex_pd(__mmask8 __U, __m512d __X) {
+ // CHECK-LABEL: @test_mm512_maskz_permutex_pd
+ // CHECK: @llvm.x86.avx512.mask.perm.df.512
+ return _mm512_maskz_permutex_pd(__U, __X, 0);
+}
+
+__m512i test_mm512_permutex_epi64(__m512i __X) {
+ // CHECK-LABEL: @test_mm512_permutex_epi64
+ // CHECK: @llvm.x86.avx512.mask.perm.di.512
+ return _mm512_permutex_epi64(__X, 0);
+}
+
+__m512i test_mm512_mask_permutex_epi64(__m512i __W, __mmask8 __M, __m512i __X) {
+ // CHECK-LABEL: @test_mm512_mask_permutex_epi64
+ // CHECK: @llvm.x86.avx512.mask.perm.di.512
+ return _mm512_mask_permutex_epi64(__W, __M, __X, 0);
+}
+
+__m512i test_mm512_maskz_permutex_epi64(__mmask8 __M, __m512i __X) {
+ // CHECK-LABEL: @test_mm512_maskz_permutex_epi64
+ // CHECK: @llvm.x86.avx512.mask.perm.di.512
+ return _mm512_maskz_permutex_epi64(__M, __X, 0);
+}
+
+__m512d test_mm512_permutexvar_pd(__m512i __X, __m512d __Y) {
+ // CHECK-LABEL: @test_mm512_permutexvar_pd
+ // CHECK: @llvm.x86.avx512.mask.permvar.df.512
+ return _mm512_permutexvar_pd(__X, __Y);
+}
+
+__m512d test_mm512_mask_permutexvar_pd(__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y) {
+ // CHECK-LABEL: @test_mm512_mask_permutexvar_pd
+ // CHECK: @llvm.x86.avx512.mask.permvar.df.512
+ return _mm512_mask_permutexvar_pd(__W, __U, __X, __Y);
+}
+
+__m512d test_mm512_maskz_permutexvar_pd(__mmask8 __U, __m512i __X, __m512d __Y) {
+ // CHECK-LABEL: @test_mm512_maskz_permutexvar_pd
+ // CHECK: @llvm.x86.avx512.mask.permvar.df.512
+ return _mm512_maskz_permutexvar_pd(__U, __X, __Y);
+}
+
+__m512i test_mm512_maskz_permutexvar_epi64(__mmask8 __M, __m512i __X, __m512i __Y) {
+ // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi64
+ // CHECK: @llvm.x86.avx512.mask.permvar.di.512
+ return _mm512_maskz_permutexvar_epi64(__M, __X, __Y);
+}
+
+__m512i test_mm512_permutexvar_epi64(__m512i __X, __m512i __Y) {
+ // CHECK-LABEL: @test_mm512_permutexvar_epi64
+ // CHECK: @llvm.x86.avx512.mask.permvar.di.512
+ return _mm512_permutexvar_epi64(__X, __Y);
+}
+
+__m512i test_mm512_mask_permutexvar_epi64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
+ // CHECK-LABEL: @test_mm512_mask_permutexvar_epi64
+ // CHECK: @llvm.x86.avx512.mask.permvar.di.512
+ return _mm512_mask_permutexvar_epi64(__W, __M, __X, __Y);
+}
+
+__m512 test_mm512_permutexvar_ps(__m512i __X, __m512 __Y) {
+ // CHECK-LABEL: @test_mm512_permutexvar_ps
+ // CHECK: @llvm.x86.avx512.mask.permvar.sf.512
+ return _mm512_permutexvar_ps(__X, __Y);
+}
+
+__m512 test_mm512_mask_permutexvar_ps(__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y) {
+ // CHECK-LABEL: @test_mm512_mask_permutexvar_ps
+ // CHECK: @llvm.x86.avx512.mask.permvar.sf.512
+ return _mm512_mask_permutexvar_ps(__W, __U, __X, __Y);
+}
+
+__m512 test_mm512_maskz_permutexvar_ps(__mmask16 __U, __m512i __X, __m512 __Y) {
+ // CHECK-LABEL: @test_mm512_maskz_permutexvar_ps
+ // CHECK: @llvm.x86.avx512.mask.permvar.sf.512
+ return _mm512_maskz_permutexvar_ps(__U, __X, __Y);
+}
+
+__m512i test_mm512_maskz_permutexvar_epi32(__mmask16 __M, __m512i __X, __m512i __Y) {
+ // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi32
+ // CHECK: @llvm.x86.avx512.mask.permvar.si.512
+ return _mm512_maskz_permutexvar_epi32(__M, __X, __Y);
+}
+
+__m512i test_mm512_permutexvar_epi32(__m512i __X, __m512i __Y) {
+ // CHECK-LABEL: @test_mm512_permutexvar_epi32
+ // CHECK: @llvm.x86.avx512.mask.permvar.si.512
+ return _mm512_permutexvar_epi32(__X, __Y);
+}
+
+__m512i test_mm512_mask_permutexvar_epi32(__m512i __W, __mmask16 __M, __m512i __X, __m512i __Y) {
+ // CHECK-LABEL: @test_mm512_mask_permutexvar_epi32
+ // CHECK: @llvm.x86.avx512.mask.permvar.si.512
+ return _mm512_mask_permutexvar_epi32(__W, __M, __X, __Y);
+}
diff --git a/clang/test/CodeGen/avx512vbmi-builtins.c b/clang/test/CodeGen/avx512vbmi-builtins.c
index 73ed969e48e..c1aa04cc191 100644
--- a/clang/test/CodeGen/avx512vbmi-builtins.c
+++ b/clang/test/CodeGen/avx512vbmi-builtins.c
@@ -25,7 +25,24 @@ __m512i test_mm512_mask_permutex2var_epi8(__m512i __A, __mmask64 __U, __m512i __
__m512i test_mm512_maskz_permutex2var_epi8(__mmask64 __U, __m512i __A, __m512i __I, __m512i __B) {
// CHECK-LABEL: @test_mm512_maskz_permutex2var_epi8
- // CHECK: @llvm.x86.avx512.mask.vpermt2var.qi.512
+ // CHECK: @llvm.x86.avx512.maskz.vpermt2var.qi.512
return _mm512_maskz_permutex2var_epi8(__U, __A, __I, __B);
}
+__m512i test_mm512_permutexvar_epi8(__m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_permutexvar_epi8
+ // CHECK: @llvm.x86.avx512.mask.permvar.qi.512
+ return _mm512_permutexvar_epi8(__A, __B);
+}
+
+__m512i test_mm512_maskz_permutexvar_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi8
+ // CHECK: @llvm.x86.avx512.mask.permvar.qi.512
+ return _mm512_maskz_permutexvar_epi8(__M, __A, __B);
+}
+
+__m512i test_mm512_mask_permutexvar_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_mask_permutexvar_epi8
+ // CHECK: @llvm.x86.avx512.mask.permvar.qi.512
+ return _mm512_mask_permutexvar_epi8(__W, __M, __A, __B);
+}
diff --git a/clang/test/CodeGen/avx512vbmivl-builtin.c b/clang/test/CodeGen/avx512vbmivl-builtin.c
index 90c5b4cc74a..29864eccdf2 100644
--- a/clang/test/CodeGen/avx512vbmivl-builtin.c
+++ b/clang/test/CodeGen/avx512vbmivl-builtin.c
@@ -5,6 +5,41 @@
#include <immintrin.h>
+__m128i test_mm_permutexvar_epi8(__m128i __A, __m128i __B) {
+ // CHECK-LABEL: @test_mm_permutexvar_epi8
+ // CHECK: @llvm.x86.avx512.mask.permvar.qi.128
+ return _mm_permutexvar_epi8(__A, __B);
+}
+
+__m128i test_mm_maskz_permutexvar_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
+ // CHECK-LABEL: @test_mm_maskz_permutexvar_epi8
+ // CHECK: @llvm.x86.avx512.mask.permvar.qi.128
+ return _mm_maskz_permutexvar_epi8(__M, __A, __B);
+}
+
+__m128i test_mm_mask_permutexvar_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
+ // CHECK-LABEL: @test_mm_mask_permutexvar_epi8
+ // CHECK: @llvm.x86.avx512.mask.permvar.qi.128
+ return _mm_mask_permutexvar_epi8(__W, __M, __A, __B);
+}
+
+__m256i test_mm256_permutexvar_epi8(__m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_permutexvar_epi8
+ // CHECK: @llvm.x86.avx512.mask.permvar.qi.256
+ return _mm256_permutexvar_epi8(__A, __B);
+}
+
+__m256i test_mm256_maskz_permutexvar_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi8
+ // CHECK: @llvm.x86.avx512.mask.permvar.qi.256
+ return _mm256_maskz_permutexvar_epi8(__M, __A, __B);
+}
+
+__m256i test_mm256_mask_permutexvar_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_mask_permutexvar_epi8
+ // CHECK: @llvm.x86.avx512.mask.permvar.qi.256
+ return _mm256_mask_permutexvar_epi8(__W, __M, __A, __B);
+}
__m128i test_mm_mask2_permutex2var_epi8(__m128i __A, __m128i __I, __mmask16 __U, __m128i __B) {
// CHECK-LABEL: @test_mm_mask2_permutex2var_epi8
diff --git a/clang/test/CodeGen/avx512vl-builtins.c b/clang/test/CodeGen/avx512vl-builtins.c
index 167d79bd2d5..9ba949e7296 100644
--- a/clang/test/CodeGen/avx512vl-builtins.c
+++ b/clang/test/CodeGen/avx512vl-builtins.c
@@ -6358,3 +6358,106 @@ __m256i test_mm256_mask_i32gather_epi32(__m256i __v1_old, __mmask8 __mask, __m25
// CHECK: @llvm.x86.avx512.gather3siv8.si
return _mm256_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
}
+
+__m256d test_mm256_mask_permutex_pd(__m256d __W, __mmask8 __U, __m256d __X) {
+ // CHECK-LABEL: @test_mm256_mask_permutex_pd
+ // CHECK: @llvm.x86.avx512.mask.perm.df.256
+ return _mm256_mask_permutex_pd(__W, __U, __X, 1);
+}
+
+__m256d test_mm256_maskz_permutex_pd(__mmask8 __U, __m256d __X) {
+ // CHECK-LABEL: @test_mm256_maskz_permutex_pd
+ // CHECK: @llvm.x86.avx512.mask.perm.df.256
+ return _mm256_maskz_permutex_pd(__U, __X, 1);
+}
+
+__m256d test_mm256_permutex_pd(__m256d __X) {
+ // CHECK-LABEL: @test_mm256_permutex_pd
+ // CHECK: @llvm.x86.avx512.mask.perm.df.256
+ return _mm256_permutex_pd(__X, 3);
+}
+
+
+__m256i test_mm256_mask_permutex_epi64(__m256i __W, __mmask8 __M, __m256i __X) {
+ // CHECK-LABEL: @test_mm256_mask_permutex_epi64
+ // CHECK: @llvm.x86.avx512.mask.perm.di.256
+ return _mm256_mask_permutex_epi64(__W, __M, __X, 3);
+}
+
+__m256i test_mm256_maskz_permutex_epi64(__mmask8 __M, __m256i __X) {
+ // CHECK-LABEL: @test_mm256_maskz_permutex_epi64
+ // CHECK: @llvm.x86.avx512.mask.perm.di.256
+ return _mm256_maskz_permutex_epi64(__M, __X, 3);
+}
+
+__m256i test_mm256_permutex_epi64( __m256i __X) {
+ // CHECK-LABEL: @test_mm256_permutex_epi64
+ // CHECK: @llvm.x86.avx512.mask.perm.di.256
+ return _mm256_permutex_epi64(__X, 3);
+}
+
+__m256d test_mm256_permutexvar_pd(__m256i __X, __m256d __Y) {
+ // CHECK-LABEL: @test_mm256_permutexvar_pd
+ // CHECK: @llvm.x86.avx512.mask.permvar.df.256
+ return _mm256_permutexvar_pd(__X, __Y);
+}
+
+__m256d test_mm256_mask_permutexvar_pd(__m256d __W, __mmask8 __U, __m256i __X, __m256d __Y) {
+ // CHECK-LABEL: @test_mm256_mask_permutexvar_pd
+ // CHECK: @llvm.x86.avx512.mask.permvar.df.256
+ return _mm256_mask_permutexvar_pd(__W, __U, __X, __Y);
+}
+
+__m256d test_mm256_maskz_permutexvar_pd(__mmask8 __U, __m256i __X, __m256d __Y) {
+ // CHECK-LABEL: @test_mm256_maskz_permutexvar_pd
+ // CHECK: @llvm.x86.avx512.mask.permvar.df.256
+ return _mm256_maskz_permutexvar_pd(__U, __X, __Y);
+}
+
+__m256i test_mm256_maskz_permutexvar_epi64(__mmask8 __M, __m256i __X, __m256i __Y) {
+ // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi64
+ // CHECK: @llvm.x86.avx512.mask.permvar.di.256
+ return _mm256_maskz_permutexvar_epi64(__M, __X, __Y);
+}
+
+__m256i test_mm256_mask_permutexvar_epi64(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
+ // CHECK-LABEL: @test_mm256_mask_permutexvar_epi64
+ // CHECK: @llvm.x86.avx512.mask.permvar.di.256
+ return _mm256_mask_permutexvar_epi64(__W, __M, __X, __Y);
+}
+
+__m256 test_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y) {
+ // CHECK-LABEL: @test_mm256_mask_permutexvar_ps
+ // CHECK: @llvm.x86.avx512.mask.permvar.sf.256
+ return _mm256_mask_permutexvar_ps(__W, __U, __X, __Y);
+}
+
+__m256 test_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y) {
+ // CHECK-LABEL: @test_mm256_maskz_permutexvar_ps
+ // CHECK: @llvm.x86.avx512.mask.permvar.sf.256
+ return _mm256_maskz_permutexvar_ps(__U, __X, __Y);
+}
+
+__m256 test_mm256_permutexvar_ps(__m256i __X, __m256 __Y) {
+ // CHECK-LABEL: @test_mm256_permutexvar_ps
+ // CHECK: @llvm.x86.avx512.mask.permvar.sf.256
+ return _mm256_permutexvar_ps( __X, __Y);
+}
+
+__m256i test_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y) {
+ // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi32
+ // CHECK: @llvm.x86.avx512.mask.permvar.si.256
+ return _mm256_maskz_permutexvar_epi32(__M, __X, __Y);
+}
+
+__m256i test_mm256_permutexvar_epi32(__m256i __X, __m256i __Y) {
+ // CHECK-LABEL: @test_mm256_permutexvar_epi32
+ // CHECK: @llvm.x86.avx512.mask.permvar.si.256
+ return _mm256_permutexvar_epi32(__X, __Y);
+}
+
+__m256i test_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {
+ // CHECK-LABEL: @test_mm256_mask_permutexvar_epi32
+ // CHECK: @llvm.x86.avx512.mask.permvar.si.256
+ return _mm256_mask_permutexvar_epi32(__W, __M, __X, __Y);
+}
diff --git a/clang/test/CodeGen/avx512vlbw-builtins.c b/clang/test/CodeGen/avx512vlbw-builtins.c
index b063badf2b5..f05b32d2fe6 100644
--- a/clang/test/CodeGen/avx512vlbw-builtins.c
+++ b/clang/test/CodeGen/avx512vlbw-builtins.c
@@ -2281,3 +2281,38 @@ __m128i test_mm_maskz_set1_epi16(__mmask8 __M, short __A) {
// CHECK: @llvm.x86.avx512.mask.pbroadcast.w.gpr.128
return _mm_maskz_set1_epi16(__M, __A);
}
+__m128i test_mm_permutexvar_epi16(__m128i __A, __m128i __B) {
+ // CHECK-LABEL: @test_mm_permutexvar_epi16
+ // CHECK: @llvm.x86.avx512.mask.permvar.hi.128
+ return _mm_permutexvar_epi16(__A, __B);
+}
+
+__m128i test_mm_maskz_permutexvar_epi16(__mmask8 __M, __m128i __A, __m128i __B) {
+ // CHECK-LABEL: @test_mm_maskz_permutexvar_epi16
+ // CHECK: @llvm.x86.avx512.mask.permvar.hi.128
+ return _mm_maskz_permutexvar_epi16(__M, __A, __B);
+}
+
+__m128i test_mm_mask_permutexvar_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
+ // CHECK-LABEL: @test_mm_mask_permutexvar_epi16
+ // CHECK: @llvm.x86.avx512.mask.permvar.hi.128
+ return _mm_mask_permutexvar_epi16(__W, __M, __A, __B);
+}
+
+__m256i test_mm256_permutexvar_epi16(__m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_permutexvar_epi16
+ // CHECK: @llvm.x86.avx512.mask.permvar.hi.256
+ return _mm256_permutexvar_epi16(__A, __B);
+}
+
+__m256i test_mm256_maskz_permutexvar_epi16(__mmask16 __M, __m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi16
+ // CHECK: @llvm.x86.avx512.mask.permvar.hi.256
+ return _mm256_maskz_permutexvar_epi16(__M, __A, __B);
+}
+
+__m256i test_mm256_mask_permutexvar_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_mask_permutexvar_epi16
+ // CHECK: @llvm.x86.avx512.mask.permvar.hi.256
+ return _mm256_mask_permutexvar_epi16(__W, __M, __A, __B);
+}
OpenPOWER on IntegriCloud