summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/CodeGen')
-rw-r--r--clang/test/CodeGen/avx512f-builtins.c162
-rw-r--r--clang/test/CodeGen/avx512vl-builtins.c191
2 files changed, 353 insertions, 0 deletions
diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c
index 2b08ba430d5..541f87a17f7 100644
--- a/clang/test/CodeGen/avx512f-builtins.c
+++ b/clang/test/CodeGen/avx512f-builtins.c
@@ -3539,3 +3539,165 @@ __m512i test_mm512_maskz_ternarylogic_epi64(__mmask8 __U, __m512i __A, __m512i _
// CHECK: @llvm.x86.avx512.maskz.pternlog.q.512
return _mm512_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4);
}
+
+__m512 test_mm512_shuffle_f32x4(__m512 __A, __m512 __B) {
+ // CHECK-LABEL: @test_mm512_shuffle_f32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.f32x4
+ return _mm512_shuffle_f32x4(__A, __B, 4);
+}
+
+__m512 test_mm512_mask_shuffle_f32x4(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
+ // CHECK-LABEL: @test_mm512_mask_shuffle_f32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.f32x4
+ return _mm512_mask_shuffle_f32x4(__W, __U, __A, __B, 4);
+}
+
+__m512 test_mm512_maskz_shuffle_f32x4(__mmask16 __U, __m512 __A, __m512 __B) {
+ // CHECK-LABEL: @test_mm512_maskz_shuffle_f32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.f32x4
+ return _mm512_maskz_shuffle_f32x4(__U, __A, __B, 4);
+}
+
+__m512d test_mm512_shuffle_f64x2(__m512d __A, __m512d __B) {
+ // CHECK-LABEL: @test_mm512_shuffle_f64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.f64x2
+ return _mm512_shuffle_f64x2(__A, __B, 4);
+}
+
+__m512d test_mm512_mask_shuffle_f64x2(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
+ // CHECK-LABEL: @test_mm512_mask_shuffle_f64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.f64x2
+ return _mm512_mask_shuffle_f64x2(__W, __U, __A, __B, 4);
+}
+
+__m512d test_mm512_maskz_shuffle_f64x2(__mmask8 __U, __m512d __A, __m512d __B) {
+ // CHECK-LABEL: @test_mm512_maskz_shuffle_f64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.f64x2
+ return _mm512_maskz_shuffle_f64x2(__U, __A, __B, 4);
+}
+
+__m512i test_mm512_shuffle_i32x4(__m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_shuffle_i32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.i32x4
+ return _mm512_shuffle_i32x4(__A, __B, 4);
+}
+
+__m512i test_mm512_mask_shuffle_i32x4(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_mask_shuffle_i32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.i32x4
+ return _mm512_mask_shuffle_i32x4(__W, __U, __A, __B, 4);
+}
+
+__m512i test_mm512_maskz_shuffle_i32x4(__mmask16 __U, __m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_maskz_shuffle_i32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.i32x4
+ return _mm512_maskz_shuffle_i32x4(__U, __A, __B, 4);
+}
+
+__m512i test_mm512_shuffle_i64x2(__m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_shuffle_i64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.i64x2
+ return _mm512_shuffle_i64x2(__A, __B, 4);
+}
+
+__m512i test_mm512_mask_shuffle_i64x2(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_mask_shuffle_i64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.i64x2
+ return _mm512_mask_shuffle_i64x2(__W, __U, __A, __B, 4);
+}
+
+__m512i test_mm512_maskz_shuffle_i64x2(__mmask8 __U, __m512i __A, __m512i __B) {
+ // CHECK-LABEL: @test_mm512_maskz_shuffle_i64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.i64x2
+ return _mm512_maskz_shuffle_i64x2(__U, __A, __B, 4);
+}
+
+__m512d test_mm512_shuffle_pd(__m512d __M, __m512d __V) {
+ // CHECK-LABEL: @test_mm512_shuffle_pd
+ // CHECK: @llvm.x86.avx512.mask.shuf.pd.512
+ return _mm512_shuffle_pd(__M, __V, 4);
+}
+
+__m512d test_mm512_mask_shuffle_pd(__m512d __W, __mmask8 __U, __m512d __M, __m512d __V) {
+ // CHECK-LABEL: @test_mm512_mask_shuffle_pd
+ // CHECK: @llvm.x86.avx512.mask.shuf.pd.512
+ return _mm512_mask_shuffle_pd(__W, __U, __M, __V, 4);
+}
+
+__m512d test_mm512_maskz_shuffle_pd(__mmask8 __U, __m512d __M, __m512d __V) {
+ // CHECK-LABEL: @test_mm512_maskz_shuffle_pd
+ // CHECK: @llvm.x86.avx512.mask.shuf.pd.512
+ return _mm512_maskz_shuffle_pd(__U, __M, __V, 4);
+}
+
+__m512 test_mm512_shuffle_ps(__m512 __M, __m512 __V) {
+ // CHECK-LABEL: @test_mm512_shuffle_ps
+ // CHECK: @llvm.x86.avx512.mask.shuf.ps.512
+ return _mm512_shuffle_ps(__M, __V, 4);
+}
+
+__m512 test_mm512_mask_shuffle_ps(__m512 __W, __mmask16 __U, __m512 __M, __m512 __V) {
+ // CHECK-LABEL: @test_mm512_mask_shuffle_ps
+ // CHECK: @llvm.x86.avx512.mask.shuf.ps.512
+ return _mm512_mask_shuffle_ps(__W, __U, __M, __V, 4);
+}
+
+__m512 test_mm512_maskz_shuffle_ps(__mmask16 __U, __m512 __M, __m512 __V) {
+ // CHECK-LABEL: @test_mm512_maskz_shuffle_ps
+ // CHECK: @llvm.x86.avx512.mask.shuf.ps.512
+ return _mm512_maskz_shuffle_ps(__U, __M, __V, 4);
+}
+
+__m128d test_mm_sqrt_round_sd(__m128d __A, __m128d __B) {
+ // CHECK-LABEL: @test_mm_sqrt_round_sd
+ // CHECK: @llvm.x86.avx512.mask.sqrt.sd
+ return _mm_sqrt_round_sd(__A, __B, 4);
+}
+
+__m128d test_mm_mask_sqrt_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
+ // CHECK: @llvm.x86.avx512.mask.sqrt.sd
+ return _mm_mask_sqrt_sd(__W,__U,__A,__B);
+}
+
+__m128d test_mm_mask_sqrt_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
+ // CHECK: @llvm.x86.avx512.mask.sqrt.sd
+ return _mm_mask_sqrt_round_sd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
+}
+
+__m128d test_mm_maskz_sqrt_sd(__mmask8 __U, __m128d __A, __m128d __B){
+ // CHECK: @llvm.x86.avx512.mask.sqrt.sd
+ return _mm_maskz_sqrt_sd(__U,__A,__B);
+}
+
+__m128d test_mm_maskz_sqrt_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
+ // CHECK: @llvm.x86.avx512.mask.sqrt.sd
+ return _mm_maskz_sqrt_round_sd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
+}
+
+__m128 test_mm_sqrt_round_ss(__m128 __A, __m128 __B) {
+ // CHECK-LABEL: @test_mm_sqrt_round_ss
+ // CHECK: @llvm.x86.avx512.mask.sqrt.ss
+ return _mm_sqrt_round_ss(__A, __B, 4);
+}
+
+__m128 test_mm_mask_sqrt_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
+ // CHECK: @llvm.x86.avx512.mask.sqrt.ss
+ return _mm_mask_sqrt_ss(__W,__U,__A,__B);
+}
+
+__m128 test_mm_mask_sqrt_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
+ // CHECK: @llvm.x86.avx512.mask.sqrt.ss
+ return _mm_mask_sqrt_round_ss(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
+}
+
+__m128 test_mm_maskz_sqrt_ss(__mmask8 __U, __m128 __A, __m128 __B){
+ // CHECK: @llvm.x86.avx512.mask.sqrt.ss
+ return _mm_maskz_sqrt_ss(__U,__A,__B);
+}
+
+__m128 test_mm_maskz_sqrt_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
+ // CHECK: @llvm.x86.avx512.mask.sqrt.ss
+ return _mm_maskz_sqrt_round_ss(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
+}
+
+
diff --git a/clang/test/CodeGen/avx512vl-builtins.c b/clang/test/CodeGen/avx512vl-builtins.c
index 6eaa803d926..76741b78f8c 100644
--- a/clang/test/CodeGen/avx512vl-builtins.c
+++ b/clang/test/CodeGen/avx512vl-builtins.c
@@ -5087,3 +5087,194 @@ __m256i test_mm256_maskz_ternarylogic_epi64(__mmask8 __U, __m256i __A, __m256i _
// CHECK: @llvm.x86.avx512.maskz.pternlog.q.256
return _mm256_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4);
}
+__m256 test_mm256_shuffle_f32x4(__m256 __A, __m256 __B) {
+ // CHECK-LABEL: @test_mm256_shuffle_f32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.f32x4
+ return _mm256_shuffle_f32x4(__A, __B, 4);
+}
+
+__m256 test_mm256_mask_shuffle_f32x4(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
+ // CHECK-LABEL: @test_mm256_mask_shuffle_f32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.f32x4
+ return _mm256_mask_shuffle_f32x4(__W, __U, __A, __B, 4);
+}
+
+__m256 test_mm256_maskz_shuffle_f32x4(__mmask8 __U, __m256 __A, __m256 __B) {
+ // CHECK-LABEL: @test_mm256_maskz_shuffle_f32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.f32x4
+ return _mm256_maskz_shuffle_f32x4(__U, __A, __B, 4);
+}
+
+__m256d test_mm256_shuffle_f64x2(__m256d __A, __m256d __B) {
+ // CHECK-LABEL: @test_mm256_shuffle_f64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.f64x2
+ return _mm256_shuffle_f64x2(__A, __B, 4);
+}
+
+__m256d test_mm256_mask_shuffle_f64x2(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
+ // CHECK-LABEL: @test_mm256_mask_shuffle_f64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.f64x2
+ return _mm256_mask_shuffle_f64x2(__W, __U, __A, __B, 4);
+}
+
+__m256d test_mm256_maskz_shuffle_f64x2(__mmask8 __U, __m256d __A, __m256d __B) {
+ // CHECK-LABEL: @test_mm256_maskz_shuffle_f64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.f64x2
+ return _mm256_maskz_shuffle_f64x2(__U, __A, __B, 4);
+}
+
+__m256i test_mm256_shuffle_i32x4(__m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_shuffle_i32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.i32x4
+ return _mm256_shuffle_i32x4(__A, __B, 4);
+}
+
+__m256i test_mm256_mask_shuffle_i32x4(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_mask_shuffle_i32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.i32x4
+ return _mm256_mask_shuffle_i32x4(__W, __U, __A, __B, 4);
+}
+
+__m256i test_mm256_maskz_shuffle_i32x4(__mmask8 __U, __m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_maskz_shuffle_i32x4
+ // CHECK: @llvm.x86.avx512.mask.shuf.i32x4
+ return _mm256_maskz_shuffle_i32x4(__U, __A, __B, 4);
+}
+
+__m256i test_mm256_shuffle_i64x2(__m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_shuffle_i64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.i64x2
+ return _mm256_shuffle_i64x2(__A, __B, 4);
+}
+
+__m256i test_mm256_mask_shuffle_i64x2(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_mask_shuffle_i64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.i64x2
+ return _mm256_mask_shuffle_i64x2(__W, __U, __A, __B, 4);
+}
+
+__m256i test_mm256_maskz_shuffle_i64x2(__mmask8 __U, __m256i __A, __m256i __B) {
+ // CHECK-LABEL: @test_mm256_maskz_shuffle_i64x2
+ // CHECK: @llvm.x86.avx512.mask.shuf.i64x2
+ return _mm256_maskz_shuffle_i64x2(__U, __A, __B, 4);
+}
+
+__m128d test_mm_mask_shuffle_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
+ // CHECK-LABEL: @test_mm_mask_shuffle_pd
+ // CHECK: @llvm.x86.avx512.mask.shuf.pd.128
+ return _mm_mask_shuffle_pd(__W, __U, __A, __B, 4);
+}
+
+__m128d test_mm_maskz_shuffle_pd(__mmask8 __U, __m128d __A, __m128d __B) {
+ // CHECK-LABEL: @test_mm_maskz_shuffle_pd
+ // CHECK: @llvm.x86.avx512.mask.shuf.pd.128
+ return _mm_maskz_shuffle_pd(__U, __A, __B, 4);
+}
+
+__m256d test_mm256_mask_shuffle_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
+ // CHECK-LABEL: @test_mm256_mask_shuffle_pd
+ // CHECK: @llvm.x86.avx512.mask.shuf.pd.256
+ return _mm256_mask_shuffle_pd(__W, __U, __A, __B, 4);
+}
+
+__m256d test_mm256_maskz_shuffle_pd(__mmask8 __U, __m256d __A, __m256d __B) {
+ // CHECK-LABEL: @test_mm256_maskz_shuffle_pd
+ // CHECK: @llvm.x86.avx512.mask.shuf.pd.256
+ return _mm256_maskz_shuffle_pd(__U, __A, __B, 4);
+}
+
+__m128 test_mm_mask_shuffle_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
+ // CHECK-LABEL: @test_mm_mask_shuffle_ps
+ // CHECK: @llvm.x86.avx512.mask.shuf.ps.128
+ return _mm_mask_shuffle_ps(__W, __U, __A, __B, 4);
+}
+
+__m128 test_mm_maskz_shuffle_ps(__mmask8 __U, __m128 __A, __m128 __B) {
+ // CHECK-LABEL: @test_mm_maskz_shuffle_ps
+ // CHECK: @llvm.x86.avx512.mask.shuf.ps.128
+ return _mm_maskz_shuffle_ps(__U, __A, __B, 4);
+}
+
+__m256 test_mm256_mask_shuffle_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
+ // CHECK-LABEL: @test_mm256_mask_shuffle_ps
+ // CHECK: @llvm.x86.avx512.mask.shuf.ps.256
+ return _mm256_mask_shuffle_ps(__W, __U, __A, __B, 4);
+}
+
+__m256 test_mm256_maskz_shuffle_ps(__mmask8 __U, __m256 __A, __m256 __B) {
+ // CHECK-LABEL: @test_mm256_maskz_shuffle_ps
+ // CHECK: @llvm.x86.avx512.mask.shuf.ps.256
+ return _mm256_maskz_shuffle_ps(__U, __A, __B, 4);
+}
+
+__m128d test_mm_rsqrt14_pd(__m128d __A) {
+ // CHECK-LABEL: @test_mm_rsqrt14_pd
+ // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
+ return _mm_rsqrt14_pd(__A);
+}
+
+__m128d test_mm_mask_rsqrt14_pd(__m128d __W, __mmask8 __U, __m128d __A) {
+ // CHECK-LABEL: @test_mm_mask_rsqrt14_pd
+ // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
+ return _mm_mask_rsqrt14_pd(__W, __U, __A);
+}
+
+__m128d test_mm_maskz_rsqrt14_pd(__mmask8 __U, __m128d __A) {
+ // CHECK-LABEL: @test_mm_maskz_rsqrt14_pd
+ // CHECK: @llvm.x86.avx512.rsqrt14.pd.128
+ return _mm_maskz_rsqrt14_pd(__U, __A);
+}
+
+__m256d test_mm256_rsqrt14_pd(__m256d __A) {
+ // CHECK-LABEL: @test_mm256_rsqrt14_pd
+ // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
+ return _mm256_rsqrt14_pd(__A);
+}
+
+__m256d test_mm256_mask_rsqrt14_pd(__m256d __W, __mmask8 __U, __m256d __A) {
+ // CHECK-LABEL: @test_mm256_mask_rsqrt14_pd
+ // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
+ return _mm256_mask_rsqrt14_pd(__W, __U, __A);
+}
+
+__m256d test_mm256_maskz_rsqrt14_pd(__mmask8 __U, __m256d __A) {
+ // CHECK-LABEL: @test_mm256_maskz_rsqrt14_pd
+ // CHECK: @llvm.x86.avx512.rsqrt14.pd.256
+ return _mm256_maskz_rsqrt14_pd(__U, __A);
+}
+
+__m128 test_mm_rsqrt14_ps(__m128 __A) {
+ // CHECK-LABEL: @test_mm_rsqrt14_ps
+ // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
+ return _mm_rsqrt14_ps(__A);
+}
+
+__m128 test_mm_mask_rsqrt14_ps(__m128 __W, __mmask8 __U, __m128 __A) {
+ // CHECK-LABEL: @test_mm_mask_rsqrt14_ps
+ // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
+ return _mm_mask_rsqrt14_ps(__W, __U, __A);
+}
+
+__m128 test_mm_maskz_rsqrt14_ps(__mmask8 __U, __m128 __A) {
+ // CHECK-LABEL: @test_mm_maskz_rsqrt14_ps
+ // CHECK: @llvm.x86.avx512.rsqrt14.ps.128
+ return _mm_maskz_rsqrt14_ps(__U, __A);
+}
+
+__m256 test_mm256_rsqrt14_ps(__m256 __A) {
+ // CHECK-LABEL: @test_mm256_rsqrt14_ps
+ // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
+ return _mm256_rsqrt14_ps(__A);
+}
+
+__m256 test_mm256_mask_rsqrt14_ps(__m256 __W, __mmask8 __U, __m256 __A) {
+ // CHECK-LABEL: @test_mm256_mask_rsqrt14_ps
+ // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
+ return _mm256_mask_rsqrt14_ps(__W, __U, __A);
+}
+
+__m256 test_mm256_maskz_rsqrt14_ps(__mmask8 __U, __m256 __A) {
+ // CHECK-LABEL: @test_mm256_maskz_rsqrt14_ps
+ // CHECK: @llvm.x86.avx512.rsqrt14.ps.256
+ return _mm256_maskz_rsqrt14_ps(__U, __A);
+}
OpenPOWER on IntegriCloud