summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGen/avx512vl-builtins.c
diff options
context:
space:
mode:
authorMichael Zuckerman <Michael.zuckerman@intel.com>2016-04-13 12:58:01 +0000
committerMichael Zuckerman <Michael.zuckerman@intel.com>2016-04-13 12:58:01 +0000
commitc2b6128a8f28b83b6e9a3feffc98ce509a66dc4c (patch)
treeb3219cb354f5067c8f9e4d330caa4b05637c0916 /clang/test/CodeGen/avx512vl-builtins.c
parentcc901b57d54c398c2b22f522eeb26fbc8dfc9b56 (diff)
downloadbcm5719-llvm-c2b6128a8f28b83b6e9a3feffc98ce509a66dc4c.tar.gz
bcm5719-llvm-c2b6128a8f28b83b6e9a3feffc98ce509a66dc4c.zip
[Clang][AVX512][Builtin] Adding support for VBROADCAST and VPBROADCASTB/W/D/Q instruction set
Differential Revision: http://reviews.llvm.org/D19012 llvm-svn: 266195
Diffstat (limited to 'clang/test/CodeGen/avx512vl-builtins.c')
-rw-r--r--clang/test/CodeGen/avx512vl-builtins.c120
1 files changed, 120 insertions, 0 deletions
diff --git a/clang/test/CodeGen/avx512vl-builtins.c b/clang/test/CodeGen/avx512vl-builtins.c
index 76741b78f8c..6a2156d3bfc 100644
--- a/clang/test/CodeGen/avx512vl-builtins.c
+++ b/clang/test/CodeGen/avx512vl-builtins.c
@@ -5278,3 +5278,123 @@ __m256 test_mm256_maskz_rsqrt14_ps(__mmask8 __U, __m256 __A) {
// CHECK: @llvm.x86.avx512.rsqrt14.ps.256
return _mm256_maskz_rsqrt14_ps(__U, __A);
}
+
+__m256 test_mm256_broadcast_f32x4(__m128 __A) {
+ // CHECK-LABEL: @test_mm256_broadcast_f32x4
+ // CHECK: @llvm.x86.avx512.mask.broadcastf32x4
+ return _mm256_broadcast_f32x4(__A);
+}
+
+__m256 test_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A) {
+ // CHECK-LABEL: @test_mm256_mask_broadcast_f32x4
+ // CHECK: @llvm.x86.avx512.mask.broadcastf32x4
+ return _mm256_mask_broadcast_f32x4(__O, __M, __A);
+}
+
+__m256 test_mm256_maskz_broadcast_f32x4(__mmask8 __M, __m128 __A) {
+ // CHECK-LABEL: @test_mm256_maskz_broadcast_f32x4
+ // CHECK: @llvm.x86.avx512.mask.broadcastf32x4
+ return _mm256_maskz_broadcast_f32x4(__M, __A);
+}
+
+__m256i test_mm256_broadcast_i32x4(__m128i __A) {
+ // CHECK-LABEL: @test_mm256_broadcast_i32x4
+ // CHECK: @llvm.x86.avx512.mask.broadcasti32x4
+ return _mm256_broadcast_i32x4(__A);
+}
+
+__m256i test_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm256_mask_broadcast_i32x4
+ // CHECK: @llvm.x86.avx512.mask.broadcasti32x4
+ return _mm256_mask_broadcast_i32x4(__O, __M, __A);
+}
+
+__m256i test_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm256_maskz_broadcast_i32x4
+ // CHECK: @llvm.x86.avx512.mask.broadcasti32x4
+ return _mm256_maskz_broadcast_i32x4(__M, __A);
+}
+
+__m256d test_mm256_mask_broadcastsd_pd(__m256d __O, __mmask8 __M, __m128d __A) {
+ // CHECK-LABEL: @test_mm256_mask_broadcastsd_pd
+ // CHECK: @llvm.x86.avx512.mask.broadcast.sd.pd.256
+ return _mm256_mask_broadcastsd_pd(__O, __M, __A);
+}
+
+__m256d test_mm256_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {
+ // CHECK-LABEL: @test_mm256_maskz_broadcastsd_pd
+ // CHECK: @llvm.x86.avx512.mask.broadcast.sd.pd.256
+ return _mm256_maskz_broadcastsd_pd(__M, __A);
+}
+
+__m128 test_mm_mask_broadcastss_ps(__m128 __O, __mmask8 __M, __m128 __A) {
+ // CHECK-LABEL: @test_mm_mask_broadcastss_ps
+ // CHECK: @llvm.x86.avx512.mask.broadcast.ss.ps.128
+ return _mm_mask_broadcastss_ps(__O, __M, __A);
+}
+
+__m128 test_mm_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {
+ // CHECK-LABEL: @test_mm_maskz_broadcastss_ps
+ // CHECK: @llvm.x86.avx512.mask.broadcast.ss.ps.128
+ return _mm_maskz_broadcastss_ps(__M, __A);
+}
+
+__m256 test_mm256_mask_broadcastss_ps(__m256 __O, __mmask8 __M, __m128 __A) {
+ // CHECK-LABEL: @test_mm256_mask_broadcastss_ps
+ // CHECK: @llvm.x86.avx512.mask.broadcast.ss.ps.256
+ return _mm256_mask_broadcastss_ps(__O, __M, __A);
+}
+
+__m256 test_mm256_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {
+ // CHECK-LABEL: @test_mm256_maskz_broadcastss_ps
+ // CHECK: @llvm.x86.avx512.mask.broadcast.ss.ps.256
+ return _mm256_maskz_broadcastss_ps(__M, __A);
+}
+
+__m128i test_mm_mask_broadcastd_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm_mask_broadcastd_epi32
+ // CHECK: @llvm.x86.avx512.pbroadcastd.128
+ return _mm_mask_broadcastd_epi32(__O, __M, __A);
+}
+
+__m128i test_mm_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm_maskz_broadcastd_epi32
+ // CHECK: @llvm.x86.avx512.pbroadcastd.128
+ return _mm_maskz_broadcastd_epi32(__M, __A);
+}
+
+__m256i test_mm256_mask_broadcastd_epi32(__m256i __O, __mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm256_mask_broadcastd_epi32
+ // CHECK: @llvm.x86.avx512.pbroadcastd.256
+ return _mm256_mask_broadcastd_epi32(__O, __M, __A);
+}
+
+__m256i test_mm256_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm256_maskz_broadcastd_epi32
+ // CHECK: @llvm.x86.avx512.pbroadcastd.256
+ return _mm256_maskz_broadcastd_epi32(__M, __A);
+}
+
+__m128i test_mm_mask_broadcastq_epi64(__m128i __O, __mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm_mask_broadcastq_epi64
+ // CHECK: @llvm.x86.avx512.pbroadcastq.128
+ return _mm_mask_broadcastq_epi64(__O, __M, __A);
+}
+
+__m128i test_mm_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm_maskz_broadcastq_epi64
+ // CHECK: @llvm.x86.avx512.pbroadcastq.128
+ return _mm_maskz_broadcastq_epi64(__M, __A);
+}
+
+__m256i test_mm256_mask_broadcastq_epi64(__m256i __O, __mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm256_mask_broadcastq_epi64
+ // CHECK: @llvm.x86.avx512.pbroadcastq.256
+ return _mm256_mask_broadcastq_epi64(__O, __M, __A);
+}
+
+__m256i test_mm256_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
+ // CHECK-LABEL: @test_mm256_maskz_broadcastq_epi64
+ // CHECK: @llvm.x86.avx512.pbroadcastq.256
+ return _mm256_maskz_broadcastq_epi64(__M, __A);
+}
OpenPOWER on IntegriCloud