1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512vl -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
test_mm_broadcastmb_epi64(__mmask8 __A)8 __m128i test_mm_broadcastmb_epi64(__mmask8 __A) {
9 // CHECK-LABEL: @test_mm_broadcastmb_epi64
10 // CHECK: @llvm.x86.avx512.broadcastmb.128
11 return _mm_broadcastmb_epi64(__A);
12 }
13
test_mm256_broadcastmb_epi64(__mmask8 __A)14 __m256i test_mm256_broadcastmb_epi64(__mmask8 __A) {
15 // CHECK-LABEL: @test_mm256_broadcastmb_epi64
16 // CHECK: @llvm.x86.avx512.broadcastmb.256
17 return _mm256_broadcastmb_epi64(__A);
18 }
19
test_mm_broadcastmw_epi32(__mmask16 __A)20 __m128i test_mm_broadcastmw_epi32(__mmask16 __A) {
21 // CHECK-LABEL: @test_mm_broadcastmw_epi32
22 // CHECK: @llvm.x86.avx512.broadcastmw.128
23 return _mm_broadcastmw_epi32(__A);
24 }
25
test_mm256_broadcastmw_epi32(__mmask16 __A)26 __m256i test_mm256_broadcastmw_epi32(__mmask16 __A) {
27 // CHECK-LABEL: @test_mm256_broadcastmw_epi32
28 // CHECK: @llvm.x86.avx512.broadcastmw.256
29 return _mm256_broadcastmw_epi32(__A);
30 }
31
test_mm_conflict_epi64(__m128i __A)32 __m128i test_mm_conflict_epi64(__m128i __A) {
33 // CHECK-LABEL: @test_mm_conflict_epi64
34 // CHECK: @llvm.x86.avx512.mask.conflict.q.128
35 return _mm_conflict_epi64(__A);
36 }
37
test_mm_mask_conflict_epi64(__m128i __W,__mmask8 __U,__m128i __A)38 __m128i test_mm_mask_conflict_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
39 // CHECK-LABEL: @test_mm_mask_conflict_epi64
40 // CHECK: @llvm.x86.avx512.mask.conflict.q.128
41 return _mm_mask_conflict_epi64(__W, __U, __A);
42 }
43
test_mm_maskz_conflict_epi64(__mmask8 __U,__m128i __A)44 __m128i test_mm_maskz_conflict_epi64(__mmask8 __U, __m128i __A) {
45 // CHECK-LABEL: @test_mm_maskz_conflict_epi64
46 // CHECK: @llvm.x86.avx512.mask.conflict.q.128
47 return _mm_maskz_conflict_epi64(__U, __A);
48 }
49
test_mm256_conflict_epi64(__m256i __A)50 __m256i test_mm256_conflict_epi64(__m256i __A) {
51 // CHECK-LABEL: @test_mm256_conflict_epi64
52 // CHECK: @llvm.x86.avx512.mask.conflict.q.256
53 return _mm256_conflict_epi64(__A);
54 }
55
test_mm256_mask_conflict_epi64(__m256i __W,__mmask8 __U,__m256i __A)56 __m256i test_mm256_mask_conflict_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
57 // CHECK-LABEL: @test_mm256_mask_conflict_epi64
58 // CHECK: @llvm.x86.avx512.mask.conflict.q.256
59 return _mm256_mask_conflict_epi64(__W, __U, __A);
60 }
61
test_mm256_maskz_conflict_epi64(__mmask8 __U,__m256i __A)62 __m256i test_mm256_maskz_conflict_epi64(__mmask8 __U, __m256i __A) {
63 // CHECK-LABEL: @test_mm256_maskz_conflict_epi64
64 // CHECK: @llvm.x86.avx512.mask.conflict.q.256
65 return _mm256_maskz_conflict_epi64(__U, __A);
66 }
67
test_mm_conflict_epi32(__m128i __A)68 __m128i test_mm_conflict_epi32(__m128i __A) {
69 // CHECK-LABEL: @test_mm_conflict_epi32
70 // CHECK: @llvm.x86.avx512.mask.conflict.d.128
71 return _mm_conflict_epi32(__A);
72 }
73
test_mm_mask_conflict_epi32(__m128i __W,__mmask8 __U,__m128i __A)74 __m128i test_mm_mask_conflict_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
75 // CHECK-LABEL: @test_mm_mask_conflict_epi32
76 // CHECK: @llvm.x86.avx512.mask.conflict.d.128
77 return _mm_mask_conflict_epi32(__W, __U, __A);
78 }
79
test_mm_maskz_conflict_epi32(__mmask8 __U,__m128i __A)80 __m128i test_mm_maskz_conflict_epi32(__mmask8 __U, __m128i __A) {
81 // CHECK-LABEL: @test_mm_maskz_conflict_epi32
82 // CHECK: @llvm.x86.avx512.mask.conflict.d.128
83 return _mm_maskz_conflict_epi32(__U, __A);
84 }
85
test_mm256_conflict_epi32(__m256i __A)86 __m256i test_mm256_conflict_epi32(__m256i __A) {
87 // CHECK-LABEL: @test_mm256_conflict_epi32
88 // CHECK: @llvm.x86.avx512.mask.conflict.d.256
89 return _mm256_conflict_epi32(__A);
90 }
91
test_mm256_mask_conflict_epi32(__m256i __W,__mmask8 __U,__m256i __A)92 __m256i test_mm256_mask_conflict_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
93 // CHECK-LABEL: @test_mm256_mask_conflict_epi32
94 // CHECK: @llvm.x86.avx512.mask.conflict.d.256
95 return _mm256_mask_conflict_epi32(__W, __U, __A);
96 }
97
test_mm256_maskz_conflict_epi32(__mmask8 __U,__m256i __A)98 __m256i test_mm256_maskz_conflict_epi32(__mmask8 __U, __m256i __A) {
99 // CHECK-LABEL: @test_mm256_maskz_conflict_epi32
100 // CHECK: @llvm.x86.avx512.mask.conflict.d.256
101 return _mm256_maskz_conflict_epi32(__U, __A);
102 }
103
test_mm_lzcnt_epi32(__m128i __A)104 __m128i test_mm_lzcnt_epi32(__m128i __A) {
105 // CHECK-LABEL: @test_mm_lzcnt_epi32
106 // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
107 return _mm_lzcnt_epi32(__A);
108 }
109
test_mm_mask_lzcnt_epi32(__m128i __W,__mmask8 __U,__m128i __A)110 __m128i test_mm_mask_lzcnt_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
111 // CHECK-LABEL: @test_mm_mask_lzcnt_epi32
112 // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
113 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
114 return _mm_mask_lzcnt_epi32(__W, __U, __A);
115 }
116
test_mm_maskz_lzcnt_epi32(__mmask8 __U,__m128i __A)117 __m128i test_mm_maskz_lzcnt_epi32(__mmask8 __U, __m128i __A) {
118 // CHECK-LABEL: @test_mm_maskz_lzcnt_epi32
119 // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
120 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
121 return _mm_maskz_lzcnt_epi32(__U, __A);
122 }
123
test_mm256_lzcnt_epi32(__m256i __A)124 __m256i test_mm256_lzcnt_epi32(__m256i __A) {
125 // CHECK-LABEL: @test_mm256_lzcnt_epi32
126 // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
127 return _mm256_lzcnt_epi32(__A);
128 }
129
test_mm256_mask_lzcnt_epi32(__m256i __W,__mmask8 __U,__m256i __A)130 __m256i test_mm256_mask_lzcnt_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
131 // CHECK-LABEL: @test_mm256_mask_lzcnt_epi32
132 // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
133 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
134 return _mm256_mask_lzcnt_epi32(__W, __U, __A);
135 }
136
test_mm256_maskz_lzcnt_epi32(__mmask8 __U,__m256i __A)137 __m256i test_mm256_maskz_lzcnt_epi32(__mmask8 __U, __m256i __A) {
138 // CHECK-LABEL: @test_mm256_maskz_lzcnt_epi32
139 // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
140 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
141 return _mm256_maskz_lzcnt_epi32(__U, __A);
142 }
143
test_mm_lzcnt_epi64(__m128i __A)144 __m128i test_mm_lzcnt_epi64(__m128i __A) {
145 // CHECK-LABEL: @test_mm_lzcnt_epi64
146 // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
147 return _mm_lzcnt_epi64(__A);
148 }
149
test_mm_mask_lzcnt_epi64(__m128i __W,__mmask8 __U,__m128i __A)150 __m128i test_mm_mask_lzcnt_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
151 // CHECK-LABEL: @test_mm_mask_lzcnt_epi64
152 // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
153 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
154 return _mm_mask_lzcnt_epi64(__W, __U, __A);
155 }
156
test_mm_maskz_lzcnt_epi64(__mmask8 __U,__m128i __A)157 __m128i test_mm_maskz_lzcnt_epi64(__mmask8 __U, __m128i __A) {
158 // CHECK-LABEL: @test_mm_maskz_lzcnt_epi64
159 // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
160 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
161 return _mm_maskz_lzcnt_epi64(__U, __A);
162 }
163
test_mm256_lzcnt_epi64(__m256i __A)164 __m256i test_mm256_lzcnt_epi64(__m256i __A) {
165 // CHECK-LABEL: @test_mm256_lzcnt_epi64
166 // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
167 return _mm256_lzcnt_epi64(__A);
168 }
169
test_mm256_mask_lzcnt_epi64(__m256i __W,__mmask8 __U,__m256i __A)170 __m256i test_mm256_mask_lzcnt_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
171 // CHECK-LABEL: @test_mm256_mask_lzcnt_epi64
172 // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
173 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
174 return _mm256_mask_lzcnt_epi64(__W, __U, __A);
175 }
176
test_mm256_maskz_lzcnt_epi64(__mmask8 __U,__m256i __A)177 __m256i test_mm256_maskz_lzcnt_epi64(__mmask8 __U, __m256i __A) {
178 // CHECK-LABEL: @test_mm256_maskz_lzcnt_epi64
179 // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
180 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
181 return _mm256_maskz_lzcnt_epi64(__U, __A);
182 }
183