[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / CodeGen / X86 / avx512vlvbmi2-builtins.c
blob5760c71790debca9109b71fdc0ca8aedd2bda4dd
1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512vl -target-feature +avx512vbmi2 -emit-llvm -o - -Wall -Werror | FileCheck %s
3 #include <immintrin.h>
5 __m128i test_mm_mask_compress_epi16(__m128i __S, __mmask8 __U, __m128i __D) {
6 // CHECK-LABEL: @test_mm_mask_compress_epi16
7 // CHECK: @llvm.x86.avx512.mask.compress
8 return _mm_mask_compress_epi16(__S, __U, __D);
11 __m128i test_mm_maskz_compress_epi16(__mmask8 __U, __m128i __D) {
12 // CHECK-LABEL: @test_mm_maskz_compress_epi16
13 // CHECK: @llvm.x86.avx512.mask.compress
14 return _mm_maskz_compress_epi16(__U, __D);
17 __m128i test_mm_mask_compress_epi8(__m128i __S, __mmask16 __U, __m128i __D) {
18 // CHECK-LABEL: @test_mm_mask_compress_epi8
19 // CHECK: @llvm.x86.avx512.mask.compress
20 return _mm_mask_compress_epi8(__S, __U, __D);
23 __m128i test_mm_maskz_compress_epi8(__mmask16 __U, __m128i __D) {
24 // CHECK-LABEL: @test_mm_maskz_compress_epi8
25 // CHECK: @llvm.x86.avx512.mask.compress
26 return _mm_maskz_compress_epi8(__U, __D);
29 void test_mm_mask_compressstoreu_epi16(void *__P, __mmask8 __U, __m128i __D) {
30 // CHECK-LABEL: @test_mm_mask_compressstoreu_epi16
31 // CHECK: @llvm.masked.compressstore.v8i16(<8 x i16> %{{.*}}, ptr %{{.*}}, <8 x i1> %{{.*}})
32 _mm_mask_compressstoreu_epi16(__P, __U, __D);
35 void test_mm_mask_compressstoreu_epi8(void *__P, __mmask16 __U, __m128i __D) {
36 // CHECK-LABEL: @test_mm_mask_compressstoreu_epi8
37 // CHECK: @llvm.masked.compressstore.v16i8(<16 x i8> %{{.*}}, ptr %{{.*}}, <16 x i1> %{{.*}})
38 _mm_mask_compressstoreu_epi8(__P, __U, __D);
41 __m128i test_mm_mask_expand_epi16(__m128i __S, __mmask8 __U, __m128i __D) {
42 // CHECK-LABEL: @test_mm_mask_expand_epi16
43 // CHECK: @llvm.x86.avx512.mask.expand
44 return _mm_mask_expand_epi16(__S, __U, __D);
47 __m128i test_mm_maskz_expand_epi16(__mmask8 __U, __m128i __D) {
48 // CHECK-LABEL: @test_mm_maskz_expand_epi16
49 // CHECK: @llvm.x86.avx512.mask.expand
50 return _mm_maskz_expand_epi16(__U, __D);
53 __m128i test_mm_mask_expand_epi8(__m128i __S, __mmask16 __U, __m128i __D) {
54 // CHECK-LABEL: @test_mm_mask_expand_epi8
55 // CHECK: @llvm.x86.avx512.mask.expand
56 return _mm_mask_expand_epi8(__S, __U, __D);
59 __m128i test_mm_maskz_expand_epi8(__mmask16 __U, __m128i __D) {
60 // CHECK-LABEL: @test_mm_maskz_expand_epi8
61 // CHECK: @llvm.x86.avx512.mask.expand
62 return _mm_maskz_expand_epi8(__U, __D);
65 __m128i test_mm_mask_expandloadu_epi16(__m128i __S, __mmask8 __U, void const* __P) {
66 // CHECK-LABEL: @test_mm_mask_expandloadu_epi16
67 // CHECK: @llvm.masked.expandload.v8i16(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
68 return _mm_mask_expandloadu_epi16(__S, __U, __P);
71 __m128i test_mm_maskz_expandloadu_epi16(__mmask8 __U, void const* __P) {
72 // CHECK-LABEL: @test_mm_maskz_expandloadu_epi16
73 // CHECK: @llvm.masked.expandload.v8i16(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
74 return _mm_maskz_expandloadu_epi16(__U, __P);
77 __m128i test_mm_mask_expandloadu_epi8(__m128i __S, __mmask16 __U, void const* __P) {
78 // CHECK-LABEL: @test_mm_mask_expandloadu_epi8
79 // CHECK: @llvm.masked.expandload.v16i8(ptr %{{.*}}, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
80 return _mm_mask_expandloadu_epi8(__S, __U, __P);
83 __m128i test_mm_maskz_expandloadu_epi8(__mmask16 __U, void const* __P) {
84 // CHECK-LABEL: @test_mm_maskz_expandloadu_epi8
85 // CHECK: @llvm.masked.expandload.v16i8(ptr %{{.*}}, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
86 return _mm_maskz_expandloadu_epi8(__U, __P);
89 __m256i test_mm256_mask_compress_epi16(__m256i __S, __mmask16 __U, __m256i __D) {
90 // CHECK-LABEL: @test_mm256_mask_compress_epi16
91 // CHECK: @llvm.x86.avx512.mask.compress
92 return _mm256_mask_compress_epi16(__S, __U, __D);
95 __m256i test_mm256_maskz_compress_epi16(__mmask16 __U, __m256i __D) {
96 // CHECK-LABEL: @test_mm256_maskz_compress_epi16
97 // CHECK: @llvm.x86.avx512.mask.compress
98 return _mm256_maskz_compress_epi16(__U, __D);
101 __m256i test_mm256_mask_compress_epi8(__m256i __S, __mmask32 __U, __m256i __D) {
102 // CHECK-LABEL: @test_mm256_mask_compress_epi8
103 // CHECK: @llvm.x86.avx512.mask.compress
104 return _mm256_mask_compress_epi8(__S, __U, __D);
107 __m256i test_mm256_maskz_compress_epi8(__mmask32 __U, __m256i __D) {
108 // CHECK-LABEL: @test_mm256_maskz_compress_epi8
109 // CHECK: @llvm.x86.avx512.mask.compress
110 return _mm256_maskz_compress_epi8(__U, __D);
113 void test_mm256_mask_compressstoreu_epi16(void *__P, __mmask16 __U, __m256i __D) {
114 // CHECK-LABEL: @test_mm256_mask_compressstoreu_epi16
115 // CHECK: @llvm.masked.compressstore.v16i16(<16 x i16> %{{.*}}, ptr %{{.*}}, <16 x i1> %{{.*}})
116 _mm256_mask_compressstoreu_epi16(__P, __U, __D);
119 void test_mm256_mask_compressstoreu_epi8(void *__P, __mmask32 __U, __m256i __D) {
120 // CHECK-LABEL: @test_mm256_mask_compressstoreu_epi8
121 // CHECK: @llvm.masked.compressstore.v32i8(<32 x i8> %{{.*}}, ptr %{{.*}}, <32 x i1> %{{.*}})
122 _mm256_mask_compressstoreu_epi8(__P, __U, __D);
125 __m256i test_mm256_mask_expand_epi16(__m256i __S, __mmask16 __U, __m256i __D) {
126 // CHECK-LABEL: @test_mm256_mask_expand_epi16
127 // CHECK: @llvm.x86.avx512.mask.expand
128 return _mm256_mask_expand_epi16(__S, __U, __D);
131 __m256i test_mm256_maskz_expand_epi16(__mmask16 __U, __m256i __D) {
132 // CHECK-LABEL: @test_mm256_maskz_expand_epi16
133 // CHECK: @llvm.x86.avx512.mask.expand
134 return _mm256_maskz_expand_epi16(__U, __D);
137 __m256i test_mm256_mask_expand_epi8(__m256i __S, __mmask32 __U, __m256i __D) {
138 // CHECK-LABEL: @test_mm256_mask_expand_epi8
139 // CHECK: @llvm.x86.avx512.mask.expand
140 return _mm256_mask_expand_epi8(__S, __U, __D);
143 __m256i test_mm256_maskz_expand_epi8(__mmask32 __U, __m256i __D) {
144 // CHECK-LABEL: @test_mm256_maskz_expand_epi8
145 // CHECK: @llvm.x86.avx512.mask.expand
146 return _mm256_maskz_expand_epi8(__U, __D);
149 __m256i test_mm256_mask_expandloadu_epi16(__m256i __S, __mmask16 __U, void const* __P) {
150 // CHECK-LABEL: @test_mm256_mask_expandloadu_epi16
151 // CHECK: @llvm.masked.expandload.v16i16(ptr %{{.*}}, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
152 return _mm256_mask_expandloadu_epi16(__S, __U, __P);
155 __m256i test_mm256_maskz_expandloadu_epi16(__mmask16 __U, void const* __P) {
156 // CHECK-LABEL: @test_mm256_maskz_expandloadu_epi16
157 // CHECK: @llvm.masked.expandload.v16i16(ptr %{{.*}}, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
158 return _mm256_maskz_expandloadu_epi16(__U, __P);
161 __m256i test_mm256_mask_expandloadu_epi8(__m256i __S, __mmask32 __U, void const* __P) {
162 // CHECK-LABEL: @test_mm256_mask_expandloadu_epi8
163 // CHECK: @llvm.masked.expandload.v32i8(ptr %{{.*}}, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
164 return _mm256_mask_expandloadu_epi8(__S, __U, __P);
167 __m256i test_mm256_maskz_expandloadu_epi8(__mmask32 __U, void const* __P) {
168 // CHECK-LABEL: @test_mm256_maskz_expandloadu_epi8
169 // CHECK: @llvm.masked.expandload.v32i8(ptr %{{.*}}, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
170 return _mm256_maskz_expandloadu_epi8(__U, __P);
173 __m256i test_mm256_mask_shldi_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
174 // CHECK-LABEL: @test_mm256_mask_shldi_epi64
175 // CHECK: @llvm.fshl.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> splat (i64 47))
176 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
177 return _mm256_mask_shldi_epi64(__S, __U, __A, __B, 47);
180 __m256i test_mm256_maskz_shldi_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
181 // CHECK-LABEL: @test_mm256_maskz_shldi_epi64
182 // CHECK: @llvm.fshl.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> splat (i64 63))
183 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
184 return _mm256_maskz_shldi_epi64(__U, __A, __B, 63);
187 __m256i test_mm256_shldi_epi64(__m256i __A, __m256i __B) {
188 // CHECK-LABEL: @test_mm256_shldi_epi64
189 // CHECK: @llvm.fshl.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> splat (i64 31))
190 return _mm256_shldi_epi64(__A, __B, 31);
193 __m128i test_mm_mask_shldi_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
194 // CHECK-LABEL: @test_mm_mask_shldi_epi64
195 // CHECK: @llvm.fshl.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> splat (i64 47))
196 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
197 return _mm_mask_shldi_epi64(__S, __U, __A, __B, 47);
200 __m128i test_mm_maskz_shldi_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
201 // CHECK-LABEL: @test_mm_maskz_shldi_epi64
202 // CHECK: @llvm.fshl.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> splat (i64 63))
203 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
204 return _mm_maskz_shldi_epi64(__U, __A, __B, 63);
207 __m128i test_mm_shldi_epi64(__m128i __A, __m128i __B) {
208 // CHECK-LABEL: @test_mm_shldi_epi64
209 // CHECK: @llvm.fshl.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> splat (i64 31))
210 return _mm_shldi_epi64(__A, __B, 31);
213 __m256i test_mm256_mask_shldi_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
214 // CHECK-LABEL: @test_mm256_mask_shldi_epi32
215 // CHECK: @llvm.fshl.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> splat (i32 7))
216 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
217 return _mm256_mask_shldi_epi32(__S, __U, __A, __B, 7);
220 __m256i test_mm256_maskz_shldi_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
221 // CHECK-LABEL: @test_mm256_maskz_shldi_epi32
222 // CHECK: @llvm.fshl.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> splat (i32 15))
223 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
224 return _mm256_maskz_shldi_epi32(__U, __A, __B, 15);
227 __m256i test_mm256_shldi_epi32(__m256i __A, __m256i __B) {
228 // CHECK-LABEL: @test_mm256_shldi_epi32
229 // CHECK: @llvm.fshl.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> splat (i32 31))
230 return _mm256_shldi_epi32(__A, __B, 31);
233 __m128i test_mm_mask_shldi_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
234 // CHECK-LABEL: @test_mm_mask_shldi_epi32
235 // CHECK: @llvm.fshl.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> splat (i32 7))
236 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
237 return _mm_mask_shldi_epi32(__S, __U, __A, __B, 7);
240 __m128i test_mm_maskz_shldi_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
241 // CHECK-LABEL: @test_mm_maskz_shldi_epi32
242 // CHECK: @llvm.fshl.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> splat (i32 15))
243 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
244 return _mm_maskz_shldi_epi32(__U, __A, __B, 15);
247 __m128i test_mm_shldi_epi32(__m128i __A, __m128i __B) {
248 // CHECK-LABEL: @test_mm_shldi_epi32
249 // CHECK: @llvm.fshl.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> splat (i32 31))
250 return _mm_shldi_epi32(__A, __B, 31);
253 __m256i test_mm256_mask_shldi_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B) {
254 // CHECK-LABEL: @test_mm256_mask_shldi_epi16
255 // CHECK: @llvm.fshl.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> splat (i16 3))
256 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
257 return _mm256_mask_shldi_epi16(__S, __U, __A, __B, 3);
260 __m256i test_mm256_maskz_shldi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
261 // CHECK-LABEL: @test_mm256_maskz_shldi_epi16
262 // CHECK: @llvm.fshl.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> splat (i16 7))
263 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
264 return _mm256_maskz_shldi_epi16(__U, __A, __B, 7);
267 __m256i test_mm256_shldi_epi16(__m256i __A, __m256i __B) {
268 // CHECK-LABEL: @test_mm256_shldi_epi16
269 // CHECK: @llvm.fshl.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> splat (i16 31))
270 return _mm256_shldi_epi16(__A, __B, 31);
273 __m128i test_mm_mask_shldi_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
274 // CHECK-LABEL: @test_mm_mask_shldi_epi16
275 // CHECK: @llvm.fshl.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> splat (i16 3))
276 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
277 return _mm_mask_shldi_epi16(__S, __U, __A, __B, 3);
280 __m128i test_mm_maskz_shldi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
281 // CHECK-LABEL: @test_mm_maskz_shldi_epi16
282 // CHECK: @llvm.fshl.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> splat (i16 7))
283 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
284 return _mm_maskz_shldi_epi16(__U, __A, __B, 7);
287 __m128i test_mm_shldi_epi16(__m128i __A, __m128i __B) {
288 // CHECK-LABEL: @test_mm_shldi_epi16
289 // CHECK: @llvm.fshl.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> splat (i16 31))
290 return _mm_shldi_epi16(__A, __B, 31);
293 __m256i test_mm256_mask_shrdi_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
294 // CHECK-LABEL: @test_mm256_mask_shrdi_epi64
295 // CHECK: @llvm.fshr.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> splat (i64 47))
296 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
297 return _mm256_mask_shrdi_epi64(__S, __U, __A, __B, 47);
300 __m256i test_mm256_maskz_shrdi_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
301 // CHECK-LABEL: @test_mm256_maskz_shrdi_epi64
302 // CHECK: @llvm.fshr.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> splat (i64 63))
303 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
304 return _mm256_maskz_shrdi_epi64(__U, __A, __B, 63);
307 __m256i test_mm256_shrdi_epi64(__m256i __A, __m256i __B) {
308 // CHECK-LABEL: @test_mm256_shrdi_epi64
309 // CHECK: @llvm.fshr.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> splat (i64 31)
310 return _mm256_shrdi_epi64(__A, __B, 31);
313 __m128i test_mm_mask_shrdi_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
314 // CHECK-LABEL: @test_mm_mask_shrdi_epi64
315 // CHECK: @llvm.fshr.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> splat (i64 47))
316 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
317 return _mm_mask_shrdi_epi64(__S, __U, __A, __B, 47);
320 __m128i test_mm_maskz_shrdi_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
321 // CHECK-LABEL: @test_mm_maskz_shrdi_epi64
322 // CHECK: @llvm.fshr.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> splat (i64 63))
323 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
324 return _mm_maskz_shrdi_epi64(__U, __A, __B, 63);
327 __m128i test_mm_shrdi_epi64(__m128i __A, __m128i __B) {
328 // CHECK-LABEL: @test_mm_shrdi_epi64
329 // CHECK: @llvm.fshr.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> splat (i64 31))
330 return _mm_shrdi_epi64(__A, __B, 31);
333 __m256i test_mm256_mask_shrdi_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
334 // CHECK-LABEL: @test_mm256_mask_shrdi_epi32
335 // CHECK: @llvm.fshr.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> splat (i32 7))
336 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
337 return _mm256_mask_shrdi_epi32(__S, __U, __A, __B, 7);
340 __m256i test_mm256_maskz_shrdi_epi32(__mmask8 __U, __m256i __A, __m256i __B) {
341 // CHECK-LABEL: @test_mm256_maskz_shrdi_epi32
342 // CHECK: @llvm.fshr.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> splat (i32 15))
343 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
344 return _mm256_maskz_shrdi_epi32(__U, __A, __B, 15);
347 __m256i test_mm256_shrdi_epi32(__m256i __A, __m256i __B) {
348 // CHECK-LABEL: @test_mm256_shrdi_epi32
349 // CHECK: @llvm.fshr.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> splat (i32 31)
350 return _mm256_shrdi_epi32(__A, __B, 31);
353 __m128i test_mm_mask_shrdi_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
354 // CHECK-LABEL: @test_mm_mask_shrdi_epi32
355 // CHECK: @llvm.fshr.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> splat (i32 7))
356 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
357 return _mm_mask_shrdi_epi32(__S, __U, __A, __B, 7);
360 __m128i test_mm_maskz_shrdi_epi32(__mmask8 __U, __m128i __A, __m128i __B) {
361 // CHECK-LABEL: @test_mm_maskz_shrdi_epi32
362 // CHECK: @llvm.fshr.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> splat (i32 15))
363 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
364 return _mm_maskz_shrdi_epi32(__U, __A, __B, 15);
367 __m128i test_mm_shrdi_epi32(__m128i __A, __m128i __B) {
368 // CHECK-LABEL: @test_mm_shrdi_epi32
369 // CHECK: @llvm.fshr.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> splat (i32 31))
370 return _mm_shrdi_epi32(__A, __B, 31);
373 __m256i test_mm256_mask_shrdi_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B) {
374 // CHECK-LABEL: @test_mm256_mask_shrdi_epi16
375 // CHECK: @llvm.fshr.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> splat (i16 3))
376 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
377 return _mm256_mask_shrdi_epi16(__S, __U, __A, __B, 3);
380 __m256i test_mm256_maskz_shrdi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
381 // CHECK-LABEL: @test_mm256_maskz_shrdi_epi16
382 // CHECK: @llvm.fshr.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> splat (i16 7))
383 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
384 return _mm256_maskz_shrdi_epi16(__U, __A, __B, 7);
387 __m256i test_mm256_shrdi_epi16(__m256i __A, __m256i __B) {
388 // CHECK-LABEL: @test_mm256_shrdi_epi16
389 // CHECK: @llvm.fshr.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> splat (i16 31))
390 return _mm256_shrdi_epi16(__A, __B, 31);
393 __m128i test_mm_mask_shrdi_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
394 // CHECK-LABEL: @test_mm_mask_shrdi_epi16
395 // CHECK: @llvm.fshr.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> splat (i16 3))
396 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
397 return _mm_mask_shrdi_epi16(__S, __U, __A, __B, 3);
400 __m128i test_mm_maskz_shrdi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
401 // CHECK-LABEL: @test_mm_maskz_shrdi_epi16
402 // CHECK: @llvm.fshr.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> splat (i16 7))
403 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
404 return _mm_maskz_shrdi_epi16(__U, __A, __B, 7);
407 __m128i test_mm_shrdi_epi16(__m128i __A, __m128i __B) {
408 // CHECK-LABEL: @test_mm_shrdi_epi16
409 // CHECK: @llvm.fshr.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> splat (i16 31))
410 return _mm_shrdi_epi16(__A, __B, 31);
413 __m256i test_mm256_mask_shldv_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
414 // CHECK-LABEL: @test_mm256_mask_shldv_epi64
415 // CHECK: @llvm.fshl.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
416 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
417 return _mm256_mask_shldv_epi64(__S, __U, __A, __B);
420 __m256i test_mm256_maskz_shldv_epi64(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
421 // CHECK-LABEL: @test_mm256_maskz_shldv_epi64
422 // CHECK: @llvm.fshl.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
423 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
424 return _mm256_maskz_shldv_epi64(__U, __S, __A, __B);
427 __m256i test_mm256_shldv_epi64(__m256i __S, __m256i __A, __m256i __B) {
428 // CHECK-LABEL: @test_mm256_shldv_epi64
429 // CHECK: @llvm.fshl.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
430 return _mm256_shldv_epi64(__S, __A, __B);
433 __m128i test_mm_mask_shldv_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
434 // CHECK-LABEL: @test_mm_mask_shldv_epi64
435 // CHECK: @llvm.fshl.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
436 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
437 return _mm_mask_shldv_epi64(__S, __U, __A, __B);
440 __m128i test_mm_maskz_shldv_epi64(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
441 // CHECK-LABEL: @test_mm_maskz_shldv_epi64
442 // CHECK: @llvm.fshl.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
443 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
444 return _mm_maskz_shldv_epi64(__U, __S, __A, __B);
447 __m128i test_mm_shldv_epi64(__m128i __S, __m128i __A, __m128i __B) {
448 // CHECK-LABEL: @test_mm_shldv_epi64
449 // CHECK: @llvm.fshl.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
450 return _mm_shldv_epi64(__S, __A, __B);
453 __m256i test_mm256_mask_shldv_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
454 // CHECK-LABEL: @test_mm256_mask_shldv_epi32
455 // CHECK: @llvm.fshl.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}})
456 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
457 return _mm256_mask_shldv_epi32(__S, __U, __A, __B);
460 __m256i test_mm256_maskz_shldv_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
461 // CHECK-LABEL: @test_mm256_maskz_shldv_epi32
462 // CHECK: @llvm.fshl.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}})
463 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
464 return _mm256_maskz_shldv_epi32(__U, __S, __A, __B);
467 __m256i test_mm256_shldv_epi32(__m256i __S, __m256i __A, __m256i __B) {
468 // CHECK-LABEL: @test_mm256_shldv_epi32
469 // CHECK: @llvm.fshl.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}})
470 return _mm256_shldv_epi32(__S, __A, __B);
473 __m128i test_mm_mask_shldv_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
474 // CHECK-LABEL: @test_mm_mask_shldv_epi32
475 // CHECK: @llvm.fshl.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
476 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
477 return _mm_mask_shldv_epi32(__S, __U, __A, __B);
480 __m128i test_mm_maskz_shldv_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
481 // CHECK-LABEL: @test_mm_maskz_shldv_epi32
482 // CHECK: @llvm.fshl.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
483 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
484 return _mm_maskz_shldv_epi32(__U, __S, __A, __B);
487 __m128i test_mm_shldv_epi32(__m128i __S, __m128i __A, __m128i __B) {
488 // CHECK-LABEL: @test_mm_shldv_epi32
489 // CHECK: @llvm.fshl.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
490 return _mm_shldv_epi32(__S, __A, __B);
493 __m256i test_mm256_mask_shldv_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B) {
494 // CHECK-LABEL: @test_mm256_mask_shldv_epi16
495 // CHECK: @llvm.fshl.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}})
496 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
497 return _mm256_mask_shldv_epi16(__S, __U, __A, __B);
500 __m256i test_mm256_maskz_shldv_epi16(__mmask16 __U, __m256i __S, __m256i __A, __m256i __B) {
501 // CHECK-LABEL: @test_mm256_maskz_shldv_epi16
502 // CHECK: @llvm.fshl.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}})
503 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
504 return _mm256_maskz_shldv_epi16(__U, __S, __A, __B);
507 __m256i test_mm256_shldv_epi16(__m256i __S, __m256i __A, __m256i __B) {
508 // CHECK-LABEL: @test_mm256_shldv_epi16
509 // CHECK: @llvm.fshl.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}})
510 return _mm256_shldv_epi16(__S, __A, __B);
513 __m128i test_mm_mask_shldv_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
514 // CHECK-LABEL: @test_mm_mask_shldv_epi16
515 // CHECK: @llvm.fshl.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
516 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
517 return _mm_mask_shldv_epi16(__S, __U, __A, __B);
520 __m128i test_mm_maskz_shldv_epi16(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
521 // CHECK-LABEL: @test_mm_maskz_shldv_epi16
522 // CHECK: @llvm.fshl.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
523 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
524 return _mm_maskz_shldv_epi16(__U, __S, __A, __B);
527 __m128i test_mm_shldv_epi16(__m128i __S, __m128i __A, __m128i __B) {
528 // CHECK-LABEL: @test_mm_shldv_epi16
529 // CHECK: @llvm.fshl.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
530 return _mm_shldv_epi16(__S, __A, __B);
533 __m256i test_mm256_mask_shrdv_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
534 // CHECK-LABEL: @test_mm256_mask_shrdv_epi64
535 // CHECK: @llvm.fshr.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
536 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
537 return _mm256_mask_shrdv_epi64(__S, __U, __A, __B);
540 __m256i test_mm256_maskz_shrdv_epi64(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
541 // CHECK-LABEL: @test_mm256_maskz_shrdv_epi64
542 // CHECK: @llvm.fshr.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
543 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
544 return _mm256_maskz_shrdv_epi64(__U, __S, __A, __B);
547 __m256i test_mm256_shrdv_epi64(__m256i __S, __m256i __A, __m256i __B) {
548 // CHECK-LABEL: @test_mm256_shrdv_epi64
549 // CHECK: @llvm.fshr.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}})
550 return _mm256_shrdv_epi64(__S, __A, __B);
553 __m128i test_mm_mask_shrdv_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
554 // CHECK-LABEL: @test_mm_mask_shrdv_epi64
555 // CHECK: @llvm.fshr.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
556 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
557 return _mm_mask_shrdv_epi64(__S, __U, __A, __B);
560 __m128i test_mm_maskz_shrdv_epi64(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
561 // CHECK-LABEL: @test_mm_maskz_shrdv_epi64
562 // CHECK: @llvm.fshr.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
563 // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
564 return _mm_maskz_shrdv_epi64(__U, __S, __A, __B);
567 __m128i test_mm_shrdv_epi64(__m128i __S, __m128i __A, __m128i __B) {
568 // CHECK-LABEL: @test_mm_shrdv_epi64
569 // CHECK: @llvm.fshr.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}})
570 return _mm_shrdv_epi64(__S, __A, __B);
573 __m256i test_mm256_mask_shrdv_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
574 // CHECK-LABEL: @test_mm256_mask_shrdv_epi32
575 // CHECK: @llvm.fshr.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}})
576 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
577 return _mm256_mask_shrdv_epi32(__S, __U, __A, __B);
580 __m256i test_mm256_maskz_shrdv_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
581 // CHECK-LABEL: @test_mm256_maskz_shrdv_epi32
582 // CHECK: @llvm.fshr.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}})
583 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
584 return _mm256_maskz_shrdv_epi32(__U, __S, __A, __B);
587 __m256i test_mm256_shrdv_epi32(__m256i __S, __m256i __A, __m256i __B) {
588 // CHECK-LABEL: @test_mm256_shrdv_epi32
589 // CHECK: @llvm.fshr.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}})
590 return _mm256_shrdv_epi32(__S, __A, __B);
593 __m128i test_mm_mask_shrdv_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
594 // CHECK-LABEL: @test_mm_mask_shrdv_epi32
595 // CHECK: @llvm.fshr.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
596 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
597 return _mm_mask_shrdv_epi32(__S, __U, __A, __B);
600 __m128i test_mm_maskz_shrdv_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
601 // CHECK-LABEL: @test_mm_maskz_shrdv_epi32
602 // CHECK: @llvm.fshr.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
603 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
604 return _mm_maskz_shrdv_epi32(__U, __S, __A, __B);
607 __m128i test_mm_shrdv_epi32(__m128i __S, __m128i __A, __m128i __B) {
608 // CHECK-LABEL: @test_mm_shrdv_epi32
609 // CHECK: @llvm.fshr.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
610 return _mm_shrdv_epi32(__S, __A, __B);
613 __m256i test_mm256_mask_shrdv_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B) {
614 // CHECK-LABEL: @test_mm256_mask_shrdv_epi16
615 // CHECK: @llvm.fshr.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}})
616 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
617 return _mm256_mask_shrdv_epi16(__S, __U, __A, __B);
620 __m256i test_mm256_maskz_shrdv_epi16(__mmask16 __U, __m256i __S, __m256i __A, __m256i __B) {
621 // CHECK-LABEL: @test_mm256_maskz_shrdv_epi16
622 // CHECK: @llvm.fshr.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}})
623 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
624 return _mm256_maskz_shrdv_epi16(__U, __S, __A, __B);
627 __m256i test_mm256_shrdv_epi16(__m256i __S, __m256i __A, __m256i __B) {
628 // CHECK-LABEL: @test_mm256_shrdv_epi16
629 // CHECK: @llvm.fshr.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}})
630 return _mm256_shrdv_epi16(__S, __A, __B);
633 __m128i test_mm_mask_shrdv_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
634 // CHECK-LABEL: @test_mm_mask_shrdv_epi16
635 // CHECK: @llvm.fshr.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
636 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
637 return _mm_mask_shrdv_epi16(__S, __U, __A, __B);
640 __m128i test_mm_maskz_shrdv_epi16(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
641 // CHECK-LABEL: @test_mm_maskz_shrdv_epi16
642 // CHECK: @llvm.fshr.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
643 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
644 return _mm_maskz_shrdv_epi16(__U, __S, __A, __B);
647 __m128i test_mm_shrdv_epi16(__m128i __S, __m128i __A, __m128i __B) {
648 // CHECK-LABEL: @test_mm_shrdv_epi16
649 // CHECK: @llvm.fshr.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
650 return _mm_shrdv_epi16(__S, __A, __B);