1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
2 
3 
4 #include <immintrin.h>
5 
test_mm256_mullo_epi64(__m256i __A,__m256i __B)6 __m256i test_mm256_mullo_epi64 (__m256i __A, __m256i __B) {
7   // CHECK-LABEL: @test_mm256_mullo_epi64
8   // CHECK: mul <4 x i64>
9   return _mm256_mullo_epi64(__A, __B);
10 }
11 
test_mm256_mask_mullo_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)12 __m256i test_mm256_mask_mullo_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
13   // CHECK-LABEL: @test_mm256_mask_mullo_epi64
14   // CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
15   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
16   return (__m256i) _mm256_mask_mullo_epi64 ( __W, __U, __A, __B);
17 }
18 
test_mm256_maskz_mullo_epi64(__mmask8 __U,__m256i __A,__m256i __B)19 __m256i test_mm256_maskz_mullo_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
20   // CHECK-LABEL: @test_mm256_maskz_mullo_epi64
21   // CHECK: mul <4 x i64> %{{.*}}, %{{.*}}
22   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
23   return (__m256i) _mm256_maskz_mullo_epi64 (__U, __A, __B);
24 }
25 
test_mm_mullo_epi64(__m128i __A,__m128i __B)26 __m128i test_mm_mullo_epi64 (__m128i __A, __m128i __B) {
27   // CHECK-LABEL: @test_mm_mullo_epi64
28   // CHECK: mul <2 x i64>
29   return (__m128i) _mm_mullo_epi64(__A, __B);
30 }
31 
test_mm_mask_mullo_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)32 __m128i test_mm_mask_mullo_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
33   // CHECK-LABEL: @test_mm_mask_mullo_epi64
34   // CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
35   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
36   return (__m128i) _mm_mask_mullo_epi64 ( __W, __U, __A, __B);
37 }
38 
test_mm_maskz_mullo_epi64(__mmask8 __U,__m128i __A,__m128i __B)39 __m128i test_mm_maskz_mullo_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
40   // CHECK-LABEL: @test_mm_maskz_mullo_epi64
41   // CHECK: mul <2 x i64> %{{.*}}, %{{.*}}
42   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
43   return (__m128i) _mm_maskz_mullo_epi64 (__U, __A, __B);
44 }
45 
test_mm256_mask_andnot_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)46 __m256d test_mm256_mask_andnot_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
47   // CHECK-LABEL: @test_mm256_mask_andnot_pd
48   // CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
49   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
50   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
51   return (__m256d) _mm256_mask_andnot_pd ( __W, __U, __A, __B);
52 }
53 
test_mm256_maskz_andnot_pd(__mmask8 __U,__m256d __A,__m256d __B)54 __m256d test_mm256_maskz_andnot_pd (__mmask8 __U, __m256d __A, __m256d __B) {
55   // CHECK-LABEL: @test_mm256_maskz_andnot_pd
56   // CHECK: xor <4 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1>
57   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
58   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
59   return (__m256d) _mm256_maskz_andnot_pd (__U, __A, __B);
60 }
61 
test_mm_mask_andnot_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)62 __m128d test_mm_mask_andnot_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
63   // CHECK-LABEL: @test_mm_mask_andnot_pd
64   // CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
65   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
66   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
67   return (__m128d) _mm_mask_andnot_pd ( __W, __U, __A, __B);
68 }
69 
test_mm_maskz_andnot_pd(__mmask8 __U,__m128d __A,__m128d __B)70 __m128d test_mm_maskz_andnot_pd (__mmask8 __U, __m128d __A, __m128d __B) {
71   // CHECK-LABEL: @test_mm_maskz_andnot_pd
72   // CHECK: xor <2 x i64> %{{.*}}, <i64 -1, i64 -1>
73   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
74   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
75   return (__m128d) _mm_maskz_andnot_pd (__U, __A, __B);
76 }
77 
test_mm256_mask_andnot_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)78 __m256 test_mm256_mask_andnot_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
79   // CHECK-LABEL: @test_mm256_mask_andnot_ps
80   // CHECK: xor <8 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
81   // CHECK: and <8 x i32> %{{.*}}, %{{.*}}
82   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
83   return (__m256) _mm256_mask_andnot_ps ( __W, __U, __A, __B);
84 }
85 
test_mm256_maskz_andnot_ps(__mmask8 __U,__m256 __A,__m256 __B)86 __m256 test_mm256_maskz_andnot_ps (__mmask8 __U, __m256 __A, __m256 __B) {
87   // CHECK-LABEL: @test_mm256_maskz_andnot_ps
88   // CHECK: xor <8 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
89   // CHECK: and <8 x i32> %{{.*}}, %{{.*}}
90   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
91   return (__m256) _mm256_maskz_andnot_ps (__U, __A, __B);
92 }
93 
test_mm_mask_andnot_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)94 __m128 test_mm_mask_andnot_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
95   // CHECK-LABEL: @test_mm_mask_andnot_ps
96   // CHECK: xor <4 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1>
97   // CHECK: and <4 x i32> %{{.*}}, %{{.*}}
98   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
99   return (__m128) _mm_mask_andnot_ps ( __W, __U, __A, __B);
100 }
101 
test_mm_maskz_andnot_ps(__mmask8 __U,__m128 __A,__m128 __B)102 __m128 test_mm_maskz_andnot_ps (__mmask8 __U, __m128 __A, __m128 __B) {
103   // CHECK-LABEL: @test_mm_maskz_andnot_ps
104   // CHECK: xor <4 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1>
105   // CHECK: and <4 x i32> %{{.*}}, %{{.*}}
106   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
107   return (__m128) _mm_maskz_andnot_ps (__U, __A, __B);
108 }
109 
test_mm256_mask_and_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)110 __m256d test_mm256_mask_and_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
111   // CHECK-LABEL: @test_mm256_mask_and_pd
112   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
113   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
114   return (__m256d) _mm256_mask_and_pd ( __W, __U, __A, __B);
115 }
116 
test_mm256_maskz_and_pd(__mmask8 __U,__m256d __A,__m256d __B)117 __m256d test_mm256_maskz_and_pd (__mmask8 __U, __m256d __A, __m256d __B) {
118   // CHECK-LABEL: @test_mm256_maskz_and_pd
119   // CHECK: and <4 x i64> %{{.*}}, %{{.*}}
120   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
121   return (__m256d) _mm256_maskz_and_pd (__U, __A, __B);
122 }
123 
test_mm_mask_and_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)124 __m128d test_mm_mask_and_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
125   // CHECK-LABEL: @test_mm_mask_and_pd
126   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
127   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
128   return (__m128d) _mm_mask_and_pd ( __W, __U, __A, __B);
129 }
130 
test_mm_maskz_and_pd(__mmask8 __U,__m128d __A,__m128d __B)131 __m128d test_mm_maskz_and_pd (__mmask8 __U, __m128d __A, __m128d __B) {
132   // CHECK-LABEL: @test_mm_maskz_and_pd
133   // CHECK: and <2 x i64> %{{.*}}, %{{.*}}
134   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
135   return (__m128d) _mm_maskz_and_pd (__U, __A, __B);
136 }
137 
test_mm256_mask_and_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)138 __m256 test_mm256_mask_and_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
139   // CHECK-LABEL: @test_mm256_mask_and_ps
140   // CHECK: and <8 x i32> %{{.*}}, %{{.*}}
141   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
142   return (__m256) _mm256_mask_and_ps ( __W, __U, __A, __B);
143 }
144 
test_mm256_maskz_and_ps(__mmask8 __U,__m256 __A,__m256 __B)145 __m256 test_mm256_maskz_and_ps (__mmask8 __U, __m256 __A, __m256 __B) {
146   // CHECK-LABEL: @test_mm256_maskz_and_ps
147   // CHECK: and <8 x i32> %{{.*}}, %{{.*}}
148   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
149   return (__m256) _mm256_maskz_and_ps (__U, __A, __B);
150 }
151 
test_mm_mask_and_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)152 __m128 test_mm_mask_and_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
153   // CHECK-LABEL: @test_mm_mask_and_ps
154   // CHECK: and <4 x i32> %{{.*}}, %{{.*}}
155   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
156   return (__m128) _mm_mask_and_ps ( __W, __U, __A, __B);
157 }
158 
test_mm_maskz_and_ps(__mmask8 __U,__m128 __A,__m128 __B)159 __m128 test_mm_maskz_and_ps (__mmask8 __U, __m128 __A, __m128 __B) {
160   // CHECK-LABEL: @test_mm_maskz_and_ps
161   // CHECK: and <4 x i32> %{{.*}}, %{{.*}}
162   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
163   return (__m128) _mm_maskz_and_ps (__U, __A, __B);
164 }
165 
test_mm256_mask_xor_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)166 __m256d test_mm256_mask_xor_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
167   // CHECK-LABEL: @test_mm256_mask_xor_pd
168   // CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
169   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
170   return (__m256d) _mm256_mask_xor_pd ( __W, __U, __A, __B);
171 }
172 
test_mm256_maskz_xor_pd(__mmask8 __U,__m256d __A,__m256d __B)173 __m256d test_mm256_maskz_xor_pd (__mmask8 __U, __m256d __A, __m256d __B) {
174   // CHECK-LABEL: @test_mm256_maskz_xor_pd
175   // CHECK: xor <4 x i64> %{{.*}}, %{{.*}}
176   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
177   return (__m256d) _mm256_maskz_xor_pd (__U, __A, __B);
178 }
179 
test_mm_mask_xor_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)180 __m128d test_mm_mask_xor_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
181   // CHECK-LABEL: @test_mm_mask_xor_pd
182   // CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
183   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
184   return (__m128d) _mm_mask_xor_pd ( __W, __U, __A, __B);
185 }
186 
test_mm_maskz_xor_pd(__mmask8 __U,__m128d __A,__m128d __B)187 __m128d test_mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B) {
188   // CHECK-LABEL: @test_mm_maskz_xor_pd
189   // CHECK: xor <2 x i64> %{{.*}}, %{{.*}}
190   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
191   return (__m128d) _mm_maskz_xor_pd (__U, __A, __B);
192 }
193 
test_mm256_mask_xor_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)194 __m256 test_mm256_mask_xor_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
195   // CHECK-LABEL: @test_mm256_mask_xor_ps
196   // CHECK: xor <8 x i32> %{{.*}}, %{{.*}}
197   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
198   return (__m256) _mm256_mask_xor_ps ( __W, __U, __A, __B);
199 }
200 
test_mm256_maskz_xor_ps(__mmask8 __U,__m256 __A,__m256 __B)201 __m256 test_mm256_maskz_xor_ps (__mmask8 __U, __m256 __A, __m256 __B) {
202   // CHECK-LABEL: @test_mm256_maskz_xor_ps
203   // CHECK: xor <8 x i32> %{{.*}}, %{{.*}}
204   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
205   return (__m256) _mm256_maskz_xor_ps (__U, __A, __B);
206 }
207 
test_mm_mask_xor_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)208 __m128 test_mm_mask_xor_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
209   // CHECK-LABEL: @test_mm_mask_xor_ps
210   // CHECK: xor <4 x i32> %{{.*}}, %{{.*}}
211   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
212   return (__m128) _mm_mask_xor_ps ( __W, __U, __A, __B);
213 }
214 
test_mm_maskz_xor_ps(__mmask8 __U,__m128 __A,__m128 __B)215 __m128 test_mm_maskz_xor_ps (__mmask8 __U, __m128 __A, __m128 __B) {
216   // CHECK-LABEL: @test_mm_maskz_xor_ps
217   // CHECK: xor <4 x i32> %{{.*}}, %{{.*}}
218   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
219   return (__m128) _mm_maskz_xor_ps (__U, __A, __B);
220 }
221 
test_mm256_mask_or_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)222 __m256d test_mm256_mask_or_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
223   // CHECK-LABEL: @test_mm256_mask_or_pd
224   // CHECK: or <4 x i64> %{{.*}}, %{{.*}}
225   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
226   return (__m256d) _mm256_mask_or_pd ( __W, __U, __A, __B);
227 }
228 
test_mm256_maskz_or_pd(__mmask8 __U,__m256d __A,__m256d __B)229 __m256d test_mm256_maskz_or_pd (__mmask8 __U, __m256d __A, __m256d __B) {
230   // CHECK-LABEL: @test_mm256_maskz_or_pd
231   // CHECK: or <4 x i64> %{{.*}}, %{{.*}}
232   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
233   return (__m256d) _mm256_maskz_or_pd (__U, __A, __B);
234 }
235 
test_mm_mask_or_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)236 __m128d test_mm_mask_or_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
237   // CHECK-LABEL: @test_mm_mask_or_pd
238   // CHECK: or <2 x i64> %{{.*}}, %{{.*}}
239   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
240   return (__m128d) _mm_mask_or_pd ( __W, __U, __A, __B);
241 }
242 
test_mm_maskz_or_pd(__mmask8 __U,__m128d __A,__m128d __B)243 __m128d test_mm_maskz_or_pd (__mmask8 __U, __m128d __A, __m128d __B) {
244   // CHECK-LABEL: @test_mm_maskz_or_pd
245   // CHECK: or <2 x i64> %{{.*}}, %{{.*}}
246   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
247   return (__m128d) _mm_maskz_or_pd (__U, __A, __B);
248 }
249 
test_mm256_mask_or_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)250 __m256 test_mm256_mask_or_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
251   // CHECK-LABEL: @test_mm256_mask_or_ps
252   // CHECK: or <8 x i32> %{{.*}}, %{{.*}}
253   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
254   return (__m256) _mm256_mask_or_ps ( __W, __U, __A, __B);
255 }
256 
test_mm256_maskz_or_ps(__mmask8 __U,__m256 __A,__m256 __B)257 __m256 test_mm256_maskz_or_ps (__mmask8 __U, __m256 __A, __m256 __B) {
258   // CHECK-LABEL: @test_mm256_maskz_or_ps
259   // CHECK: or <8 x i32> %{{.*}}, %{{.*}}
260   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
261   return (__m256) _mm256_maskz_or_ps (__U, __A, __B);
262 }
263 
test_mm_mask_or_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)264 __m128 test_mm_mask_or_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
265   // CHECK-LABEL: @test_mm_mask_or_ps
266   // CHECK: or <4 x i32> %{{.*}}, %{{.*}}
267   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
268   return (__m128) _mm_mask_or_ps ( __W, __U, __A, __B);
269 }
270 
test_mm_maskz_or_ps(__mmask8 __U,__m128 __A,__m128 __B)271 __m128 test_mm_maskz_or_ps (__mmask8 __U, __m128 __A, __m128 __B) {
272   // CHECK-LABEL: @test_mm_maskz_or_ps
273   // CHECK: or <4 x i32> %{{.*}}, %{{.*}}
274   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
275   return (__m128) _mm_maskz_or_ps(__U, __A, __B);
276 }
277 
test_mm_cvtpd_epi64(__m128d __A)278 __m128i test_mm_cvtpd_epi64(__m128d __A) {
279   // CHECK-LABEL: @test_mm_cvtpd_epi64
280   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.128
281   return _mm_cvtpd_epi64(__A);
282 }
283 
test_mm_mask_cvtpd_epi64(__m128i __W,__mmask8 __U,__m128d __A)284 __m128i test_mm_mask_cvtpd_epi64(__m128i __W, __mmask8 __U, __m128d __A) {
285   // CHECK-LABEL: @test_mm_mask_cvtpd_epi64
286   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.128
287   return _mm_mask_cvtpd_epi64(__W, __U, __A);
288 }
289 
test_mm_maskz_cvtpd_epi64(__mmask8 __U,__m128d __A)290 __m128i test_mm_maskz_cvtpd_epi64(__mmask8 __U, __m128d __A) {
291   // CHECK-LABEL: @test_mm_maskz_cvtpd_epi64
292   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.128
293   return _mm_maskz_cvtpd_epi64(__U, __A);
294 }
295 
test_mm256_cvtpd_epi64(__m256d __A)296 __m256i test_mm256_cvtpd_epi64(__m256d __A) {
297   // CHECK-LABEL: @test_mm256_cvtpd_epi64
298   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.256
299   return _mm256_cvtpd_epi64(__A);
300 }
301 
test_mm256_mask_cvtpd_epi64(__m256i __W,__mmask8 __U,__m256d __A)302 __m256i test_mm256_mask_cvtpd_epi64(__m256i __W, __mmask8 __U, __m256d __A) {
303   // CHECK-LABEL: @test_mm256_mask_cvtpd_epi64
304   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.256
305   return _mm256_mask_cvtpd_epi64(__W, __U, __A);
306 }
307 
test_mm256_maskz_cvtpd_epi64(__mmask8 __U,__m256d __A)308 __m256i test_mm256_maskz_cvtpd_epi64(__mmask8 __U, __m256d __A) {
309   // CHECK-LABEL: @test_mm256_maskz_cvtpd_epi64
310   // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.256
311   return _mm256_maskz_cvtpd_epi64(__U, __A);
312 }
313 
test_mm_cvtpd_epu64(__m128d __A)314 __m128i test_mm_cvtpd_epu64(__m128d __A) {
315   // CHECK-LABEL: @test_mm_cvtpd_epu64
316   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.128
317   return _mm_cvtpd_epu64(__A);
318 }
319 
test_mm_mask_cvtpd_epu64(__m128i __W,__mmask8 __U,__m128d __A)320 __m128i test_mm_mask_cvtpd_epu64(__m128i __W, __mmask8 __U, __m128d __A) {
321   // CHECK-LABEL: @test_mm_mask_cvtpd_epu64
322   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.128
323   return _mm_mask_cvtpd_epu64(__W, __U, __A);
324 }
325 
test_mm_maskz_cvtpd_epu64(__mmask8 __U,__m128d __A)326 __m128i test_mm_maskz_cvtpd_epu64(__mmask8 __U, __m128d __A) {
327   // CHECK-LABEL: @test_mm_maskz_cvtpd_epu64
328   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.128
329   return _mm_maskz_cvtpd_epu64(__U, __A);
330 }
331 
test_mm256_cvtpd_epu64(__m256d __A)332 __m256i test_mm256_cvtpd_epu64(__m256d __A) {
333   // CHECK-LABEL: @test_mm256_cvtpd_epu64
334   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.256
335   return _mm256_cvtpd_epu64(__A);
336 }
337 
test_mm256_mask_cvtpd_epu64(__m256i __W,__mmask8 __U,__m256d __A)338 __m256i test_mm256_mask_cvtpd_epu64(__m256i __W, __mmask8 __U, __m256d __A) {
339   // CHECK-LABEL: @test_mm256_mask_cvtpd_epu64
340   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.256
341   return _mm256_mask_cvtpd_epu64(__W, __U, __A);
342 }
343 
test_mm256_maskz_cvtpd_epu64(__mmask8 __U,__m256d __A)344 __m256i test_mm256_maskz_cvtpd_epu64(__mmask8 __U, __m256d __A) {
345   // CHECK-LABEL: @test_mm256_maskz_cvtpd_epu64
346   // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.256
347   return _mm256_maskz_cvtpd_epu64(__U, __A);
348 }
349 
test_mm_cvtps_epi64(__m128 __A)350 __m128i test_mm_cvtps_epi64(__m128 __A) {
351   // CHECK-LABEL: @test_mm_cvtps_epi64
352   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.128
353   return _mm_cvtps_epi64(__A);
354 }
355 
test_mm_mask_cvtps_epi64(__m128i __W,__mmask8 __U,__m128 __A)356 __m128i test_mm_mask_cvtps_epi64(__m128i __W, __mmask8 __U, __m128 __A) {
357   // CHECK-LABEL: @test_mm_mask_cvtps_epi64
358   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.128
359   return _mm_mask_cvtps_epi64(__W, __U, __A);
360 }
361 
test_mm_maskz_cvtps_epi64(__mmask8 __U,__m128 __A)362 __m128i test_mm_maskz_cvtps_epi64(__mmask8 __U, __m128 __A) {
363   // CHECK-LABEL: @test_mm_maskz_cvtps_epi64
364   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.128
365   return _mm_maskz_cvtps_epi64(__U, __A);
366 }
367 
test_mm256_cvtps_epi64(__m128 __A)368 __m256i test_mm256_cvtps_epi64(__m128 __A) {
369   // CHECK-LABEL: @test_mm256_cvtps_epi64
370   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.256
371   return _mm256_cvtps_epi64(__A);
372 }
373 
test_mm256_mask_cvtps_epi64(__m256i __W,__mmask8 __U,__m128 __A)374 __m256i test_mm256_mask_cvtps_epi64(__m256i __W, __mmask8 __U, __m128 __A) {
375   // CHECK-LABEL: @test_mm256_mask_cvtps_epi64
376   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.256
377   return _mm256_mask_cvtps_epi64(__W, __U, __A);
378 }
379 
test_mm256_maskz_cvtps_epi64(__mmask8 __U,__m128 __A)380 __m256i test_mm256_maskz_cvtps_epi64(__mmask8 __U, __m128 __A) {
381   // CHECK-LABEL: @test_mm256_maskz_cvtps_epi64
382   // CHECK: @llvm.x86.avx512.mask.cvtps2qq.256
383   return _mm256_maskz_cvtps_epi64(__U, __A);
384 }
385 
test_mm_cvtps_epu64(__m128 __A)386 __m128i test_mm_cvtps_epu64(__m128 __A) {
387   // CHECK-LABEL: @test_mm_cvtps_epu64
388   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.128
389   return _mm_cvtps_epu64(__A);
390 }
391 
test_mm_mask_cvtps_epu64(__m128i __W,__mmask8 __U,__m128 __A)392 __m128i test_mm_mask_cvtps_epu64(__m128i __W, __mmask8 __U, __m128 __A) {
393   // CHECK-LABEL: @test_mm_mask_cvtps_epu64
394   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.128
395   return _mm_mask_cvtps_epu64(__W, __U, __A);
396 }
397 
test_mm_maskz_cvtps_epu64(__mmask8 __U,__m128 __A)398 __m128i test_mm_maskz_cvtps_epu64(__mmask8 __U, __m128 __A) {
399   // CHECK-LABEL: @test_mm_maskz_cvtps_epu64
400   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.128
401   return _mm_maskz_cvtps_epu64(__U, __A);
402 }
403 
test_mm256_cvtps_epu64(__m128 __A)404 __m256i test_mm256_cvtps_epu64(__m128 __A) {
405   // CHECK-LABEL: @test_mm256_cvtps_epu64
406   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.256
407   return _mm256_cvtps_epu64(__A);
408 }
409 
test_mm256_mask_cvtps_epu64(__m256i __W,__mmask8 __U,__m128 __A)410 __m256i test_mm256_mask_cvtps_epu64(__m256i __W, __mmask8 __U, __m128 __A) {
411   // CHECK-LABEL: @test_mm256_mask_cvtps_epu64
412   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.256
413   return _mm256_mask_cvtps_epu64(__W, __U, __A);
414 }
415 
test_mm256_maskz_cvtps_epu64(__mmask8 __U,__m128 __A)416 __m256i test_mm256_maskz_cvtps_epu64(__mmask8 __U, __m128 __A) {
417   // CHECK-LABEL: @test_mm256_maskz_cvtps_epu64
418   // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.256
419   return _mm256_maskz_cvtps_epu64(__U, __A);
420 }
421 
test_mm_cvtepi64_pd(__m128i __A)422 __m128d test_mm_cvtepi64_pd(__m128i __A) {
423   // CHECK-LABEL: @test_mm_cvtepi64_pd
424   // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>
425   return _mm_cvtepi64_pd(__A);
426 }
427 
test_mm_mask_cvtepi64_pd(__m128d __W,__mmask8 __U,__m128i __A)428 __m128d test_mm_mask_cvtepi64_pd(__m128d __W, __mmask8 __U, __m128i __A) {
429   // CHECK-LABEL: @test_mm_mask_cvtepi64_pd
430   // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>
431   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
432   return _mm_mask_cvtepi64_pd(__W, __U, __A);
433 }
434 
test_mm_maskz_cvtepi64_pd(__mmask8 __U,__m128i __A)435 __m128d test_mm_maskz_cvtepi64_pd(__mmask8 __U, __m128i __A) {
436   // CHECK-LABEL: @test_mm_maskz_cvtepi64_pd
437   // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>
438   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
439   return _mm_maskz_cvtepi64_pd(__U, __A);
440 }
441 
test_mm256_cvtepi64_pd(__m256i __A)442 __m256d test_mm256_cvtepi64_pd(__m256i __A) {
443   // CHECK-LABEL: @test_mm256_cvtepi64_pd
444   // CHECK: sitofp <4 x i64> %{{.*}} to <4 x double>
445   return _mm256_cvtepi64_pd(__A);
446 }
447 
test_mm256_mask_cvtepi64_pd(__m256d __W,__mmask8 __U,__m256i __A)448 __m256d test_mm256_mask_cvtepi64_pd(__m256d __W, __mmask8 __U, __m256i __A) {
449   // CHECK-LABEL: @test_mm256_mask_cvtepi64_pd
450   // CHECK: sitofp <4 x i64> %{{.*}} to <4 x double>
451   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
452   return _mm256_mask_cvtepi64_pd(__W, __U, __A);
453 }
454 
test_mm256_maskz_cvtepi64_pd(__mmask8 __U,__m256i __A)455 __m256d test_mm256_maskz_cvtepi64_pd(__mmask8 __U, __m256i __A) {
456   // CHECK-LABEL: @test_mm256_maskz_cvtepi64_pd
457   // CHECK: sitofp <4 x i64> %{{.*}} to <4 x double>
458   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
459   return _mm256_maskz_cvtepi64_pd(__U, __A);
460 }
461 
test_mm_cvtepi64_ps(__m128i __A)462 __m128 test_mm_cvtepi64_ps(__m128i __A) {
463   // CHECK-LABEL: @test_mm_cvtepi64_ps
464   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.128
465   return _mm_cvtepi64_ps(__A);
466 }
467 
test_mm_mask_cvtepi64_ps(__m128 __W,__mmask8 __U,__m128i __A)468 __m128 test_mm_mask_cvtepi64_ps(__m128 __W, __mmask8 __U, __m128i __A) {
469   // CHECK-LABEL: @test_mm_mask_cvtepi64_ps
470   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.128
471   return _mm_mask_cvtepi64_ps(__W, __U, __A);
472 }
473 
test_mm_maskz_cvtepi64_ps(__mmask8 __U,__m128i __A)474 __m128 test_mm_maskz_cvtepi64_ps(__mmask8 __U, __m128i __A) {
475   // CHECK-LABEL: @test_mm_maskz_cvtepi64_ps
476   // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.128
477   return _mm_maskz_cvtepi64_ps(__U, __A);
478 }
479 
test_mm256_cvtepi64_ps(__m256i __A)480 __m128 test_mm256_cvtepi64_ps(__m256i __A) {
481   // CHECK-LABEL: @test_mm256_cvtepi64_ps
482   // CHECK: sitofp <4 x i64> %{{.*}} to <4 x float>
483   return _mm256_cvtepi64_ps(__A);
484 }
485 
test_mm256_mask_cvtepi64_ps(__m128 __W,__mmask8 __U,__m256i __A)486 __m128 test_mm256_mask_cvtepi64_ps(__m128 __W, __mmask8 __U, __m256i __A) {
487   // CHECK-LABEL: @test_mm256_mask_cvtepi64_ps
488   // CHECK: sitofp <4 x i64> %{{.*}} to <4 x float>
489   // select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
490   return _mm256_mask_cvtepi64_ps(__W, __U, __A);
491 }
492 
test_mm256_maskz_cvtepi64_ps(__mmask8 __U,__m256i __A)493 __m128 test_mm256_maskz_cvtepi64_ps(__mmask8 __U, __m256i __A) {
494   // CHECK-LABEL: @test_mm256_maskz_cvtepi64_ps
495   // CHECK: sitofp <4 x i64> %{{.*}} to <4 x float>
496   // select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
497   return _mm256_maskz_cvtepi64_ps(__U, __A);
498 }
499 
test_mm_cvttpd_epi64(__m128d __A)500 __m128i test_mm_cvttpd_epi64(__m128d __A) {
501   // CHECK-LABEL: @test_mm_cvttpd_epi64
502   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.128
503   return _mm_cvttpd_epi64(__A);
504 }
505 
test_mm_mask_cvttpd_epi64(__m128i __W,__mmask8 __U,__m128d __A)506 __m128i test_mm_mask_cvttpd_epi64(__m128i __W, __mmask8 __U, __m128d __A) {
507   // CHECK-LABEL: @test_mm_mask_cvttpd_epi64
508   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.128
509   return _mm_mask_cvttpd_epi64(__W, __U, __A);
510 }
511 
test_mm_maskz_cvttpd_epi64(__mmask8 __U,__m128d __A)512 __m128i test_mm_maskz_cvttpd_epi64(__mmask8 __U, __m128d __A) {
513   // CHECK-LABEL: @test_mm_maskz_cvttpd_epi64
514   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.128
515   return _mm_maskz_cvttpd_epi64(__U, __A);
516 }
517 
test_mm256_cvttpd_epi64(__m256d __A)518 __m256i test_mm256_cvttpd_epi64(__m256d __A) {
519   // CHECK-LABEL: @test_mm256_cvttpd_epi64
520   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.256
521   return _mm256_cvttpd_epi64(__A);
522 }
523 
test_mm256_mask_cvttpd_epi64(__m256i __W,__mmask8 __U,__m256d __A)524 __m256i test_mm256_mask_cvttpd_epi64(__m256i __W, __mmask8 __U, __m256d __A) {
525   // CHECK-LABEL: @test_mm256_mask_cvttpd_epi64
526   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.256
527   return _mm256_mask_cvttpd_epi64(__W, __U, __A);
528 }
529 
test_mm256_maskz_cvttpd_epi64(__mmask8 __U,__m256d __A)530 __m256i test_mm256_maskz_cvttpd_epi64(__mmask8 __U, __m256d __A) {
531   // CHECK-LABEL: @test_mm256_maskz_cvttpd_epi64
532   // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.256
533   return _mm256_maskz_cvttpd_epi64(__U, __A);
534 }
535 
test_mm_cvttpd_epu64(__m128d __A)536 __m128i test_mm_cvttpd_epu64(__m128d __A) {
537   // CHECK-LABEL: @test_mm_cvttpd_epu64
538   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.128
539   return _mm_cvttpd_epu64(__A);
540 }
541 
test_mm_mask_cvttpd_epu64(__m128i __W,__mmask8 __U,__m128d __A)542 __m128i test_mm_mask_cvttpd_epu64(__m128i __W, __mmask8 __U, __m128d __A) {
543   // CHECK-LABEL: @test_mm_mask_cvttpd_epu64
544   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.128
545   return _mm_mask_cvttpd_epu64(__W, __U, __A);
546 }
547 
test_mm_maskz_cvttpd_epu64(__mmask8 __U,__m128d __A)548 __m128i test_mm_maskz_cvttpd_epu64(__mmask8 __U, __m128d __A) {
549   // CHECK-LABEL: @test_mm_maskz_cvttpd_epu64
550   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.128
551   return _mm_maskz_cvttpd_epu64(__U, __A);
552 }
553 
test_mm256_cvttpd_epu64(__m256d __A)554 __m256i test_mm256_cvttpd_epu64(__m256d __A) {
555   // CHECK-LABEL: @test_mm256_cvttpd_epu64
556   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.256
557   return _mm256_cvttpd_epu64(__A);
558 }
559 
test_mm256_mask_cvttpd_epu64(__m256i __W,__mmask8 __U,__m256d __A)560 __m256i test_mm256_mask_cvttpd_epu64(__m256i __W, __mmask8 __U, __m256d __A) {
561   // CHECK-LABEL: @test_mm256_mask_cvttpd_epu64
562   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.256
563   return _mm256_mask_cvttpd_epu64(__W, __U, __A);
564 }
565 
test_mm256_maskz_cvttpd_epu64(__mmask8 __U,__m256d __A)566 __m256i test_mm256_maskz_cvttpd_epu64(__mmask8 __U, __m256d __A) {
567   // CHECK-LABEL: @test_mm256_maskz_cvttpd_epu64
568   // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.256
569   return _mm256_maskz_cvttpd_epu64(__U, __A);
570 }
571 
test_mm_cvttps_epi64(__m128 __A)572 __m128i test_mm_cvttps_epi64(__m128 __A) {
573   // CHECK-LABEL: @test_mm_cvttps_epi64
574   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.128
575   return _mm_cvttps_epi64(__A);
576 }
577 
test_mm_mask_cvttps_epi64(__m128i __W,__mmask8 __U,__m128 __A)578 __m128i test_mm_mask_cvttps_epi64(__m128i __W, __mmask8 __U, __m128 __A) {
579   // CHECK-LABEL: @test_mm_mask_cvttps_epi64
580   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.128
581   return _mm_mask_cvttps_epi64(__W, __U, __A);
582 }
583 
test_mm_maskz_cvttps_epi64(__mmask8 __U,__m128 __A)584 __m128i test_mm_maskz_cvttps_epi64(__mmask8 __U, __m128 __A) {
585   // CHECK-LABEL: @test_mm_maskz_cvttps_epi64
586   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.128
587   return _mm_maskz_cvttps_epi64(__U, __A);
588 }
589 
test_mm256_cvttps_epi64(__m128 __A)590 __m256i test_mm256_cvttps_epi64(__m128 __A) {
591   // CHECK-LABEL: @test_mm256_cvttps_epi64
592   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.256
593   return _mm256_cvttps_epi64(__A);
594 }
595 
test_mm256_mask_cvttps_epi64(__m256i __W,__mmask8 __U,__m128 __A)596 __m256i test_mm256_mask_cvttps_epi64(__m256i __W, __mmask8 __U, __m128 __A) {
597   // CHECK-LABEL: @test_mm256_mask_cvttps_epi64
598   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.256
599   return _mm256_mask_cvttps_epi64(__W, __U, __A);
600 }
601 
test_mm256_maskz_cvttps_epi64(__mmask8 __U,__m128 __A)602 __m256i test_mm256_maskz_cvttps_epi64(__mmask8 __U, __m128 __A) {
603   // CHECK-LABEL: @test_mm256_maskz_cvttps_epi64
604   // CHECK: @llvm.x86.avx512.mask.cvttps2qq.256
605   return _mm256_maskz_cvttps_epi64(__U, __A);
606 }
607 
test_mm_cvttps_epu64(__m128 __A)608 __m128i test_mm_cvttps_epu64(__m128 __A) {
609   // CHECK-LABEL: @test_mm_cvttps_epu64
610   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.128
611   return _mm_cvttps_epu64(__A);
612 }
613 
test_mm_mask_cvttps_epu64(__m128i __W,__mmask8 __U,__m128 __A)614 __m128i test_mm_mask_cvttps_epu64(__m128i __W, __mmask8 __U, __m128 __A) {
615   // CHECK-LABEL: @test_mm_mask_cvttps_epu64
616   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.128
617   return _mm_mask_cvttps_epu64(__W, __U, __A);
618 }
619 
test_mm_maskz_cvttps_epu64(__mmask8 __U,__m128 __A)620 __m128i test_mm_maskz_cvttps_epu64(__mmask8 __U, __m128 __A) {
621   // CHECK-LABEL: @test_mm_maskz_cvttps_epu64
622   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.128
623   return _mm_maskz_cvttps_epu64(__U, __A);
624 }
625 
test_mm256_cvttps_epu64(__m128 __A)626 __m256i test_mm256_cvttps_epu64(__m128 __A) {
627   // CHECK-LABEL: @test_mm256_cvttps_epu64
628   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.256
629   return _mm256_cvttps_epu64(__A);
630 }
631 
test_mm256_mask_cvttps_epu64(__m256i __W,__mmask8 __U,__m128 __A)632 __m256i test_mm256_mask_cvttps_epu64(__m256i __W, __mmask8 __U, __m128 __A) {
633   // CHECK-LABEL: @test_mm256_mask_cvttps_epu64
634   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.256
635   return _mm256_mask_cvttps_epu64(__W, __U, __A);
636 }
637 
test_mm256_maskz_cvttps_epu64(__mmask8 __U,__m128 __A)638 __m256i test_mm256_maskz_cvttps_epu64(__mmask8 __U, __m128 __A) {
639   // CHECK-LABEL: @test_mm256_maskz_cvttps_epu64
640   // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.256
641   return _mm256_maskz_cvttps_epu64(__U, __A);
642 }
643 
test_mm_cvtepu64_pd(__m128i __A)644 __m128d test_mm_cvtepu64_pd(__m128i __A) {
645   // CHECK-LABEL: @test_mm_cvtepu64_pd
646   // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>
647   return _mm_cvtepu64_pd(__A);
648 }
649 
test_mm_mask_cvtepu64_pd(__m128d __W,__mmask8 __U,__m128i __A)650 __m128d test_mm_mask_cvtepu64_pd(__m128d __W, __mmask8 __U, __m128i __A) {
651   // CHECK-LABEL: @test_mm_mask_cvtepu64_pd
652   // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>
653   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
654   return _mm_mask_cvtepu64_pd(__W, __U, __A);
655 }
656 
test_mm_maskz_cvtepu64_pd(__mmask8 __U,__m128i __A)657 __m128d test_mm_maskz_cvtepu64_pd(__mmask8 __U, __m128i __A) {
658   // CHECK-LABEL: @test_mm_maskz_cvtepu64_pd
659   // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>
660   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
661   return _mm_maskz_cvtepu64_pd(__U, __A);
662 }
663 
test_mm256_cvtepu64_pd(__m256i __A)664 __m256d test_mm256_cvtepu64_pd(__m256i __A) {
665   // CHECK-LABEL: @test_mm256_cvtepu64_pd
666   // CHECK: uitofp <4 x i64> %{{.*}} to <4 x double>
667   return _mm256_cvtepu64_pd(__A);
668 }
669 
test_mm256_mask_cvtepu64_pd(__m256d __W,__mmask8 __U,__m256i __A)670 __m256d test_mm256_mask_cvtepu64_pd(__m256d __W, __mmask8 __U, __m256i __A) {
671   // CHECK-LABEL: @test_mm256_mask_cvtepu64_pd
672   // CHECK: uitofp <4 x i64> %{{.*}} to <4 x double>
673   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
674   return _mm256_mask_cvtepu64_pd(__W, __U, __A);
675 }
676 
test_mm256_maskz_cvtepu64_pd(__mmask8 __U,__m256i __A)677 __m256d test_mm256_maskz_cvtepu64_pd(__mmask8 __U, __m256i __A) {
678   // CHECK-LABEL: @test_mm256_maskz_cvtepu64_pd
679   // CHECK: uitofp <4 x i64> %{{.*}} to <4 x double>
680   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
681   return _mm256_maskz_cvtepu64_pd(__U, __A);
682 }
683 
test_mm_cvtepu64_ps(__m128i __A)684 __m128 test_mm_cvtepu64_ps(__m128i __A) {
685   // CHECK-LABEL: @test_mm_cvtepu64_ps
686   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.128
687   return _mm_cvtepu64_ps(__A);
688 }
689 
test_mm_mask_cvtepu64_ps(__m128 __W,__mmask8 __U,__m128i __A)690 __m128 test_mm_mask_cvtepu64_ps(__m128 __W, __mmask8 __U, __m128i __A) {
691   // CHECK-LABEL: @test_mm_mask_cvtepu64_ps
692   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.128
693   return _mm_mask_cvtepu64_ps(__W, __U, __A);
694 }
695 
test_mm_maskz_cvtepu64_ps(__mmask8 __U,__m128i __A)696 __m128 test_mm_maskz_cvtepu64_ps(__mmask8 __U, __m128i __A) {
697   // CHECK-LABEL: @test_mm_maskz_cvtepu64_ps
698   // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.128
699   return _mm_maskz_cvtepu64_ps(__U, __A);
700 }
701 
test_mm256_cvtepu64_ps(__m256i __A)702 __m128 test_mm256_cvtepu64_ps(__m256i __A) {
703   // CHECK-LABEL: @test_mm256_cvtepu64_ps
704   // CHECK: uitofp <4 x i64> %{{.*}} to <4 x float>
705   return _mm256_cvtepu64_ps(__A);
706 }
707 
test_mm256_mask_cvtepu64_ps(__m128 __W,__mmask8 __U,__m256i __A)708 __m128 test_mm256_mask_cvtepu64_ps(__m128 __W, __mmask8 __U, __m256i __A) {
709   // CHECK-LABEL: @test_mm256_mask_cvtepu64_ps
710   // CHECK: uitofp <4 x i64> %{{.*}} to <4 x float>
711   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
712   return _mm256_mask_cvtepu64_ps(__W, __U, __A);
713 }
714 
test_mm256_maskz_cvtepu64_ps(__mmask8 __U,__m256i __A)715 __m128 test_mm256_maskz_cvtepu64_ps(__mmask8 __U, __m256i __A) {
716   // CHECK-LABEL: @test_mm256_maskz_cvtepu64_ps
717   // CHECK: uitofp <4 x i64> %{{.*}} to <4 x float>
718   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
719   return _mm256_maskz_cvtepu64_ps(__U, __A);
720 }
721 
test_mm_range_pd(__m128d __A,__m128d __B)722 __m128d test_mm_range_pd(__m128d __A, __m128d __B) {
723   // CHECK-LABEL: @test_mm_range_pd
724   // CHECK: @llvm.x86.avx512.mask.range.pd.128
725   return _mm_range_pd(__A, __B, 4);
726 }
727 
test_mm_mask_range_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)728 __m128d test_mm_mask_range_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
729   // CHECK-LABEL: @test_mm_mask_range_pd
730   // CHECK: @llvm.x86.avx512.mask.range.pd.128
731   return _mm_mask_range_pd(__W, __U, __A, __B, 4);
732 }
733 
test_mm_maskz_range_pd(__mmask8 __U,__m128d __A,__m128d __B)734 __m128d test_mm_maskz_range_pd(__mmask8 __U, __m128d __A, __m128d __B) {
735   // CHECK-LABEL: @test_mm_maskz_range_pd
736   // CHECK: @llvm.x86.avx512.mask.range.pd.128
737   return _mm_maskz_range_pd(__U, __A, __B, 4);
738 }
739 
test_mm256_range_pd(__m256d __A,__m256d __B)740 __m256d test_mm256_range_pd(__m256d __A, __m256d __B) {
741   // CHECK-LABEL: @test_mm256_range_pd
742   // CHECK: @llvm.x86.avx512.mask.range.pd.256
743   return _mm256_range_pd(__A, __B, 4);
744 }
745 
test_mm256_mask_range_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)746 __m256d test_mm256_mask_range_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
747   // CHECK-LABEL: @test_mm256_mask_range_pd
748   // CHECK: @llvm.x86.avx512.mask.range.pd.256
749   return _mm256_mask_range_pd(__W, __U, __A, __B, 4);
750 }
751 
test_mm256_maskz_range_pd(__mmask8 __U,__m256d __A,__m256d __B)752 __m256d test_mm256_maskz_range_pd(__mmask8 __U, __m256d __A, __m256d __B) {
753   // CHECK-LABEL: @test_mm256_maskz_range_pd
754   // CHECK: @llvm.x86.avx512.mask.range.pd.256
755   return _mm256_maskz_range_pd(__U, __A, __B, 4);
756 }
757 
test_mm_range_ps(__m128 __A,__m128 __B)758 __m128 test_mm_range_ps(__m128 __A, __m128 __B) {
759   // CHECK-LABEL: @test_mm_range_ps
760   // CHECK: @llvm.x86.avx512.mask.range.ps.128
761   return _mm_range_ps(__A, __B, 4);
762 }
763 
test_mm_mask_range_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)764 __m128 test_mm_mask_range_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
765   // CHECK-LABEL: @test_mm_mask_range_ps
766   // CHECK: @llvm.x86.avx512.mask.range.ps.128
767   return _mm_mask_range_ps(__W, __U, __A, __B, 4);
768 }
769 
test_mm_maskz_range_ps(__mmask8 __U,__m128 __A,__m128 __B)770 __m128 test_mm_maskz_range_ps(__mmask8 __U, __m128 __A, __m128 __B) {
771   // CHECK-LABEL: @test_mm_maskz_range_ps
772   // CHECK: @llvm.x86.avx512.mask.range.ps.128
773   return _mm_maskz_range_ps(__U, __A, __B, 4);
774 }
775 
test_mm256_range_ps(__m256 __A,__m256 __B)776 __m256 test_mm256_range_ps(__m256 __A, __m256 __B) {
777   // CHECK-LABEL: @test_mm256_range_ps
778   // CHECK: @llvm.x86.avx512.mask.range.ps.256
779   return _mm256_range_ps(__A, __B, 4);
780 }
781 
test_mm256_mask_range_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)782 __m256 test_mm256_mask_range_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
783   // CHECK-LABEL: @test_mm256_mask_range_ps
784   // CHECK: @llvm.x86.avx512.mask.range.ps.256
785   return _mm256_mask_range_ps(__W, __U, __A, __B, 4);
786 }
787 
test_mm256_maskz_range_ps(__mmask8 __U,__m256 __A,__m256 __B)788 __m256 test_mm256_maskz_range_ps(__mmask8 __U, __m256 __A, __m256 __B) {
789   // CHECK-LABEL: @test_mm256_maskz_range_ps
790   // CHECK: @llvm.x86.avx512.mask.range.ps.256
791   return _mm256_maskz_range_ps(__U, __A, __B, 4);
792 }
793 
test_mm_reduce_pd(__m128d __A)794 __m128d test_mm_reduce_pd(__m128d __A) {
795   // CHECK-LABEL: @test_mm_reduce_pd
796   // CHECK: @llvm.x86.avx512.mask.reduce.pd.128
797   return _mm_reduce_pd(__A, 4);
798 }
799 
test_mm_mask_reduce_pd(__m128d __W,__mmask8 __U,__m128d __A)800 __m128d test_mm_mask_reduce_pd(__m128d __W, __mmask8 __U, __m128d __A) {
801   // CHECK-LABEL: @test_mm_mask_reduce_pd
802   // CHECK: @llvm.x86.avx512.mask.reduce.pd.128
803   return _mm_mask_reduce_pd(__W, __U, __A, 4);
804 }
805 
test_mm_maskz_reduce_pd(__mmask8 __U,__m128d __A)806 __m128d test_mm_maskz_reduce_pd(__mmask8 __U, __m128d __A) {
807   // CHECK-LABEL: @test_mm_maskz_reduce_pd
808   // CHECK: @llvm.x86.avx512.mask.reduce.pd.128
809   return _mm_maskz_reduce_pd(__U, __A, 4);
810 }
811 
test_mm256_reduce_pd(__m256d __A)812 __m256d test_mm256_reduce_pd(__m256d __A) {
813   // CHECK-LABEL: @test_mm256_reduce_pd
814   // CHECK: @llvm.x86.avx512.mask.reduce.pd.256
815   return _mm256_reduce_pd(__A, 4);
816 }
817 
test_mm256_mask_reduce_pd(__m256d __W,__mmask8 __U,__m256d __A)818 __m256d test_mm256_mask_reduce_pd(__m256d __W, __mmask8 __U, __m256d __A) {
819   // CHECK-LABEL: @test_mm256_mask_reduce_pd
820   // CHECK: @llvm.x86.avx512.mask.reduce.pd.256
821   return _mm256_mask_reduce_pd(__W, __U, __A, 4);
822 }
823 
test_mm256_maskz_reduce_pd(__mmask8 __U,__m256d __A)824 __m256d test_mm256_maskz_reduce_pd(__mmask8 __U, __m256d __A) {
825   // CHECK-LABEL: @test_mm256_maskz_reduce_pd
826   // CHECK: @llvm.x86.avx512.mask.reduce.pd.256
827   return _mm256_maskz_reduce_pd(__U, __A, 4);
828 }
829 
test_mm_reduce_ps(__m128 __A)830 __m128 test_mm_reduce_ps(__m128 __A) {
831   // CHECK-LABEL: @test_mm_reduce_ps
832   // CHECK: @llvm.x86.avx512.mask.reduce.ps.128
833   return _mm_reduce_ps(__A, 4);
834 }
835 
test_mm_mask_reduce_ps(__m128 __W,__mmask8 __U,__m128 __A)836 __m128 test_mm_mask_reduce_ps(__m128 __W, __mmask8 __U, __m128 __A) {
837   // CHECK-LABEL: @test_mm_mask_reduce_ps
838   // CHECK: @llvm.x86.avx512.mask.reduce.ps.128
839   return _mm_mask_reduce_ps(__W, __U, __A, 4);
840 }
841 
test_mm_maskz_reduce_ps(__mmask8 __U,__m128 __A)842 __m128 test_mm_maskz_reduce_ps(__mmask8 __U, __m128 __A) {
843   // CHECK-LABEL: @test_mm_maskz_reduce_ps
844   // CHECK: @llvm.x86.avx512.mask.reduce.ps.128
845   return _mm_maskz_reduce_ps(__U, __A, 4);
846 }
847 
test_mm256_reduce_ps(__m256 __A)848 __m256 test_mm256_reduce_ps(__m256 __A) {
849   // CHECK-LABEL: @test_mm256_reduce_ps
850   // CHECK: @llvm.x86.avx512.mask.reduce.ps.256
851   return _mm256_reduce_ps(__A, 4);
852 }
853 
test_mm256_mask_reduce_ps(__m256 __W,__mmask8 __U,__m256 __A)854 __m256 test_mm256_mask_reduce_ps(__m256 __W, __mmask8 __U, __m256 __A) {
855   // CHECK-LABEL: @test_mm256_mask_reduce_ps
856   // CHECK: @llvm.x86.avx512.mask.reduce.ps.256
857   return _mm256_mask_reduce_ps(__W, __U, __A, 4);
858 }
859 
test_mm256_maskz_reduce_ps(__mmask8 __U,__m256 __A)860 __m256 test_mm256_maskz_reduce_ps(__mmask8 __U, __m256 __A) {
861   // CHECK-LABEL: @test_mm256_maskz_reduce_ps
862   // CHECK: @llvm.x86.avx512.mask.reduce.ps.256
863   return _mm256_maskz_reduce_ps(__U, __A, 4);
864 }
865 
test_mm_movepi32_mask(__m128i __A)866 __mmask8 test_mm_movepi32_mask(__m128i __A) {
867   // CHECK-LABEL: @test_mm_movepi32_mask
868   // CHECK: [[CMP:%.*]] = icmp slt <4 x i32> %{{.*}}, zeroinitializer
869   // CHECK: [[SHUF:%.*]] = shufflevector <4 x i1> [[CMP]], <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
870   // CHECK: bitcast <8 x i1> [[SHUF]] to i8
871   return _mm_movepi32_mask(__A);
872 }
873 
test_mm256_movepi32_mask(__m256i __A)874 __mmask8 test_mm256_movepi32_mask(__m256i __A) {
875   // CHECK-LABEL: @test_mm256_movepi32_mask
876   // CHECK: [[CMP:%.*]] = icmp slt <8 x i32> %{{.*}}, zeroinitializer
877   // CHECK: bitcast <8 x i1> [[CMP]] to i8
878   return _mm256_movepi32_mask(__A);
879 }
880 
test_mm_movm_epi32(__mmask8 __A)881 __m128i test_mm_movm_epi32(__mmask8 __A) {
882   // CHECK-LABEL: @test_mm_movm_epi32
883   // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
884   // CHECK: %extract.i = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
885   // CHECK: %vpmovm2.i = sext <4 x i1> %extract.i to <4 x i32>
886   return _mm_movm_epi32(__A);
887 }
888 
test_mm256_movm_epi32(__mmask8 __A)889 __m256i test_mm256_movm_epi32(__mmask8 __A) {
890   // CHECK-LABEL: @test_mm256_movm_epi32
891   // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
892   // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i32>
893   return _mm256_movm_epi32(__A);
894 }
895 
test_mm_movm_epi64(__mmask8 __A)896 __m128i test_mm_movm_epi64(__mmask8 __A) {
897   // CHECK-LABEL: @test_mm_movm_epi64
898   // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
899   // CHECK: %extract.i = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>
900   // CHECK: %vpmovm2.i = sext <2 x i1> %extract.i to <2 x i64>
901   return _mm_movm_epi64(__A);
902 }
903 
test_mm256_movm_epi64(__mmask8 __A)904 __m256i test_mm256_movm_epi64(__mmask8 __A) {
905   // CHECK-LABEL: @test_mm256_movm_epi64
906   // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>
907   // CHECK: %extract.i = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
908   // CHECK: %vpmovm2.i = sext <4 x i1> %extract.i to <4 x i64>
909   return _mm256_movm_epi64(__A);
910 }
911 
test_mm_movepi64_mask(__m128i __A)912 __mmask8 test_mm_movepi64_mask(__m128i __A) {
913   // CHECK-LABEL: @test_mm_movepi64_mask
914   // CHECK: [[CMP:%.*]] = icmp slt <2 x i64> %{{.*}}, zeroinitializer
915   // CHECK: [[SHUF:%.*]] = shufflevector <2 x i1> [[CMP]], <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
916   // CHECK: bitcast <8 x i1> [[SHUF]] to i8
917   return _mm_movepi64_mask(__A);
918 }
919 
test_mm256_movepi64_mask(__m256i __A)920 __mmask8 test_mm256_movepi64_mask(__m256i __A) {
921   // CHECK-LABEL: @test_mm256_movepi64_mask
922   // CHECK: [[CMP:%.*]] = icmp slt <4 x i64> %{{.*}}, zeroinitializer
923   // CHECK: [[SHUF:%.*]] = shufflevector <4 x i1> [[CMP]], <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
924   // CHECK: bitcast <8 x i1> [[SHUF]] to i8
925   return _mm256_movepi64_mask(__A);
926 }
927 
928 
test_mm256_broadcast_f32x2(__m128 __A)929 __m256 test_mm256_broadcast_f32x2(__m128 __A) {
930   // CHECK-LABEL: @test_mm256_broadcast_f32x2
931   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
932   return _mm256_broadcast_f32x2(__A);
933 }
934 
test_mm256_mask_broadcast_f32x2(__m256 __O,__mmask8 __M,__m128 __A)935 __m256 test_mm256_mask_broadcast_f32x2(__m256 __O, __mmask8 __M, __m128 __A) {
936   // CHECK-LABEL: @test_mm256_mask_broadcast_f32x2
937   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
938   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
939   return _mm256_mask_broadcast_f32x2(__O, __M, __A);
940 }
941 
test_mm256_maskz_broadcast_f32x2(__mmask8 __M,__m128 __A)942 __m256 test_mm256_maskz_broadcast_f32x2(__mmask8 __M, __m128 __A) {
943   // CHECK-LABEL: @test_mm256_maskz_broadcast_f32x2
944   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
945   // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}
946   return _mm256_maskz_broadcast_f32x2(__M, __A);
947 }
948 
test_mm256_broadcast_f64x2(double const * __A)949 __m256d test_mm256_broadcast_f64x2(double const* __A) {
950   // CHECK-LABEL: @test_mm256_broadcast_f64x2
951   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
952   return _mm256_broadcast_f64x2(_mm_loadu_pd(__A));
953 }
954 
test_mm256_mask_broadcast_f64x2(__m256d __O,__mmask8 __M,double const * __A)955 __m256d test_mm256_mask_broadcast_f64x2(__m256d __O, __mmask8 __M, double const* __A) {
956   // CHECK-LABEL: @test_mm256_mask_broadcast_f64x2
957   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
958   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
959   return _mm256_mask_broadcast_f64x2(__O, __M, _mm_loadu_pd(__A));
960 }
961 
test_mm256_maskz_broadcast_f64x2(__mmask8 __M,double const * __A)962 __m256d test_mm256_maskz_broadcast_f64x2(__mmask8 __M, double const* __A) {
963   // CHECK-LABEL: @test_mm256_maskz_broadcast_f64x2
964   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
965   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
966   return _mm256_maskz_broadcast_f64x2(__M, _mm_loadu_pd(__A));
967 }
968 
test_mm_broadcast_i32x2(__m128i __A)969 __m128i test_mm_broadcast_i32x2(__m128i __A) {
970   // CHECK-LABEL: @test_mm_broadcast_i32x2
971   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
972   return _mm_broadcast_i32x2(__A);
973 }
974 
test_mm_mask_broadcast_i32x2(__m128i __O,__mmask8 __M,__m128i __A)975 __m128i test_mm_mask_broadcast_i32x2(__m128i __O, __mmask8 __M, __m128i __A) {
976   // CHECK-LABEL: @test_mm_mask_broadcast_i32x2
977   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
978   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
979   return _mm_mask_broadcast_i32x2(__O, __M, __A);
980 }
981 
test_mm_maskz_broadcast_i32x2(__mmask8 __M,__m128i __A)982 __m128i test_mm_maskz_broadcast_i32x2(__mmask8 __M, __m128i __A) {
983   // CHECK-LABEL: @test_mm_maskz_broadcast_i32x2
984   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
985   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
986   return _mm_maskz_broadcast_i32x2(__M, __A);
987 }
988 
test_mm256_broadcast_i32x2(__m128i __A)989 __m256i test_mm256_broadcast_i32x2(__m128i __A) {
990   // CHECK-LABEL: @test_mm256_broadcast_i32x2
991   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
992   return _mm256_broadcast_i32x2(__A);
993 }
994 
test_mm256_mask_broadcast_i32x2(__m256i __O,__mmask8 __M,__m128i __A)995 __m256i test_mm256_mask_broadcast_i32x2(__m256i __O, __mmask8 __M, __m128i __A) {
996   // CHECK-LABEL: @test_mm256_mask_broadcast_i32x2
997   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
998   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
999   return _mm256_mask_broadcast_i32x2(__O, __M, __A);
1000 }
1001 
test_mm256_maskz_broadcast_i32x2(__mmask8 __M,__m128i __A)1002 __m256i test_mm256_maskz_broadcast_i32x2(__mmask8 __M, __m128i __A) {
1003   // CHECK-LABEL: @test_mm256_maskz_broadcast_i32x2
1004   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>
1005   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
1006   return _mm256_maskz_broadcast_i32x2(__M, __A);
1007 }
1008 
test_mm256_broadcast_i64x2(__m128i const * __A)1009 __m256i test_mm256_broadcast_i64x2(__m128i const* __A) {
1010   // CHECK-LABEL: @test_mm256_broadcast_i64x2
1011   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
1012   return _mm256_broadcast_i64x2(_mm_loadu_si128(__A));
1013 }
1014 
test_mm256_mask_broadcast_i64x2(__m256i __O,__mmask8 __M,__m128i const * __A)1015 __m256i test_mm256_mask_broadcast_i64x2(__m256i __O, __mmask8 __M, __m128i const* __A) {
1016   // CHECK-LABEL: @test_mm256_mask_broadcast_i64x2
1017   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
1018   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1019   return _mm256_mask_broadcast_i64x2(__O, __M, _mm_loadu_si128(__A));
1020 }
1021 
test_mm256_maskz_broadcast_i64x2(__mmask8 __M,__m128i const * __A)1022 __m256i test_mm256_maskz_broadcast_i64x2(__mmask8 __M, __m128i const* __A) {
1023   // CHECK-LABEL: @test_mm256_maskz_broadcast_i64x2
1024   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
1025   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1026   return _mm256_maskz_broadcast_i64x2(__M, _mm_loadu_si128(__A));
1027 }
1028 
test_mm256_extractf64x2_pd(__m256d __A)1029 __m128d test_mm256_extractf64x2_pd(__m256d __A) {
1030   // CHECK-LABEL: @test_mm256_extractf64x2_pd
1031   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <2 x i32> <i32 2, i32 3>
1032   return _mm256_extractf64x2_pd(__A, 1);
1033 }
1034 
test_mm256_mask_extractf64x2_pd(__m128d __W,__mmask8 __U,__m256d __A)1035 __m128d test_mm256_mask_extractf64x2_pd(__m128d __W, __mmask8 __U, __m256d __A) {
1036   // CHECK-LABEL: @test_mm256_mask_extractf64x2_pd
1037   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <2 x i32> <i32 2, i32 3>
1038   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
1039   return _mm256_mask_extractf64x2_pd(__W, __U, __A, 1);
1040 }
1041 
test_mm256_maskz_extractf64x2_pd(__mmask8 __U,__m256d __A)1042 __m128d test_mm256_maskz_extractf64x2_pd(__mmask8 __U, __m256d __A) {
1043   // CHECK-LABEL: @test_mm256_maskz_extractf64x2_pd
1044   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <2 x i32> <i32 2, i32 3>
1045   // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
1046   return _mm256_maskz_extractf64x2_pd(__U, __A, 1);
1047 }
1048 
test_mm256_extracti64x2_epi64(__m256i __A)1049 __m128i test_mm256_extracti64x2_epi64(__m256i __A) {
1050   // CHECK-LABEL: @test_mm256_extracti64x2_epi64
1051   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> poison, <2 x i32> <i32 2, i32 3>
1052   return _mm256_extracti64x2_epi64(__A, 1);
1053 }
1054 
test_mm256_mask_extracti64x2_epi64(__m128i __W,__mmask8 __U,__m256i __A)1055 __m128i test_mm256_mask_extracti64x2_epi64(__m128i __W, __mmask8 __U, __m256i __A) {
1056   // CHECK-LABEL: @test_mm256_mask_extracti64x2_epi64
1057   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> poison, <2 x i32> <i32 2, i32 3>
1058   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1059   return _mm256_mask_extracti64x2_epi64(__W, __U, __A, 1);
1060 }
1061 
test_mm256_maskz_extracti64x2_epi64(__mmask8 __U,__m256i __A)1062 __m128i test_mm256_maskz_extracti64x2_epi64(__mmask8 __U, __m256i __A) {
1063   // CHECK-LABEL: @test_mm256_maskz_extracti64x2_epi64
1064   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> poison, <2 x i32> <i32 2, i32 3>
1065   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
1066   return _mm256_maskz_extracti64x2_epi64(__U, __A, 1);
1067 }
1068 
test_mm256_insertf64x2(__m256d __A,__m128d __B)1069 __m256d test_mm256_insertf64x2(__m256d __A, __m128d __B) {
1070   // CHECK-LABEL: @test_mm256_insertf64x2
1071   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
1072   return _mm256_insertf64x2(__A, __B, 1);
1073 }
1074 
test_mm256_mask_insertf64x2(__m256d __W,__mmask8 __U,__m256d __A,__m128d __B)1075 __m256d test_mm256_mask_insertf64x2(__m256d __W, __mmask8 __U, __m256d __A, __m128d __B) {
1076   // CHECK-LABEL: @test_mm256_mask_insertf64x2
1077   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
1078   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
1079   return _mm256_mask_insertf64x2(__W, __U, __A, __B, 1);
1080 }
1081 
test_mm256_maskz_insertf64x2(__mmask8 __U,__m256d __A,__m128d __B)1082 __m256d test_mm256_maskz_insertf64x2(__mmask8 __U, __m256d __A, __m128d __B) {
1083   // CHECK-LABEL: @test_mm256_maskz_insertf64x2
1084   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
1085   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
1086   return _mm256_maskz_insertf64x2(__U, __A, __B, 1);
1087 }
1088 
test_mm256_inserti64x2(__m256i __A,__m128i __B)1089 __m256i test_mm256_inserti64x2(__m256i __A, __m128i __B) {
1090   // CHECK-LABEL: @test_mm256_inserti64x2
1091   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
1092   return _mm256_inserti64x2(__A, __B, 1);
1093 }
1094 
test_mm256_mask_inserti64x2(__m256i __W,__mmask8 __U,__m256i __A,__m128i __B)1095 __m256i test_mm256_mask_inserti64x2(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {
1096   // CHECK-LABEL: @test_mm256_mask_inserti64x2
1097   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
1098   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1099   return _mm256_mask_inserti64x2(__W, __U, __A, __B, 1);
1100 }
1101 
test_mm256_maskz_inserti64x2(__mmask8 __U,__m256i __A,__m128i __B)1102 __m256i test_mm256_maskz_inserti64x2(__mmask8 __U, __m256i __A, __m128i __B) {
1103   // CHECK-LABEL: @test_mm256_maskz_inserti64x2
1104   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
1105   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
1106   return _mm256_maskz_inserti64x2(__U, __A, __B, 1);
1107 }
1108 
test_mm_mask_fpclass_pd_mask(__mmask8 __U,__m128d __A)1109 __mmask8 test_mm_mask_fpclass_pd_mask(__mmask8 __U, __m128d __A) {
1110   // CHECK-LABEL: @test_mm_mask_fpclass_pd_mask
1111   // CHECK: @llvm.x86.avx512.fpclass.pd.128
1112   return _mm_mask_fpclass_pd_mask(__U, __A, 2);
1113 }
1114 
test_mm_fpclass_pd_mask(__m128d __A)1115 __mmask8 test_mm_fpclass_pd_mask(__m128d __A) {
1116   // CHECK-LABEL: @test_mm_fpclass_pd_mask
1117   // CHECK: @llvm.x86.avx512.fpclass.pd.128
1118   return _mm_fpclass_pd_mask(__A, 2);
1119 }
1120 
test_mm256_mask_fpclass_pd_mask(__mmask8 __U,__m256d __A)1121 __mmask8 test_mm256_mask_fpclass_pd_mask(__mmask8 __U, __m256d __A) {
1122   // CHECK-LABEL: @test_mm256_mask_fpclass_pd_mask
1123   // CHECK: @llvm.x86.avx512.fpclass.pd.256
1124   return _mm256_mask_fpclass_pd_mask(__U, __A, 2);
1125 }
1126 
test_mm256_fpclass_pd_mask(__m256d __A)1127 __mmask8 test_mm256_fpclass_pd_mask(__m256d __A) {
1128   // CHECK-LABEL: @test_mm256_fpclass_pd_mask
1129   // CHECK: @llvm.x86.avx512.fpclass.pd.256
1130   return _mm256_fpclass_pd_mask(__A, 2);
1131 }
1132 
test_mm_mask_fpclass_ps_mask(__mmask8 __U,__m128 __A)1133 __mmask8 test_mm_mask_fpclass_ps_mask(__mmask8 __U, __m128 __A) {
1134   // CHECK-LABEL: @test_mm_mask_fpclass_ps_mask
1135   // CHECK: @llvm.x86.avx512.fpclass.ps.128
1136   return _mm_mask_fpclass_ps_mask(__U, __A, 2);
1137 }
1138 
test_mm_fpclass_ps_mask(__m128 __A)1139 __mmask8 test_mm_fpclass_ps_mask(__m128 __A) {
1140   // CHECK-LABEL: @test_mm_fpclass_ps_mask
1141   // CHECK: @llvm.x86.avx512.fpclass.ps.128
1142   return _mm_fpclass_ps_mask(__A, 2);
1143 }
1144 
test_mm256_mask_fpclass_ps_mask(__mmask8 __U,__m256 __A)1145 __mmask8 test_mm256_mask_fpclass_ps_mask(__mmask8 __U, __m256 __A) {
1146   // CHECK-LABEL: @test_mm256_mask_fpclass_ps_mask
1147   // CHECK: @llvm.x86.avx512.fpclass.ps.256
1148   return _mm256_mask_fpclass_ps_mask(__U, __A, 2);
1149 }
1150 
test_mm256_fpclass_ps_mask(__m256 __A)1151 __mmask8 test_mm256_fpclass_ps_mask(__m256 __A) {
1152   // CHECK-LABEL: @test_mm256_fpclass_ps_mask
1153   // CHECK: @llvm.x86.avx512.fpclass.ps.256
1154   return _mm256_fpclass_ps_mask(__A, 2);
1155 }
1156