blob: db4abdba457feac31fb08a295287876c60690180 [file] [log] [blame]
Coby Tayreea09663a2017-12-27 11:25:07 +00001// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512vbmi2 -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3#include <immintrin.h>
4
5__m512i test_mm512_mask_compress_epi16(__m512i __S, __mmask32 __U, __m512i __D) {
6 // CHECK-LABEL: @test_mm512_mask_compress_epi16
7 // CHECK: @llvm.x86.avx512.mask.compress.w.512
8 return _mm512_mask_compress_epi16(__S, __U, __D);
9}
10
11__m512i test_mm512_maskz_compress_epi16(__mmask32 __U, __m512i __D) {
12 // CHECK-LABEL: @test_mm512_maskz_compress_epi16
13 // CHECK: @llvm.x86.avx512.mask.compress.w.512
14 return _mm512_maskz_compress_epi16(__U, __D);
15}
16
17__m512i test_mm512_mask_compress_epi8(__m512i __S, __mmask64 __U, __m512i __D) {
18 // CHECK-LABEL: @test_mm512_mask_compress_epi8
19 // CHECK: @llvm.x86.avx512.mask.compress.b.512
20 return _mm512_mask_compress_epi8(__S, __U, __D);
21}
22
23__m512i test_mm512_maskz_compress_epi8(__mmask64 __U, __m512i __D) {
24 // CHECK-LABEL: @test_mm512_maskz_compress_epi8
25 // CHECK: @llvm.x86.avx512.mask.compress.b.512
26 return _mm512_maskz_compress_epi8(__U, __D);
27}
28
29void test_mm512_mask_compressstoreu_epi16(void *__P, __mmask32 __U, __m512i __D) {
30 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi16
Craig Topper3cce6a72018-06-10 17:27:05 +000031 // CHECK: @llvm.masked.compressstore.v32i16(<32 x i16> %{{.*}}, i16* %{{.*}}, <32 x i1> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000032 _mm512_mask_compressstoreu_epi16(__P, __U, __D);
33}
34
35void test_mm512_mask_compressstoreu_epi8(void *__P, __mmask64 __U, __m512i __D) {
36 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi8
Craig Topper3cce6a72018-06-10 17:27:05 +000037 // CHECK: @llvm.masked.compressstore.v64i8(<64 x i8> %{{.*}}, i8* %{{.*}}, <64 x i1> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000038 _mm512_mask_compressstoreu_epi8(__P, __U, __D);
39}
40
41__m512i test_mm512_mask_expand_epi16(__m512i __S, __mmask32 __U, __m512i __D) {
42 // CHECK-LABEL: @test_mm512_mask_expand_epi16
43 // CHECK: @llvm.x86.avx512.mask.expand.w.512
44 return _mm512_mask_expand_epi16(__S, __U, __D);
45}
46
47__m512i test_mm512_maskz_expand_epi16(__mmask32 __U, __m512i __D) {
48 // CHECK-LABEL: @test_mm512_maskz_expand_epi16
49 // CHECK: @llvm.x86.avx512.mask.expand.w.512
50 return _mm512_maskz_expand_epi16(__U, __D);
51}
52
53__m512i test_mm512_mask_expand_epi8(__m512i __S, __mmask64 __U, __m512i __D) {
54 // CHECK-LABEL: @test_mm512_mask_expand_epi8
55 // CHECK: @llvm.x86.avx512.mask.expand.b.512
56 return _mm512_mask_expand_epi8(__S, __U, __D);
57}
58
59__m512i test_mm512_maskz_expand_epi8(__mmask64 __U, __m512i __D) {
60 // CHECK-LABEL: @test_mm512_maskz_expand_epi8
61 // CHECK: @llvm.x86.avx512.mask.expand.b.512
62 return _mm512_maskz_expand_epi8(__U, __D);
63}
64
65__m512i test_mm512_mask_expandloadu_epi16(__m512i __S, __mmask32 __U, void const* __P) {
66 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi16
Craig Topper3cce6a72018-06-10 17:27:05 +000067 // CHECK: @llvm.masked.expandload.v32i16(i16* %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000068 return _mm512_mask_expandloadu_epi16(__S, __U, __P);
69}
70
71__m512i test_mm512_maskz_expandloadu_epi16(__mmask32 __U, void const* __P) {
72 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi16
Craig Topper3cce6a72018-06-10 17:27:05 +000073 // CHECK: @llvm.masked.expandload.v32i16(i16* %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000074 return _mm512_maskz_expandloadu_epi16(__U, __P);
75}
76
77__m512i test_mm512_mask_expandloadu_epi8(__m512i __S, __mmask64 __U, void const* __P) {
78 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi8
Craig Topper3cce6a72018-06-10 17:27:05 +000079 // CHECK: @llvm.masked.expandload.v64i8(i8* %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000080 return _mm512_mask_expandloadu_epi8(__S, __U, __P);
81}
82
83__m512i test_mm512_maskz_expandloadu_epi8(__mmask64 __U, void const* __P) {
84 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi8
Craig Topper3cce6a72018-06-10 17:27:05 +000085 // CHECK: @llvm.masked.expandload.v64i8(i8* %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
Coby Tayreea09663a2017-12-27 11:25:07 +000086 return _mm512_maskz_expandloadu_epi8(__U, __P);
87}
88
89__m512i test_mm512_mask_shldi_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
90 // CHECK-LABEL: @test_mm512_mask_shldi_epi64
Craig Topper2527c372018-06-13 07:19:28 +000091 // CHECK: @llvm.x86.avx512.vpshld.q.512
92 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +000093 return _mm512_mask_shldi_epi64(__S, __U, __A, __B, 127);
94}
95
96__m512i test_mm512_maskz_shldi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
97 // CHECK-LABEL: @test_mm512_maskz_shldi_epi64
Craig Topper2527c372018-06-13 07:19:28 +000098 // CHECK: @llvm.x86.avx512.vpshld.q.512
99 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000100 return _mm512_maskz_shldi_epi64(__U, __A, __B, 63);
101}
102
103__m512i test_mm512_shldi_epi64(__m512i __A, __m512i __B) {
104 // CHECK-LABEL: @test_mm512_shldi_epi64
Craig Topper2527c372018-06-13 07:19:28 +0000105 // CHECK: @llvm.x86.avx512.vpshld.q.512
Coby Tayreea09663a2017-12-27 11:25:07 +0000106 return _mm512_shldi_epi64(__A, __B, 31);
107}
108
109__m512i test_mm512_mask_shldi_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
110 // CHECK-LABEL: @test_mm512_mask_shldi_epi32
Craig Topper2527c372018-06-13 07:19:28 +0000111 // CHECK: @llvm.x86.avx512.vpshld.d.512
112 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000113 return _mm512_mask_shldi_epi32(__S, __U, __A, __B, 127);
114}
115
116__m512i test_mm512_maskz_shldi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
117 // CHECK-LABEL: @test_mm512_maskz_shldi_epi32
Craig Topper2527c372018-06-13 07:19:28 +0000118 // CHECK: @llvm.x86.avx512.vpshld.d.512
119 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000120 return _mm512_maskz_shldi_epi32(__U, __A, __B, 63);
121}
122
123__m512i test_mm512_shldi_epi32(__m512i __A, __m512i __B) {
124 // CHECK-LABEL: @test_mm512_shldi_epi32
Craig Topper2527c372018-06-13 07:19:28 +0000125 // CHECK: @llvm.x86.avx512.vpshld.d.512
Coby Tayreea09663a2017-12-27 11:25:07 +0000126 return _mm512_shldi_epi32(__A, __B, 31);
127}
128
129__m512i test_mm512_mask_shldi_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
130 // CHECK-LABEL: @test_mm512_mask_shldi_epi16
Craig Topper2527c372018-06-13 07:19:28 +0000131 // CHECK: @llvm.x86.avx512.vpshld.w.512
132 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000133 return _mm512_mask_shldi_epi16(__S, __U, __A, __B, 127);
134}
135
136__m512i test_mm512_maskz_shldi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
137 // CHECK-LABEL: @test_mm512_maskz_shldi_epi16
Craig Topper2527c372018-06-13 07:19:28 +0000138 // CHECK: @llvm.x86.avx512.vpshld.w.512
139 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000140 return _mm512_maskz_shldi_epi16(__U, __A, __B, 63);
141}
142
143__m512i test_mm512_shldi_epi16(__m512i __A, __m512i __B) {
144 // CHECK-LABEL: @test_mm512_shldi_epi16
Craig Topper2527c372018-06-13 07:19:28 +0000145 // CHECK: @llvm.x86.avx512.vpshld.w.512
Coby Tayreea09663a2017-12-27 11:25:07 +0000146 return _mm512_shldi_epi16(__A, __B, 31);
147}
148
149__m512i test_mm512_mask_shrdi_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
150 // CHECK-LABEL: @test_mm512_mask_shrdi_epi64
Craig Topper2527c372018-06-13 07:19:28 +0000151 // CHECK: @llvm.x86.avx512.vpshrd.q.512
152 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000153 return _mm512_mask_shrdi_epi64(__S, __U, __A, __B, 127);
154}
155
156__m512i test_mm512_maskz_shrdi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
157 // CHECK-LABEL: @test_mm512_maskz_shrdi_epi64
Craig Topper2527c372018-06-13 07:19:28 +0000158 // CHECK: @llvm.x86.avx512.vpshrd.q.512
159 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000160 return _mm512_maskz_shrdi_epi64(__U, __A, __B, 63);
161}
162
163__m512i test_mm512_shrdi_epi64(__m512i __A, __m512i __B) {
164 // CHECK-LABEL: @test_mm512_shrdi_epi64
Craig Topper2527c372018-06-13 07:19:28 +0000165 // CHECK: @llvm.x86.avx512.vpshrd.q.512
Coby Tayreea09663a2017-12-27 11:25:07 +0000166 return _mm512_shrdi_epi64(__A, __B, 31);
167}
168
169__m512i test_mm512_mask_shrdi_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
170 // CHECK-LABEL: @test_mm512_mask_shrdi_epi32
Craig Topper2527c372018-06-13 07:19:28 +0000171 // CHECK: @llvm.x86.avx512.vpshrd.d.512
172 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000173 return _mm512_mask_shrdi_epi32(__S, __U, __A, __B, 127);
174}
175
176__m512i test_mm512_maskz_shrdi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
177 // CHECK-LABEL: @test_mm512_maskz_shrdi_epi32
Craig Topper2527c372018-06-13 07:19:28 +0000178 // CHECK: @llvm.x86.avx512.vpshrd.d.512
179 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000180 return _mm512_maskz_shrdi_epi32(__U, __A, __B, 63);
181}
182
183__m512i test_mm512_shrdi_epi32(__m512i __A, __m512i __B) {
184 // CHECK-LABEL: @test_mm512_shrdi_epi32
Craig Topper2527c372018-06-13 07:19:28 +0000185 // CHECK: @llvm.x86.avx512.vpshrd.d.512
Coby Tayreea09663a2017-12-27 11:25:07 +0000186 return _mm512_shrdi_epi32(__A, __B, 31);
187}
188
189__m512i test_mm512_mask_shrdi_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
190 // CHECK-LABEL: @test_mm512_mask_shrdi_epi16
Craig Topper2527c372018-06-13 07:19:28 +0000191 // CHECK: @llvm.x86.avx512.vpshrd.w.512
192 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000193 return _mm512_mask_shrdi_epi16(__S, __U, __A, __B, 127);
194}
195
196__m512i test_mm512_maskz_shrdi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
197 // CHECK-LABEL: @test_mm512_maskz_shrdi_epi16
Craig Topper2527c372018-06-13 07:19:28 +0000198 // CHECK: @llvm.x86.avx512.vpshrd.w.512
199 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
Coby Tayreea09663a2017-12-27 11:25:07 +0000200 return _mm512_maskz_shrdi_epi16(__U, __A, __B, 63);
201}
202
203__m512i test_mm512_shrdi_epi16(__m512i __A, __m512i __B) {
204 // CHECK-LABEL: @test_mm512_shrdi_epi16
Craig Topper2527c372018-06-13 07:19:28 +0000205 // CHECK: @llvm.x86.avx512.vpshrd.w.512
Coby Tayreea09663a2017-12-27 11:25:07 +0000206 return _mm512_shrdi_epi16(__A, __B, 31);
207}
208
209__m512i test_mm512_mask_shldv_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
210 // CHECK-LABEL: @test_mm512_mask_shldv_epi64
211 // CHECK: @llvm.x86.avx512.mask.vpshldv.q.512
212 return _mm512_mask_shldv_epi64(__S, __U, __A, __B);
213}
214
215__m512i test_mm512_maskz_shldv_epi64(__mmask8 __U, __m512i __S, __m512i __A, __m512i __B) {
216 // CHECK-LABEL: @test_mm512_maskz_shldv_epi64
217 // CHECK: @llvm.x86.avx512.maskz.vpshldv.q.512
218 return _mm512_maskz_shldv_epi64(__U, __S, __A, __B);
219}
220
221__m512i test_mm512_shldv_epi64(__m512i __S, __m512i __A, __m512i __B) {
222 // CHECK-LABEL: @test_mm512_shldv_epi64
223 // CHECK: @llvm.x86.avx512.mask.vpshldv.q.512
224 return _mm512_shldv_epi64(__S, __A, __B);
225}
226
227__m512i test_mm512_mask_shldv_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
228 // CHECK-LABEL: @test_mm512_mask_shldv_epi32
229 // CHECK: @llvm.x86.avx512.mask.vpshldv.d.512
230 return _mm512_mask_shldv_epi32(__S, __U, __A, __B);
231}
232
233__m512i test_mm512_maskz_shldv_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
234 // CHECK-LABEL: @test_mm512_maskz_shldv_epi32
235 // CHECK: @llvm.x86.avx512.maskz.vpshldv.d.512
236 return _mm512_maskz_shldv_epi32(__U, __S, __A, __B);
237}
238
239__m512i test_mm512_shldv_epi32(__m512i __S, __m512i __A, __m512i __B) {
240 // CHECK-LABEL: @test_mm512_shldv_epi32
241 // CHECK: @llvm.x86.avx512.mask.vpshldv.d.512
242 return _mm512_shldv_epi32(__S, __A, __B);
243}
244
245__m512i test_mm512_mask_shldv_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
246 // CHECK-LABEL: @test_mm512_mask_shldv_epi16
247 // CHECK: @llvm.x86.avx512.mask.vpshldv.w.512
248 return _mm512_mask_shldv_epi16(__S, __U, __A, __B);
249}
250
251__m512i test_mm512_maskz_shldv_epi16(__mmask32 __U, __m512i __S, __m512i __A, __m512i __B) {
252 // CHECK-LABEL: @test_mm512_maskz_shldv_epi16
253 // CHECK: @llvm.x86.avx512.maskz.vpshldv.w.512
254 return _mm512_maskz_shldv_epi16(__U, __S, __A, __B);
255}
256
257__m512i test_mm512_shldv_epi16(__m512i __S, __m512i __A, __m512i __B) {
258 // CHECK-LABEL: @test_mm512_shldv_epi16
259 // CHECK: @llvm.x86.avx512.mask.vpshldv.w.512
260 return _mm512_shldv_epi16(__S, __A, __B);
261}
262
263__m512i test_mm512_mask_shrdv_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
264 // CHECK-LABEL: @test_mm512_mask_shrdv_epi64
265 // CHECK: @llvm.x86.avx512.mask.vpshrdv.q.512
266 return _mm512_mask_shrdv_epi64(__S, __U, __A, __B);
267}
268
269__m512i test_mm512_maskz_shrdv_epi64(__mmask8 __U, __m512i __S, __m512i __A, __m512i __B) {
270 // CHECK-LABEL: @test_mm512_maskz_shrdv_epi64
271 // CHECK: @llvm.x86.avx512.maskz.vpshrdv.q.512
272 return _mm512_maskz_shrdv_epi64(__U, __S, __A, __B);
273}
274
275__m512i test_mm512_shrdv_epi64(__m512i __S, __m512i __A, __m512i __B) {
276 // CHECK-LABEL: @test_mm512_shrdv_epi64
277 // CHECK: @llvm.x86.avx512.mask.vpshrdv.q.512
278 return _mm512_shrdv_epi64(__S, __A, __B);
279}
280
281__m512i test_mm512_mask_shrdv_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
282 // CHECK-LABEL: @test_mm512_mask_shrdv_epi32
283 // CHECK: @llvm.x86.avx512.mask.vpshrdv.d.512
284 return _mm512_mask_shrdv_epi32(__S, __U, __A, __B);
285}
286
287__m512i test_mm512_maskz_shrdv_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
288 // CHECK-LABEL: @test_mm512_maskz_shrdv_epi32
289 // CHECK: @llvm.x86.avx512.maskz.vpshrdv.d.512
290 return _mm512_maskz_shrdv_epi32(__U, __S, __A, __B);
291}
292
293__m512i test_mm512_shrdv_epi32(__m512i __S, __m512i __A, __m512i __B) {
294 // CHECK-LABEL: @test_mm512_shrdv_epi32
295 // CHECK: @llvm.x86.avx512.mask.vpshrdv.d.512
296 return _mm512_shrdv_epi32(__S, __A, __B);
297}
298
299__m512i test_mm512_mask_shrdv_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
300 // CHECK-LABEL: @test_mm512_mask_shrdv_epi16
301 // CHECK: @llvm.x86.avx512.mask.vpshrdv.w.512
302 return _mm512_mask_shrdv_epi16(__S, __U, __A, __B);
303}
304
305__m512i test_mm512_maskz_shrdv_epi16(__mmask32 __U, __m512i __S, __m512i __A, __m512i __B) {
306 // CHECK-LABEL: @test_mm512_maskz_shrdv_epi16
307 // CHECK: @llvm.x86.avx512.maskz.vpshrdv.w.512
308 return _mm512_maskz_shrdv_epi16(__U, __S, __A, __B);
309}
310
311__m512i test_mm512_shrdv_epi16(__m512i __S, __m512i __A, __m512i __B) {
312 // CHECK-LABEL: @test_mm512_shrdv_epi16
313 // CHECK: @llvm.x86.avx512.mask.vpshrdv.w.512
314 return _mm512_shrdv_epi16(__S, __A, __B);
315}
316