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
2 
3 #include <immintrin.h>
4 
test_mm_mask_compress_epi16(__m128i __S,__mmask8 __U,__m128i __D)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 
test_mm_maskz_compress_epi16(__mmask8 __U,__m128i __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);
15 }
16 
test_mm_mask_compress_epi8(__m128i __S,__mmask16 __U,__m128i __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);
21 }
22 
test_mm_maskz_compress_epi8(__mmask16 __U,__m128i __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);
27 }
28 
test_mm_mask_compressstoreu_epi16(void * __P,__mmask8 __U,__m128i __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> %{{.*}}, i16* %{{.*}}, <8 x i1> %{{.*}})
32   _mm_mask_compressstoreu_epi16(__P, __U, __D);
33 }
34 
test_mm_mask_compressstoreu_epi8(void * __P,__mmask16 __U,__m128i __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> %{{.*}}, i8* %{{.*}}, <16 x i1> %{{.*}})
38   _mm_mask_compressstoreu_epi8(__P, __U, __D);
39 }
40 
test_mm_mask_expand_epi16(__m128i __S,__mmask8 __U,__m128i __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);
45 }
46 
test_mm_maskz_expand_epi16(__mmask8 __U,__m128i __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);
51 }
52 
test_mm_mask_expand_epi8(__m128i __S,__mmask16 __U,__m128i __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);
57 }
58 
test_mm_maskz_expand_epi8(__mmask16 __U,__m128i __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);
63 }
64 
test_mm_mask_expandloadu_epi16(__m128i __S,__mmask8 __U,void const * __P)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 
test_mm_maskz_expandloadu_epi16(__mmask8 __U,void const * __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(i16* %{{.*}}, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})
74   return _mm_maskz_expandloadu_epi16(__U, __P);
75 }
76 
test_mm_mask_expandloadu_epi8(__m128i __S,__mmask16 __U,void const * __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(i8* %{{.*}}, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
80   return _mm_mask_expandloadu_epi8(__S, __U, __P);
81 }
82 
test_mm_maskz_expandloadu_epi8(__mmask16 __U,void const * __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(i8* %{{.*}}, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})
86   return _mm_maskz_expandloadu_epi8(__U, __P);
87 }
88 
test_mm256_mask_compress_epi16(__m256i __S,__mmask16 __U,__m256i __D)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 
test_mm256_maskz_compress_epi16(__mmask16 __U,__m256i __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);
99 }
100 
test_mm256_mask_compress_epi8(__m256i __S,__mmask32 __U,__m256i __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);
105 }
106 
test_mm256_maskz_compress_epi8(__mmask32 __U,__m256i __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);
111 }
112 
test_mm256_mask_compressstoreu_epi16(void * __P,__mmask16 __U,__m256i __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> %{{.*}}, i16* %{{.*}}, <16 x i1> %{{.*}})
116   _mm256_mask_compressstoreu_epi16(__P, __U, __D);
117 }
118 
test_mm256_mask_compressstoreu_epi8(void * __P,__mmask32 __U,__m256i __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> %{{.*}}, i8* %{{.*}}, <32 x i1> %{{.*}})
122   _mm256_mask_compressstoreu_epi8(__P, __U, __D);
123 }
124 
test_mm256_mask_expand_epi16(__m256i __S,__mmask16 __U,__m256i __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);
129 }
130 
test_mm256_maskz_expand_epi16(__mmask16 __U,__m256i __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);
135 }
136 
test_mm256_mask_expand_epi8(__m256i __S,__mmask32 __U,__m256i __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);
141 }
142 
test_mm256_maskz_expand_epi8(__mmask32 __U,__m256i __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);
147 }
148 
test_mm256_mask_expandloadu_epi16(__m256i __S,__mmask16 __U,void const * __P)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 
test_mm256_maskz_expandloadu_epi16(__mmask16 __U,void const * __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(i16* %{{.*}}, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})
158   return _mm256_maskz_expandloadu_epi16(__U, __P);
159 }
160 
test_mm256_mask_expandloadu_epi8(__m256i __S,__mmask32 __U,void const * __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(i8* %{{.*}}, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
164   return _mm256_mask_expandloadu_epi8(__S, __U, __P);
165 }
166 
test_mm256_maskz_expandloadu_epi8(__mmask32 __U,void const * __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(i8* %{{.*}}, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})
170   return _mm256_maskz_expandloadu_epi8(__U, __P);
171 }
172 
test_mm256_mask_shldi_epi64(__m256i __S,__mmask8 __U,__m256i __A,__m256i __B)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 
test_mm256_maskz_shldi_epi64(__mmask8 __U,__m256i __A,__m256i __B)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 
test_mm256_shldi_epi64(__m256i __A,__m256i __B)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 
test_mm_mask_shldi_epi64(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_maskz_shldi_epi64(__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_shldi_epi64(__m128i __A,__m128i __B)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 
test_mm256_mask_shldi_epi32(__m256i __S,__mmask8 __U,__m256i __A,__m256i __B)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 
test_mm256_maskz_shldi_epi32(__mmask8 __U,__m256i __A,__m256i __B)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 
test_mm256_shldi_epi32(__m256i __A,__m256i __B)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 
test_mm_mask_shldi_epi32(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_maskz_shldi_epi32(__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_shldi_epi32(__m128i __A,__m128i __B)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 
test_mm256_mask_shldi_epi16(__m256i __S,__mmask16 __U,__m256i __A,__m256i __B)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 
test_mm256_maskz_shldi_epi16(__mmask16 __U,__m256i __A,__m256i __B)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 
test_mm256_shldi_epi16(__m256i __A,__m256i __B)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 
test_mm_mask_shldi_epi16(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_maskz_shldi_epi16(__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_shldi_epi16(__m128i __A,__m128i __B)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 
test_mm256_mask_shrdi_epi64(__m256i __S,__mmask8 __U,__m256i __A,__m256i __B)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 
test_mm256_maskz_shrdi_epi64(__mmask8 __U,__m256i __A,__m256i __B)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 
test_mm256_shrdi_epi64(__m256i __A,__m256i __B)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 
test_mm_mask_shrdi_epi64(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_maskz_shrdi_epi64(__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_shrdi_epi64(__m128i __A,__m128i __B)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 
test_mm256_mask_shrdi_epi32(__m256i __S,__mmask8 __U,__m256i __A,__m256i __B)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 
test_mm256_maskz_shrdi_epi32(__mmask8 __U,__m256i __A,__m256i __B)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 
test_mm256_shrdi_epi32(__m256i __A,__m256i __B)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 
test_mm_mask_shrdi_epi32(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_maskz_shrdi_epi32(__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_shrdi_epi32(__m128i __A,__m128i __B)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 
test_mm256_mask_shrdi_epi16(__m256i __S,__mmask16 __U,__m256i __A,__m256i __B)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 
test_mm256_maskz_shrdi_epi16(__mmask16 __U,__m256i __A,__m256i __B)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 
test_mm256_shrdi_epi16(__m256i __A,__m256i __B)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 
test_mm_mask_shrdi_epi16(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_maskz_shrdi_epi16(__mmask8 __U,__m128i __A,__m128i __B)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 
test_mm_shrdi_epi16(__m128i __A,__m128i __B)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 
test_mm256_mask_shldv_epi64(__m256i __S,__mmask8 __U,__m256i __A,__m256i __B)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 
test_mm256_maskz_shldv_epi64(__mmask8 __U,__m256i __S,__m256i __A,__m256i __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);
425 }
426 
test_mm256_shldv_epi64(__m256i __S,__m256i __A,__m256i __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);
431 }
432 
test_mm_mask_shldv_epi64(__m128i __S,__mmask8 __U,__m128i __A,__m128i __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);
438 }
439 
test_mm_maskz_shldv_epi64(__mmask8 __U,__m128i __S,__m128i __A,__m128i __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);
445 }
446 
test_mm_shldv_epi64(__m128i __S,__m128i __A,__m128i __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);
451 }
452 
test_mm256_mask_shldv_epi32(__m256i __S,__mmask8 __U,__m256i __A,__m256i __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);
458 }
459 
test_mm256_maskz_shldv_epi32(__mmask8 __U,__m256i __S,__m256i __A,__m256i __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);
465 }
466 
test_mm256_shldv_epi32(__m256i __S,__m256i __A,__m256i __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);
471 }
472 
test_mm_mask_shldv_epi32(__m128i __S,__mmask8 __U,__m128i __A,__m128i __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);
478 }
479 
test_mm_maskz_shldv_epi32(__mmask8 __U,__m128i __S,__m128i __A,__m128i __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);
485 }
486 
test_mm_shldv_epi32(__m128i __S,__m128i __A,__m128i __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);
491 }
492 
test_mm256_mask_shldv_epi16(__m256i __S,__mmask16 __U,__m256i __A,__m256i __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);
498 }
499 
test_mm256_maskz_shldv_epi16(__mmask16 __U,__m256i __S,__m256i __A,__m256i __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);
505 }
506 
test_mm256_shldv_epi16(__m256i __S,__m256i __A,__m256i __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);
511 }
512 
test_mm_mask_shldv_epi16(__m128i __S,__mmask8 __U,__m128i __A,__m128i __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);
518 }
519 
test_mm_maskz_shldv_epi16(__mmask8 __U,__m128i __S,__m128i __A,__m128i __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);
525 }
526 
test_mm_shldv_epi16(__m128i __S,__m128i __A,__m128i __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);
531 }
532 
test_mm256_mask_shrdv_epi64(__m256i __S,__mmask8 __U,__m256i __A,__m256i __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);
538 }
539 
test_mm256_maskz_shrdv_epi64(__mmask8 __U,__m256i __S,__m256i __A,__m256i __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);
545 }
546 
test_mm256_shrdv_epi64(__m256i __S,__m256i __A,__m256i __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);
551 }
552 
test_mm_mask_shrdv_epi64(__m128i __S,__mmask8 __U,__m128i __A,__m128i __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);
558 }
559 
test_mm_maskz_shrdv_epi64(__mmask8 __U,__m128i __S,__m128i __A,__m128i __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);
565 }
566 
test_mm_shrdv_epi64(__m128i __S,__m128i __A,__m128i __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);
571 }
572 
test_mm256_mask_shrdv_epi32(__m256i __S,__mmask8 __U,__m256i __A,__m256i __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);
578 }
579 
test_mm256_maskz_shrdv_epi32(__mmask8 __U,__m256i __S,__m256i __A,__m256i __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);
585 }
586 
test_mm256_shrdv_epi32(__m256i __S,__m256i __A,__m256i __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);
591 }
592 
test_mm_mask_shrdv_epi32(__m128i __S,__mmask8 __U,__m128i __A,__m128i __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);
598 }
599 
test_mm_maskz_shrdv_epi32(__mmask8 __U,__m128i __S,__m128i __A,__m128i __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);
605 }
606 
test_mm_shrdv_epi32(__m128i __S,__m128i __A,__m128i __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);
611 }
612 
test_mm256_mask_shrdv_epi16(__m256i __S,__mmask16 __U,__m256i __A,__m256i __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);
618 }
619 
test_mm256_maskz_shrdv_epi16(__mmask16 __U,__m256i __S,__m256i __A,__m256i __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);
625 }
626 
test_mm256_shrdv_epi16(__m256i __S,__m256i __A,__m256i __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);
631 }
632 
test_mm_mask_shrdv_epi16(__m128i __S,__mmask8 __U,__m128i __A,__m128i __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);
638 }
639 
test_mm_maskz_shrdv_epi16(__mmask8 __U,__m128i __S,__m128i __A,__m128i __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);
645 }
646 
test_mm_shrdv_epi16(__m128i __S,__m128i __A,__m128i __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);
651 }
652 
653