Clang Project

clang_source_code/test/CodeGen/avx512vlvbmi2-builtins.c
1// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512vl -target-feature +avx512vbmi2 -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3#include <immintrin.h>
4
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);
9}
10
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);
15}
16
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);
21}
22
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);
27}
28
29void 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> %{{.*}}, i16* %{{.*}}, <8 x i1> %{{.*}})
32  _mm_mask_compressstoreu_epi16(__P, __U, __D);
33}
34
35void 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> %{{.*}}, i8* %{{.*}}, <16 x i1> %{{.*}})
38  _mm_mask_compressstoreu_epi8(__P, __U, __D);
39}
40
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);
45}
46
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);
51}
52
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);
57}
58
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);
63}
64
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(i16* %{{.*}}, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
68  return _mm_mask_expandloadu_epi16(__S, __U, __P);
69}
70
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(i16* %{{.*}}, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
74  return _mm_maskz_expandloadu_epi16(__U, __P);
75}
76
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(i8* %{{.*}}, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
80  return _mm_mask_expandloadu_epi8(__S, __U, __P);
81}
82
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(i8* %{{.*}}, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
86  return _mm_maskz_expandloadu_epi8(__U, __P);
87}
88
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);
93}
94
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);
99}
100
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);
105}
106
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);
111}
112
113void 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> %{{.*}}, i16* %{{.*}}, <16 x i1> %{{.*}})
116  _mm256_mask_compressstoreu_epi16(__P, __U, __D);
117}
118
119void 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> %{{.*}}, i8* %{{.*}}, <32 x i1> %{{.*}})
122  _mm256_mask_compressstoreu_epi8(__P, __U, __D);
123}
124
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);
129}
130
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);
135}
136
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);
141}
142
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);
147}
148
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(i16* %{{.*}}, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
152  return _mm256_mask_expandloadu_epi16(__S, __U, __P);
153}
154
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(i16* %{{.*}}, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
158  return _mm256_maskz_expandloadu_epi16(__U, __P);
159}
160
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(i8* %{{.*}}, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
164  return _mm256_mask_expandloadu_epi8(__S, __U, __P);
165}
166
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(i8* %{{.*}}, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
170  return _mm256_maskz_expandloadu_epi8(__U, __P);
171}
172
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> <i64 47, i64 47, i64 47, 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);
178}
179
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> <i64 63, i64 63, i64 63, i64 63>)
183  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
184  return _mm256_maskz_shldi_epi64(__U, __A, __B, 63);
185}
186
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> <i64 31, i64 31, i64 31, i64 31>)
190  return _mm256_shldi_epi64(__A, __B, 31);
191}
192
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> <i64 47, 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);
198}
199
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> <i64 63, i64 63>)
203  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
204  return _mm_maskz_shldi_epi64(__U, __A, __B, 63);
205}
206
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> <i64 31, i64 31>)
210  return _mm_shldi_epi64(__A, __B, 31);
211}
212
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> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, 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);
218}
219
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> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>)
223  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
224  return _mm256_maskz_shldi_epi32(__U, __A, __B, 15);
225}
226
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> <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>)
230  return _mm256_shldi_epi32(__A, __B, 31);
231}
232
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> <i32 7, i32 7, i32 7, 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);
238}
239
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> <i32 15, i32 15, i32 15, i32 15>)
243  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
244  return _mm_maskz_shldi_epi32(__U, __A, __B, 15);
245}
246
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> <i32 31, i32 31, i32 31, i32 31>)
250  return _mm_shldi_epi32(__A, __B, 31);
251}
252
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> <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, 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);
258}
259
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> <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>)
263  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
264  return _mm256_maskz_shldi_epi16(__U, __A, __B, 7);
265}
266
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> <i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31>)
270  return _mm256_shldi_epi16(__A, __B, 31);
271}
272
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> <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, 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);
278}
279
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> <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>)
283  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
284  return _mm_maskz_shldi_epi16(__U, __A, __B, 7);
285}
286
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> <i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31>)
290  return _mm_shldi_epi16(__A, __B, 31);
291}
292
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> <i64 47, i64 47, i64 47, 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);
298}
299
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> <i64 63, i64 63, i64 63, i64 63>)
303  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
304  return _mm256_maskz_shrdi_epi64(__U, __A, __B, 63);
305}
306
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> <i64 31, i64 31, i64 31, i64 31>)
310  return _mm256_shrdi_epi64(__A, __B, 31);
311}
312
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> <i64 47, 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);
318}
319
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> <i64 63, i64 63>)
323  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
324  return _mm_maskz_shrdi_epi64(__U, __A, __B, 63);
325}
326
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> <i64 31, i64 31>)
330  return _mm_shrdi_epi64(__A, __B, 31);
331}
332
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> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, 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);
338}
339
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> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>)
343  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
344  return _mm256_maskz_shrdi_epi32(__U, __A, __B, 15);
345}
346
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> <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>)
350  return _mm256_shrdi_epi32(__A, __B, 31);
351}
352
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> <i32 7, i32 7, i32 7, 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);
358}
359
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> <i32 15, i32 15, i32 15, i32 15>)
363  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
364  return _mm_maskz_shrdi_epi32(__U, __A, __B, 15);
365}
366
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> <i32 31, i32 31, i32 31, i32 31>)
370  return _mm_shrdi_epi32(__A, __B, 31);
371}
372
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> <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, 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);
378}
379
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> <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>)
383  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
384  return _mm256_maskz_shrdi_epi16(__U, __A, __B, 7);
385}
386
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> <i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31>
390  return _mm256_shrdi_epi16(__A, __B, 31);
391}
392
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> <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, 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);
398}
399
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> <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>)
403  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
404  return _mm_maskz_shrdi_epi16(__U, __A, __B, 7);
405}
406
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> <i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31>)
410  return _mm_shrdi_epi16(__A, __B, 31);
411}
412
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);
418}
419
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);
425}
426
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);
431}
432
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);
438}
439
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);
445}
446
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);
451}
452
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);
458}
459
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);
465}
466
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);
471}
472
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);
478}
479
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);
485}
486
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);
491}
492
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);
498}
499
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);
505}
506
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);
511}
512
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);
518}
519
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);
525}
526
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);
531}
532
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);
538}
539
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);
545}
546
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);
551}
552
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);
558}
559
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);
565}
566
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);
571}
572
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);
578}
579
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);
585}
586
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);
591}
592
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);
598}
599
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);
605}
606
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);
611}
612
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);
618}
619
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);
625}
626
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);
631}
632
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);
638}
639
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);
645}
646
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);
651}
652
653