summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/CodeGen/avx512f-builtins.c97
-rw-r--r--clang/test/CodeGen/avx512pf-builtins.c30
-rw-r--r--clang/test/CodeGen/avx512vl-builtins.c96
3 files changed, 223 insertions, 0 deletions
diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c
index dc41309a6bb..844c92f3f02 100644
--- a/clang/test/CodeGen/avx512f-builtins.c
+++ b/clang/test/CodeGen/avx512f-builtins.c
@@ -4275,3 +4275,100 @@ __m512 test_mm512_maskz_getexp_ps(__mmask16 __U, __m512 __A) {
// CHECK: @llvm.x86.avx512.mask.getexp.ps.512
return _mm512_maskz_getexp_ps(__U, __A);
}
+
+__m256 test_mm512_i64gather_ps(__m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_i64gather_ps
+ // CHECK: @llvm.x86.avx512.gather.qps.512
+ return _mm512_i64gather_ps(__index, __addr, 2);
+}
+
+__m256 test_mm512_mask_i64gather_ps(__m256 __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_mask_i64gather_ps
+ // CHECK: @llvm.x86.avx512.gather.qps.512
+ return _mm512_mask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m256i test_mm512_i64gather_epi32(__m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_i64gather_epi32
+ // CHECK: @llvm.x86.avx512.gather.qpi.512
+ return _mm512_i64gather_epi32(__index, __addr, 2);
+}
+
+__m256i test_mm512_mask_i64gather_epi32(__m256i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_mask_i64gather_epi32
+ // CHECK: @llvm.x86.avx512.gather.qpi.512
+ return _mm512_mask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m512d test_mm512_i64gather_pd(__m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_i64gather_pd
+ // CHECK: @llvm.x86.avx512.gather.qpd.512
+ return _mm512_i64gather_pd(__index, __addr, 2);
+}
+
+__m512d test_mm512_mask_i64gather_pd(__m512d __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_mask_i64gather_pd
+ // CHECK: @llvm.x86.avx512.gather.qpd.512
+ return _mm512_mask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m512i test_mm512_i64gather_epi64(__m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_i64gather_epi64
+ // CHECK: @llvm.x86.avx512.gather.qpq.512
+ return _mm512_i64gather_epi64(__index, __addr, 2);
+}
+
+__m512i test_mm512_mask_i64gather_epi64(__m512i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_mask_i64gather_epi64
+ // CHECK: @llvm.x86.avx512.gather.qpq.512
+ return _mm512_mask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m512 test_mm512_i32gather_ps(__m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_i32gather_ps
+ // CHECK: @llvm.x86.avx512.gather.dps.512
+ return _mm512_i32gather_ps(__index, __addr, 2);
+}
+
+__m512 test_mm512_mask_i32gather_ps(__m512 v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_mask_i32gather_ps
+ // CHECK: @llvm.x86.avx512.gather.dps.512
+ return _mm512_mask_i32gather_ps(v1_old, __mask, __index, __addr, 2);
+}
+
+__m512i test_mm512_i32gather_epi32(__m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_i32gather_epi32
+ // CHECK: @llvm.x86.avx512.gather.dpi.512
+ return _mm512_i32gather_epi32(__index, __addr, 2);
+}
+
+__m512i test_mm512_mask_i32gather_epi32(__m512i __v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_mask_i32gather_epi32
+ // CHECK: @llvm.x86.avx512.gather.dpi.512
+ return _mm512_mask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m512d test_mm512_i32gather_pd(__m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_i32gather_pd
+ // CHECK: @llvm.x86.avx512.gather.dpd.512
+ return _mm512_i32gather_pd(__index, __addr, 2);
+}
+
+__m512d test_mm512_mask_i32gather_pd(__m512d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_mask_i32gather_pd
+ // CHECK: @llvm.x86.avx512.gather.dpd.512
+ return _mm512_mask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m512i test_mm512_i32gather_epi64(__m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_i32gather_epi64
+ // CHECK: @llvm.x86.avx512.gather.dpq.512
+ return _mm512_i32gather_epi64(__index, __addr, 2);
+}
+
+__m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm512_mask_i32gather_epi64
+ // CHECK: @llvm.x86.avx512.gather.dpq.512
+ return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
+}
+
diff --git a/clang/test/CodeGen/avx512pf-builtins.c b/clang/test/CodeGen/avx512pf-builtins.c
new file mode 100644
index 00000000000..fe51de5cac5
--- /dev/null
+++ b/clang/test/CodeGen/avx512pf-builtins.c
@@ -0,0 +1,30 @@
+// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512pf -emit-llvm -o - -Werror | FileCheck %s
+
+// Don't include mm_malloc.h, it's system specific.
+#define __MM_MALLOC_H
+
+#include <immintrin.h>
+
+void test_mm512_mask_prefetch_i32gather_pd(__m256i index, __mmask8 mask, void const *addr, int hint) {
+ // CHECK-LABEL: @test_mm512_mask_prefetch_i32gather_pd
+ // CHECK: @llvm.x86.avx512.gatherpf.dpd
+ return _mm512_mask_prefetch_i32gather_pd(index, mask, addr, 2, 1);
+}
+
+void test_mm512_mask_prefetch_i32gather_ps(__m512i index, __mmask16 mask, void const *addr, int hint) {
+ // CHECK-LABEL: @test_mm512_mask_prefetch_i32gather_ps
+ // CHECK: @llvm.x86.avx512.gatherpf.dps
+ return _mm512_mask_prefetch_i32gather_ps(index, mask, addr, 2, 1);
+}
+
+void test_mm512_mask_prefetch_i64gather_pd(__m512i index, __mmask8 mask, void const *addr, int hint) {
+ // CHECK-LABEL: @test_mm512_mask_prefetch_i64gather_pd
+ // CHECK: @llvm.x86.avx512.gatherpf.qpd
+ return _mm512_mask_prefetch_i64gather_pd(index, mask, addr, 2, 1);
+}
+
+void test_mm512_mask_prefetch_i64gather_ps(__m512i index, __mmask8 mask, void const *addr, int hint) {
+ // CHECK-LABEL: @test_mm512_mask_prefetch_i64gather_ps
+ // CHECK: @llvm.x86.avx512.gatherpf.qps
+ return _mm512_mask_prefetch_i64gather_ps(index, mask, addr, 2, 1);
+}
diff --git a/clang/test/CodeGen/avx512vl-builtins.c b/clang/test/CodeGen/avx512vl-builtins.c
index 587c7d2aec8..167d79bd2d5 100644
--- a/clang/test/CodeGen/avx512vl-builtins.c
+++ b/clang/test/CodeGen/avx512vl-builtins.c
@@ -6262,3 +6262,99 @@ __m256 test_mm256_maskz_getmant_ps(__mmask8 __U, __m256 __A) {
// CHECK: @llvm.x86.avx512.mask.getmant.ps.256
return _mm256_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
}
+
+__m128d test_mm_mmask_i64gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm_mmask_i64gather_pd
+ // CHECK: @llvm.x86.avx512.gather3div2.df
+ return _mm_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m128i test_mm_mmask_i64gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm_mmask_i64gather_epi64
+ // CHECK: @llvm.x86.avx512.gather3div2.di
+ return _mm_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m256d test_mm256_mmask_i64gather_pd(__m256d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm256_mmask_i64gather_pd
+ // CHECK: @llvm.x86.avx512.gather3div4.df
+ return _mm256_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m256i test_mm256_mmask_i64gather_epi64(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm256_mmask_i64gather_epi64
+ // CHECK: @llvm.x86.avx512.gather3div4.di
+ return _mm256_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m128 test_mm_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm_mmask_i64gather_ps
+ // CHECK: @llvm.x86.avx512.gather3div4.sf
+ return _mm_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m128i test_mm_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm_mmask_i64gather_epi32
+ // CHECK: @llvm.x86.avx512.gather3div4.si
+ return _mm_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m128 test_mm256_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm256_mmask_i64gather_ps
+ // CHECK: @llvm.x86.avx512.gather3div8.sf
+ return _mm256_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m128i test_mm256_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm256_mmask_i64gather_epi32
+ // CHECK: @llvm.x86.avx512.gather3div8.si
+ return _mm256_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m128d test_mm_mask_i32gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm_mask_i32gather_pd
+ // CHECK: @llvm.x86.avx512.gather3siv2.df
+ return _mm_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m128i test_mm_mask_i32gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm_mask_i32gather_epi64
+ // CHECK: @llvm.x86.avx512.gather3siv2.di
+ return _mm_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m256d test_mm256_mask_i32gather_pd(__m256d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm256_mask_i32gather_pd
+ // CHECK: @llvm.x86.avx512.gather3siv4.df
+ return _mm256_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m256i test_mm256_mask_i32gather_epi64(__m256i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm256_mask_i32gather_epi64
+ // CHECK: @llvm.x86.avx512.gather3siv4.di
+ return _mm256_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m128 test_mm_mask_i32gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm_mask_i32gather_ps
+ // CHECK: @llvm.x86.avx512.gather3siv4.sf
+ return _mm_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m128i test_mm_mask_i32gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm_mask_i32gather_epi32
+ // CHECK: @llvm.x86.avx512.gather3siv4.si
+ return _mm_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m256 test_mm256_mask_i32gather_ps(__m256 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm256_mask_i32gather_ps
+ // CHECK: @llvm.x86.avx512.gather3siv8.sf
+ return _mm256_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2);
+}
+
+__m256i test_mm256_mask_i32gather_epi32(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
+ // CHECK-LABEL: @test_mm256_mask_i32gather_epi32
+ // CHECK: @llvm.x86.avx512.gather3siv8.si
+ return _mm256_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
+}
OpenPOWER on IntegriCloud