1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512vbmi2 -emit-llvm -o - -Wall -Werror | FileCheck %s
2 
3 #include <immintrin.h>
4 
test_mm512_mask_compress_epi16(__m512i __S,__mmask32 __U,__m512i __D)5 __m512i test_mm512_mask_compress_epi16(__m512i __S, __mmask32 __U, __m512i __D) {
6   // CHECK-LABEL: @test_mm512_mask_compress_epi16
7   // CHECK: @llvm.x86.avx512.mask.compress
8   return _mm512_mask_compress_epi16(__S, __U, __D);
9 }
10 
test_mm512_maskz_compress_epi16(__mmask32 __U,__m512i __D)11 __m512i test_mm512_maskz_compress_epi16(__mmask32 __U, __m512i __D) {
12   // CHECK-LABEL: @test_mm512_maskz_compress_epi16
13   // CHECK: @llvm.x86.avx512.mask.compress
14   return _mm512_maskz_compress_epi16(__U, __D);
15 }
16 
test_mm512_mask_compress_epi8(__m512i __S,__mmask64 __U,__m512i __D)17 __m512i test_mm512_mask_compress_epi8(__m512i __S, __mmask64 __U, __m512i __D) {
18   // CHECK-LABEL: @test_mm512_mask_compress_epi8
19   // CHECK: @llvm.x86.avx512.mask.compress
20   return _mm512_mask_compress_epi8(__S, __U, __D);
21 }
22 
test_mm512_maskz_compress_epi8(__mmask64 __U,__m512i __D)23 __m512i test_mm512_maskz_compress_epi8(__mmask64 __U, __m512i __D) {
24   // CHECK-LABEL: @test_mm512_maskz_compress_epi8
25   // CHECK: @llvm.x86.avx512.mask.compress
26   return _mm512_maskz_compress_epi8(__U, __D);
27 }
28 
test_mm512_mask_compressstoreu_epi16(void * __P,__mmask32 __U,__m512i __D)29 void test_mm512_mask_compressstoreu_epi16(void *__P, __mmask32 __U, __m512i __D) {
30   // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi16
31   // CHECK: @llvm.masked.compressstore.v32i16(<32 x i16> %{{.*}}, i16* %{{.*}}, <32 x i1> %{{.*}})
32   _mm512_mask_compressstoreu_epi16(__P, __U, __D);
33 }
34 
test_mm512_mask_compressstoreu_epi8(void * __P,__mmask64 __U,__m512i __D)35 void test_mm512_mask_compressstoreu_epi8(void *__P, __mmask64 __U, __m512i __D) {
36   // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi8
37   // CHECK: @llvm.masked.compressstore.v64i8(<64 x i8> %{{.*}}, i8* %{{.*}}, <64 x i1> %{{.*}})
38   _mm512_mask_compressstoreu_epi8(__P, __U, __D);
39 }
40 
test_mm512_mask_expand_epi16(__m512i __S,__mmask32 __U,__m512i __D)41 __m512i test_mm512_mask_expand_epi16(__m512i __S, __mmask32 __U, __m512i __D) {
42   // CHECK-LABEL: @test_mm512_mask_expand_epi16
43   // CHECK: @llvm.x86.avx512.mask.expand
44   return _mm512_mask_expand_epi16(__S, __U, __D);
45 }
46 
test_mm512_maskz_expand_epi16(__mmask32 __U,__m512i __D)47 __m512i test_mm512_maskz_expand_epi16(__mmask32 __U, __m512i __D) {
48   // CHECK-LABEL: @test_mm512_maskz_expand_epi16
49   // CHECK: @llvm.x86.avx512.mask.expand
50   return _mm512_maskz_expand_epi16(__U, __D);
51 }
52 
test_mm512_mask_expand_epi8(__m512i __S,__mmask64 __U,__m512i __D)53 __m512i test_mm512_mask_expand_epi8(__m512i __S, __mmask64 __U, __m512i __D) {
54   // CHECK-LABEL: @test_mm512_mask_expand_epi8
55   // CHECK: @llvm.x86.avx512.mask.expand
56   return _mm512_mask_expand_epi8(__S, __U, __D);
57 }
58 
test_mm512_maskz_expand_epi8(__mmask64 __U,__m512i __D)59 __m512i test_mm512_maskz_expand_epi8(__mmask64 __U, __m512i __D) {
60   // CHECK-LABEL: @test_mm512_maskz_expand_epi8
61   // CHECK: @llvm.x86.avx512.mask.expand
62   return _mm512_maskz_expand_epi8(__U, __D);
63 }
64 
test_mm512_mask_expandloadu_epi16(__m512i __S,__mmask32 __U,void const * __P)65 __m512i test_mm512_mask_expandloadu_epi16(__m512i __S, __mmask32 __U, void const* __P) {
66   // CHECK-LABEL: @test_mm512_mask_expandloadu_epi16
67   // CHECK: @llvm.masked.expandload.v32i16(i16* %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
68   return _mm512_mask_expandloadu_epi16(__S, __U, __P);
69 }
70 
test_mm512_maskz_expandloadu_epi16(__mmask32 __U,void const * __P)71 __m512i test_mm512_maskz_expandloadu_epi16(__mmask32 __U, void const* __P) {
72   // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi16
73   // CHECK: @llvm.masked.expandload.v32i16(i16* %{{.*}}, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
74   return _mm512_maskz_expandloadu_epi16(__U, __P);
75 }
76 
test_mm512_mask_expandloadu_epi8(__m512i __S,__mmask64 __U,void const * __P)77 __m512i test_mm512_mask_expandloadu_epi8(__m512i __S, __mmask64 __U, void const* __P) {
78   // CHECK-LABEL: @test_mm512_mask_expandloadu_epi8
79   // CHECK: @llvm.masked.expandload.v64i8(i8* %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
80   return _mm512_mask_expandloadu_epi8(__S, __U, __P);
81 }
82 
test_mm512_maskz_expandloadu_epi8(__mmask64 __U,void const * __P)83 __m512i test_mm512_maskz_expandloadu_epi8(__mmask64 __U, void const* __P) {
84   // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi8
85   // CHECK: @llvm.masked.expandload.v64i8(i8* %{{.*}}, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
86   return _mm512_maskz_expandloadu_epi8(__U, __P);
87 }
88 
test_mm512_mask_shldi_epi64(__m512i __S,__mmask8 __U,__m512i __A,__m512i __B)89 __m512i test_mm512_mask_shldi_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
90   // CHECK-LABEL: @test_mm512_mask_shldi_epi64
91   // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47>)
92   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
93   return _mm512_mask_shldi_epi64(__S, __U, __A, __B, 47);
94 }
95 
test_mm512_maskz_shldi_epi64(__mmask8 __U,__m512i __A,__m512i __B)96 __m512i test_mm512_maskz_shldi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
97   // CHECK-LABEL: @test_mm512_maskz_shldi_epi64
98   // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63>)
99   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
100   return _mm512_maskz_shldi_epi64(__U, __A, __B, 63);
101 }
102 
test_mm512_shldi_epi64(__m512i __A,__m512i __B)103 __m512i test_mm512_shldi_epi64(__m512i __A, __m512i __B) {
104   // CHECK-LABEL: @test_mm512_shldi_epi64
105   // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31>)
106   return _mm512_shldi_epi64(__A, __B, 31);
107 }
108 
test_mm512_mask_shldi_epi32(__m512i __S,__mmask16 __U,__m512i __A,__m512i __B)109 __m512i test_mm512_mask_shldi_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
110   // CHECK-LABEL: @test_mm512_mask_shldi_epi32
111   // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>)
112   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
113   return _mm512_mask_shldi_epi32(__S, __U, __A, __B, 7);
114 }
115 
test_mm512_maskz_shldi_epi32(__mmask16 __U,__m512i __A,__m512i __B)116 __m512i test_mm512_maskz_shldi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
117   // CHECK-LABEL: @test_mm512_maskz_shldi_epi32
118   // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>)
119   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
120   return _mm512_maskz_shldi_epi32(__U, __A, __B, 15);
121 }
122 
test_mm512_shldi_epi32(__m512i __A,__m512i __B)123 __m512i test_mm512_shldi_epi32(__m512i __A, __m512i __B) {
124   // CHECK-LABEL: @test_mm512_shldi_epi32
125   // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>)
126   return _mm512_shldi_epi32(__A, __B, 31);
127 }
128 
test_mm512_mask_shldi_epi16(__m512i __S,__mmask32 __U,__m512i __A,__m512i __B)129 __m512i test_mm512_mask_shldi_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
130   // CHECK-LABEL: @test_mm512_mask_shldi_epi16
131   // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 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, 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>)
132   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
133   return _mm512_mask_shldi_epi16(__S, __U, __A, __B, 3);
134 }
135 
test_mm512_maskz_shldi_epi16(__mmask32 __U,__m512i __A,__m512i __B)136 __m512i test_mm512_maskz_shldi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
137   // CHECK-LABEL: @test_mm512_maskz_shldi_epi16
138   // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 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, 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>)
139   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
140   return _mm512_maskz_shldi_epi16(__U, __A, __B, 7);
141 }
142 
test_mm512_shldi_epi16(__m512i __A,__m512i __B)143 __m512i test_mm512_shldi_epi16(__m512i __A, __m512i __B) {
144   // CHECK-LABEL: @test_mm512_shldi_epi16
145   // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15>)
146   return _mm512_shldi_epi16(__A, __B, 15);
147 }
148 
test_mm512_mask_shrdi_epi64(__m512i __S,__mmask8 __U,__m512i __A,__m512i __B)149 __m512i test_mm512_mask_shrdi_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
150   // CHECK-LABEL: @test_mm512_mask_shrdi_epi64
151   // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47, i64 47>)
152   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
153   return _mm512_mask_shrdi_epi64(__S, __U, __A, __B, 47);
154 }
155 
test_mm512_maskz_shrdi_epi64(__mmask8 __U,__m512i __A,__m512i __B)156 __m512i test_mm512_maskz_shrdi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
157   // CHECK-LABEL: @test_mm512_maskz_shrdi_epi64
158   // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63, i64 63>)
159   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
160   return _mm512_maskz_shrdi_epi64(__U, __A, __B, 63);
161 }
162 
test_mm512_shrdi_epi64(__m512i __A,__m512i __B)163 __m512i test_mm512_shrdi_epi64(__m512i __A, __m512i __B) {
164   // CHECK-LABEL: @test_mm512_shrdi_epi64
165   // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> <i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31, i64 31>)
166   return _mm512_shrdi_epi64(__A, __B, 31);
167 }
168 
test_mm512_mask_shrdi_epi32(__m512i __S,__mmask16 __U,__m512i __A,__m512i __B)169 __m512i test_mm512_mask_shrdi_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
170   // CHECK-LABEL: @test_mm512_mask_shrdi_epi32
171   // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>)
172   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
173   return _mm512_mask_shrdi_epi32(__S, __U, __A, __B, 7);
174 }
175 
test_mm512_maskz_shrdi_epi32(__mmask16 __U,__m512i __A,__m512i __B)176 __m512i test_mm512_maskz_shrdi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
177   // CHECK-LABEL: @test_mm512_maskz_shrdi_epi32
178   // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>)
179   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
180   return _mm512_maskz_shrdi_epi32(__U, __A, __B, 15);
181 }
182 
test_mm512_shrdi_epi32(__m512i __A,__m512i __B)183 __m512i test_mm512_shrdi_epi32(__m512i __A, __m512i __B) {
184   // CHECK-LABEL: @test_mm512_shrdi_epi32
185   // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>)
186   return _mm512_shrdi_epi32(__A, __B, 31);
187 }
188 
test_mm512_mask_shrdi_epi16(__m512i __S,__mmask32 __U,__m512i __A,__m512i __B)189 __m512i test_mm512_mask_shrdi_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
190   // CHECK-LABEL: @test_mm512_mask_shrdi_epi16
191   // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 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, 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>)
192   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
193   return _mm512_mask_shrdi_epi16(__S, __U, __A, __B, 3);
194 }
195 
test_mm512_maskz_shrdi_epi16(__mmask32 __U,__m512i __A,__m512i __B)196 __m512i test_mm512_maskz_shrdi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
197   // CHECK-LABEL: @test_mm512_maskz_shrdi_epi16
198   // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15>)
199   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
200   return _mm512_maskz_shrdi_epi16(__U, __A, __B, 15);
201 }
202 
test_mm512_shrdi_epi16(__m512i __A,__m512i __B)203 __m512i test_mm512_shrdi_epi16(__m512i __A, __m512i __B) {
204   // CHECK-LABEL: @test_mm512_shrdi_epi16
205   // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 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, 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>)
206   return _mm512_shrdi_epi16(__A, __B, 31);
207 }
208 
test_mm512_mask_shldv_epi64(__m512i __S,__mmask8 __U,__m512i __A,__m512i __B)209 __m512i test_mm512_mask_shldv_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
210   // CHECK-LABEL: @test_mm512_mask_shldv_epi64
211   // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
212   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
213   return _mm512_mask_shldv_epi64(__S, __U, __A, __B);
214 }
215 
test_mm512_maskz_shldv_epi64(__mmask8 __U,__m512i __S,__m512i __A,__m512i __B)216 __m512i test_mm512_maskz_shldv_epi64(__mmask8 __U, __m512i __S, __m512i __A, __m512i __B) {
217   // CHECK-LABEL: @test_mm512_maskz_shldv_epi64
218   // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
219   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
220   return _mm512_maskz_shldv_epi64(__U, __S, __A, __B);
221 }
222 
test_mm512_shldv_epi64(__m512i __S,__m512i __A,__m512i __B)223 __m512i test_mm512_shldv_epi64(__m512i __S, __m512i __A, __m512i __B) {
224   // CHECK-LABEL: @test_mm512_shldv_epi64
225   // CHECK: @llvm.fshl.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
226   return _mm512_shldv_epi64(__S, __A, __B);
227 }
228 
test_mm512_mask_shldv_epi32(__m512i __S,__mmask16 __U,__m512i __A,__m512i __B)229 __m512i test_mm512_mask_shldv_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
230   // CHECK-LABEL: @test_mm512_mask_shldv_epi32
231   // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
232   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
233   return _mm512_mask_shldv_epi32(__S, __U, __A, __B);
234 }
235 
test_mm512_maskz_shldv_epi32(__mmask16 __U,__m512i __S,__m512i __A,__m512i __B)236 __m512i test_mm512_maskz_shldv_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
237   // CHECK-LABEL: @test_mm512_maskz_shldv_epi32
238   // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
239   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
240   return _mm512_maskz_shldv_epi32(__U, __S, __A, __B);
241 }
242 
test_mm512_shldv_epi32(__m512i __S,__m512i __A,__m512i __B)243 __m512i test_mm512_shldv_epi32(__m512i __S, __m512i __A, __m512i __B) {
244   // CHECK-LABEL: @test_mm512_shldv_epi32
245   // CHECK: @llvm.fshl.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
246   return _mm512_shldv_epi32(__S, __A, __B);
247 }
248 
test_mm512_mask_shldv_epi16(__m512i __S,__mmask32 __U,__m512i __A,__m512i __B)249 __m512i test_mm512_mask_shldv_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
250   // CHECK-LABEL: @test_mm512_mask_shldv_epi16
251   // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
252   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
253   return _mm512_mask_shldv_epi16(__S, __U, __A, __B);
254 }
255 
test_mm512_maskz_shldv_epi16(__mmask32 __U,__m512i __S,__m512i __A,__m512i __B)256 __m512i test_mm512_maskz_shldv_epi16(__mmask32 __U, __m512i __S, __m512i __A, __m512i __B) {
257   // CHECK-LABEL: @test_mm512_maskz_shldv_epi16
258   // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
259   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
260   return _mm512_maskz_shldv_epi16(__U, __S, __A, __B);
261 }
262 
test_mm512_shldv_epi16(__m512i __S,__m512i __A,__m512i __B)263 __m512i test_mm512_shldv_epi16(__m512i __S, __m512i __A, __m512i __B) {
264   // CHECK-LABEL: @test_mm512_shldv_epi16
265   // CHECK: @llvm.fshl.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
266   return _mm512_shldv_epi16(__S, __A, __B);
267 }
268 
test_mm512_mask_shrdv_epi64(__m512i __S,__mmask8 __U,__m512i __A,__m512i __B)269 __m512i test_mm512_mask_shrdv_epi64(__m512i __S, __mmask8 __U, __m512i __A, __m512i __B) {
270   // CHECK-LABEL: @test_mm512_mask_shrdv_epi64
271   // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
272   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
273   return _mm512_mask_shrdv_epi64(__S, __U, __A, __B);
274 }
275 
test_mm512_maskz_shrdv_epi64(__mmask8 __U,__m512i __S,__m512i __A,__m512i __B)276 __m512i test_mm512_maskz_shrdv_epi64(__mmask8 __U, __m512i __S, __m512i __A, __m512i __B) {
277   // CHECK-LABEL: @test_mm512_maskz_shrdv_epi64
278   // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
279   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
280   return _mm512_maskz_shrdv_epi64(__U, __S, __A, __B);
281 }
282 
test_mm512_shrdv_epi64(__m512i __S,__m512i __A,__m512i __B)283 __m512i test_mm512_shrdv_epi64(__m512i __S, __m512i __A, __m512i __B) {
284   // CHECK-LABEL: @test_mm512_shrdv_epi64
285   // CHECK: @llvm.fshr.v8i64(<8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}})
286   return _mm512_shrdv_epi64(__S, __A, __B);
287 }
288 
test_mm512_mask_shrdv_epi32(__m512i __S,__mmask16 __U,__m512i __A,__m512i __B)289 __m512i test_mm512_mask_shrdv_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
290   // CHECK-LABEL: @test_mm512_mask_shrdv_epi32
291   // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
292   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
293   return _mm512_mask_shrdv_epi32(__S, __U, __A, __B);
294 }
295 
test_mm512_maskz_shrdv_epi32(__mmask16 __U,__m512i __S,__m512i __A,__m512i __B)296 __m512i test_mm512_maskz_shrdv_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
297   // CHECK-LABEL: @test_mm512_maskz_shrdv_epi32
298   // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
299   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
300   return _mm512_maskz_shrdv_epi32(__U, __S, __A, __B);
301 }
302 
test_mm512_shrdv_epi32(__m512i __S,__m512i __A,__m512i __B)303 __m512i test_mm512_shrdv_epi32(__m512i __S, __m512i __A, __m512i __B) {
304   // CHECK-LABEL: @test_mm512_shrdv_epi32
305   // CHECK: @llvm.fshr.v16i32(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
306   return _mm512_shrdv_epi32(__S, __A, __B);
307 }
308 
test_mm512_mask_shrdv_epi16(__m512i __S,__mmask32 __U,__m512i __A,__m512i __B)309 __m512i test_mm512_mask_shrdv_epi16(__m512i __S, __mmask32 __U, __m512i __A, __m512i __B) {
310   // CHECK-LABEL: @test_mm512_mask_shrdv_epi16
311   // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
312   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
313   return _mm512_mask_shrdv_epi16(__S, __U, __A, __B);
314 }
315 
test_mm512_maskz_shrdv_epi16(__mmask32 __U,__m512i __S,__m512i __A,__m512i __B)316 __m512i test_mm512_maskz_shrdv_epi16(__mmask32 __U, __m512i __S, __m512i __A, __m512i __B) {
317   // CHECK-LABEL: @test_mm512_maskz_shrdv_epi16
318   // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
319   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
320   return _mm512_maskz_shrdv_epi16(__U, __S, __A, __B);
321 }
322 
test_mm512_shrdv_epi16(__m512i __S,__m512i __A,__m512i __B)323 __m512i test_mm512_shrdv_epi16(__m512i __S, __m512i __A, __m512i __B) {
324   // CHECK-LABEL: @test_mm512_shrdv_epi16
325   // CHECK: @llvm.fshr.v32i16(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
326   return _mm512_shrdv_epi16(__S, __A, __B);
327 }
328 
329