1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512cd -emit-llvm -o - -Werror | FileCheck %s 2 3 // Don't include mm_malloc.h, it's system specific. 4 #define __MM_MALLOC_H 5 6 #include <immintrin.h> 7 8 __m512i test_mm512_conflict_epi64(__m512i __A) { 9 // CHECK-LABEL: @test_mm512_conflict_epi64 10 // CHECK: @llvm.x86.avx512.mask.conflict.q.512 11 return _mm512_conflict_epi64(__A); 12 } 13 __m512i test_mm512_mask_conflict_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 14 // CHECK-LABEL: @test_mm512_mask_conflict_epi64 15 // CHECK: @llvm.x86.avx512.mask.conflict.q.512 16 return _mm512_mask_conflict_epi64(__W,__U,__A); 17 } 18 __m512i test_mm512_maskz_conflict_epi64(__mmask8 __U, __m512i __A) { 19 // CHECK-LABEL: @test_mm512_maskz_conflict_epi64 20 // CHECK: @llvm.x86.avx512.mask.conflict.q.512 21 return _mm512_maskz_conflict_epi64(__U,__A); 22 } 23 __m512i test_mm512_conflict_epi32(__m512i __A) { 24 // CHECK-LABEL: @test_mm512_conflict_epi32 25 // CHECK: @llvm.x86.avx512.mask.conflict.d.512 26 return _mm512_conflict_epi32(__A); 27 } 28 __m512i test_mm512_mask_conflict_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 29 // CHECK-LABEL: @test_mm512_mask_conflict_epi32 30 // CHECK: @llvm.x86.avx512.mask.conflict.d.512 31 return _mm512_mask_conflict_epi32(__W,__U,__A); 32 } 33 __m512i test_mm512_maskz_conflict_epi32(__mmask16 __U, __m512i __A) { 34 // CHECK-LABEL: @test_mm512_maskz_conflict_epi32 35 // CHECK: @llvm.x86.avx512.mask.conflict.d.512 36 return _mm512_maskz_conflict_epi32(__U,__A); 37 } 38 __m512i test_mm512_lzcnt_epi32(__m512i __A) { 39 // CHECK-LABEL: @test_mm512_lzcnt_epi32 40 // CHECK: call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %{{.*}}, i1 false) 41 return _mm512_lzcnt_epi32(__A); 42 } 43 __m512i test_mm512_mask_lzcnt_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 44 // CHECK-LABEL: @test_mm512_mask_lzcnt_epi32 45 // CHECK: call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %{{.*}}, i1 false) 46 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 47 return _mm512_mask_lzcnt_epi32(__W,__U,__A); 48 } 49 __m512i test_mm512_maskz_lzcnt_epi32(__mmask16 __U, __m512i __A) { 50 // CHECK-LABEL: @test_mm512_maskz_lzcnt_epi32 51 // CHECK: call <16 x i32> @llvm.ctlz.v16i32(<16 x i32> %{{.*}}, i1 false) 52 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 53 return _mm512_maskz_lzcnt_epi32(__U,__A); 54 } 55 __m512i test_mm512_lzcnt_epi64(__m512i __A) { 56 // CHECK-LABEL: @test_mm512_lzcnt_epi64 57 // CHECK: call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %{{.*}}, i1 false) 58 return _mm512_lzcnt_epi64(__A); 59 } 60 __m512i test_mm512_mask_lzcnt_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 61 // CHECK-LABEL: @test_mm512_mask_lzcnt_epi64 62 // CHECK: call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %{{.*}}, i1 false) 63 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 64 return _mm512_mask_lzcnt_epi64(__W,__U,__A); 65 } 66 __m512i test_mm512_maskz_lzcnt_epi64(__mmask8 __U, __m512i __A) { 67 // CHECK-LABEL: @test_mm512_maskz_lzcnt_epi64 68 // CHECK: call <8 x i64> @llvm.ctlz.v8i64(<8 x i64> %{{.*}}, i1 false) 69 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 70 return _mm512_maskz_lzcnt_epi64(__U,__A); 71 } 72 73 __m512i test_mm512_broadcastmb_epi64(__mmask8 __A) { 74 // CHECK-LABEL: @test_mm512_broadcastmb_epi64 75 // CHECK: @llvm.x86.avx512.broadcastmb.512 76 return _mm512_broadcastmb_epi64(__A); 77 } 78 79 __m512i test_mm512_broadcastmw_epi32(__mmask16 __A) { 80 // CHECK-LABEL: @test_mm512_broadcastmw_epi32 81 // CHECK: @llvm.x86.avx512.broadcastmw.512 82 return _mm512_broadcastmw_epi32(__A); 83 } 84