1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -o - -Wall -Werror | FileCheck %s
2 
3 #include <immintrin.h>
4 
test_mm512_sqrt_pd(__m512d a)5 __m512d test_mm512_sqrt_pd(__m512d a)
6 {
7   // CHECK-LABEL: @test_mm512_sqrt_pd
8   // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
9   return _mm512_sqrt_pd(a);
10 }
11 
test_mm512_mask_sqrt_pd(__m512d __W,__mmask8 __U,__m512d __A)12 __m512d test_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
13 {
14   // CHECK-LABEL: @test_mm512_mask_sqrt_pd
15   // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
16   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
17   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
18   return _mm512_mask_sqrt_pd (__W,__U,__A);
19 }
20 
test_mm512_maskz_sqrt_pd(__mmask8 __U,__m512d __A)21 __m512d test_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
22 {
23   // CHECK-LABEL: @test_mm512_maskz_sqrt_pd
24   // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
25   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
26   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
27   return _mm512_maskz_sqrt_pd (__U,__A);
28 }
29 
test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A)30 __m512d test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A)
31 {
32   // CHECK-LABEL: @test_mm512_mask_sqrt_round_pd
33   // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 8)
34   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
35   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
36   return _mm512_mask_sqrt_round_pd(__W,__U,__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
37 }
38 
test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A)39 __m512d test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A)
40 {
41   // CHECK-LABEL: @test_mm512_maskz_sqrt_round_pd
42   // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 8)
43   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
44   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
45   return _mm512_maskz_sqrt_round_pd(__U,__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
46 }
47 
test_mm512_sqrt_round_pd(__m512d __A)48 __m512d test_mm512_sqrt_round_pd(__m512d __A)
49 {
50   // CHECK-LABEL: @test_mm512_sqrt_round_pd
51   // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 8)
52   return _mm512_sqrt_round_pd(__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
53 }
54 
test_mm512_sqrt_ps(__m512 a)55 __m512 test_mm512_sqrt_ps(__m512 a)
56 {
57   // CHECK-LABEL: @test_mm512_sqrt_ps
58   // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
59   return _mm512_sqrt_ps(a);
60 }
61 
test_mm512_mask_sqrt_ps(__m512 __W,__mmask16 __U,__m512 __A)62 __m512 test_mm512_mask_sqrt_ps(__m512 __W, __mmask16 __U, __m512 __A)
63 {
64   // CHECK-LABEL: @test_mm512_mask_sqrt_ps
65   // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
66   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
67   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
68   return _mm512_mask_sqrt_ps( __W, __U, __A);
69 }
70 
test_mm512_maskz_sqrt_ps(__mmask16 __U,__m512 __A)71 __m512 test_mm512_maskz_sqrt_ps( __mmask16 __U, __m512 __A)
72 {
73   // CHECK-LABEL: @test_mm512_maskz_sqrt_ps
74   // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
75   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
76   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
77   return _mm512_maskz_sqrt_ps(__U ,__A);
78 }
79 
test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A)80 __m512 test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A)
81 {
82   // CHECK-LABEL: @test_mm512_mask_sqrt_round_ps
83   // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 8)
84   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
85   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
86   return _mm512_mask_sqrt_round_ps(__W,__U,__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
87 }
88 
test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A)89 __m512 test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A)
90 {
91   // CHECK-LABEL: @test_mm512_maskz_sqrt_round_ps
92   // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 8)
93   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
94   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
95   return _mm512_maskz_sqrt_round_ps(__U,__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
96 }
97 
test_mm512_sqrt_round_ps(__m512 __A)98 __m512 test_mm512_sqrt_round_ps(__m512 __A)
99 {
100   // CHECK-LABEL: @test_mm512_sqrt_round_ps
101   // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 8)
102   return _mm512_sqrt_round_ps(__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
103 }
104 
test_mm512_rsqrt14_pd(__m512d a)105 __m512d test_mm512_rsqrt14_pd(__m512d a)
106 {
107   // CHECK-LABEL: @test_mm512_rsqrt14_pd
108   // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
109   return _mm512_rsqrt14_pd(a);
110 }
111 
test_mm512_mask_rsqrt14_pd(__m512d __W,__mmask8 __U,__m512d __A)112 __m512d test_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
113 {
114   // CHECK-LABEL: @test_mm512_mask_rsqrt14_pd
115   // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
116   return _mm512_mask_rsqrt14_pd (__W,__U,__A);
117 }
118 
test_mm512_maskz_rsqrt14_pd(__mmask8 __U,__m512d __A)119 __m512d test_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
120 {
121   // CHECK-LABEL: @test_mm512_maskz_rsqrt14_pd
122   // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
123   return _mm512_maskz_rsqrt14_pd (__U,__A);
124 }
125 
test_mm512_rsqrt14_ps(__m512 a)126 __m512 test_mm512_rsqrt14_ps(__m512 a)
127 {
128   // CHECK-LABEL: @test_mm512_rsqrt14_ps
129   // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
130   return _mm512_rsqrt14_ps(a);
131 }
132 
test_mm512_mask_rsqrt14_ps(__m512 __W,__mmask16 __U,__m512 __A)133 __m512 test_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
134 {
135   // CHECK-LABEL: @test_mm512_mask_rsqrt14_ps
136   // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
137   return _mm512_mask_rsqrt14_ps (__W,__U,__A);
138 }
139 
test_mm512_maskz_rsqrt14_ps(__mmask16 __U,__m512 __A)140 __m512 test_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
141 {
142   // CHECK-LABEL: @test_mm512_maskz_rsqrt14_ps
143   // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
144   return _mm512_maskz_rsqrt14_ps (__U,__A);
145 }
146 
test_mm512_add_ps(__m512 a,__m512 b)147 __m512 test_mm512_add_ps(__m512 a, __m512 b)
148 {
149   // CHECK-LABEL: @test_mm512_add_ps
150   // CHECK: fadd <16 x float>
151   return _mm512_add_ps(a, b);
152 }
153 
test_mm512_add_pd(__m512d a,__m512d b)154 __m512d test_mm512_add_pd(__m512d a, __m512d b)
155 {
156   // CHECK-LABEL: @test_mm512_add_pd
157   // CHECK: fadd <8 x double>
158   return _mm512_add_pd(a, b);
159 }
160 
test_mm512_mul_ps(__m512 a,__m512 b)161 __m512 test_mm512_mul_ps(__m512 a, __m512 b)
162 {
163   // CHECK-LABEL: @test_mm512_mul_ps
164   // CHECK: fmul <16 x float>
165   return _mm512_mul_ps(a, b);
166 }
167 
test_mm512_mul_pd(__m512d a,__m512d b)168 __m512d test_mm512_mul_pd(__m512d a, __m512d b)
169 {
170   // CHECK-LABEL: @test_mm512_mul_pd
171   // CHECK: fmul <8 x double>
172   return _mm512_mul_pd(a, b);
173 }
174 
test_mm512_storeu_si512(void * __P,__m512i __A)175 void test_mm512_storeu_si512 (void *__P, __m512i __A)
176 {
177   // CHECK-LABEL: @test_mm512_storeu_si512
178   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
179   // CHECK-NEXT: ret void
180   _mm512_storeu_si512 ( __P,__A);
181 }
182 
test_mm512_storeu_ps(void * p,__m512 a)183 void test_mm512_storeu_ps(void *p, __m512 a)
184 {
185   // CHECK-LABEL: @test_mm512_storeu_ps
186   // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 1{{$}}
187   // CHECK-NEXT: ret void
188   _mm512_storeu_ps(p, a);
189 }
190 
test_mm512_storeu_pd(void * p,__m512d a)191 void test_mm512_storeu_pd(void *p, __m512d a)
192 {
193   // CHECK-LABEL: @test_mm512_storeu_pd
194   // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 1{{$}}
195   // CHECK-NEXT: ret void
196   _mm512_storeu_pd(p, a);
197 }
198 
test_mm512_mask_store_ps(void * p,__m512 a,__mmask16 m)199 void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m)
200 {
201   // CHECK-LABEL: @test_mm512_mask_store_ps
202   // CHECK: @llvm.masked.store.v16f32.p0v16f32(<16 x float> %{{.*}}, <16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
203   _mm512_mask_store_ps(p, m, a);
204 }
205 
test_mm512_store_si512(void * __P,__m512i __A)206 void test_mm512_store_si512 (void *__P, __m512i __A)
207 {
208   // CHECK-LABEL: @test_mm512_store_si512
209   // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
210   // CHECK: [[SI512_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
211   // CHECK: bitcast i8* [[SI512_3]] to <8 x i64>*
212   // CHECK: store <8 x i64>
213   _mm512_store_si512 ( __P,__A);
214 }
215 
test_mm512_store_epi32(void * __P,__m512i __A)216 void test_mm512_store_epi32 (void *__P, __m512i __A)
217 {
218   // CHECK-LABEL: @test_mm512_store_epi32
219   // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
220   // CHECK: [[Si32_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
221   // CHECK: bitcast i8* [[Si32_3]] to <8 x i64>*
222   // CHECK: store <8 x i64>
223   _mm512_store_epi32 ( __P,__A);
224 }
225 
test_mm512_store_epi64(void * __P,__m512i __A)226 void test_mm512_store_epi64 (void *__P, __m512i __A)
227 {
228   // CHECK-LABEL: @test_mm512_store_epi64
229   // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
230   // CHECK: [[SI64_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
231   // CHECK: bitcast i8* [[SI64_3]] to <8 x i64>*
232   // CHECK: store <8 x i64>
233   _mm512_store_epi64 ( __P,__A);
234 }
235 
test_mm512_store_ps(void * p,__m512 a)236 void test_mm512_store_ps(void *p, __m512 a)
237 {
238   // CHECK-LABEL: @test_mm512_store_ps
239   // CHECK: store <16 x float>
240   _mm512_store_ps(p, a);
241 }
242 
test_mm512_store_pd(void * p,__m512d a)243 void test_mm512_store_pd(void *p, __m512d a)
244 {
245   // CHECK-LABEL: @test_mm512_store_pd
246   // CHECK: store <8 x double>
247   _mm512_store_pd(p, a);
248 }
249 
test_mm512_mask_store_pd(void * p,__m512d a,__mmask8 m)250 void test_mm512_mask_store_pd(void *p, __m512d a, __mmask8 m)
251 {
252   // CHECK-LABEL: @test_mm512_mask_store_pd
253   // CHECK: @llvm.masked.store.v8f64.p0v8f64(<8 x double> %{{.*}}, <8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
254   _mm512_mask_store_pd(p, m, a);
255 }
256 
test_mm512_storeu_epi32(void * __P,__m512i __A)257 void test_mm512_storeu_epi32(void *__P, __m512i __A) {
258   // CHECK-LABEL: @test_mm512_storeu_epi32
259   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
260   return _mm512_storeu_epi32(__P, __A);
261 }
262 
test_mm512_mask_storeu_epi32(void * __P,__mmask16 __U,__m512i __A)263 void test_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A) {
264   // CHECK-LABEL: @test_mm512_mask_storeu_epi32
265   // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
266   return _mm512_mask_storeu_epi32(__P, __U, __A);
267 }
268 
test_mm512_storeu_epi64(void * __P,__m512i __A)269 void test_mm512_storeu_epi64(void *__P, __m512i __A) {
270   // CHECK-LABEL: @test_mm512_storeu_epi64
271   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
272   return _mm512_storeu_epi64(__P, __A);
273 }
274 
test_mm512_mask_storeu_epi64(void * __P,__mmask8 __U,__m512i __A)275 void test_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A) {
276   // CHECK-LABEL: @test_mm512_mask_storeu_epi64
277   // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
278   return _mm512_mask_storeu_epi64(__P, __U, __A);
279 }
280 
test_mm512_loadu_si512(void * __P)281 __m512i test_mm512_loadu_si512 (void *__P)
282 {
283   // CHECK-LABEL: @test_mm512_loadu_si512
284   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
285   return _mm512_loadu_si512 ( __P);
286 }
287 
test_mm512_loadu_epi32(void * __P)288 __m512i test_mm512_loadu_epi32 (void *__P)
289 {
290   // CHECK-LABEL: @test_mm512_loadu_epi32
291   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
292   return _mm512_loadu_epi32 (__P);
293 }
294 
test_mm512_mask_loadu_epi32(__m512i __W,__mmask16 __U,void * __P)295 __m512i test_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void *__P)
296 {
297   // CHECK-LABEL: @test_mm512_mask_loadu_epi32
298   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
299   return _mm512_mask_loadu_epi32 (__W,__U, __P);
300 }
301 
test_mm512_maskz_loadu_epi32(__mmask16 __U,void * __P)302 __m512i test_mm512_maskz_loadu_epi32 (__mmask16 __U, void *__P)
303 {
304   // CHECK-LABEL: @test_mm512_maskz_loadu_epi32
305   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
306   return _mm512_maskz_loadu_epi32 (__U, __P);
307 }
308 
test_mm512_loadu_epi64(void * __P)309 __m512i test_mm512_loadu_epi64 (void *__P)
310 {
311   // CHECK-LABEL: @test_mm512_loadu_epi64
312   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
313   return _mm512_loadu_epi64 (__P);
314 }
315 
test_mm512_mask_loadu_epi64(__m512i __W,__mmask8 __U,void * __P)316 __m512i test_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void *__P)
317 {
318   // CHECK-LABEL: @test_mm512_mask_loadu_epi64
319   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
320   return _mm512_mask_loadu_epi64 (__W,__U, __P);
321 }
322 
test_mm512_maskz_loadu_epi64(__mmask16 __U,void * __P)323 __m512i test_mm512_maskz_loadu_epi64 (__mmask16 __U, void *__P)
324 {
325   // CHECK-LABEL: @test_mm512_maskz_loadu_epi64
326   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
327   return _mm512_maskz_loadu_epi64 (__U, __P);
328 }
329 
test_mm512_loadu_ps(void * p)330 __m512 test_mm512_loadu_ps(void *p)
331 {
332   // CHECK-LABEL: @test_mm512_loadu_ps
333   // CHECK: load <16 x float>, <16 x float>* {{.*}}, align 1{{$}}
334   return _mm512_loadu_ps(p);
335 }
336 
test_mm512_mask_loadu_ps(__m512 __W,__mmask16 __U,void * __P)337 __m512 test_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void *__P)
338 {
339   // CHECK-LABEL: @test_mm512_mask_loadu_ps
340   // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
341   return _mm512_mask_loadu_ps (__W,__U, __P);
342 }
343 
test_mm512_loadu_pd(void * p)344 __m512d test_mm512_loadu_pd(void *p)
345 {
346   // CHECK-LABEL: @test_mm512_loadu_pd
347   // CHECK: load <8 x double>, <8 x double>* {{.*}}, align 1{{$}}
348   return _mm512_loadu_pd(p);
349 }
350 
test_mm512_mask_loadu_pd(__m512d __W,__mmask8 __U,void * __P)351 __m512d test_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void *__P)
352 {
353   // CHECK-LABEL: @test_mm512_mask_loadu_pd
354   // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
355   return _mm512_mask_loadu_pd (__W,__U, __P);
356 }
357 
test_mm512_load_si512(void * __P)358 __m512i test_mm512_load_si512 (void *__P)
359 {
360   // CHECK-LABEL: @test_mm512_load_si512
361   // CHECK: [[LI512_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
362   // CHECK: [[LI512_2:%.+]] = bitcast i8* [[LI512_1]] to <8 x i64>*
363   // CHECK: load <8 x i64>, <8 x i64>* [[LI512_2]], align 64
364   return _mm512_load_si512 ( __P);
365 }
366 
test_mm512_load_epi32(void * __P)367 __m512i test_mm512_load_epi32 (void *__P)
368 {
369   // CHECK-LABEL: @test_mm512_load_epi32
370   // CHECK: [[LI32_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
371   // CHECK: [[LI32_2:%.+]] = bitcast i8* [[LI32_1]] to <8 x i64>*
372   // CHECK: load <8 x i64>, <8 x i64>* [[LI32_2]], align 64
373   return _mm512_load_epi32 ( __P);
374 }
375 
test_mm512_load_epi64(void * __P)376 __m512i test_mm512_load_epi64 (void *__P)
377 {
378   // CHECK-LABEL: @test_mm512_load_epi64
379   // CHECK: [[LI64_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
380   // CHECK: [[LI64_2:%.+]] = bitcast i8* [[LI64_1]] to <8 x i64>*
381   // CHECK: load <8 x i64>, <8 x i64>* [[LI64_2]], align 64
382   return _mm512_load_epi64 ( __P);
383 }
384 
test_mm512_load_ps(void * p)385 __m512 test_mm512_load_ps(void *p)
386 {
387   // CHECK-LABEL: @test_mm512_load_ps
388   // CHECK: load <16 x float>, <16 x float>* %{{.*}}, align 64
389   return _mm512_load_ps(p);
390 }
391 
test_mm512_mask_load_ps(__m512 __W,__mmask16 __U,void * __P)392 __m512 test_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void *__P)
393 {
394   // CHECK-LABEL: @test_mm512_mask_load_ps
395   // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
396   return _mm512_mask_load_ps (__W,__U, __P);
397 }
398 
test_mm512_maskz_load_ps(__mmask16 __U,void * __P)399 __m512 test_mm512_maskz_load_ps(__mmask16 __U, void *__P)
400 {
401   // CHECK-LABEL: @test_mm512_maskz_load_ps
402   // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
403   return _mm512_maskz_load_ps(__U, __P);
404 }
405 
test_mm512_load_pd(void * p)406 __m512d test_mm512_load_pd(void *p)
407 {
408   // CHECK-LABEL: @test_mm512_load_pd
409   // CHECK: load <8 x double>, <8 x double>* %{{.*}}, align 64
410   return _mm512_load_pd(p);
411 }
412 
test_mm512_mask_load_pd(__m512d __W,__mmask8 __U,void * __P)413 __m512d test_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void *__P)
414 {
415   // CHECK-LABEL: @test_mm512_mask_load_pd
416   // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
417   return _mm512_mask_load_pd (__W,__U, __P);
418 }
419 
test_mm512_maskz_load_pd(__mmask8 __U,void * __P)420 __m512d test_mm512_maskz_load_pd(__mmask8 __U, void *__P)
421 {
422   // CHECK-LABEL: @test_mm512_maskz_load_pd
423   // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
424   return _mm512_maskz_load_pd(__U, __P);
425 }
426 
test_mm512_set1_pd(double d)427 __m512d test_mm512_set1_pd(double d)
428 {
429   // CHECK-LABEL: @test_mm512_set1_pd
430   // CHECK: insertelement <8 x double> {{.*}}, i32 0
431   // CHECK: insertelement <8 x double> {{.*}}, i32 1
432   // CHECK: insertelement <8 x double> {{.*}}, i32 2
433   // CHECK: insertelement <8 x double> {{.*}}, i32 3
434   // CHECK: insertelement <8 x double> {{.*}}, i32 4
435   // CHECK: insertelement <8 x double> {{.*}}, i32 5
436   // CHECK: insertelement <8 x double> {{.*}}, i32 6
437   // CHECK: insertelement <8 x double> {{.*}}, i32 7
438   return _mm512_set1_pd(d);
439 }
440 
test_mm512_knot(__mmask16 a)441 __mmask16 test_mm512_knot(__mmask16 a)
442 {
443   // CHECK-LABEL: @test_mm512_knot
444   // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
445   // CHECK: [[NOT:%.*]] = xor <16 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
446   // CHECK: bitcast <16 x i1> [[NOT]] to i16
447   return _mm512_knot(a);
448 }
449 
test_mm512_alignr_epi32(__m512i a,__m512i b)450 __m512i test_mm512_alignr_epi32(__m512i a, __m512i b)
451 {
452   // CHECK-LABEL: @test_mm512_alignr_epi32
453   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
454   return _mm512_alignr_epi32(a, b, 2);
455 }
456 
test_mm512_mask_alignr_epi32(__m512i w,__mmask16 u,__m512i a,__m512i b)457 __m512i test_mm512_mask_alignr_epi32(__m512i w, __mmask16 u, __m512i a, __m512i b)
458 {
459   // CHECK-LABEL: @test_mm512_mask_alignr_epi32
460   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
461   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
462   return _mm512_mask_alignr_epi32(w, u, a, b, 2);
463 }
464 
test_mm512_maskz_alignr_epi32(__mmask16 u,__m512i a,__m512i b)465 __m512i test_mm512_maskz_alignr_epi32( __mmask16 u, __m512i a, __m512i b)
466 {
467   // CHECK-LABEL: @test_mm512_maskz_alignr_epi32
468   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
469   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
470   return _mm512_maskz_alignr_epi32(u, a, b, 2);
471 }
472 
test_mm512_alignr_epi64(__m512i a,__m512i b)473 __m512i test_mm512_alignr_epi64(__m512i a, __m512i b)
474 {
475   // CHECK-LABEL: @test_mm512_alignr_epi64
476   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
477   return _mm512_alignr_epi64(a, b, 2);
478 }
479 
test_mm512_mask_alignr_epi64(__m512i w,__mmask8 u,__m512i a,__m512i b)480 __m512i test_mm512_mask_alignr_epi64(__m512i w, __mmask8 u, __m512i a, __m512i b)
481 {
482   // CHECK-LABEL: @test_mm512_mask_alignr_epi64
483   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
484   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
485   return _mm512_mask_alignr_epi64(w, u, a, b, 2);
486 }
487 
test_mm512_maskz_alignr_epi64(__mmask8 u,__m512i a,__m512i b)488 __m512i test_mm512_maskz_alignr_epi64( __mmask8 u, __m512i a, __m512i b)
489 {
490   // CHECK-LABEL: @test_mm512_maskz_alignr_epi64
491   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
492   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
493   return _mm512_maskz_alignr_epi64(u, a, b, 2);
494 }
495 
test_mm512_fmadd_round_pd(__m512d __A,__m512d __B,__m512d __C)496 __m512d test_mm512_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
497   // CHECK-LABEL: @test_mm512_fmadd_round_pd
498   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
499   return _mm512_fmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
500 }
501 
test_mm512_mask_fmadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)502 __m512d test_mm512_mask_fmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
503   // CHECK-LABEL: @test_mm512_mask_fmadd_round_pd
504   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
505   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
506   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
507   return _mm512_mask_fmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
508 }
test_mm512_mask3_fmadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)509 __m512d test_mm512_mask3_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
510   // CHECK-LABEL: @test_mm512_mask3_fmadd_round_pd
511   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
512   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
513   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
514   return _mm512_mask3_fmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
515 }
test_mm512_maskz_fmadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)516 __m512d test_mm512_maskz_fmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
517   // CHECK-LABEL: @test_mm512_maskz_fmadd_round_pd
518   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
519   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
520   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
521   return _mm512_maskz_fmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
522 }
test_mm512_fmsub_round_pd(__m512d __A,__m512d __B,__m512d __C)523 __m512d test_mm512_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
524   // CHECK-LABEL: @test_mm512_fmsub_round_pd
525   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
526   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
527   return _mm512_fmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
528 }
test_mm512_mask_fmsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)529 __m512d test_mm512_mask_fmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
530   // CHECK-LABEL: @test_mm512_mask_fmsub_round_pd
531   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
532   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
533   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
534   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
535   return _mm512_mask_fmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
536 }
test_mm512_maskz_fmsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)537 __m512d test_mm512_maskz_fmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
538   // CHECK-LABEL: @test_mm512_maskz_fmsub_round_pd
539   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
540   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
541   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
542   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
543   return _mm512_maskz_fmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
544 }
test_mm512_fnmadd_round_pd(__m512d __A,__m512d __B,__m512d __C)545 __m512d test_mm512_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
546   // CHECK-LABEL: @test_mm512_fnmadd_round_pd
547   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
548   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
549   return _mm512_fnmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
550 }
test_mm512_mask3_fnmadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)551 __m512d test_mm512_mask3_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
552   // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_pd
553   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
554   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
555   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
556   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
557   return _mm512_mask3_fnmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
558 }
test_mm512_maskz_fnmadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)559 __m512d test_mm512_maskz_fnmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
560   // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_pd
561   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
562   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
563   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
564   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
565   return _mm512_maskz_fnmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
566 }
test_mm512_fnmsub_round_pd(__m512d __A,__m512d __B,__m512d __C)567 __m512d test_mm512_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
568   // CHECK-LABEL: @test_mm512_fnmsub_round_pd
569   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
570   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
571   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
572   return _mm512_fnmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
573 }
test_mm512_maskz_fnmsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)574 __m512d test_mm512_maskz_fnmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
575   // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_pd
576   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
577   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
578   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
579   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
580   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
581   return _mm512_maskz_fnmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
582 }
test_mm512_fmadd_pd(__m512d __A,__m512d __B,__m512d __C)583 __m512d test_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
584   // CHECK-LABEL: @test_mm512_fmadd_pd
585   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
586   return _mm512_fmadd_pd(__A, __B, __C);
587 }
test_mm512_mask_fmadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)588 __m512d test_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
589   // CHECK-LABEL: @test_mm512_mask_fmadd_pd
590   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
591   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
592   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
593   return _mm512_mask_fmadd_pd(__A, __U, __B, __C);
594 }
test_mm512_mask3_fmadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)595 __m512d test_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
596   // CHECK-LABEL: @test_mm512_mask3_fmadd_pd
597   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
598   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
599   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
600   return _mm512_mask3_fmadd_pd(__A, __B, __C, __U);
601 }
test_mm512_maskz_fmadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)602 __m512d test_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
603   // CHECK-LABEL: @test_mm512_maskz_fmadd_pd
604   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
605   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
606   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
607   return _mm512_maskz_fmadd_pd(__U, __A, __B, __C);
608 }
test_mm512_fmsub_pd(__m512d __A,__m512d __B,__m512d __C)609 __m512d test_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
610   // CHECK-LABEL: @test_mm512_fmsub_pd
611   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
612   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
613   return _mm512_fmsub_pd(__A, __B, __C);
614 }
test_mm512_mask_fmsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)615 __m512d test_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
616   // CHECK-LABEL: @test_mm512_mask_fmsub_pd
617   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
618   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
619   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
620   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
621   return _mm512_mask_fmsub_pd(__A, __U, __B, __C);
622 }
test_mm512_maskz_fmsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)623 __m512d test_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
624   // CHECK-LABEL: @test_mm512_maskz_fmsub_pd
625   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
626   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
627   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
628   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
629   return _mm512_maskz_fmsub_pd(__U, __A, __B, __C);
630 }
test_mm512_fnmadd_pd(__m512d __A,__m512d __B,__m512d __C)631 __m512d test_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
632   // CHECK-LABEL: @test_mm512_fnmadd_pd
633   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
634   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
635   return _mm512_fnmadd_pd(__A, __B, __C);
636 }
test_mm512_mask3_fnmadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)637 __m512d test_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
638   // CHECK-LABEL: @test_mm512_mask3_fnmadd_pd
639   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
640   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
641   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
642   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
643   return _mm512_mask3_fnmadd_pd(__A, __B, __C, __U);
644 }
test_mm512_maskz_fnmadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)645 __m512d test_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
646   // CHECK-LABEL: @test_mm512_maskz_fnmadd_pd
647   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
648   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
649   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
650   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
651   return _mm512_maskz_fnmadd_pd(__U, __A, __B, __C);
652 }
test_mm512_fnmsub_pd(__m512d __A,__m512d __B,__m512d __C)653 __m512d test_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
654   // CHECK-LABEL: @test_mm512_fnmsub_pd
655   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
656   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
657   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
658   return _mm512_fnmsub_pd(__A, __B, __C);
659 }
test_mm512_maskz_fnmsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)660 __m512d test_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
661   // CHECK-LABEL: @test_mm512_maskz_fnmsub_pd
662   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
663   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
664   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
665   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
666   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
667   return _mm512_maskz_fnmsub_pd(__U, __A, __B, __C);
668 }
test_mm512_fmadd_round_ps(__m512 __A,__m512 __B,__m512 __C)669 __m512 test_mm512_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
670   // CHECK-LABEL: @test_mm512_fmadd_round_ps
671   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
672   return _mm512_fmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
673 }
test_mm512_mask_fmadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)674 __m512 test_mm512_mask_fmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
675   // CHECK-LABEL: @test_mm512_mask_fmadd_round_ps
676   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
677   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
678   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
679   return _mm512_mask_fmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
680 }
test_mm512_mask3_fmadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)681 __m512 test_mm512_mask3_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
682   // CHECK-LABEL: @test_mm512_mask3_fmadd_round_ps
683   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
684   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
685   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
686   return _mm512_mask3_fmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
687 }
test_mm512_maskz_fmadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)688 __m512 test_mm512_maskz_fmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
689   // CHECK-LABEL: @test_mm512_maskz_fmadd_round_ps
690   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
691   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
692   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
693   return _mm512_maskz_fmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
694 }
test_mm512_fmsub_round_ps(__m512 __A,__m512 __B,__m512 __C)695 __m512 test_mm512_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
696   // CHECK-LABEL: @test_mm512_fmsub_round_ps
697   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
698   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
699   return _mm512_fmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
700 }
test_mm512_mask_fmsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)701 __m512 test_mm512_mask_fmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
702   // CHECK-LABEL: @test_mm512_mask_fmsub_round_ps
703   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
704   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
705   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
706   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
707   return _mm512_mask_fmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
708 }
test_mm512_maskz_fmsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)709 __m512 test_mm512_maskz_fmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
710   // CHECK-LABEL: @test_mm512_maskz_fmsub_round_ps
711   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
712   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
713   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
714   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
715   return _mm512_maskz_fmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
716 }
test_mm512_fnmadd_round_ps(__m512 __A,__m512 __B,__m512 __C)717 __m512 test_mm512_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
718   // CHECK-LABEL: @test_mm512_fnmadd_round_ps
719   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
720   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
721   return _mm512_fnmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
722 }
test_mm512_mask3_fnmadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)723 __m512 test_mm512_mask3_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
724   // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_ps
725   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
726   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
727   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
728   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
729   return _mm512_mask3_fnmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
730 }
test_mm512_maskz_fnmadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)731 __m512 test_mm512_maskz_fnmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
732   // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_ps
733   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
734   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
735   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
736   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
737   return _mm512_maskz_fnmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
738 }
test_mm512_fnmsub_round_ps(__m512 __A,__m512 __B,__m512 __C)739 __m512 test_mm512_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
740   // CHECK-LABEL: @test_mm512_fnmsub_round_ps
741   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
742   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
743   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
744   return _mm512_fnmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
745 }
test_mm512_maskz_fnmsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)746 __m512 test_mm512_maskz_fnmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
747   // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_ps
748   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
749   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
750   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
751   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
752   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
753   return _mm512_maskz_fnmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
754 }
test_mm512_fmadd_ps(__m512 __A,__m512 __B,__m512 __C)755 __m512 test_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
756   // CHECK-LABEL: @test_mm512_fmadd_ps
757   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
758   return _mm512_fmadd_ps(__A, __B, __C);
759 }
test_mm512_mask_fmadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)760 __m512 test_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
761   // CHECK-LABEL: @test_mm512_mask_fmadd_ps
762   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
763   return _mm512_mask_fmadd_ps(__A, __U, __B, __C);
764 }
test_mm512_mask3_fmadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)765 __m512 test_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
766   // CHECK-LABEL: @test_mm512_mask3_fmadd_ps
767   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
768   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
769   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
770   return _mm512_mask3_fmadd_ps(__A, __B, __C, __U);
771 }
test_mm512_maskz_fmadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)772 __m512 test_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
773   // CHECK-LABEL: @test_mm512_maskz_fmadd_ps
774   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
775   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
776   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
777   return _mm512_maskz_fmadd_ps(__U, __A, __B, __C);
778 }
test_mm512_fmsub_ps(__m512 __A,__m512 __B,__m512 __C)779 __m512 test_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
780   // CHECK-LABEL: @test_mm512_fmsub_ps
781   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
782   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
783   return _mm512_fmsub_ps(__A, __B, __C);
784 }
test_mm512_mask_fmsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)785 __m512 test_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
786   // CHECK-LABEL: @test_mm512_mask_fmsub_ps
787   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
788   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
789   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
790   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
791   return _mm512_mask_fmsub_ps(__A, __U, __B, __C);
792 }
test_mm512_maskz_fmsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)793 __m512 test_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
794   // CHECK-LABEL: @test_mm512_maskz_fmsub_ps
795   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
796   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
797   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
798   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
799   return _mm512_maskz_fmsub_ps(__U, __A, __B, __C);
800 }
test_mm512_fnmadd_ps(__m512 __A,__m512 __B,__m512 __C)801 __m512 test_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
802   // CHECK-LABEL: @test_mm512_fnmadd_ps
803   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
804   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
805   return _mm512_fnmadd_ps(__A, __B, __C);
806 }
test_mm512_mask3_fnmadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)807 __m512 test_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
808   // CHECK-LABEL: @test_mm512_mask3_fnmadd_ps
809   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
810   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
811   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
812   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
813   return _mm512_mask3_fnmadd_ps(__A, __B, __C, __U);
814 }
test_mm512_maskz_fnmadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)815 __m512 test_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
816   // CHECK-LABEL: @test_mm512_maskz_fnmadd_ps
817   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
818   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
819   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
820   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
821   return _mm512_maskz_fnmadd_ps(__U, __A, __B, __C);
822 }
test_mm512_fnmsub_ps(__m512 __A,__m512 __B,__m512 __C)823 __m512 test_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
824   // CHECK-LABEL: @test_mm512_fnmsub_ps
825   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
826   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
827   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
828   return _mm512_fnmsub_ps(__A, __B, __C);
829 }
test_mm512_maskz_fnmsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)830 __m512 test_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
831   // CHECK-LABEL: @test_mm512_maskz_fnmsub_ps
832   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
833   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
834   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
835   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
836   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
837   return _mm512_maskz_fnmsub_ps(__U, __A, __B, __C);
838 }
test_mm512_fmaddsub_round_pd(__m512d __A,__m512d __B,__m512d __C)839 __m512d test_mm512_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
840   // CHECK-LABEL: @test_mm512_fmaddsub_round_pd
841   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
842   return _mm512_fmaddsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
843 }
test_mm512_mask_fmaddsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)844 __m512d test_mm512_mask_fmaddsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
845   // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_pd
846   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
847   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
848   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
849   return _mm512_mask_fmaddsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
850 }
test_mm512_mask3_fmaddsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)851 __m512d test_mm512_mask3_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
852   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_pd
853   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
854   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
855   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
856   return _mm512_mask3_fmaddsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
857 }
test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)858 __m512d test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
859   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_pd
860   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
861   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
862   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
863   return _mm512_maskz_fmaddsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
864 }
test_mm512_fmsubadd_round_pd(__m512d __A,__m512d __B,__m512d __C)865 __m512d test_mm512_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
866   // CHECK-LABEL: @test_mm512_fmsubadd_round_pd
867   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
868   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
869   return _mm512_fmsubadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
870 }
test_mm512_mask_fmsubadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)871 __m512d test_mm512_mask_fmsubadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
872   // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_pd
873   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
874   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
875   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
876   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
877   return _mm512_mask_fmsubadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
878 }
test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)879 __m512d test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
880   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_pd
881   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
882   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
883   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
884   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
885   return _mm512_maskz_fmsubadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
886 }
test_mm512_fmaddsub_pd(__m512d __A,__m512d __B,__m512d __C)887 __m512d test_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C) {
888   // CHECK-LABEL: @test_mm512_fmaddsub_pd
889   // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
890   // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
891   // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
892   // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
893   return _mm512_fmaddsub_pd(__A, __B, __C);
894 }
test_mm512_mask_fmaddsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)895 __m512d test_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
896   // CHECK-LABEL: @test_mm512_mask_fmaddsub_pd
897   // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
898   // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
899   // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
900   // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
901   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
902   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
903   return _mm512_mask_fmaddsub_pd(__A, __U, __B, __C);
904 }
test_mm512_mask3_fmaddsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)905 __m512d test_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
906   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_pd
907   // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
908   // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
909   // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
910   // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
911   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
912   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
913   return _mm512_mask3_fmaddsub_pd(__A, __B, __C, __U);
914 }
test_mm512_maskz_fmaddsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)915 __m512d test_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
916   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_pd
917   // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
918   // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
919   // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
920   // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
921   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
922   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
923   return _mm512_maskz_fmaddsub_pd(__U, __A, __B, __C);
924 }
test_mm512_fmsubadd_pd(__m512d __A,__m512d __B,__m512d __C)925 __m512d test_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C) {
926   // CHECK-LABEL: @test_mm512_fmsubadd_pd
927   // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
928   // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
929   // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
930   // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
931   return _mm512_fmsubadd_pd(__A, __B, __C);
932 }
test_mm512_mask_fmsubadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)933 __m512d test_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
934   // CHECK-LABEL: @test_mm512_mask_fmsubadd_pd
935   // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
936   // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
937   // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
938   // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
939   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
940   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
941   return _mm512_mask_fmsubadd_pd(__A, __U, __B, __C);
942 }
test_mm512_maskz_fmsubadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)943 __m512d test_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
944   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_pd
945   // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
946   // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
947   // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
948   // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
949   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
950   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
951   return _mm512_maskz_fmsubadd_pd(__U, __A, __B, __C);
952 }
test_mm512_fmaddsub_round_ps(__m512 __A,__m512 __B,__m512 __C)953 __m512 test_mm512_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
954   // CHECK-LABEL: @test_mm512_fmaddsub_round_ps
955   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
956   return _mm512_fmaddsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
957 }
test_mm512_mask_fmaddsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)958 __m512 test_mm512_mask_fmaddsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
959   // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_ps
960   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
961   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
962   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
963   return _mm512_mask_fmaddsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
964 }
test_mm512_mask3_fmaddsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)965 __m512 test_mm512_mask3_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
966   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_ps
967   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
968   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
969   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
970   return _mm512_mask3_fmaddsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
971 }
test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)972 __m512 test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
973   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_ps
974   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
975   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
976   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
977   return _mm512_maskz_fmaddsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
978 }
test_mm512_fmsubadd_round_ps(__m512 __A,__m512 __B,__m512 __C)979 __m512 test_mm512_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
980   // CHECK-LABEL: @test_mm512_fmsubadd_round_ps
981   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
982   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
983   return _mm512_fmsubadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
984 }
test_mm512_mask_fmsubadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)985 __m512 test_mm512_mask_fmsubadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
986   // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_ps
987   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
988   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
989   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
990   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
991   return _mm512_mask_fmsubadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
992 }
test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)993 __m512 test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
994   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_ps
995   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
996   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
997   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
998   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
999   return _mm512_maskz_fmsubadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1000 }
test_mm512_fmaddsub_ps(__m512 __A,__m512 __B,__m512 __C)1001 __m512 test_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C) {
1002   // CHECK-LABEL: @test_mm512_fmaddsub_ps
1003   // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1004   // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1005   // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1006   // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1007   return _mm512_fmaddsub_ps(__A, __B, __C);
1008 }
test_mm512_mask_fmaddsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1009 __m512 test_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1010   // CHECK-LABEL: @test_mm512_mask_fmaddsub_ps
1011   // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1012   // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1013   // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1014   // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1015   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1016   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1017   return _mm512_mask_fmaddsub_ps(__A, __U, __B, __C);
1018 }
test_mm512_mask3_fmaddsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1019 __m512 test_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1020   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_ps
1021   // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1022   // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1023   // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1024   // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1025   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1026   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1027   return _mm512_mask3_fmaddsub_ps(__A, __B, __C, __U);
1028 }
test_mm512_maskz_fmaddsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)1029 __m512 test_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
1030   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_ps
1031   // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1032   // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1033   // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1034   // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1035   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1036   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1037   return _mm512_maskz_fmaddsub_ps(__U, __A, __B, __C);
1038 }
test_mm512_fmsubadd_ps(__m512 __A,__m512 __B,__m512 __C)1039 __m512 test_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C) {
1040   // CHECK-LABEL: @test_mm512_fmsubadd_ps
1041   // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1042   // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1043   // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1044   // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1045   return _mm512_fmsubadd_ps(__A, __B, __C);
1046 }
test_mm512_mask_fmsubadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1047 __m512 test_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1048   // CHECK-LABEL: @test_mm512_mask_fmsubadd_ps
1049   // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1050   // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1051   // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1052   // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1053   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1054   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1055   return _mm512_mask_fmsubadd_ps(__A, __U, __B, __C);
1056 }
test_mm512_maskz_fmsubadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)1057 __m512 test_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
1058   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_ps
1059   // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1060   // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1061   // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1062   // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1063   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1064   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1065   return _mm512_maskz_fmsubadd_ps(__U, __A, __B, __C);
1066 }
test_mm512_mask3_fmsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1067 __m512d test_mm512_mask3_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1068   // CHECK-LABEL: @test_mm512_mask3_fmsub_round_pd
1069   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1070   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1071   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1072   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1073   return _mm512_mask3_fmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1074 }
test_mm512_mask3_fmsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1075 __m512d test_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1076   // CHECK-LABEL: @test_mm512_mask3_fmsub_pd
1077   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1078   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1079   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1080   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1081   return _mm512_mask3_fmsub_pd(__A, __B, __C, __U);
1082 }
test_mm512_mask3_fmsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1083 __m512 test_mm512_mask3_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1084   // CHECK-LABEL: @test_mm512_mask3_fmsub_round_ps
1085   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1086   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1087   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1088   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1089   return _mm512_mask3_fmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1090 }
test_mm512_mask3_fmsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1091 __m512 test_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1092   // CHECK-LABEL: @test_mm512_mask3_fmsub_ps
1093   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1094   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1095   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1096   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1097   return _mm512_mask3_fmsub_ps(__A, __B, __C, __U);
1098 }
test_mm512_mask3_fmsubadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1099 __m512d test_mm512_mask3_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1100   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_pd
1101   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1102   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
1103   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1104   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1105   return _mm512_mask3_fmsubadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1106 }
test_mm512_mask3_fmsubadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1107 __m512d test_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1108   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_pd
1109   // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1110   // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
1111   // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1112   // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
1113   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1114   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1115   return _mm512_mask3_fmsubadd_pd(__A, __B, __C, __U);
1116 }
test_mm512_mask3_fmsubadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1117 __m512 test_mm512_mask3_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1118   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_ps
1119   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1120   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
1121   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1122   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1123   return _mm512_mask3_fmsubadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1124 }
test_mm512_mask3_fmsubadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1125 __m512 test_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1126   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_ps
1127   // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1128   // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1129   // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1130   // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1131   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1132   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1133   return _mm512_mask3_fmsubadd_ps(__A, __B, __C, __U);
1134 }
test_mm512_mask_fnmadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1135 __m512d test_mm512_mask_fnmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1136   // CHECK-LABEL: @test_mm512_mask_fnmadd_round_pd
1137   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1138   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1139   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1140   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1141   return _mm512_mask_fnmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1142 }
test_mm512_mask_fnmadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1143 __m512d test_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1144   // CHECK-LABEL: @test_mm512_mask_fnmadd_pd
1145   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1146   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1147   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1148   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1149   return _mm512_mask_fnmadd_pd(__A, __U, __B, __C);
1150 }
test_mm512_mask_fnmadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1151 __m512 test_mm512_mask_fnmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1152   // CHECK-LABEL: @test_mm512_mask_fnmadd_round_ps
1153   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1154   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1155   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1156   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1157   return _mm512_mask_fnmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1158 }
test_mm512_mask_fnmadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1159 __m512 test_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1160   // CHECK-LABEL: @test_mm512_mask_fnmadd_ps
1161   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1162   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1163   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1164   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1165   return _mm512_mask_fnmadd_ps(__A, __U, __B, __C);
1166 }
test_mm512_mask_fnmsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1167 __m512d test_mm512_mask_fnmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1168   // CHECK-LABEL: @test_mm512_mask_fnmsub_round_pd
1169   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1170   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1171   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1172   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1173   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1174   return _mm512_mask_fnmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1175 }
test_mm512_mask3_fnmsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1176 __m512d test_mm512_mask3_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1177   // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_pd
1178   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1179   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1180   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1181   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1182   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1183   return _mm512_mask3_fnmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1184 }
test_mm512_mask_fnmsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1185 __m512d test_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1186   // CHECK-LABEL: @test_mm512_mask_fnmsub_pd
1187   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1188   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1189   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1190   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1191   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1192   return _mm512_mask_fnmsub_pd(__A, __U, __B, __C);
1193 }
test_mm512_mask3_fnmsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1194 __m512d test_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1195   // CHECK-LABEL: @test_mm512_mask3_fnmsub_pd
1196   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1197   // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1198   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1199   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1200   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1201   return _mm512_mask3_fnmsub_pd(__A, __B, __C, __U);
1202 }
test_mm512_mask_fnmsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1203 __m512 test_mm512_mask_fnmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1204   // CHECK-LABEL: @test_mm512_mask_fnmsub_round_ps
1205   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1206   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1207   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1208   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1209   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1210   return _mm512_mask_fnmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1211 }
test_mm512_mask3_fnmsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1212 __m512 test_mm512_mask3_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1213   // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_ps
1214   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1215   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1216   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1217   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1218   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1219   return _mm512_mask3_fnmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1220 }
test_mm512_mask_fnmsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1221 __m512 test_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1222   // CHECK-LABEL: @test_mm512_mask_fnmsub_ps
1223   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1224   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1225   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1226   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1227   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1228   return _mm512_mask_fnmsub_ps(__A, __U, __B, __C);
1229 }
test_mm512_mask3_fnmsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1230 __m512 test_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1231   // CHECK-LABEL: @test_mm512_mask3_fnmsub_ps
1232   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1233   // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1234   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1235   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1236   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1237   return _mm512_mask3_fnmsub_ps(__A, __B, __C, __U);
1238 }
1239 
test_mm512_cmpeq_epi32_mask(__m512i __a,__m512i __b)1240 __mmask16 test_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
1241   // CHECK-LABEL: @test_mm512_cmpeq_epi32_mask
1242   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1243   return (__mmask16)_mm512_cmpeq_epi32_mask(__a, __b);
1244 }
1245 
test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)1246 __mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1247   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi32_mask
1248   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1249   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1250   return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b);
1251 }
1252 
test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)1253 __mmask8 test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1254   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi64_mask
1255   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1256   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1257   return (__mmask8)_mm512_mask_cmpeq_epi64_mask(__u, __a, __b);
1258 }
1259 
test_mm512_cmpeq_epi64_mask(__m512i __a,__m512i __b)1260 __mmask8 test_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
1261   // CHECK-LABEL: @test_mm512_cmpeq_epi64_mask
1262   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1263   return (__mmask8)_mm512_cmpeq_epi64_mask(__a, __b);
1264 }
1265 
test_mm512_cmpgt_epi32_mask(__m512i __a,__m512i __b)1266 __mmask16 test_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
1267   // CHECK-LABEL: @test_mm512_cmpgt_epi32_mask
1268   // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1269   return (__mmask16)_mm512_cmpgt_epi32_mask(__a, __b);
1270 }
1271 
test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)1272 __mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1273   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi32_mask
1274   // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1275   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1276   return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b);
1277 }
1278 
test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)1279 __mmask8 test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1280   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi64_mask
1281   // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1282   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1283   return (__mmask8)_mm512_mask_cmpgt_epi64_mask(__u, __a, __b);
1284 }
1285 
test_mm512_cmpgt_epi64_mask(__m512i __a,__m512i __b)1286 __mmask8 test_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
1287   // CHECK-LABEL: @test_mm512_cmpgt_epi64_mask
1288   // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1289   return (__mmask8)_mm512_cmpgt_epi64_mask(__a, __b);
1290 }
1291 
test_mm512_unpackhi_pd(__m512d a,__m512d b)1292 __m512d test_mm512_unpackhi_pd(__m512d a, __m512d b)
1293 {
1294   // CHECK-LABEL: @test_mm512_unpackhi_pd
1295   // CHECK: shufflevector <8 x double> {{.*}} <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1296   return _mm512_unpackhi_pd(a, b);
1297 }
1298 
test_mm512_unpacklo_pd(__m512d a,__m512d b)1299 __m512d test_mm512_unpacklo_pd(__m512d a, __m512d b)
1300 {
1301   // CHECK-LABEL: @test_mm512_unpacklo_pd
1302   // CHECK: shufflevector <8 x double> {{.*}} <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1303   return _mm512_unpacklo_pd(a, b);
1304 }
1305 
test_mm512_unpackhi_ps(__m512 a,__m512 b)1306 __m512 test_mm512_unpackhi_ps(__m512 a, __m512 b)
1307 {
1308   // CHECK-LABEL: @test_mm512_unpackhi_ps
1309   // CHECK: shufflevector <16 x float> {{.*}} <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
1310   return _mm512_unpackhi_ps(a, b);
1311 }
1312 
test_mm512_unpacklo_ps(__m512 a,__m512 b)1313 __m512 test_mm512_unpacklo_ps(__m512 a, __m512 b)
1314 {
1315   // CHECK-LABEL: @test_mm512_unpacklo_ps
1316   // CHECK: shufflevector <16 x float> {{.*}} <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
1317   return _mm512_unpacklo_ps(a, b);
1318 }
1319 
test_mm512_cmp_round_ps_mask(__m512 a,__m512 b)1320 __mmask16 test_mm512_cmp_round_ps_mask(__m512 a, __m512 b) {
1321   // CHECK-LABEL: @test_mm512_cmp_round_ps_mask
1322   // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1323   return _mm512_cmp_round_ps_mask(a, b, 0, _MM_FROUND_CUR_DIRECTION);
1324 }
1325 
test_mm512_mask_cmp_round_ps_mask(__mmask16 m,__m512 a,__m512 b)1326 __mmask16 test_mm512_mask_cmp_round_ps_mask(__mmask16 m, __m512 a, __m512 b) {
1327   // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask
1328   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1329   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1330   return _mm512_mask_cmp_round_ps_mask(m, a, b, 0, _MM_FROUND_CUR_DIRECTION);
1331 }
1332 
test_mm512_cmp_ps_mask_eq_oq(__m512 a,__m512 b)1333 __mmask16 test_mm512_cmp_ps_mask_eq_oq(__m512 a, __m512 b) {
1334   // CHECK-LABEL: @test_mm512_cmp_ps_mask_eq_oq
1335   // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1336   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OQ);
1337 }
1338 
test_mm512_cmp_ps_mask_lt_os(__m512 a,__m512 b)1339 __mmask16 test_mm512_cmp_ps_mask_lt_os(__m512 a, __m512 b) {
1340   // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_os
1341   // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1342   return _mm512_cmp_ps_mask(a, b, _CMP_LT_OS);
1343 }
1344 
test_mm512_cmp_ps_mask_le_os(__m512 a,__m512 b)1345 __mmask16 test_mm512_cmp_ps_mask_le_os(__m512 a, __m512 b) {
1346   // CHECK-LABEL: test_mm512_cmp_ps_mask_le_os
1347   // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1348   return _mm512_cmp_ps_mask(a, b, _CMP_LE_OS);
1349 }
1350 
test_mm512_cmp_ps_mask_unord_q(__m512 a,__m512 b)1351 __mmask16 test_mm512_cmp_ps_mask_unord_q(__m512 a, __m512 b) {
1352   // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_q
1353   // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1354   return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_Q);
1355 }
1356 
test_mm512_cmp_ps_mask_neq_uq(__m512 a,__m512 b)1357 __mmask16 test_mm512_cmp_ps_mask_neq_uq(__m512 a, __m512 b) {
1358   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_uq
1359   // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1360   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
1361 }
1362 
test_mm512_cmp_ps_mask_nlt_us(__m512 a,__m512 b)1363 __mmask16 test_mm512_cmp_ps_mask_nlt_us(__m512 a, __m512 b) {
1364   // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_us
1365   // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1366   return _mm512_cmp_ps_mask(a, b, _CMP_NLT_US);
1367 }
1368 
test_mm512_cmp_ps_mask_nle_us(__m512 a,__m512 b)1369 __mmask16 test_mm512_cmp_ps_mask_nle_us(__m512 a, __m512 b) {
1370   // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_us
1371   // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1372   return _mm512_cmp_ps_mask(a, b, _CMP_NLE_US);
1373 }
1374 
test_mm512_cmp_ps_mask_ord_q(__m512 a,__m512 b)1375 __mmask16 test_mm512_cmp_ps_mask_ord_q(__m512 a, __m512 b) {
1376   // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_q
1377   // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1378   return _mm512_cmp_ps_mask(a, b, _CMP_ORD_Q);
1379 }
1380 
test_mm512_cmp_ps_mask_eq_uq(__m512 a,__m512 b)1381 __mmask16 test_mm512_cmp_ps_mask_eq_uq(__m512 a, __m512 b) {
1382   // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_uq
1383   // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1384   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_UQ);
1385 }
1386 
test_mm512_cmp_ps_mask_nge_us(__m512 a,__m512 b)1387 __mmask16 test_mm512_cmp_ps_mask_nge_us(__m512 a, __m512 b) {
1388   // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_us
1389   // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1390   return _mm512_cmp_ps_mask(a, b, _CMP_NGE_US);
1391 }
1392 
test_mm512_cmp_ps_mask_ngt_us(__m512 a,__m512 b)1393 __mmask16 test_mm512_cmp_ps_mask_ngt_us(__m512 a, __m512 b) {
1394   // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_us
1395   // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1396   return _mm512_cmp_ps_mask(a, b, _CMP_NGT_US);
1397 }
1398 
test_mm512_cmp_ps_mask_false_oq(__m512 a,__m512 b)1399 __mmask16 test_mm512_cmp_ps_mask_false_oq(__m512 a, __m512 b) {
1400   // CHECK-LABEL: test_mm512_cmp_ps_mask_false_oq
1401   // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1402   return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
1403 }
1404 
test_mm512_cmp_ps_mask_neq_oq(__m512 a,__m512 b)1405 __mmask16 test_mm512_cmp_ps_mask_neq_oq(__m512 a, __m512 b) {
1406   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_oq
1407   // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1408   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
1409 }
1410 
test_mm512_cmp_ps_mask_ge_os(__m512 a,__m512 b)1411 __mmask16 test_mm512_cmp_ps_mask_ge_os(__m512 a, __m512 b) {
1412   // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_os
1413   // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1414   return _mm512_cmp_ps_mask(a, b, _CMP_GE_OS);
1415 }
1416 
test_mm512_cmp_ps_mask_gt_os(__m512 a,__m512 b)1417 __mmask16 test_mm512_cmp_ps_mask_gt_os(__m512 a, __m512 b) {
1418   // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_os
1419   // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1420   return _mm512_cmp_ps_mask(a, b, _CMP_GT_OS);
1421 }
1422 
test_mm512_cmp_ps_mask_true_uq(__m512 a,__m512 b)1423 __mmask16 test_mm512_cmp_ps_mask_true_uq(__m512 a, __m512 b) {
1424   // CHECK-LABEL: test_mm512_cmp_ps_mask_true_uq
1425   // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1426   return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
1427 }
1428 
test_mm512_cmp_ps_mask_eq_os(__m512 a,__m512 b)1429 __mmask16 test_mm512_cmp_ps_mask_eq_os(__m512 a, __m512 b) {
1430   // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_os
1431   // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1432   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OS);
1433 }
1434 
test_mm512_cmp_ps_mask_lt_oq(__m512 a,__m512 b)1435 __mmask16 test_mm512_cmp_ps_mask_lt_oq(__m512 a, __m512 b) {
1436   // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_oq
1437   // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1438   return _mm512_cmp_ps_mask(a, b, _CMP_LT_OQ);
1439 }
1440 
test_mm512_cmp_ps_mask_le_oq(__m512 a,__m512 b)1441 __mmask16 test_mm512_cmp_ps_mask_le_oq(__m512 a, __m512 b) {
1442   // CHECK-LABEL: test_mm512_cmp_ps_mask_le_oq
1443   // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1444   return _mm512_cmp_ps_mask(a, b, _CMP_LE_OQ);
1445 }
1446 
test_mm512_cmp_ps_mask_unord_s(__m512 a,__m512 b)1447 __mmask16 test_mm512_cmp_ps_mask_unord_s(__m512 a, __m512 b) {
1448   // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_s
1449   // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1450   return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_S);
1451 }
1452 
test_mm512_cmp_ps_mask_neq_us(__m512 a,__m512 b)1453 __mmask16 test_mm512_cmp_ps_mask_neq_us(__m512 a, __m512 b) {
1454   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_us
1455   // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1456   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_US);
1457 }
1458 
test_mm512_cmp_ps_mask_nlt_uq(__m512 a,__m512 b)1459 __mmask16 test_mm512_cmp_ps_mask_nlt_uq(__m512 a, __m512 b) {
1460   // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_uq
1461   // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1462   return _mm512_cmp_ps_mask(a, b, _CMP_NLT_UQ);
1463 }
1464 
test_mm512_cmp_ps_mask_nle_uq(__m512 a,__m512 b)1465 __mmask16 test_mm512_cmp_ps_mask_nle_uq(__m512 a, __m512 b) {
1466   // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_uq
1467   // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1468   return _mm512_cmp_ps_mask(a, b, _CMP_NLE_UQ);
1469 }
1470 
test_mm512_cmp_ps_mask_ord_s(__m512 a,__m512 b)1471 __mmask16 test_mm512_cmp_ps_mask_ord_s(__m512 a, __m512 b) {
1472   // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_s
1473   // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1474   return _mm512_cmp_ps_mask(a, b, _CMP_ORD_S);
1475 }
1476 
test_mm512_cmp_ps_mask_eq_us(__m512 a,__m512 b)1477 __mmask16 test_mm512_cmp_ps_mask_eq_us(__m512 a, __m512 b) {
1478   // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_us
1479   // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1480   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_US);
1481 }
1482 
test_mm512_cmp_ps_mask_nge_uq(__m512 a,__m512 b)1483 __mmask16 test_mm512_cmp_ps_mask_nge_uq(__m512 a, __m512 b) {
1484   // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_uq
1485   // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1486   return _mm512_cmp_ps_mask(a, b, _CMP_NGE_UQ);
1487 }
1488 
test_mm512_cmp_ps_mask_ngt_uq(__m512 a,__m512 b)1489 __mmask16 test_mm512_cmp_ps_mask_ngt_uq(__m512 a, __m512 b) {
1490   // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_uq
1491   // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1492   return _mm512_cmp_ps_mask(a, b, _CMP_NGT_UQ);
1493 }
1494 
test_mm512_cmp_ps_mask_false_os(__m512 a,__m512 b)1495 __mmask16 test_mm512_cmp_ps_mask_false_os(__m512 a, __m512 b) {
1496   // CHECK-LABEL: test_mm512_cmp_ps_mask_false_os
1497   // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1498   return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OS);
1499 }
1500 
test_mm512_cmp_ps_mask_neq_os(__m512 a,__m512 b)1501 __mmask16 test_mm512_cmp_ps_mask_neq_os(__m512 a, __m512 b) {
1502   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_os
1503   // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1504   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OS);
1505 }
1506 
test_mm512_cmp_ps_mask_ge_oq(__m512 a,__m512 b)1507 __mmask16 test_mm512_cmp_ps_mask_ge_oq(__m512 a, __m512 b) {
1508   // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_oq
1509   // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1510   return _mm512_cmp_ps_mask(a, b, _CMP_GE_OQ);
1511 }
1512 
test_mm512_cmp_ps_mask_gt_oq(__m512 a,__m512 b)1513 __mmask16 test_mm512_cmp_ps_mask_gt_oq(__m512 a, __m512 b) {
1514   // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_oq
1515   // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1516   return _mm512_cmp_ps_mask(a, b, _CMP_GT_OQ);
1517 }
1518 
test_mm512_cmp_ps_mask_true_us(__m512 a,__m512 b)1519 __mmask16 test_mm512_cmp_ps_mask_true_us(__m512 a, __m512 b) {
1520   // CHECK-LABEL: test_mm512_cmp_ps_mask_true_us
1521   // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1522   return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_US);
1523 }
1524 
test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m,__m512 a,__m512 b)1525 __mmask16 test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m, __m512 a, __m512 b) {
1526   // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask_eq_oq
1527   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1528   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1529   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
1530 }
1531 
test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m,__m512 a,__m512 b)1532 __mmask16 test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m, __m512 a, __m512 b) {
1533   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_os
1534   // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1535   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1536   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
1537 }
1538 
test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m,__m512 a,__m512 b)1539 __mmask16 test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m, __m512 a, __m512 b) {
1540   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_os
1541   // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1542   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1543   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
1544 }
1545 
test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m,__m512 a,__m512 b)1546 __mmask16 test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m, __m512 a, __m512 b) {
1547   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_q
1548   // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1549   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1550   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
1551 }
1552 
test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m,__m512 a,__m512 b)1553 __mmask16 test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m, __m512 a, __m512 b) {
1554   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_uq
1555   // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1556   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1557   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
1558 }
1559 
test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m,__m512 a,__m512 b)1560 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m, __m512 a, __m512 b) {
1561   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_us
1562   // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1563   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1564   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
1565 }
1566 
test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m,__m512 a,__m512 b)1567 __mmask16 test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m, __m512 a, __m512 b) {
1568   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_us
1569   // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1570   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1571   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
1572 }
1573 
test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m,__m512 a,__m512 b)1574 __mmask16 test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m, __m512 a, __m512 b) {
1575   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_q
1576   // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1577   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1578   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
1579 }
1580 
test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m,__m512 a,__m512 b)1581 __mmask16 test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m, __m512 a, __m512 b) {
1582   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_uq
1583   // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1584   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1585   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
1586 }
1587 
test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m,__m512 a,__m512 b)1588 __mmask16 test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m, __m512 a, __m512 b) {
1589   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_us
1590   // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1591   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1592   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
1593 }
1594 
test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m,__m512 a,__m512 b)1595 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m, __m512 a, __m512 b) {
1596   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_us
1597   // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1598   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1599   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
1600 }
1601 
test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m,__m512 a,__m512 b)1602 __mmask16 test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m, __m512 a, __m512 b) {
1603   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_oq
1604   // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1605   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1606   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
1607 }
1608 
test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m,__m512 a,__m512 b)1609 __mmask16 test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m, __m512 a, __m512 b) {
1610   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_oq
1611   // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1612   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1613   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
1614 }
1615 
test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m,__m512 a,__m512 b)1616 __mmask16 test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m, __m512 a, __m512 b) {
1617   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_os
1618   // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1619   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1620   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
1621 }
1622 
test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m,__m512 a,__m512 b)1623 __mmask16 test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m, __m512 a, __m512 b) {
1624   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_os
1625   // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1626   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1627   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
1628 }
1629 
test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m,__m512 a,__m512 b)1630 __mmask16 test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m, __m512 a, __m512 b) {
1631   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_uq
1632   // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1633   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1634   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
1635 }
1636 
test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m,__m512 a,__m512 b)1637 __mmask16 test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m, __m512 a, __m512 b) {
1638   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_os
1639   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1640   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1641   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
1642 }
1643 
test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m,__m512 a,__m512 b)1644 __mmask16 test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m, __m512 a, __m512 b) {
1645   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_oq
1646   // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1647   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1648   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
1649 }
1650 
test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m,__m512 a,__m512 b)1651 __mmask16 test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m, __m512 a, __m512 b) {
1652   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_oq
1653   // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1654   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1655   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
1656 }
1657 
test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m,__m512 a,__m512 b)1658 __mmask16 test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m, __m512 a, __m512 b) {
1659   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_s
1660   // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1661   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1662   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
1663 }
1664 
test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m,__m512 a,__m512 b)1665 __mmask16 test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m, __m512 a, __m512 b) {
1666   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_us
1667   // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1668   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1669   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
1670 }
1671 
test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m,__m512 a,__m512 b)1672 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m, __m512 a, __m512 b) {
1673   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_uq
1674   // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1675   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1676   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
1677 }
1678 
test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m,__m512 a,__m512 b)1679 __mmask16 test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m, __m512 a, __m512 b) {
1680   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_uq
1681   // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1682   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1683   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
1684 }
1685 
test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m,__m512 a,__m512 b)1686 __mmask16 test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m, __m512 a, __m512 b) {
1687   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_s
1688   // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1689   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1690   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
1691 }
1692 
test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m,__m512 a,__m512 b)1693 __mmask16 test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m, __m512 a, __m512 b) {
1694   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_us
1695   // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1696   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1697   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
1698 }
1699 
test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m,__m512 a,__m512 b)1700 __mmask16 test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m, __m512 a, __m512 b) {
1701   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_uq
1702   // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1703   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1704   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
1705 }
1706 
test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m,__m512 a,__m512 b)1707 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m, __m512 a, __m512 b) {
1708   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_uq
1709   // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1710   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1711   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
1712 }
1713 
test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m,__m512 a,__m512 b)1714 __mmask16 test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m, __m512 a, __m512 b) {
1715   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_os
1716   // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1717   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1718   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
1719 }
1720 
test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m,__m512 a,__m512 b)1721 __mmask16 test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m, __m512 a, __m512 b) {
1722   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_os
1723   // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1724   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1725   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
1726 }
1727 
test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m,__m512 a,__m512 b)1728 __mmask16 test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m, __m512 a, __m512 b) {
1729   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_oq
1730   // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1731   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1732   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
1733 }
1734 
test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m,__m512 a,__m512 b)1735 __mmask16 test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m, __m512 a, __m512 b) {
1736   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_oq
1737   // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1738   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1739   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
1740 }
1741 
test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m,__m512 a,__m512 b)1742 __mmask16 test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m, __m512 a, __m512 b) {
1743   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_us
1744   // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1745   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1746   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
1747 }
1748 
test_mm512_cmp_round_pd_mask(__m512d a,__m512d b)1749 __mmask8 test_mm512_cmp_round_pd_mask(__m512d a, __m512d b) {
1750   // CHECK-LABEL: @test_mm512_cmp_round_pd_mask
1751   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1752   return _mm512_cmp_round_pd_mask(a, b, 0, _MM_FROUND_CUR_DIRECTION);
1753 }
1754 
test_mm512_mask_cmp_round_pd_mask(__mmask8 m,__m512d a,__m512d b)1755 __mmask8 test_mm512_mask_cmp_round_pd_mask(__mmask8 m, __m512d a, __m512d b) {
1756   // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask
1757   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1758   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1759   return _mm512_mask_cmp_round_pd_mask(m, a, b, 0, _MM_FROUND_CUR_DIRECTION);
1760 }
1761 
test_mm512_cmp_pd_mask_eq_oq(__m512d a,__m512d b)1762 __mmask8 test_mm512_cmp_pd_mask_eq_oq(__m512d a, __m512d b) {
1763   // CHECK-LABEL: @test_mm512_cmp_pd_mask_eq_oq
1764   // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1765   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OQ);
1766 }
1767 
test_mm512_cmp_pd_mask_lt_os(__m512d a,__m512d b)1768 __mmask8 test_mm512_cmp_pd_mask_lt_os(__m512d a, __m512d b) {
1769   // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_os
1770   // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1771   return _mm512_cmp_pd_mask(a, b, _CMP_LT_OS);
1772 }
1773 
test_mm512_cmp_pd_mask_le_os(__m512d a,__m512d b)1774 __mmask8 test_mm512_cmp_pd_mask_le_os(__m512d a, __m512d b) {
1775   // CHECK-LABEL: test_mm512_cmp_pd_mask_le_os
1776   // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1777   return _mm512_cmp_pd_mask(a, b, _CMP_LE_OS);
1778 }
1779 
test_mm512_cmp_pd_mask_unord_q(__m512d a,__m512d b)1780 __mmask8 test_mm512_cmp_pd_mask_unord_q(__m512d a, __m512d b) {
1781   // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_q
1782   // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1783   return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_Q);
1784 }
1785 
test_mm512_cmp_pd_mask_neq_uq(__m512d a,__m512d b)1786 __mmask8 test_mm512_cmp_pd_mask_neq_uq(__m512d a, __m512d b) {
1787   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_uq
1788   // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1789   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
1790 }
1791 
test_mm512_cmp_pd_mask_nlt_us(__m512d a,__m512d b)1792 __mmask8 test_mm512_cmp_pd_mask_nlt_us(__m512d a, __m512d b) {
1793   // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_us
1794   // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1795   return _mm512_cmp_pd_mask(a, b, _CMP_NLT_US);
1796 }
1797 
test_mm512_cmp_pd_mask_nle_us(__m512d a,__m512d b)1798 __mmask8 test_mm512_cmp_pd_mask_nle_us(__m512d a, __m512d b) {
1799   // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_us
1800   // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1801   return _mm512_cmp_pd_mask(a, b, _CMP_NLE_US);
1802 }
1803 
test_mm512_cmp_pd_mask_ord_q(__m512d a,__m512d b)1804 __mmask8 test_mm512_cmp_pd_mask_ord_q(__m512d a, __m512d b) {
1805   // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_q
1806   // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1807   return _mm512_cmp_pd_mask(a, b, _CMP_ORD_Q);
1808 }
1809 
test_mm512_cmp_pd_mask_eq_uq(__m512d a,__m512d b)1810 __mmask8 test_mm512_cmp_pd_mask_eq_uq(__m512d a, __m512d b) {
1811   // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_uq
1812   // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1813   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_UQ);
1814 }
1815 
test_mm512_cmp_pd_mask_nge_us(__m512d a,__m512d b)1816 __mmask8 test_mm512_cmp_pd_mask_nge_us(__m512d a, __m512d b) {
1817   // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_us
1818   // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1819   return _mm512_cmp_pd_mask(a, b, _CMP_NGE_US);
1820 }
1821 
test_mm512_cmp_pd_mask_ngt_us(__m512d a,__m512d b)1822 __mmask8 test_mm512_cmp_pd_mask_ngt_us(__m512d a, __m512d b) {
1823   // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_us
1824   // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1825   return _mm512_cmp_pd_mask(a, b, _CMP_NGT_US);
1826 }
1827 
test_mm512_cmp_pd_mask_false_oq(__m512d a,__m512d b)1828 __mmask8 test_mm512_cmp_pd_mask_false_oq(__m512d a, __m512d b) {
1829   // CHECK-LABEL: test_mm512_cmp_pd_mask_false_oq
1830   // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1831   return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
1832 }
1833 
test_mm512_cmp_pd_mask_neq_oq(__m512d a,__m512d b)1834 __mmask8 test_mm512_cmp_pd_mask_neq_oq(__m512d a, __m512d b) {
1835   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_oq
1836   // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1837   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
1838 }
1839 
test_mm512_cmp_pd_mask_ge_os(__m512d a,__m512d b)1840 __mmask8 test_mm512_cmp_pd_mask_ge_os(__m512d a, __m512d b) {
1841   // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_os
1842   // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1843   return _mm512_cmp_pd_mask(a, b, _CMP_GE_OS);
1844 }
1845 
test_mm512_cmp_pd_mask_gt_os(__m512d a,__m512d b)1846 __mmask8 test_mm512_cmp_pd_mask_gt_os(__m512d a, __m512d b) {
1847   // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_os
1848   // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1849   return _mm512_cmp_pd_mask(a, b, _CMP_GT_OS);
1850 }
1851 
test_mm512_cmp_pd_mask_true_uq(__m512d a,__m512d b)1852 __mmask8 test_mm512_cmp_pd_mask_true_uq(__m512d a, __m512d b) {
1853   // CHECK-LABEL: test_mm512_cmp_pd_mask_true_uq
1854   // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1855   return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
1856 }
1857 
test_mm512_cmp_pd_mask_eq_os(__m512d a,__m512d b)1858 __mmask8 test_mm512_cmp_pd_mask_eq_os(__m512d a, __m512d b) {
1859   // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_os
1860   // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1861   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OS);
1862 }
1863 
test_mm512_cmp_pd_mask_lt_oq(__m512d a,__m512d b)1864 __mmask8 test_mm512_cmp_pd_mask_lt_oq(__m512d a, __m512d b) {
1865   // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_oq
1866   // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1867   return _mm512_cmp_pd_mask(a, b, _CMP_LT_OQ);
1868 }
1869 
test_mm512_cmp_pd_mask_le_oq(__m512d a,__m512d b)1870 __mmask8 test_mm512_cmp_pd_mask_le_oq(__m512d a, __m512d b) {
1871   // CHECK-LABEL: test_mm512_cmp_pd_mask_le_oq
1872   // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1873   return _mm512_cmp_pd_mask(a, b, _CMP_LE_OQ);
1874 }
1875 
test_mm512_cmp_pd_mask_unord_s(__m512d a,__m512d b)1876 __mmask8 test_mm512_cmp_pd_mask_unord_s(__m512d a, __m512d b) {
1877   // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_s
1878   // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1879   return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_S);
1880 }
1881 
test_mm512_cmp_pd_mask_neq_us(__m512d a,__m512d b)1882 __mmask8 test_mm512_cmp_pd_mask_neq_us(__m512d a, __m512d b) {
1883   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_us
1884   // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1885   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_US);
1886 }
1887 
test_mm512_cmp_pd_mask_nlt_uq(__m512d a,__m512d b)1888 __mmask8 test_mm512_cmp_pd_mask_nlt_uq(__m512d a, __m512d b) {
1889   // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_uq
1890   // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1891   return _mm512_cmp_pd_mask(a, b, _CMP_NLT_UQ);
1892 }
1893 
test_mm512_cmp_pd_mask_nle_uq(__m512d a,__m512d b)1894 __mmask8 test_mm512_cmp_pd_mask_nle_uq(__m512d a, __m512d b) {
1895   // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_uq
1896   // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1897   return _mm512_cmp_pd_mask(a, b, _CMP_NLE_UQ);
1898 }
1899 
test_mm512_cmp_pd_mask_ord_s(__m512d a,__m512d b)1900 __mmask8 test_mm512_cmp_pd_mask_ord_s(__m512d a, __m512d b) {
1901   // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_s
1902   // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1903   return _mm512_cmp_pd_mask(a, b, _CMP_ORD_S);
1904 }
1905 
test_mm512_cmp_pd_mask_eq_us(__m512d a,__m512d b)1906 __mmask8 test_mm512_cmp_pd_mask_eq_us(__m512d a, __m512d b) {
1907   // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_us
1908   // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1909   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_US);
1910 }
1911 
test_mm512_cmp_pd_mask_nge_uq(__m512d a,__m512d b)1912 __mmask8 test_mm512_cmp_pd_mask_nge_uq(__m512d a, __m512d b) {
1913   // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_uq
1914   // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1915   return _mm512_cmp_pd_mask(a, b, _CMP_NGE_UQ);
1916 }
1917 
test_mm512_cmp_pd_mask_ngt_uq(__m512d a,__m512d b)1918 __mmask8 test_mm512_cmp_pd_mask_ngt_uq(__m512d a, __m512d b) {
1919   // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_uq
1920   // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1921   return _mm512_cmp_pd_mask(a, b, _CMP_NGT_UQ);
1922 }
1923 
test_mm512_cmp_pd_mask_false_os(__m512d a,__m512d b)1924 __mmask8 test_mm512_cmp_pd_mask_false_os(__m512d a, __m512d b) {
1925   // CHECK-LABEL: test_mm512_cmp_pd_mask_false_os
1926   // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1927   return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OS);
1928 }
1929 
test_mm512_cmp_pd_mask_neq_os(__m512d a,__m512d b)1930 __mmask8 test_mm512_cmp_pd_mask_neq_os(__m512d a, __m512d b) {
1931   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_os
1932   // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1933   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OS);
1934 }
1935 
test_mm512_cmp_pd_mask_ge_oq(__m512d a,__m512d b)1936 __mmask8 test_mm512_cmp_pd_mask_ge_oq(__m512d a, __m512d b) {
1937   // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_oq
1938   // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1939   return _mm512_cmp_pd_mask(a, b, _CMP_GE_OQ);
1940 }
1941 
test_mm512_cmp_pd_mask_gt_oq(__m512d a,__m512d b)1942 __mmask8 test_mm512_cmp_pd_mask_gt_oq(__m512d a, __m512d b) {
1943   // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_oq
1944   // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1945   return _mm512_cmp_pd_mask(a, b, _CMP_GT_OQ);
1946 }
1947 
test_mm512_cmp_pd_mask_true_us(__m512d a,__m512d b)1948 __mmask8 test_mm512_cmp_pd_mask_true_us(__m512d a, __m512d b) {
1949   // CHECK-LABEL: test_mm512_cmp_pd_mask_true_us
1950   // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1951   return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_US);
1952 }
1953 
test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m,__m512d a,__m512d b)1954 __mmask8 test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m512d a, __m512d b) {
1955   // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask_eq_oq
1956   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1957   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1958   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
1959 }
1960 
test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m,__m512d a,__m512d b)1961 __mmask8 test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m, __m512d a, __m512d b) {
1962   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_os
1963   // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
1964   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1965   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
1966 }
1967 
test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m,__m512d a,__m512d b)1968 __mmask8 test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m, __m512d a, __m512d b) {
1969   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_os
1970   // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
1971   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1972   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
1973 }
1974 
test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m,__m512d a,__m512d b)1975 __mmask8 test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m, __m512d a, __m512d b) {
1976   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_q
1977   // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
1978   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1979   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
1980 }
1981 
test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m,__m512d a,__m512d b)1982 __mmask8 test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m512d a, __m512d b) {
1983   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_uq
1984   // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
1985   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1986   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
1987 }
1988 
test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m,__m512d a,__m512d b)1989 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m512d a, __m512d b) {
1990   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_us
1991   // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
1992   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1993   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
1994 }
1995 
test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m,__m512d a,__m512d b)1996 __mmask8 test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m, __m512d a, __m512d b) {
1997   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_us
1998   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1999   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2000   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
2001 }
2002 
test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m,__m512d a,__m512d b)2003 __mmask8 test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m, __m512d a, __m512d b) {
2004   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_q
2005   // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2006   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2007   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
2008 }
2009 
test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m,__m512d a,__m512d b)2010 __mmask8 test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m512d a, __m512d b) {
2011   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_uq
2012   // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
2013   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2014   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
2015 }
2016 
test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m,__m512d a,__m512d b)2017 __mmask8 test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m, __m512d a, __m512d b) {
2018   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_us
2019   // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
2020   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2021   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
2022 }
2023 
test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m,__m512d a,__m512d b)2024 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m512d a, __m512d b) {
2025   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_us
2026   // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
2027   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2028   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
2029 }
2030 
test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m,__m512d a,__m512d b)2031 __mmask8 test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m, __m512d a, __m512d b) {
2032   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_oq
2033   // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
2034   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2035   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
2036 }
2037 
test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m,__m512d a,__m512d b)2038 __mmask8 test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m512d a, __m512d b) {
2039   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_oq
2040   // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2041   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2042   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
2043 }
2044 
test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m,__m512d a,__m512d b)2045 __mmask8 test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m, __m512d a, __m512d b) {
2046   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_os
2047   // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2048   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2049   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
2050 }
2051 
test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m,__m512d a,__m512d b)2052 __mmask8 test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m, __m512d a, __m512d b) {
2053   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_os
2054   // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2055   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2056   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
2057 }
2058 
test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m,__m512d a,__m512d b)2059 __mmask8 test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m, __m512d a, __m512d b) {
2060   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_uq
2061   // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2062   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2063   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
2064 }
2065 
test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m,__m512d a,__m512d b)2066 __mmask8 test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m, __m512d a, __m512d b) {
2067   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_os
2068   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2069   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2070   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
2071 }
2072 
test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m,__m512d a,__m512d b)2073 __mmask8 test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m512d a, __m512d b) {
2074   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_oq
2075   // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2076   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2077   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
2078 }
2079 
test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m,__m512d a,__m512d b)2080 __mmask8 test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m, __m512d a, __m512d b) {
2081   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_oq
2082   // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2083   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2084   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
2085 }
2086 
test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m,__m512d a,__m512d b)2087 __mmask8 test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m, __m512d a, __m512d b) {
2088   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_s
2089   // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2090   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2091   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
2092 }
2093 
test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m,__m512d a,__m512d b)2094 __mmask8 test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m, __m512d a, __m512d b) {
2095   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_us
2096   // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2097   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2098   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
2099 }
2100 
test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m,__m512d a,__m512d b)2101 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m512d a, __m512d b) {
2102   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_uq
2103   // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2104   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2105   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
2106 }
2107 
test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m,__m512d a,__m512d b)2108 __mmask8 test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m512d a, __m512d b) {
2109   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_uq
2110   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2111   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2112   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
2113 }
2114 
test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m,__m512d a,__m512d b)2115 __mmask8 test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m, __m512d a, __m512d b) {
2116   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_s
2117   // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2118   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2119   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
2120 }
2121 
test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m,__m512d a,__m512d b)2122 __mmask8 test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m, __m512d a, __m512d b) {
2123   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_us
2124   // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
2125   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2126   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
2127 }
2128 
test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m,__m512d a,__m512d b)2129 __mmask8 test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m512d a, __m512d b) {
2130   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_uq
2131   // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
2132   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2133   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
2134 }
2135 
test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m,__m512d a,__m512d b)2136 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m512d a, __m512d b) {
2137   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_uq
2138   // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
2139   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2140   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
2141 }
2142 
test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m,__m512d a,__m512d b)2143 __mmask8 test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m, __m512d a, __m512d b) {
2144   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_os
2145   // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
2146   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2147   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
2148 }
2149 
test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m,__m512d a,__m512d b)2150 __mmask8 test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m, __m512d a, __m512d b) {
2151   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_os
2152   // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2153   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2154   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
2155 }
2156 
test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m,__m512d a,__m512d b)2157 __mmask8 test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m512d a, __m512d b) {
2158   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_oq
2159   // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2160   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2161   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
2162 }
2163 
test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m,__m512d a,__m512d b)2164 __mmask8 test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m512d a, __m512d b) {
2165   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_oq
2166   // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2167   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2168   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
2169 }
2170 
test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m,__m512d a,__m512d b)2171 __mmask8 test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m, __m512d a, __m512d b) {
2172   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_us
2173   // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2174   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2175   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
2176 }
2177 
test_mm512_mask_cmp_pd_mask(__mmask8 m,__m512d a,__m512d b)2178 __mmask8 test_mm512_mask_cmp_pd_mask(__mmask8 m, __m512d a, __m512d b) {
2179   // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask
2180   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2181   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2182   return _mm512_mask_cmp_pd_mask(m, a, b, 0);
2183 }
2184 
test_mm512_cmpeq_pd_mask(__m512d a,__m512d b)2185 __mmask8 test_mm512_cmpeq_pd_mask(__m512d a, __m512d b) {
2186   // CHECK-LABEL: @test_mm512_cmpeq_pd_mask
2187   // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2188   return _mm512_cmpeq_pd_mask(a, b);
2189 }
2190 
test_mm512_cmpeq_ps_mask(__m512 a,__m512 b)2191 __mmask16 test_mm512_cmpeq_ps_mask(__m512 a, __m512 b) {
2192   // CHECK-LABEL: @test_mm512_cmpeq_ps_mask
2193   // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2194   return _mm512_cmpeq_ps_mask(a, b);
2195 }
2196 
test_mm512_mask_cmpeq_pd_mask(__mmask8 k,__m512d a,__m512d b)2197 __mmask8 test_mm512_mask_cmpeq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2198   // CHECK-LABEL: @test_mm512_mask_cmpeq_pd_mask
2199   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2200   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2201   return _mm512_mask_cmpeq_pd_mask(k, a, b);
2202 }
2203 
test_mm512_mask_cmpeq_ps_mask(__mmask16 k,__m512 a,__m512 b)2204 __mmask16 test_mm512_mask_cmpeq_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2205   // CHECK-LABEL: @test_mm512_mask_cmpeq_ps_mask
2206   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2207   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2208   return _mm512_mask_cmpeq_ps_mask(k, a, b);
2209 }
2210 
test_mm512_cmple_pd_mask(__m512d a,__m512d b)2211 __mmask8 test_mm512_cmple_pd_mask(__m512d a, __m512d b) {
2212   // CHECK-LABEL: @test_mm512_cmple_pd_mask
2213   // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
2214   return _mm512_cmple_pd_mask(a, b);
2215 }
2216 
test_mm512_cmple_ps_mask(__m512 a,__m512 b)2217 __mmask16 test_mm512_cmple_ps_mask(__m512 a, __m512 b) {
2218   // CHECK-LABEL: @test_mm512_cmple_ps_mask
2219   // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
2220   return _mm512_cmple_ps_mask(a, b);
2221 }
2222 
test_mm512_mask_cmple_pd_mask(__mmask8 k,__m512d a,__m512d b)2223 __mmask8 test_mm512_mask_cmple_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2224   // CHECK-LABEL: @test_mm512_mask_cmple_pd_mask
2225   // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2226   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2227   return _mm512_mask_cmple_pd_mask(k, a, b);
2228 }
2229 
test_mm512_mask_cmple_ps_mask(__mmask16 k,__m512 a,__m512 b)2230 __mmask16 test_mm512_mask_cmple_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2231   // CHECK-LABEL: @test_mm512_mask_cmple_ps_mask
2232   // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
2233   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2234   return _mm512_mask_cmple_ps_mask(k, a, b);
2235 }
2236 
test_mm512_cmplt_pd_mask(__m512d a,__m512d b)2237 __mmask8 test_mm512_cmplt_pd_mask(__m512d a, __m512d b) {
2238   // CHECK-LABEL: @test_mm512_cmplt_pd_mask
2239   // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
2240   return _mm512_cmplt_pd_mask(a, b);
2241 }
2242 
test_mm512_cmplt_ps_mask(__m512 a,__m512 b)2243 __mmask16 test_mm512_cmplt_ps_mask(__m512 a, __m512 b) {
2244   // CHECK-LABEL: @test_mm512_cmplt_ps_mask
2245   // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
2246   return _mm512_cmplt_ps_mask(a, b);
2247 }
2248 
test_mm512_mask_cmplt_pd_mask(__mmask8 k,__m512d a,__m512d b)2249 __mmask8 test_mm512_mask_cmplt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2250   // CHECK-LABEL: @test_mm512_mask_cmplt_pd_mask
2251   // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2252   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2253   return _mm512_mask_cmplt_pd_mask(k, a, b);
2254 }
2255 
test_mm512_mask_cmplt_ps_mask(__mmask16 k,__m512 a,__m512 b)2256 __mmask16 test_mm512_mask_cmplt_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2257   // CHECK-LABEL: @test_mm512_mask_cmplt_ps_mask
2258   // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
2259   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2260   return _mm512_mask_cmplt_ps_mask(k, a, b);
2261 }
2262 
test_mm512_cmpneq_pd_mask(__m512d a,__m512d b)2263 __mmask8 test_mm512_cmpneq_pd_mask(__m512d a, __m512d b) {
2264   // CHECK-LABEL: @test_mm512_cmpneq_pd_mask
2265   // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
2266   return _mm512_cmpneq_pd_mask(a, b);
2267 }
2268 
test_mm512_cmpneq_ps_mask(__m512 a,__m512 b)2269 __mmask16 test_mm512_cmpneq_ps_mask(__m512 a, __m512 b) {
2270   // CHECK-LABEL: @test_mm512_cmpneq_ps_mask
2271   // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
2272   return _mm512_cmpneq_ps_mask(a, b);
2273 }
2274 
test_mm512_mask_cmpneq_pd_mask(__mmask8 k,__m512d a,__m512d b)2275 __mmask8 test_mm512_mask_cmpneq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2276   // CHECK-LABEL: @test_mm512_mask_cmpneq_pd_mask
2277   // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2278   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2279   return _mm512_mask_cmpneq_pd_mask(k, a, b);
2280 }
2281 
test_mm512_mask_cmpneq_ps_mask(__mmask16 k,__m512 a,__m512 b)2282 __mmask16 test_mm512_mask_cmpneq_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2283   // CHECK-LABEL: @test_mm512_mask_cmpneq_ps_mask
2284   // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
2285   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2286   return _mm512_mask_cmpneq_ps_mask(k, a, b);
2287 }
2288 
test_mm512_cmpnle_pd_mask(__m512d a,__m512d b)2289 __mmask8 test_mm512_cmpnle_pd_mask(__m512d a, __m512d b) {
2290   // CHECK-LABEL: @test_mm512_cmpnle_pd_mask
2291   // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2292   return _mm512_cmpnle_pd_mask(a, b);
2293 }
2294 
test_mm512_cmpnle_ps_mask(__m512 a,__m512 b)2295 __mmask16 test_mm512_cmpnle_ps_mask(__m512 a, __m512 b) {
2296   // CHECK-LABEL: @test_mm512_cmpnle_ps_mask
2297   // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2298   return _mm512_cmpnle_ps_mask(a, b);
2299 }
2300 
test_mm512_mask_cmpnle_pd_mask(__mmask8 k,__m512d a,__m512d b)2301 __mmask8 test_mm512_mask_cmpnle_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2302   // CHECK-LABEL: @test_mm512_mask_cmpnle_pd_mask
2303   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2304   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2305   return _mm512_mask_cmpnle_pd_mask(k, a, b);
2306 }
2307 
test_mm512_mask_cmpnle_ps_mask(__mmask16 k,__m512 a,__m512 b)2308 __mmask16 test_mm512_mask_cmpnle_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2309   // CHECK-LABEL: @test_mm512_mask_cmpnle_ps_mask
2310   // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2311   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2312   return _mm512_mask_cmpnle_ps_mask(k, a, b);
2313 }
2314 
test_mm512_cmpnlt_pd_mask(__m512d a,__m512d b)2315 __mmask8 test_mm512_cmpnlt_pd_mask(__m512d a, __m512d b) {
2316   // CHECK-LABEL: @test_mm512_cmpnlt_pd_mask
2317   // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
2318   return _mm512_cmpnlt_pd_mask(a, b);
2319 }
2320 
test_mm512_cmpnlt_ps_mask(__m512 a,__m512 b)2321 __mmask16 test_mm512_cmpnlt_ps_mask(__m512 a, __m512 b) {
2322   // CHECK-LABEL: @test_mm512_cmpnlt_ps_mask
2323   // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
2324   return _mm512_cmpnlt_ps_mask(a, b);
2325 }
2326 
test_mm512_mask_cmpnlt_pd_mask(__mmask8 k,__m512d a,__m512d b)2327 __mmask8 test_mm512_mask_cmpnlt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2328   // CHECK-LABEL: @test_mm512_mask_cmpnlt_pd_mask
2329   // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2330   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2331   return _mm512_mask_cmpnlt_pd_mask(k, a, b);
2332 }
2333 
test_mm512_mask_cmpnlt_ps_mask(__mmask16 k,__m512 a,__m512 b)2334 __mmask16 test_mm512_mask_cmpnlt_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2335   // CHECK-LABEL: @test_mm512_mask_cmpnlt_ps_mask
2336   // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
2337   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2338   return _mm512_mask_cmpnlt_ps_mask(k, a, b);
2339 }
2340 
test_mm512_cmpord_pd_mask(__m512d a,__m512d b)2341 __mmask8 test_mm512_cmpord_pd_mask(__m512d a, __m512d b) {
2342   // CHECK-LABEL: @test_mm512_cmpord_pd_mask
2343   // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
2344   return _mm512_cmpord_pd_mask(a, b);
2345 }
2346 
test_mm512_cmpord_ps_mask(__m512 a,__m512 b)2347 __mmask16 test_mm512_cmpord_ps_mask(__m512 a, __m512 b) {
2348   // CHECK-LABEL: @test_mm512_cmpord_ps_mask
2349   // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
2350   return _mm512_cmpord_ps_mask(a, b);
2351 }
2352 
test_mm512_mask_cmpord_pd_mask(__mmask8 k,__m512d a,__m512d b)2353 __mmask8 test_mm512_mask_cmpord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2354   // CHECK-LABEL: @test_mm512_mask_cmpord_pd_mask
2355   // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2356   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2357   return _mm512_mask_cmpord_pd_mask(k, a, b);
2358 }
2359 
test_mm512_mask_cmpord_ps_mask(__mmask16 k,__m512 a,__m512 b)2360 __mmask16 test_mm512_mask_cmpord_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2361   // CHECK-LABEL: @test_mm512_mask_cmpord_ps_mask
2362   // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
2363   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2364   return _mm512_mask_cmpord_ps_mask(k, a, b);
2365 }
2366 
test_mm512_cmpunord_pd_mask(__m512d a,__m512d b)2367 __mmask8 test_mm512_cmpunord_pd_mask(__m512d a, __m512d b) {
2368   // CHECK-LABEL: @test_mm512_cmpunord_pd_mask
2369   // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
2370   return _mm512_cmpunord_pd_mask(a, b);
2371 }
2372 
test_mm512_cmpunord_ps_mask(__m512 a,__m512 b)2373 __mmask16 test_mm512_cmpunord_ps_mask(__m512 a, __m512 b) {
2374   // CHECK-LABEL: @test_mm512_cmpunord_ps_mask
2375   // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
2376   return _mm512_cmpunord_ps_mask(a, b);
2377 }
2378 
test_mm512_mask_cmpunord_pd_mask(__mmask8 k,__m512d a,__m512d b)2379 __mmask8 test_mm512_mask_cmpunord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2380   // CHECK-LABEL: @test_mm512_mask_cmpunord_pd_mask
2381   // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2382   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2383   return _mm512_mask_cmpunord_pd_mask(k, a, b);
2384 }
2385 
test_mm512_mask_cmpunord_ps_mask(__mmask16 k,__m512 a,__m512 b)2386 __mmask16 test_mm512_mask_cmpunord_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2387   // CHECK-LABEL: @test_mm512_mask_cmpunord_ps_mask
2388   // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
2389   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2390   return _mm512_mask_cmpunord_ps_mask(k, a, b);
2391 }
2392 
test_mm512_extractf64x4_pd(__m512d a)2393 __m256d test_mm512_extractf64x4_pd(__m512d a)
2394 {
2395   // CHECK-LABEL: @test_mm512_extractf64x4_pd
2396   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2397   return _mm512_extractf64x4_pd(a, 1);
2398 }
2399 
test_mm512_mask_extractf64x4_pd(__m256d __W,__mmask8 __U,__m512d __A)2400 __m256d test_mm512_mask_extractf64x4_pd(__m256d  __W,__mmask8  __U,__m512d __A){
2401   // CHECK-LABEL:@test_mm512_mask_extractf64x4_pd
2402   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2403   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2404   return _mm512_mask_extractf64x4_pd( __W, __U, __A, 1);
2405 }
2406 
test_mm512_maskz_extractf64x4_pd(__mmask8 __U,__m512d __A)2407 __m256d test_mm512_maskz_extractf64x4_pd(__mmask8  __U,__m512d __A){
2408   // CHECK-LABEL:@test_mm512_maskz_extractf64x4_pd
2409   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2410   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2411   return _mm512_maskz_extractf64x4_pd( __U, __A, 1);
2412 }
2413 
test_mm512_extractf32x4_ps(__m512 a)2414 __m128 test_mm512_extractf32x4_ps(__m512 a)
2415 {
2416   // CHECK-LABEL: @test_mm512_extractf32x4_ps
2417   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2418   return _mm512_extractf32x4_ps(a, 1);
2419 }
2420 
test_mm512_mask_extractf32x4_ps(__m128 __W,__mmask8 __U,__m512 __A)2421 __m128 test_mm512_mask_extractf32x4_ps(__m128 __W, __mmask8  __U,__m512 __A){
2422   // CHECK-LABEL:@test_mm512_mask_extractf32x4_ps
2423   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2424   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2425   return _mm512_mask_extractf32x4_ps( __W, __U, __A, 1);
2426 }
2427 
test_mm512_maskz_extractf32x4_ps(__mmask8 __U,__m512 __A)2428 __m128 test_mm512_maskz_extractf32x4_ps( __mmask8  __U,__m512 __A){
2429   // CHECK-LABEL:@test_mm512_maskz_extractf32x4_ps
2430   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2431   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2432  return _mm512_maskz_extractf32x4_ps(  __U, __A, 1);
2433 }
2434 
test_mm512_cmpeq_epu32_mask(__m512i __a,__m512i __b)2435 __mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2436   // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask
2437   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2438   return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b);
2439 }
2440 
test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2441 __mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2442   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask
2443   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2444   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2445   return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b);
2446 }
2447 
test_mm512_cmpeq_epu64_mask(__m512i __a,__m512i __b)2448 __mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2449   // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask
2450   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2451   return (__mmask8)_mm512_cmpeq_epu64_mask(__a, __b);
2452 }
2453 
test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2454 __mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2455   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask
2456   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2457   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2458   return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b);
2459 }
2460 
test_mm512_cmpge_epi32_mask(__m512i __a,__m512i __b)2461 __mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2462   // CHECK-LABEL: @test_mm512_cmpge_epi32_mask
2463   // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2464   return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b);
2465 }
2466 
test_mm512_mask_cmpge_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2467 __mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2468   // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask
2469   // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2470   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2471   return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b);
2472 }
2473 
test_mm512_cmpge_epi64_mask(__m512i __a,__m512i __b)2474 __mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2475   // CHECK-LABEL: @test_mm512_cmpge_epi64_mask
2476   // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2477   return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b);
2478 }
2479 
test_mm512_mask_cmpge_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2480 __mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2481   // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask
2482   // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2483   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2484   return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b);
2485 }
2486 
test_mm512_cmpge_epu32_mask(__m512i __a,__m512i __b)2487 __mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2488   // CHECK-LABEL: @test_mm512_cmpge_epu32_mask
2489   // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2490   return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b);
2491 }
2492 
test_mm512_mask_cmpge_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2493 __mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2494   // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask
2495   // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2496   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2497   return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b);
2498 }
2499 
test_mm512_cmpge_epu64_mask(__m512i __a,__m512i __b)2500 __mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2501   // CHECK-LABEL: @test_mm512_cmpge_epu64_mask
2502   // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2503   return (__mmask8)_mm512_cmpge_epu64_mask(__a, __b);
2504 }
2505 
test_mm512_mask_cmpge_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2506 __mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2507   // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask
2508   // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2509   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2510   return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b);
2511 }
2512 
test_mm512_cmpgt_epu32_mask(__m512i __a,__m512i __b)2513 __mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2514   // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask
2515   // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2516   return (__mmask16)_mm512_cmpgt_epu32_mask(__a, __b);
2517 }
2518 
test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2519 __mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2520   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask
2521   // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2522   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2523   return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b);
2524 }
2525 
test_mm512_cmpgt_epu64_mask(__m512i __a,__m512i __b)2526 __mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2527   // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask
2528   // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2529   return (__mmask8)_mm512_cmpgt_epu64_mask(__a, __b);
2530 }
2531 
test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2532 __mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2533   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask
2534   // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2535   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2536   return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b);
2537 }
2538 
test_mm512_cmple_epi32_mask(__m512i __a,__m512i __b)2539 __mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2540   // CHECK-LABEL: @test_mm512_cmple_epi32_mask
2541   // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2542   return (__mmask16)_mm512_cmple_epi32_mask(__a, __b);
2543 }
2544 
test_mm512_mask_cmple_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2545 __mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2546   // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask
2547   // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2548   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2549   return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b);
2550 }
2551 
test_mm512_cmple_epi64_mask(__m512i __a,__m512i __b)2552 __mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2553   // CHECK-LABEL: @test_mm512_cmple_epi64_mask
2554   // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2555   return (__mmask8)_mm512_cmple_epi64_mask(__a, __b);
2556 }
2557 
test_mm512_mask_cmple_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2558 __mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2559   // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask
2560   // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2561   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2562   return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b);
2563 }
2564 
test_mm512_cmple_epu32_mask(__m512i __a,__m512i __b)2565 __mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2566   // CHECK-LABEL: @test_mm512_cmple_epu32_mask
2567   // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2568   return (__mmask16)_mm512_cmple_epu32_mask(__a, __b);
2569 }
2570 
test_mm512_mask_cmple_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2571 __mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2572   // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask
2573   // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2574   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2575   return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b);
2576 }
2577 
test_mm512_cmple_epu64_mask(__m512i __a,__m512i __b)2578 __mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2579   // CHECK-LABEL: @test_mm512_cmple_epu64_mask
2580   // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2581   return (__mmask8)_mm512_cmple_epu64_mask(__a, __b);
2582 }
2583 
test_mm512_mask_cmple_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2584 __mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2585   // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask
2586   // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2587   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2588   return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b);
2589 }
2590 
test_mm512_cmplt_epi32_mask(__m512i __a,__m512i __b)2591 __mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2592   // CHECK-LABEL: @test_mm512_cmplt_epi32_mask
2593   // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2594   return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b);
2595 }
2596 
test_mm512_mask_cmplt_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2597 __mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2598   // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask
2599   // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2600   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2601   return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b);
2602 }
2603 
test_mm512_cmplt_epi64_mask(__m512i __a,__m512i __b)2604 __mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2605   // CHECK-LABEL: @test_mm512_cmplt_epi64_mask
2606   // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2607   return (__mmask8)_mm512_cmplt_epi64_mask(__a, __b);
2608 }
2609 
test_mm512_mask_cmplt_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2610 __mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2611   // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask
2612   // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2613   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2614   return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b);
2615 }
2616 
test_mm512_cmplt_epu32_mask(__m512i __a,__m512i __b)2617 __mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2618   // CHECK-LABEL: @test_mm512_cmplt_epu32_mask
2619   // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2620   return (__mmask16)_mm512_cmplt_epu32_mask(__a, __b);
2621 }
2622 
test_mm512_mask_cmplt_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2623 __mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2624   // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask
2625   // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2626   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2627   return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b);
2628 }
2629 
test_mm512_cmplt_epu64_mask(__m512i __a,__m512i __b)2630 __mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2631   // CHECK-LABEL: @test_mm512_cmplt_epu64_mask
2632   // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2633   return (__mmask8)_mm512_cmplt_epu64_mask(__a, __b);
2634 }
2635 
test_mm512_mask_cmplt_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2636 __mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2637   // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask
2638   // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2639   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2640   return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b);
2641 }
2642 
test_mm512_cmpneq_epi32_mask(__m512i __a,__m512i __b)2643 __mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2644   // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask
2645   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2646   return (__mmask16)_mm512_cmpneq_epi32_mask(__a, __b);
2647 }
2648 
test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2649 __mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2650   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask
2651   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2652   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2653   return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b);
2654 }
2655 
test_mm512_cmpneq_epi64_mask(__m512i __a,__m512i __b)2656 __mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
2657   // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask
2658   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2659   return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b);
2660 }
2661 
test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2662 __mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2663   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask
2664   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2665   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2666   return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b);
2667 }
2668 
test_mm512_cmpneq_epu32_mask(__m512i __a,__m512i __b)2669 __mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2670   // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask
2671   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2672   return (__mmask16)_mm512_cmpneq_epu32_mask(__a, __b);
2673 }
2674 
test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2675 __mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2676   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask
2677   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2678   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2679   return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b);
2680 }
2681 
test_mm512_cmpneq_epu64_mask(__m512i __a,__m512i __b)2682 __mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
2683   // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask
2684   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2685   return (__mmask8)_mm512_cmpneq_epu64_mask(__a, __b);
2686 }
2687 
test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2688 __mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2689   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask
2690   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2691   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2692   return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b);
2693 }
2694 
test_mm512_cmp_eq_epi32_mask(__m512i __a,__m512i __b)2695 __mmask16 test_mm512_cmp_eq_epi32_mask(__m512i __a, __m512i __b) {
2696   // CHECK-LABEL: @test_mm512_cmp_eq_epi32_mask
2697   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2698   return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);
2699 }
2700 
test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2701 __mmask16 test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2702   // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi32_mask
2703   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2704   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2705   return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_EQ);
2706 }
2707 
test_mm512_cmp_eq_epi64_mask(__m512i __a,__m512i __b)2708 __mmask8 test_mm512_cmp_eq_epi64_mask(__m512i __a, __m512i __b) {
2709   // CHECK-LABEL: @test_mm512_cmp_eq_epi64_mask
2710   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2711   return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, _MM_CMPINT_EQ);
2712 }
2713 
test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2714 __mmask8 test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2715   // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi64_mask
2716   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2717   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2718   return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);
2719 }
2720 
test_mm512_cmp_epu32_mask(__m512i __a,__m512i __b)2721 __mmask16 test_mm512_cmp_epu32_mask(__m512i __a, __m512i __b) {
2722   // CHECK-LABEL: @test_mm512_cmp_epu32_mask
2723   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2724   return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 0);
2725 }
2726 
test_mm512_mask_cmp_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2727 __mmask16 test_mm512_mask_cmp_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2728   // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask
2729   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2730   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2731   return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 0);
2732 }
2733 
test_mm512_cmp_epu64_mask(__m512i __a,__m512i __b)2734 __mmask8 test_mm512_cmp_epu64_mask(__m512i __a, __m512i __b) {
2735   // CHECK-LABEL: @test_mm512_cmp_epu64_mask
2736   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2737   return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 0);
2738 }
2739 
test_mm512_mask_cmp_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2740 __mmask8 test_mm512_mask_cmp_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2741   // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask
2742   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2743   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2744   return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 0);
2745 }
2746 
test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2747 __m512i test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2748   // CHECK-LABEL: @test_mm512_mask_and_epi32
2749   // CHECK: and <16 x i32>
2750   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2751   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2752   return _mm512_mask_and_epi32(__src, __k,__a, __b);
2753 }
2754 
test_mm512_maskz_and_epi32(__mmask16 __k,__m512i __a,__m512i __b)2755 __m512i test_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2756   // CHECK-LABEL: @test_mm512_maskz_and_epi32
2757   // CHECK: and <16 x i32>
2758   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2759   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2760   return _mm512_maskz_and_epi32(__k,__a, __b);
2761 }
2762 
test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2763 __m512i test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2764   // CHECK-LABEL: @test_mm512_mask_and_epi64
2765   // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2766   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2767   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2768   return _mm512_mask_and_epi64(__src, __k,__a, __b);
2769 }
2770 
test_mm512_maskz_and_epi64(__mmask8 __k,__m512i __a,__m512i __b)2771 __m512i test_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2772   // CHECK-LABEL: @test_mm512_maskz_and_epi64
2773   // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2774   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2775   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2776   return _mm512_maskz_and_epi64(__k,__a, __b);
2777 }
2778 
test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2779 __m512i test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2780   // CHECK-LABEL: @test_mm512_mask_or_epi32
2781   // CHECK: or <16 x i32>
2782   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2783   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2784   return _mm512_mask_or_epi32(__src, __k,__a, __b);
2785 }
2786 
test_mm512_maskz_or_epi32(__mmask16 __k,__m512i __a,__m512i __b)2787 __m512i test_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2788   // CHECK-LABEL: @test_mm512_maskz_or_epi32
2789   // CHECK: or <16 x i32>
2790   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2791   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2792   return _mm512_maskz_or_epi32(__k,__a, __b);
2793 }
2794 
test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2795 __m512i test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2796   // CHECK-LABEL: @test_mm512_mask_or_epi64
2797   // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2798   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2799   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2800   return _mm512_mask_or_epi64(__src, __k,__a, __b);
2801 }
2802 
test_mm512_maskz_or_epi64(__mmask8 __k,__m512i __a,__m512i __b)2803 __m512i test_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2804   // CHECK-LABEL: @test_mm512_maskz_or_epi64
2805   // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2806   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2807   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2808   return _mm512_maskz_or_epi64(__k,__a, __b);
2809 }
2810 
test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2811 __m512i test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2812   // CHECK-LABEL: @test_mm512_mask_xor_epi32
2813   // CHECK: xor <16 x i32>
2814   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2815   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2816   return _mm512_mask_xor_epi32(__src, __k,__a, __b);
2817 }
2818 
test_mm512_maskz_xor_epi32(__mmask16 __k,__m512i __a,__m512i __b)2819 __m512i test_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2820   // CHECK-LABEL: @test_mm512_maskz_xor_epi32
2821   // CHECK: xor <16 x i32>
2822   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2823   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2824   return _mm512_maskz_xor_epi32(__k,__a, __b);
2825 }
2826 
test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2827 __m512i test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2828   // CHECK-LABEL: @test_mm512_mask_xor_epi64
2829   // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2830   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2831   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2832   return _mm512_mask_xor_epi64(__src, __k,__a, __b);
2833 }
2834 
test_mm512_maskz_xor_epi64(__mmask8 __k,__m512i __a,__m512i __b)2835 __m512i test_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2836   // CHECK-LABEL: @test_mm512_maskz_xor_epi64
2837   // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2838   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2839   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2840   return _mm512_maskz_xor_epi64(__k,__a, __b);
2841 }
2842 
test_mm512_and_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2843 __m512i test_mm512_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2844   // CHECK-LABEL: @test_mm512_and_epi32
2845   // CHECK: and <16 x i32>
2846   return _mm512_and_epi32(__a, __b);
2847 }
2848 
test_mm512_and_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2849 __m512i test_mm512_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2850   // CHECK-LABEL: @test_mm512_and_epi64
2851   // CHECK: and <8 x i64>
2852   return _mm512_and_epi64(__a, __b);
2853 }
2854 
test_mm512_or_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2855 __m512i test_mm512_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2856   // CHECK-LABEL: @test_mm512_or_epi32
2857   // CHECK: or <16 x i32>
2858   return _mm512_or_epi32(__a, __b);
2859 }
2860 
test_mm512_or_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2861 __m512i test_mm512_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2862   // CHECK-LABEL: @test_mm512_or_epi64
2863   // CHECK: or <8 x i64>
2864   return _mm512_or_epi64(__a, __b);
2865 }
2866 
test_mm512_xor_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2867 __m512i test_mm512_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2868   // CHECK-LABEL: @test_mm512_xor_epi32
2869   // CHECK: xor <16 x i32>
2870   return _mm512_xor_epi32(__a, __b);
2871 }
2872 
test_mm512_xor_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2873 __m512i test_mm512_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2874   // CHECK-LABEL: @test_mm512_xor_epi64
2875   // CHECK: xor <8 x i64>
2876   return _mm512_xor_epi64(__a, __b);
2877 }
2878 
test_mm512_maskz_andnot_epi32(__mmask16 __k,__m512i __A,__m512i __B)2879 __m512i test_mm512_maskz_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B){
2880   // CHECK-LABEL: @test_mm512_maskz_andnot_epi32
2881   // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
2882   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2883   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2884   return _mm512_maskz_andnot_epi32(__k,__A,__B);
2885 }
2886 
test_mm512_mask_andnot_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2887 __m512i test_mm512_mask_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2888                                       __m512i __src) {
2889   // CHECK-LABEL: @test_mm512_mask_andnot_epi32
2890   // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
2891   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2892   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2893   return _mm512_mask_andnot_epi32(__src,__k,__A,__B);
2894 }
2895 
test_mm512_andnot_si512(__m512i __A,__m512i __B)2896 __m512i test_mm512_andnot_si512(__m512i __A, __m512i __B)
2897 {
2898   //CHECK-LABEL: @test_mm512_andnot_si512
2899   //CHECK: load {{.*}}%__A.addr.i, align 64
2900   //CHECK: %neg.i = xor{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2901   //CHECK: load {{.*}}%__B.addr.i, align 64
2902   //CHECK: and <8 x i64> %neg.i,{{.*}}
2903 
2904   return _mm512_andnot_si512(__A, __B);
2905 }
2906 
test_mm512_andnot_epi32(__m512i __A,__m512i __B)2907 __m512i test_mm512_andnot_epi32(__m512i __A, __m512i __B) {
2908   // CHECK-LABEL: @test_mm512_andnot_epi32
2909   // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
2910   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2911   return _mm512_andnot_epi32(__A,__B);
2912 }
2913 
test_mm512_maskz_andnot_epi64(__mmask8 __k,__m512i __A,__m512i __B)2914 __m512i test_mm512_maskz_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2915   // CHECK-LABEL: @test_mm512_maskz_andnot_epi64
2916   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2917   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2918   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2919   return _mm512_maskz_andnot_epi64(__k,__A,__B);
2920 }
2921 
test_mm512_mask_andnot_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2922 __m512i test_mm512_mask_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2923                                       __m512i __src) {
2924   //CHECK-LABEL: @test_mm512_mask_andnot_epi64
2925   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2926   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2927   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2928   return _mm512_mask_andnot_epi64(__src,__k,__A,__B);
2929 }
2930 
test_mm512_andnot_epi64(__m512i __A,__m512i __B)2931 __m512i test_mm512_andnot_epi64(__m512i __A, __m512i __B) {
2932   //CHECK-LABEL: @test_mm512_andnot_epi64
2933   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2934   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2935   return _mm512_andnot_epi64(__A,__B);
2936 }
2937 
test_mm512_maskz_sub_epi32(__mmask16 __k,__m512i __A,__m512i __B)2938 __m512i test_mm512_maskz_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
2939   //CHECK-LABEL: @test_mm512_maskz_sub_epi32
2940   //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2941   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2942   return _mm512_maskz_sub_epi32(__k,__A,__B);
2943 }
2944 
test_mm512_mask_sub_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2945 __m512i test_mm512_mask_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2946                                    __m512i __src) {
2947   //CHECK-LABEL: @test_mm512_mask_sub_epi32
2948   //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2949   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2950   return _mm512_mask_sub_epi32(__src,__k,__A,__B);
2951 }
2952 
test_mm512_sub_epi32(__m512i __A,__m512i __B)2953 __m512i test_mm512_sub_epi32(__m512i __A, __m512i __B) {
2954   //CHECK-LABEL: @test_mm512_sub_epi32
2955   //CHECK: sub <16 x i32>
2956   return _mm512_sub_epi32(__A,__B);
2957 }
2958 
test_mm512_maskz_sub_epi64(__mmask8 __k,__m512i __A,__m512i __B)2959 __m512i test_mm512_maskz_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2960   //CHECK-LABEL: @test_mm512_maskz_sub_epi64
2961   //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2962   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2963   return _mm512_maskz_sub_epi64(__k,__A,__B);
2964 }
2965 
test_mm512_mask_sub_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2966 __m512i test_mm512_mask_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2967                                    __m512i __src) {
2968   //CHECK-LABEL: @test_mm512_mask_sub_epi64
2969   //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2970   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2971   return _mm512_mask_sub_epi64(__src,__k,__A,__B);
2972 }
2973 
test_mm512_sub_epi64(__m512i __A,__m512i __B)2974 __m512i test_mm512_sub_epi64(__m512i __A, __m512i __B) {
2975   //CHECK-LABEL: @test_mm512_sub_epi64
2976   //CHECK: sub <8 x i64>
2977   return _mm512_sub_epi64(__A,__B);
2978 }
2979 
test_mm512_maskz_add_epi32(__mmask16 __k,__m512i __A,__m512i __B)2980 __m512i test_mm512_maskz_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
2981   //CHECK-LABEL: @test_mm512_maskz_add_epi32
2982   //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2983   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2984   return _mm512_maskz_add_epi32(__k,__A,__B);
2985 }
2986 
test_mm512_mask_add_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2987 __m512i test_mm512_mask_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2988                                    __m512i __src) {
2989   //CHECK-LABEL: @test_mm512_mask_add_epi32
2990   //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2991   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2992   return _mm512_mask_add_epi32(__src,__k,__A,__B);
2993 }
2994 
test_mm512_add_epi32(__m512i __A,__m512i __B)2995 __m512i test_mm512_add_epi32(__m512i __A, __m512i __B) {
2996   //CHECK-LABEL: @test_mm512_add_epi32
2997   //CHECK: add <16 x i32>
2998   return _mm512_add_epi32(__A,__B);
2999 }
3000 
test_mm512_maskz_add_epi64(__mmask8 __k,__m512i __A,__m512i __B)3001 __m512i test_mm512_maskz_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
3002   //CHECK-LABEL: @test_mm512_maskz_add_epi64
3003   //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
3004   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3005   return _mm512_maskz_add_epi64(__k,__A,__B);
3006 }
3007 
test_mm512_mask_add_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3008 __m512i test_mm512_mask_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
3009                                    __m512i __src) {
3010   //CHECK-LABEL: @test_mm512_mask_add_epi64
3011   //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
3012   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3013   return _mm512_mask_add_epi64(__src,__k,__A,__B);
3014 }
3015 
test_mm512_add_epi64(__m512i __A,__m512i __B)3016 __m512i test_mm512_add_epi64(__m512i __A, __m512i __B) {
3017   //CHECK-LABEL: @test_mm512_add_epi64
3018   //CHECK: add <8 x i64>
3019   return _mm512_add_epi64(__A,__B);
3020 }
3021 
test_mm512_mul_epi32(__m512i __A,__m512i __B)3022 __m512i test_mm512_mul_epi32(__m512i __A, __m512i __B) {
3023   //CHECK-LABEL: @test_mm512_mul_epi32
3024   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3025   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3026   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3027   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3028   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3029   return _mm512_mul_epi32(__A,__B);
3030 }
3031 
test_mm512_maskz_mul_epi32(__mmask8 __k,__m512i __A,__m512i __B)3032 __m512i test_mm512_maskz_mul_epi32 (__mmask8 __k,__m512i __A, __m512i __B) {
3033   //CHECK-LABEL: @test_mm512_maskz_mul_epi32
3034   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3035   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3036   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3037   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3038   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3039   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3040   return _mm512_maskz_mul_epi32(__k,__A,__B);
3041 }
3042 
test_mm512_mask_mul_epi32(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3043 __m512i test_mm512_mask_mul_epi32 (__mmask8 __k,__m512i __A, __m512i __B, __m512i __src) {
3044   //CHECK-LABEL: @test_mm512_mask_mul_epi32
3045   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3046   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3047   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3048   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3049   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3050   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3051   return _mm512_mask_mul_epi32(__src,__k,__A,__B);
3052 }
3053 
test_mm512_mul_epu32(__m512i __A,__m512i __B)3054 __m512i test_mm512_mul_epu32 (__m512i __A, __m512i __B) {
3055   //CHECK-LABEL: @test_mm512_mul_epu32
3056   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3057   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3058   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3059   return _mm512_mul_epu32(__A,__B);
3060 }
3061 
test_mm512_maskz_mul_epu32(__mmask8 __k,__m512i __A,__m512i __B)3062 __m512i test_mm512_maskz_mul_epu32 (__mmask8 __k,__m512i __A, __m512i __B) {
3063   //CHECK-LABEL: @test_mm512_maskz_mul_epu32
3064   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3065   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3066   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3067   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3068   return _mm512_maskz_mul_epu32(__k,__A,__B);
3069 }
3070 
test_mm512_mask_mul_epu32(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3071 __m512i test_mm512_mask_mul_epu32 (__mmask8 __k,__m512i __A, __m512i __B, __m512i __src) {
3072   //CHECK-LABEL: @test_mm512_mask_mul_epu32
3073   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3074   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3075   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3076   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3077   return _mm512_mask_mul_epu32(__src,__k,__A,__B);
3078 }
3079 
test_mm512_maskz_mullo_epi32(__mmask16 __k,__m512i __A,__m512i __B)3080 __m512i test_mm512_maskz_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
3081   //CHECK-LABEL: @test_mm512_maskz_mullo_epi32
3082   //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3083   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3084   return _mm512_maskz_mullo_epi32(__k,__A,__B);
3085 }
3086 
test_mm512_mask_mullo_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)3087 __m512i test_mm512_mask_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B, __m512i __src) {
3088   //CHECK-LABEL: @test_mm512_mask_mullo_epi32
3089   //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3090   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3091   return _mm512_mask_mullo_epi32(__src,__k,__A,__B);
3092 }
3093 
test_mm512_mullo_epi32(__m512i __A,__m512i __B)3094 __m512i test_mm512_mullo_epi32(__m512i __A, __m512i __B) {
3095   //CHECK-LABEL: @test_mm512_mullo_epi32
3096   //CHECK: mul <16 x i32>
3097   return _mm512_mullo_epi32(__A,__B);
3098 }
3099 
test_mm512_mullox_epi64(__m512i __A,__m512i __B)3100 __m512i test_mm512_mullox_epi64 (__m512i __A, __m512i __B) {
3101   // CHECK-LABEL: @test_mm512_mullox_epi64
3102   // CHECK: mul <8 x i64>
3103   return (__m512i) _mm512_mullox_epi64(__A, __B);
3104 }
3105 
test_mm512_mask_mullox_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)3106 __m512i test_mm512_mask_mullox_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
3107   // CHECK-LABEL: @test_mm512_mask_mullox_epi64
3108   // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3109   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3110   return (__m512i) _mm512_mask_mullox_epi64(__W, __U, __A, __B);
3111 }
3112 
test_mm512_add_round_pd(__m512d __A,__m512d __B)3113 __m512d test_mm512_add_round_pd(__m512d __A, __m512d __B) {
3114   // CHECK-LABEL: @test_mm512_add_round_pd
3115   // CHECK: @llvm.x86.avx512.add.pd.512
3116   return _mm512_add_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3117 }
test_mm512_mask_add_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3118 __m512d test_mm512_mask_add_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3119   // CHECK-LABEL: @test_mm512_mask_add_round_pd
3120   // CHECK: @llvm.x86.avx512.add.pd.512
3121   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3122   return _mm512_mask_add_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3123 }
test_mm512_maskz_add_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3124 __m512d test_mm512_maskz_add_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3125   // CHECK-LABEL: @test_mm512_maskz_add_round_pd
3126   // CHECK: @llvm.x86.avx512.add.pd.512
3127   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3128   return _mm512_maskz_add_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3129 }
test_mm512_mask_add_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3130 __m512d test_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3131   // CHECK-LABEL: @test_mm512_mask_add_pd
3132   // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3133   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3134   return _mm512_mask_add_pd(__W,__U,__A,__B);
3135 }
test_mm512_maskz_add_pd(__mmask8 __U,__m512d __A,__m512d __B)3136 __m512d test_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3137   // CHECK-LABEL: @test_mm512_maskz_add_pd
3138   // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3139   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3140   return _mm512_maskz_add_pd(__U,__A,__B);
3141 }
test_mm512_add_round_ps(__m512 __A,__m512 __B)3142 __m512 test_mm512_add_round_ps(__m512 __A, __m512 __B) {
3143   // CHECK-LABEL: @test_mm512_add_round_ps
3144   // CHECK: @llvm.x86.avx512.add.ps.512
3145   return _mm512_add_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3146 }
test_mm512_mask_add_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3147 __m512 test_mm512_mask_add_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3148   // CHECK-LABEL: @test_mm512_mask_add_round_ps
3149   // CHECK: @llvm.x86.avx512.add.ps.512
3150   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3151   return _mm512_mask_add_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3152 }
test_mm512_maskz_add_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3153 __m512 test_mm512_maskz_add_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3154   // CHECK-LABEL: @test_mm512_maskz_add_round_ps
3155   // CHECK: @llvm.x86.avx512.add.ps.512
3156   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3157   return _mm512_maskz_add_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3158 }
test_mm512_mask_add_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3159 __m512 test_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3160   // CHECK-LABEL: @test_mm512_mask_add_ps
3161   // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3162   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3163   return _mm512_mask_add_ps(__W,__U,__A,__B);
3164 }
test_mm512_maskz_add_ps(__mmask16 __U,__m512 __A,__m512 __B)3165 __m512 test_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3166   // CHECK-LABEL: @test_mm512_maskz_add_ps
3167   // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3168   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3169   return _mm512_maskz_add_ps(__U,__A,__B);
3170 }
test_mm_add_round_ss(__m128 __A,__m128 __B)3171 __m128 test_mm_add_round_ss(__m128 __A, __m128 __B) {
3172   // CHECK-LABEL: @test_mm_add_round_ss
3173   // CHECK: @llvm.x86.avx512.mask.add.ss.round
3174   return _mm_add_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3175 }
test_mm_mask_add_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3176 __m128 test_mm_mask_add_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3177   // CHECK-LABEL: @test_mm_mask_add_round_ss
3178   // CHECK: @llvm.x86.avx512.mask.add.ss.round
3179   return _mm_mask_add_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3180 }
test_mm_maskz_add_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3181 __m128 test_mm_maskz_add_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3182   // CHECK-LABEL: @test_mm_maskz_add_round_ss
3183   // CHECK: @llvm.x86.avx512.mask.add.ss.round
3184   return _mm_maskz_add_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3185 }
test_mm_mask_add_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3186 __m128 test_mm_mask_add_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3187   // CHECK-LABEL: @test_mm_mask_add_ss
3188   // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3189   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3190   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3191   // CHECK: fadd float %{{.*}}, %{{.*}}
3192   // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3193   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3194   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3195   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3196   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3197   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3198   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3199   return _mm_mask_add_ss(__W,__U,__A,__B);
3200 }
test_mm_maskz_add_ss(__mmask8 __U,__m128 __A,__m128 __B)3201 __m128 test_mm_maskz_add_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3202   // CHECK-LABEL: @test_mm_maskz_add_ss
3203   // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3204   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3205   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3206   // CHECK: fadd float %{{.*}}, %{{.*}}
3207   // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3208   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3209   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3210   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3211   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3212   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3213   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3214   return _mm_maskz_add_ss(__U,__A,__B);
3215 }
test_mm_add_round_sd(__m128d __A,__m128d __B)3216 __m128d test_mm_add_round_sd(__m128d __A, __m128d __B) {
3217   // CHECK-LABEL: @test_mm_add_round_sd
3218   // CHECK: @llvm.x86.avx512.mask.add.sd.round
3219   return _mm_add_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3220 }
test_mm_mask_add_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3221 __m128d test_mm_mask_add_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3222   // CHECK-LABEL: @test_mm_mask_add_round_sd
3223   // CHECK: @llvm.x86.avx512.mask.add.sd.round
3224   return _mm_mask_add_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3225 }
test_mm_maskz_add_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3226 __m128d test_mm_maskz_add_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3227   // CHECK-LABEL: @test_mm_maskz_add_round_sd
3228   // CHECK: @llvm.x86.avx512.mask.add.sd.round
3229   return _mm_maskz_add_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3230 }
test_mm_mask_add_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3231 __m128d test_mm_mask_add_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3232   // CHECK-LABEL: @test_mm_mask_add_sd
3233   // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3234   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3235   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3236   // CHECK: fadd double %{{.*}}, %{{.*}}
3237   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3238   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3239   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3240   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3241   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3242   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3243   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3244   return _mm_mask_add_sd(__W,__U,__A,__B);
3245 }
test_mm_maskz_add_sd(__mmask8 __U,__m128d __A,__m128d __B)3246 __m128d test_mm_maskz_add_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3247   // CHECK-LABEL: @test_mm_maskz_add_sd
3248   // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3249   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3250   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3251   // CHECK: fadd double %{{.*}}, %{{.*}}
3252   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3253   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3254   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3255   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3256   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3257   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3258   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3259   return _mm_maskz_add_sd(__U,__A,__B);
3260 }
test_mm512_sub_round_pd(__m512d __A,__m512d __B)3261 __m512d test_mm512_sub_round_pd(__m512d __A, __m512d __B) {
3262   // CHECK-LABEL: @test_mm512_sub_round_pd
3263   // CHECK: @llvm.x86.avx512.sub.pd.512
3264   return _mm512_sub_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3265 }
test_mm512_mask_sub_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3266 __m512d test_mm512_mask_sub_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3267   // CHECK-LABEL: @test_mm512_mask_sub_round_pd
3268   // CHECK: @llvm.x86.avx512.sub.pd.512
3269   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3270   return _mm512_mask_sub_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3271 }
test_mm512_maskz_sub_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3272 __m512d test_mm512_maskz_sub_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3273   // CHECK-LABEL: @test_mm512_maskz_sub_round_pd
3274   // CHECK: @llvm.x86.avx512.sub.pd.512
3275   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3276   return _mm512_maskz_sub_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3277 }
test_mm512_mask_sub_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3278 __m512d test_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3279   // CHECK-LABEL: @test_mm512_mask_sub_pd
3280   // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3281   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3282   return _mm512_mask_sub_pd(__W,__U,__A,__B);
3283 }
test_mm512_maskz_sub_pd(__mmask8 __U,__m512d __A,__m512d __B)3284 __m512d test_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3285   // CHECK-LABEL: @test_mm512_maskz_sub_pd
3286   // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3287   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3288   return _mm512_maskz_sub_pd(__U,__A,__B);
3289 }
test_mm512_sub_round_ps(__m512 __A,__m512 __B)3290 __m512 test_mm512_sub_round_ps(__m512 __A, __m512 __B) {
3291   // CHECK-LABEL: @test_mm512_sub_round_ps
3292   // CHECK: @llvm.x86.avx512.sub.ps.512
3293   return _mm512_sub_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3294 }
test_mm512_mask_sub_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3295 __m512 test_mm512_mask_sub_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3296   // CHECK-LABEL: @test_mm512_mask_sub_round_ps
3297   // CHECK: @llvm.x86.avx512.sub.ps.512
3298   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3299   return _mm512_mask_sub_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3300 }
test_mm512_maskz_sub_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3301 __m512 test_mm512_maskz_sub_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3302   // CHECK-LABEL: @test_mm512_maskz_sub_round_ps
3303   // CHECK: @llvm.x86.avx512.sub.ps.512
3304   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3305   return _mm512_maskz_sub_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3306 }
test_mm512_mask_sub_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3307 __m512 test_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3308   // CHECK-LABEL: @test_mm512_mask_sub_ps
3309   // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3310   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3311   return _mm512_mask_sub_ps(__W,__U,__A,__B);
3312 }
test_mm512_maskz_sub_ps(__mmask16 __U,__m512 __A,__m512 __B)3313 __m512 test_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3314   // CHECK-LABEL: @test_mm512_maskz_sub_ps
3315   // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3316   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3317   return _mm512_maskz_sub_ps(__U,__A,__B);
3318 }
test_mm_sub_round_ss(__m128 __A,__m128 __B)3319 __m128 test_mm_sub_round_ss(__m128 __A, __m128 __B) {
3320   // CHECK-LABEL: @test_mm_sub_round_ss
3321   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3322   return _mm_sub_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3323 }
test_mm_mask_sub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3324 __m128 test_mm_mask_sub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3325   // CHECK-LABEL: @test_mm_mask_sub_round_ss
3326   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3327   return _mm_mask_sub_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3328 }
test_mm_maskz_sub_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3329 __m128 test_mm_maskz_sub_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3330   // CHECK-LABEL: @test_mm_maskz_sub_round_ss
3331   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3332   return _mm_maskz_sub_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3333 }
test_mm_mask_sub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3334 __m128 test_mm_mask_sub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3335   // CHECK-LABEL: @test_mm_mask_sub_ss
3336   // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3337   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3338   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3339   // CHECK: fsub float %{{.*}}, %{{.*}}
3340   // CHECK: insertelement <4 x float> {{.*}}, i32 0
3341   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3342   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3343   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3344   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3345   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3346   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3347   return _mm_mask_sub_ss(__W,__U,__A,__B);
3348 }
test_mm_maskz_sub_ss(__mmask8 __U,__m128 __A,__m128 __B)3349 __m128 test_mm_maskz_sub_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3350   // CHECK-LABEL: @test_mm_maskz_sub_ss
3351   // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3352   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3353   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3354   // CHECK: fsub float %{{.*}}, %{{.*}}
3355   // CHECK: insertelement <4 x float> {{.*}}, i32 0
3356   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3357   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3358   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3359   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3360   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3361   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3362   return _mm_maskz_sub_ss(__U,__A,__B);
3363 }
test_mm_sub_round_sd(__m128d __A,__m128d __B)3364 __m128d test_mm_sub_round_sd(__m128d __A, __m128d __B) {
3365   // CHECK-LABEL: @test_mm_sub_round_sd
3366   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3367   return _mm_sub_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3368 }
test_mm_mask_sub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3369 __m128d test_mm_mask_sub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3370   // CHECK-LABEL: @test_mm_mask_sub_round_sd
3371   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3372   return _mm_mask_sub_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3373 }
test_mm_maskz_sub_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3374 __m128d test_mm_maskz_sub_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3375   // CHECK-LABEL: @test_mm_maskz_sub_round_sd
3376   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3377   return _mm_maskz_sub_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3378 }
test_mm_mask_sub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3379 __m128d test_mm_mask_sub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3380   // CHECK-LABEL: @test_mm_mask_sub_sd
3381   // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3382   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3383   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3384   // CHECK: fsub double %{{.*}}, %{{.*}}
3385   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3386   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3387   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3388   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3389   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3390   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3391   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3392   return _mm_mask_sub_sd(__W,__U,__A,__B);
3393 }
test_mm_maskz_sub_sd(__mmask8 __U,__m128d __A,__m128d __B)3394 __m128d test_mm_maskz_sub_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3395   // CHECK-LABEL: @test_mm_maskz_sub_sd
3396   // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3397   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3398   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3399   // CHECK: fsub double %{{.*}}, %{{.*}}
3400   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3401   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3402   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3403   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3404   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3405   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3406   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3407   return _mm_maskz_sub_sd(__U,__A,__B);
3408 }
test_mm512_mul_round_pd(__m512d __A,__m512d __B)3409 __m512d test_mm512_mul_round_pd(__m512d __A, __m512d __B) {
3410   // CHECK-LABEL: @test_mm512_mul_round_pd
3411   // CHECK: @llvm.x86.avx512.mul.pd.512
3412   return _mm512_mul_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3413 }
test_mm512_mask_mul_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3414 __m512d test_mm512_mask_mul_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3415   // CHECK-LABEL: @test_mm512_mask_mul_round_pd
3416   // CHECK: @llvm.x86.avx512.mul.pd.512
3417   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3418   return _mm512_mask_mul_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3419 }
test_mm512_maskz_mul_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3420 __m512d test_mm512_maskz_mul_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3421   // CHECK-LABEL: @test_mm512_maskz_mul_round_pd
3422   // CHECK: @llvm.x86.avx512.mul.pd.512
3423   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3424   return _mm512_maskz_mul_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3425 }
test_mm512_mask_mul_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3426 __m512d test_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3427   // CHECK-LABEL: @test_mm512_mask_mul_pd
3428   // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3429   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3430   return _mm512_mask_mul_pd(__W,__U,__A,__B);
3431 }
test_mm512_maskz_mul_pd(__mmask8 __U,__m512d __A,__m512d __B)3432 __m512d test_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3433   // CHECK-LABEL: @test_mm512_maskz_mul_pd
3434   // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3435   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3436   return _mm512_maskz_mul_pd(__U,__A,__B);
3437 }
test_mm512_mul_round_ps(__m512 __A,__m512 __B)3438 __m512 test_mm512_mul_round_ps(__m512 __A, __m512 __B) {
3439   // CHECK-LABEL: @test_mm512_mul_round_ps
3440   // CHECK: @llvm.x86.avx512.mul.ps.512
3441   return _mm512_mul_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3442 }
test_mm512_mask_mul_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3443 __m512 test_mm512_mask_mul_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3444   // CHECK-LABEL: @test_mm512_mask_mul_round_ps
3445   // CHECK: @llvm.x86.avx512.mul.ps.512
3446   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3447   return _mm512_mask_mul_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3448 }
test_mm512_maskz_mul_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3449 __m512 test_mm512_maskz_mul_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3450   // CHECK-LABEL: @test_mm512_maskz_mul_round_ps
3451   // CHECK: @llvm.x86.avx512.mul.ps.512
3452   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3453   return _mm512_maskz_mul_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3454 }
test_mm512_mask_mul_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3455 __m512 test_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3456   // CHECK-LABEL: @test_mm512_mask_mul_ps
3457   // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3458   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3459   return _mm512_mask_mul_ps(__W,__U,__A,__B);
3460 }
test_mm512_maskz_mul_ps(__mmask16 __U,__m512 __A,__m512 __B)3461 __m512 test_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3462   // CHECK-LABEL: @test_mm512_maskz_mul_ps
3463   // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3464   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3465   return _mm512_maskz_mul_ps(__U,__A,__B);
3466 }
test_mm_mul_round_ss(__m128 __A,__m128 __B)3467 __m128 test_mm_mul_round_ss(__m128 __A, __m128 __B) {
3468   // CHECK-LABEL: @test_mm_mul_round_ss
3469   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3470   return _mm_mul_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3471 }
test_mm_mask_mul_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3472 __m128 test_mm_mask_mul_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3473   // CHECK-LABEL: @test_mm_mask_mul_round_ss
3474   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3475   return _mm_mask_mul_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3476 }
test_mm_maskz_mul_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3477 __m128 test_mm_maskz_mul_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3478   // CHECK-LABEL: @test_mm_maskz_mul_round_ss
3479   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3480   return _mm_maskz_mul_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3481 }
test_mm_mask_mul_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3482 __m128 test_mm_mask_mul_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3483   // CHECK-LABEL: @test_mm_mask_mul_ss
3484   // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3485   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3486   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3487   // CHECK: fmul float %{{.*}}, %{{.*}}
3488   // CHECK: insertelement <4 x float> {{.*}}, i32 0
3489   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3490   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3491   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3492   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3493   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3494   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3495   return _mm_mask_mul_ss(__W,__U,__A,__B);
3496 }
test_mm_maskz_mul_ss(__mmask8 __U,__m128 __A,__m128 __B)3497 __m128 test_mm_maskz_mul_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3498   // CHECK-LABEL: @test_mm_maskz_mul_ss
3499   // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3500   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3501   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3502   // CHECK: fmul float %{{.*}}, %{{.*}}
3503   // CHECK: insertelement <4 x float> {{.*}}, i32 0
3504   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3505   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3506   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3507   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3508   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3509   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3510   return _mm_maskz_mul_ss(__U,__A,__B);
3511 }
test_mm_mul_round_sd(__m128d __A,__m128d __B)3512 __m128d test_mm_mul_round_sd(__m128d __A, __m128d __B) {
3513   // CHECK-LABEL: @test_mm_mul_round_sd
3514   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3515   return _mm_mul_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3516 }
test_mm_mask_mul_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3517 __m128d test_mm_mask_mul_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3518   // CHECK-LABEL: @test_mm_mask_mul_round_sd
3519   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3520   return _mm_mask_mul_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3521 }
test_mm_maskz_mul_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3522 __m128d test_mm_maskz_mul_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3523   // CHECK-LABEL: @test_mm_maskz_mul_round_sd
3524   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3525   return _mm_maskz_mul_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3526 }
test_mm_mask_mul_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3527 __m128d test_mm_mask_mul_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3528   // CHECK-LABEL: @test_mm_mask_mul_sd
3529   // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3530   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3531   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3532   // CHECK: fmul double %{{.*}}, %{{.*}}
3533   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3534   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3535   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3536   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3537   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3538   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3539   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3540   return _mm_mask_mul_sd(__W,__U,__A,__B);
3541 }
test_mm_maskz_mul_sd(__mmask8 __U,__m128d __A,__m128d __B)3542 __m128d test_mm_maskz_mul_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3543   // CHECK-LABEL: @test_mm_maskz_mul_sd
3544   // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3545   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3546   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3547   // CHECK: fmul double %{{.*}}, %{{.*}}
3548   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3549   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3550   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3551   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3552   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3553   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3554   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3555   return _mm_maskz_mul_sd(__U,__A,__B);
3556 }
test_mm512_div_round_pd(__m512d __A,__m512d __B)3557 __m512d test_mm512_div_round_pd(__m512d __A, __m512d __B) {
3558   // CHECK-LABEL: @test_mm512_div_round_pd
3559   // CHECK: @llvm.x86.avx512.div.pd.512
3560   return _mm512_div_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3561 }
test_mm512_mask_div_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3562 __m512d test_mm512_mask_div_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3563   // CHECK-LABEL: @test_mm512_mask_div_round_pd
3564   // CHECK: @llvm.x86.avx512.div.pd.512
3565   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3566   return _mm512_mask_div_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3567 }
test_mm512_maskz_div_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3568 __m512d test_mm512_maskz_div_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3569   // CHECK-LABEL: @test_mm512_maskz_div_round_pd
3570   // CHECK: @llvm.x86.avx512.div.pd.512
3571   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3572   return _mm512_maskz_div_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3573 }
test_mm512_div_pd(__m512d __a,__m512d __b)3574 __m512d test_mm512_div_pd(__m512d __a, __m512d __b) {
3575   // CHECK-LABEL: @test_mm512_div_pd
3576   // CHECK: fdiv <8 x double>
3577   return _mm512_div_pd(__a,__b);
3578 }
test_mm512_mask_div_pd(__m512d __w,__mmask8 __u,__m512d __a,__m512d __b)3579 __m512d test_mm512_mask_div_pd(__m512d __w, __mmask8 __u, __m512d __a, __m512d __b) {
3580   // CHECK-LABEL: @test_mm512_mask_div_pd
3581   // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3582   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3583   return _mm512_mask_div_pd(__w,__u,__a,__b);
3584 }
test_mm512_maskz_div_pd(__mmask8 __U,__m512d __A,__m512d __B)3585 __m512d test_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3586   // CHECK-LABEL: @test_mm512_maskz_div_pd
3587   // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3588   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3589   return _mm512_maskz_div_pd(__U,__A,__B);
3590 }
test_mm512_div_round_ps(__m512 __A,__m512 __B)3591 __m512 test_mm512_div_round_ps(__m512 __A, __m512 __B) {
3592   // CHECK-LABEL: @test_mm512_div_round_ps
3593   // CHECK: @llvm.x86.avx512.div.ps.512
3594   return _mm512_div_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3595 }
test_mm512_mask_div_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3596 __m512 test_mm512_mask_div_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3597   // CHECK-LABEL: @test_mm512_mask_div_round_ps
3598   // CHECK: @llvm.x86.avx512.div.ps.512
3599   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3600   return _mm512_mask_div_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3601 }
test_mm512_maskz_div_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3602 __m512 test_mm512_maskz_div_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3603   // CHECK-LABEL: @test_mm512_maskz_div_round_ps
3604   // CHECK: @llvm.x86.avx512.div.ps.512
3605   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3606   return _mm512_maskz_div_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3607 }
test_mm512_div_ps(__m512 __A,__m512 __B)3608 __m512 test_mm512_div_ps(__m512 __A, __m512 __B) {
3609   // CHECK-LABEL: @test_mm512_div_ps
3610   // CHECK: fdiv <16 x float>
3611   return _mm512_div_ps(__A,__B);
3612 }
test_mm512_mask_div_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3613 __m512 test_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3614   // CHECK-LABEL: @test_mm512_mask_div_ps
3615   // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3616   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3617   return _mm512_mask_div_ps(__W,__U,__A,__B);
3618 }
test_mm512_maskz_div_ps(__mmask16 __U,__m512 __A,__m512 __B)3619 __m512 test_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3620   // CHECK-LABEL: @test_mm512_maskz_div_ps
3621   // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3622   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3623   return _mm512_maskz_div_ps(__U,__A,__B);
3624 }
test_mm_div_round_ss(__m128 __A,__m128 __B)3625 __m128 test_mm_div_round_ss(__m128 __A, __m128 __B) {
3626   // CHECK-LABEL: @test_mm_div_round_ss
3627   // CHECK: @llvm.x86.avx512.mask.div.ss.round
3628   return _mm_div_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3629 }
test_mm_mask_div_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3630 __m128 test_mm_mask_div_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3631   // CHECK-LABEL: @test_mm_mask_div_round_ss
3632   // CHECK: @llvm.x86.avx512.mask.div.ss.round
3633   return _mm_mask_div_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3634 }
test_mm_maskz_div_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3635 __m128 test_mm_maskz_div_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3636   // CHECK-LABEL: @test_mm_maskz_div_round_ss
3637   // CHECK: @llvm.x86.avx512.mask.div.ss.round
3638   return _mm_maskz_div_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3639 }
test_mm_mask_div_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3640 __m128 test_mm_mask_div_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3641   // CHECK-LABEL: @test_mm_mask_div_ss
3642   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3643   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3644   // CHECK: fdiv float %{{.*}}, %{{.*}}
3645   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3646   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3647   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3648   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3649   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3650   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3651   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3652   return _mm_mask_div_ss(__W,__U,__A,__B);
3653 }
test_mm_maskz_div_ss(__mmask8 __U,__m128 __A,__m128 __B)3654 __m128 test_mm_maskz_div_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3655   // CHECK-LABEL: @test_mm_maskz_div_ss
3656   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3657   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3658   // CHECK: fdiv float %{{.*}}, %{{.*}}
3659   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3660   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3661   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3662   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3663   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3664   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3665   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3666   return _mm_maskz_div_ss(__U,__A,__B);
3667 }
test_mm_div_round_sd(__m128d __A,__m128d __B)3668 __m128d test_mm_div_round_sd(__m128d __A, __m128d __B) {
3669   // CHECK-LABEL: @test_mm_div_round_sd
3670   // CHECK: @llvm.x86.avx512.mask.div.sd.round
3671   return _mm_div_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3672 }
test_mm_mask_div_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3673 __m128d test_mm_mask_div_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3674   // CHECK-LABEL: @test_mm_mask_div_round_sd
3675   // CHECK: @llvm.x86.avx512.mask.div.sd.round
3676   return _mm_mask_div_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3677 }
test_mm_maskz_div_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3678 __m128d test_mm_maskz_div_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3679   // CHECK-LABEL: @test_mm_maskz_div_round_sd
3680   // CHECK: @llvm.x86.avx512.mask.div.sd.round
3681   return _mm_maskz_div_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3682 }
test_mm_mask_div_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3683 __m128d test_mm_mask_div_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3684   // CHECK-LABEL: @test_mm_mask_div_sd
3685   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3686   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3687   // CHECK: fdiv double %{{.*}}, %{{.*}}
3688   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3689   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3690   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3691   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3692   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3693   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3694   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3695   return _mm_mask_div_sd(__W,__U,__A,__B);
3696 }
test_mm_maskz_div_sd(__mmask8 __U,__m128d __A,__m128d __B)3697 __m128d test_mm_maskz_div_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3698   // CHECK-LABEL: @test_mm_maskz_div_sd
3699   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3700   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3701   // CHECK: fdiv double %{{.*}}, %{{.*}}
3702   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3703   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3704   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3705   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3706   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3707   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3708   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3709   return _mm_maskz_div_sd(__U,__A,__B);
3710 }
test_mm_max_round_ss(__m128 __A,__m128 __B)3711 __m128 test_mm_max_round_ss(__m128 __A, __m128 __B) {
3712   // CHECK-LABEL: @test_mm_max_round_ss
3713   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3714   return _mm_max_round_ss(__A,__B,0x08);
3715 }
test_mm_mask_max_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3716 __m128 test_mm_mask_max_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3717   // CHECK-LABEL: @test_mm_mask_max_round_ss
3718   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3719   return _mm_mask_max_round_ss(__W,__U,__A,__B,0x08);
3720 }
test_mm_maskz_max_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3721 __m128 test_mm_maskz_max_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3722   // CHECK-LABEL: @test_mm_maskz_max_round_ss
3723   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3724   return _mm_maskz_max_round_ss(__U,__A,__B,0x08);
3725 }
test_mm_mask_max_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3726 __m128 test_mm_mask_max_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3727   // CHECK-LABEL: @test_mm_mask_max_ss
3728   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3729   return _mm_mask_max_ss(__W,__U,__A,__B);
3730 }
test_mm_maskz_max_ss(__mmask8 __U,__m128 __A,__m128 __B)3731 __m128 test_mm_maskz_max_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3732   // CHECK-LABEL: @test_mm_maskz_max_ss
3733   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3734   return _mm_maskz_max_ss(__U,__A,__B);
3735 }
test_mm_max_round_sd(__m128d __A,__m128d __B)3736 __m128d test_mm_max_round_sd(__m128d __A, __m128d __B) {
3737   // CHECK-LABEL: @test_mm_max_round_sd
3738   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3739   return _mm_max_round_sd(__A,__B,0x08);
3740 }
test_mm_mask_max_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3741 __m128d test_mm_mask_max_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3742   // CHECK-LABEL: @test_mm_mask_max_round_sd
3743   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3744   return _mm_mask_max_round_sd(__W,__U,__A,__B,0x08);
3745 }
test_mm_maskz_max_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3746 __m128d test_mm_maskz_max_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3747   // CHECK-LABEL: @test_mm_maskz_max_round_sd
3748   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3749   return _mm_maskz_max_round_sd(__U,__A,__B,0x08);
3750 }
test_mm_mask_max_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3751 __m128d test_mm_mask_max_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3752   // CHECK-LABEL: @test_mm_mask_max_sd
3753   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3754   return _mm_mask_max_sd(__W,__U,__A,__B);
3755 }
test_mm_maskz_max_sd(__mmask8 __U,__m128d __A,__m128d __B)3756 __m128d test_mm_maskz_max_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3757   // CHECK-LABEL: @test_mm_maskz_max_sd
3758   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3759   return _mm_maskz_max_sd(__U,__A,__B);
3760 }
test_mm_min_round_ss(__m128 __A,__m128 __B)3761 __m128 test_mm_min_round_ss(__m128 __A, __m128 __B) {
3762   // CHECK-LABEL: @test_mm_min_round_ss
3763   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3764   return _mm_min_round_ss(__A,__B,0x08);
3765 }
test_mm_mask_min_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3766 __m128 test_mm_mask_min_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3767   // CHECK-LABEL: @test_mm_mask_min_round_ss
3768   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3769   return _mm_mask_min_round_ss(__W,__U,__A,__B,0x08);
3770 }
test_mm_maskz_min_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3771 __m128 test_mm_maskz_min_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3772   // CHECK-LABEL: @test_mm_maskz_min_round_ss
3773   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3774   return _mm_maskz_min_round_ss(__U,__A,__B,0x08);
3775 }
test_mm_mask_min_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3776 __m128 test_mm_mask_min_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3777   // CHECK-LABEL: @test_mm_mask_min_ss
3778   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3779   return _mm_mask_min_ss(__W,__U,__A,__B);
3780 }
test_mm_maskz_min_ss(__mmask8 __U,__m128 __A,__m128 __B)3781 __m128 test_mm_maskz_min_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3782   // CHECK-LABEL: @test_mm_maskz_min_ss
3783   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3784   return _mm_maskz_min_ss(__U,__A,__B);
3785 }
test_mm_min_round_sd(__m128d __A,__m128d __B)3786 __m128d test_mm_min_round_sd(__m128d __A, __m128d __B) {
3787   // CHECK-LABEL: @test_mm_min_round_sd
3788   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3789   return _mm_min_round_sd(__A,__B,0x08);
3790 }
test_mm_mask_min_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3791 __m128d test_mm_mask_min_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3792   // CHECK-LABEL: @test_mm_mask_min_round_sd
3793   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3794   return _mm_mask_min_round_sd(__W,__U,__A,__B,0x08);
3795 }
test_mm_maskz_min_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3796 __m128d test_mm_maskz_min_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3797   // CHECK-LABEL: @test_mm_maskz_min_round_sd
3798   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3799   return _mm_maskz_min_round_sd(__U,__A,__B,0x08);
3800 }
test_mm_mask_min_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3801 __m128d test_mm_mask_min_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3802   // CHECK-LABEL: @test_mm_mask_min_sd
3803   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3804   return _mm_mask_min_sd(__W,__U,__A,__B);
3805 }
test_mm_maskz_min_sd(__mmask8 __U,__m128d __A,__m128d __B)3806 __m128d test_mm_maskz_min_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3807   // CHECK-LABEL: @test_mm_maskz_min_sd
3808   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3809   return _mm_maskz_min_sd(__U,__A,__B);
3810 }
3811 
test_mm512_undefined()3812 __m512 test_mm512_undefined() {
3813   // CHECK-LABEL: @test_mm512_undefined
3814   // CHECK: ret <16 x float> zeroinitializer
3815   return _mm512_undefined();
3816 }
3817 
test_mm512_undefined_ps()3818 __m512 test_mm512_undefined_ps() {
3819   // CHECK-LABEL: @test_mm512_undefined_ps
3820   // CHECK: ret <16 x float> zeroinitializer
3821   return _mm512_undefined_ps();
3822 }
3823 
test_mm512_undefined_pd()3824 __m512d test_mm512_undefined_pd() {
3825   // CHECK-LABEL: @test_mm512_undefined_pd
3826   // CHECK: ret <8 x double> zeroinitializer
3827   return _mm512_undefined_pd();
3828 }
3829 
test_mm512_undefined_epi32()3830 __m512i test_mm512_undefined_epi32() {
3831   // CHECK-LABEL: @test_mm512_undefined_epi32
3832   // CHECK: ret <8 x i64> zeroinitializer
3833   return _mm512_undefined_epi32();
3834 }
3835 
test_mm512_cvtepi8_epi32(__m128i __A)3836 __m512i test_mm512_cvtepi8_epi32(__m128i __A) {
3837   // CHECK-LABEL: @test_mm512_cvtepi8_epi32
3838   // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3839   return _mm512_cvtepi8_epi32(__A);
3840 }
3841 
test_mm512_mask_cvtepi8_epi32(__m512i __W,__mmask16 __U,__m128i __A)3842 __m512i test_mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
3843   // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi32
3844   // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3845   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3846   return _mm512_mask_cvtepi8_epi32(__W, __U, __A);
3847 }
3848 
test_mm512_maskz_cvtepi8_epi32(__mmask16 __U,__m128i __A)3849 __m512i test_mm512_maskz_cvtepi8_epi32(__mmask16 __U, __m128i __A) {
3850   // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi32
3851   // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3852   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3853   return _mm512_maskz_cvtepi8_epi32(__U, __A);
3854 }
3855 
test_mm512_cvtepi8_epi64(__m128i __A)3856 __m512i test_mm512_cvtepi8_epi64(__m128i __A) {
3857   // CHECK-LABEL: @test_mm512_cvtepi8_epi64
3858   // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3859   return _mm512_cvtepi8_epi64(__A);
3860 }
3861 
test_mm512_mask_cvtepi8_epi64(__m512i __W,__mmask8 __U,__m128i __A)3862 __m512i test_mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3863   // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi64
3864   // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3865   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3866   return _mm512_mask_cvtepi8_epi64(__W, __U, __A);
3867 }
3868 
test_mm512_maskz_cvtepi8_epi64(__mmask8 __U,__m128i __A)3869 __m512i test_mm512_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
3870   // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi64
3871   // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3872   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3873   return _mm512_maskz_cvtepi8_epi64(__U, __A);
3874 }
3875 
test_mm512_cvtepi32_epi64(__m256i __X)3876 __m512i test_mm512_cvtepi32_epi64(__m256i __X) {
3877   // CHECK-LABEL: @test_mm512_cvtepi32_epi64
3878   // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3879   return _mm512_cvtepi32_epi64(__X);
3880 }
3881 
test_mm512_mask_cvtepi32_epi64(__m512i __W,__mmask8 __U,__m256i __X)3882 __m512i test_mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
3883   // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi64
3884   // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3885   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3886   return _mm512_mask_cvtepi32_epi64(__W, __U, __X);
3887 }
3888 
test_mm512_maskz_cvtepi32_epi64(__mmask8 __U,__m256i __X)3889 __m512i test_mm512_maskz_cvtepi32_epi64(__mmask8 __U, __m256i __X) {
3890   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi64
3891   // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3892   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3893   return _mm512_maskz_cvtepi32_epi64(__U, __X);
3894 }
3895 
test_mm512_cvtepi16_epi32(__m256i __A)3896 __m512i test_mm512_cvtepi16_epi32(__m256i __A) {
3897   // CHECK-LABEL: @test_mm512_cvtepi16_epi32
3898   // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3899   return _mm512_cvtepi16_epi32(__A);
3900 }
3901 
test_mm512_mask_cvtepi16_epi32(__m512i __W,__mmask16 __U,__m256i __A)3902 __m512i test_mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
3903   // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi32
3904   // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3905   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3906   return _mm512_mask_cvtepi16_epi32(__W, __U, __A);
3907 }
3908 
test_mm512_maskz_cvtepi16_epi32(__mmask16 __U,__m256i __A)3909 __m512i test_mm512_maskz_cvtepi16_epi32(__mmask16 __U, __m256i __A) {
3910   // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi32
3911   // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3912   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3913   return _mm512_maskz_cvtepi16_epi32(__U, __A);
3914 }
3915 
test_mm512_cvtepi16_epi64(__m128i __A)3916 __m512i test_mm512_cvtepi16_epi64(__m128i __A) {
3917   // CHECK-LABEL: @test_mm512_cvtepi16_epi64
3918   // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3919   return _mm512_cvtepi16_epi64(__A);
3920 }
3921 
test_mm512_mask_cvtepi16_epi64(__m512i __W,__mmask8 __U,__m128i __A)3922 __m512i test_mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3923   // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi64
3924   // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3925   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3926   return _mm512_mask_cvtepi16_epi64(__W, __U, __A);
3927 }
3928 
test_mm512_maskz_cvtepi16_epi64(__mmask8 __U,__m128i __A)3929 __m512i test_mm512_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
3930   // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi64
3931   // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3932   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3933   return _mm512_maskz_cvtepi16_epi64(__U, __A);
3934 }
3935 
test_mm512_cvtepu8_epi32(__m128i __A)3936 __m512i test_mm512_cvtepu8_epi32(__m128i __A) {
3937   // CHECK-LABEL: @test_mm512_cvtepu8_epi32
3938   // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3939   return _mm512_cvtepu8_epi32(__A);
3940 }
3941 
test_mm512_mask_cvtepu8_epi32(__m512i __W,__mmask16 __U,__m128i __A)3942 __m512i test_mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
3943   // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi32
3944   // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3945   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3946   return _mm512_mask_cvtepu8_epi32(__W, __U, __A);
3947 }
3948 
test_mm512_maskz_cvtepu8_epi32(__mmask16 __U,__m128i __A)3949 __m512i test_mm512_maskz_cvtepu8_epi32(__mmask16 __U, __m128i __A) {
3950   // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi32
3951   // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3952   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3953   return _mm512_maskz_cvtepu8_epi32(__U, __A);
3954 }
3955 
test_mm512_cvtepu8_epi64(__m128i __A)3956 __m512i test_mm512_cvtepu8_epi64(__m128i __A) {
3957   // CHECK-LABEL: @test_mm512_cvtepu8_epi64
3958   // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3959   return _mm512_cvtepu8_epi64(__A);
3960 }
3961 
test_mm512_mask_cvtepu8_epi64(__m512i __W,__mmask8 __U,__m128i __A)3962 __m512i test_mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3963   // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi64
3964   // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3965   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3966   return _mm512_mask_cvtepu8_epi64(__W, __U, __A);
3967 }
3968 
test_mm512_maskz_cvtepu8_epi64(__mmask8 __U,__m128i __A)3969 __m512i test_mm512_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
3970   // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi64
3971   // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3972   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3973   return _mm512_maskz_cvtepu8_epi64(__U, __A);
3974 }
3975 
test_mm512_cvtepu32_epi64(__m256i __X)3976 __m512i test_mm512_cvtepu32_epi64(__m256i __X) {
3977   // CHECK-LABEL: @test_mm512_cvtepu32_epi64
3978   // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3979   return _mm512_cvtepu32_epi64(__X);
3980 }
3981 
test_mm512_mask_cvtepu32_epi64(__m512i __W,__mmask8 __U,__m256i __X)3982 __m512i test_mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
3983   // CHECK-LABEL: @test_mm512_mask_cvtepu32_epi64
3984   // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3985   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3986   return _mm512_mask_cvtepu32_epi64(__W, __U, __X);
3987 }
3988 
test_mm512_maskz_cvtepu32_epi64(__mmask8 __U,__m256i __X)3989 __m512i test_mm512_maskz_cvtepu32_epi64(__mmask8 __U, __m256i __X) {
3990   // CHECK-LABEL: @test_mm512_maskz_cvtepu32_epi64
3991   // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3992   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3993   return _mm512_maskz_cvtepu32_epi64(__U, __X);
3994 }
3995 
test_mm512_cvtepu16_epi32(__m256i __A)3996 __m512i test_mm512_cvtepu16_epi32(__m256i __A) {
3997   // CHECK-LABEL: @test_mm512_cvtepu16_epi32
3998   // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3999   return _mm512_cvtepu16_epi32(__A);
4000 }
4001 
test_mm512_mask_cvtepu16_epi32(__m512i __W,__mmask16 __U,__m256i __A)4002 __m512i test_mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
4003   // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi32
4004   // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
4005   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4006   return _mm512_mask_cvtepu16_epi32(__W, __U, __A);
4007 }
4008 
test_mm512_maskz_cvtepu16_epi32(__mmask16 __U,__m256i __A)4009 __m512i test_mm512_maskz_cvtepu16_epi32(__mmask16 __U, __m256i __A) {
4010   // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi32
4011   // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
4012   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4013   return _mm512_maskz_cvtepu16_epi32(__U, __A);
4014 }
4015 
test_mm512_cvtepu16_epi64(__m128i __A)4016 __m512i test_mm512_cvtepu16_epi64(__m128i __A) {
4017   // CHECK-LABEL: @test_mm512_cvtepu16_epi64
4018   // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
4019   return _mm512_cvtepu16_epi64(__A);
4020 }
4021 
test_mm512_mask_cvtepu16_epi64(__m512i __W,__mmask8 __U,__m128i __A)4022 __m512i test_mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
4023   // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi64
4024   // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
4025   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4026   return _mm512_mask_cvtepu16_epi64(__W, __U, __A);
4027 }
4028 
test_mm512_maskz_cvtepu16_epi64(__mmask8 __U,__m128i __A)4029 __m512i test_mm512_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
4030   // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi64
4031   // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
4032   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4033   return _mm512_maskz_cvtepu16_epi64(__U, __A);
4034 }
4035 
4036 
test_mm512_rol_epi32(__m512i __A)4037 __m512i test_mm512_rol_epi32(__m512i __A) {
4038   // CHECK-LABEL: @test_mm512_rol_epi32
4039   // CHECK: @llvm.fshl.v16i32
4040   return _mm512_rol_epi32(__A, 5);
4041 }
4042 
test_mm512_mask_rol_epi32(__m512i __W,__mmask16 __U,__m512i __A)4043 __m512i test_mm512_mask_rol_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4044   // CHECK-LABEL: @test_mm512_mask_rol_epi32
4045   // CHECK: @llvm.fshl.v16i32
4046   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4047   return _mm512_mask_rol_epi32(__W, __U, __A, 5);
4048 }
4049 
test_mm512_maskz_rol_epi32(__mmask16 __U,__m512i __A)4050 __m512i test_mm512_maskz_rol_epi32(__mmask16 __U, __m512i __A) {
4051   // CHECK-LABEL: @test_mm512_maskz_rol_epi32
4052   // CHECK: @llvm.fshl.v16i32
4053   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4054   return _mm512_maskz_rol_epi32(__U, __A, 5);
4055 }
4056 
test_mm512_rol_epi64(__m512i __A)4057 __m512i test_mm512_rol_epi64(__m512i __A) {
4058   // CHECK-LABEL: @test_mm512_rol_epi64
4059   // CHECK: @llvm.fshl.v8i64
4060   return _mm512_rol_epi64(__A, 5);
4061 }
4062 
test_mm512_mask_rol_epi64(__m512i __W,__mmask8 __U,__m512i __A)4063 __m512i test_mm512_mask_rol_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4064   // CHECK-LABEL: @test_mm512_mask_rol_epi64
4065   // CHECK: @llvm.fshl.v8i64
4066   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4067   return _mm512_mask_rol_epi64(__W, __U, __A, 5);
4068 }
4069 
test_mm512_maskz_rol_epi64(__mmask8 __U,__m512i __A)4070 __m512i test_mm512_maskz_rol_epi64(__mmask8 __U, __m512i __A) {
4071   // CHECK-LABEL: @test_mm512_maskz_rol_epi64
4072   // CHECK: @llvm.fshl.v8i64
4073   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4074   return _mm512_maskz_rol_epi64(__U, __A, 5);
4075 }
4076 
test_mm512_rolv_epi32(__m512i __A,__m512i __B)4077 __m512i test_mm512_rolv_epi32(__m512i __A, __m512i __B) {
4078   // CHECK-LABEL: @test_mm512_rolv_epi32
4079   // CHECK: @llvm.fshl.v16i32
4080   return _mm512_rolv_epi32(__A, __B);
4081 }
4082 
test_mm512_mask_rolv_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4083 __m512i test_mm512_mask_rolv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4084   // CHECK-LABEL: @test_mm512_mask_rolv_epi32
4085   // CHECK: @llvm.fshl.v16i32
4086   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4087   return _mm512_mask_rolv_epi32(__W, __U, __A, __B);
4088 }
4089 
test_mm512_maskz_rolv_epi32(__mmask16 __U,__m512i __A,__m512i __B)4090 __m512i test_mm512_maskz_rolv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
4091   // CHECK-LABEL: @test_mm512_maskz_rolv_epi32
4092   // CHECK: @llvm.fshl.v16i32
4093   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4094   return _mm512_maskz_rolv_epi32(__U, __A, __B);
4095 }
4096 
test_mm512_rolv_epi64(__m512i __A,__m512i __B)4097 __m512i test_mm512_rolv_epi64(__m512i __A, __m512i __B) {
4098   // CHECK-LABEL: @test_mm512_rolv_epi64
4099   // CHECK: @llvm.fshl.v8i64
4100   return _mm512_rolv_epi64(__A, __B);
4101 }
4102 
test_mm512_mask_rolv_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)4103 __m512i test_mm512_mask_rolv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
4104   // CHECK-LABEL: @test_mm512_mask_rolv_epi64
4105   // CHECK: @llvm.fshl.v8i64
4106   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4107   return _mm512_mask_rolv_epi64(__W, __U, __A, __B);
4108 }
4109 
test_mm512_maskz_rolv_epi64(__mmask8 __U,__m512i __A,__m512i __B)4110 __m512i test_mm512_maskz_rolv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
4111   // CHECK-LABEL: @test_mm512_maskz_rolv_epi64
4112   // CHECK: @llvm.fshl.v8i64
4113   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4114   return _mm512_maskz_rolv_epi64(__U, __A, __B);
4115 }
4116 
test_mm512_ror_epi32(__m512i __A)4117 __m512i test_mm512_ror_epi32(__m512i __A) {
4118   // CHECK-LABEL: @test_mm512_ror_epi32
4119   // CHECK: @llvm.fshr.v16i32
4120   return _mm512_ror_epi32(__A, 5);
4121 }
4122 
test_mm512_mask_ror_epi32(__m512i __W,__mmask16 __U,__m512i __A)4123 __m512i test_mm512_mask_ror_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4124   // CHECK-LABEL: @test_mm512_mask_ror_epi32
4125   // CHECK: @llvm.fshr.v16i32
4126   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4127   return _mm512_mask_ror_epi32(__W, __U, __A, 5);
4128 }
4129 
test_mm512_maskz_ror_epi32(__mmask16 __U,__m512i __A)4130 __m512i test_mm512_maskz_ror_epi32(__mmask16 __U, __m512i __A) {
4131   // CHECK-LABEL: @test_mm512_maskz_ror_epi32
4132   // CHECK: @llvm.fshr.v16i32
4133   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4134   return _mm512_maskz_ror_epi32(__U, __A, 5);
4135 }
4136 
test_mm512_ror_epi64(__m512i __A)4137 __m512i test_mm512_ror_epi64(__m512i __A) {
4138   // CHECK-LABEL: @test_mm512_ror_epi64
4139   // CHECK: @llvm.fshr.v8i64
4140   return _mm512_ror_epi64(__A, 5);
4141 }
4142 
test_mm512_mask_ror_epi64(__m512i __W,__mmask8 __U,__m512i __A)4143 __m512i test_mm512_mask_ror_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4144   // CHECK-LABEL: @test_mm512_mask_ror_epi64
4145   // CHECK: @llvm.fshr.v8i64
4146   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4147   return _mm512_mask_ror_epi64(__W, __U, __A, 5);
4148 }
4149 
test_mm512_maskz_ror_epi64(__mmask8 __U,__m512i __A)4150 __m512i test_mm512_maskz_ror_epi64(__mmask8 __U, __m512i __A) {
4151   // CHECK-LABEL: @test_mm512_maskz_ror_epi64
4152   // CHECK: @llvm.fshr.v8i64
4153   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4154   return _mm512_maskz_ror_epi64(__U, __A, 5);
4155 }
4156 
4157 
test_mm512_rorv_epi32(__m512i __A,__m512i __B)4158 __m512i test_mm512_rorv_epi32(__m512i __A, __m512i __B) {
4159   // CHECK-LABEL: @test_mm512_rorv_epi32
4160   // CHECK: @llvm.fshr.v16i32
4161   return _mm512_rorv_epi32(__A, __B);
4162 }
4163 
test_mm512_mask_rorv_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4164 __m512i test_mm512_mask_rorv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4165   // CHECK-LABEL: @test_mm512_mask_rorv_epi32
4166   // CHECK: @llvm.fshr.v16i32
4167   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4168   return _mm512_mask_rorv_epi32(__W, __U, __A, __B);
4169 }
4170 
test_mm512_maskz_rorv_epi32(__mmask16 __U,__m512i __A,__m512i __B)4171 __m512i test_mm512_maskz_rorv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
4172   // CHECK-LABEL: @test_mm512_maskz_rorv_epi32
4173   // CHECK: @llvm.fshr.v16i32
4174   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4175   return _mm512_maskz_rorv_epi32(__U, __A, __B);
4176 }
4177 
test_mm512_rorv_epi64(__m512i __A,__m512i __B)4178 __m512i test_mm512_rorv_epi64(__m512i __A, __m512i __B) {
4179   // CHECK-LABEL: @test_mm512_rorv_epi64
4180   // CHECK: @llvm.fshr.v8i64
4181   return _mm512_rorv_epi64(__A, __B);
4182 }
4183 
test_mm512_mask_rorv_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)4184 __m512i test_mm512_mask_rorv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
4185   // CHECK-LABEL: @test_mm512_mask_rorv_epi64
4186   // CHECK: @llvm.fshr.v8i64
4187   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4188   return _mm512_mask_rorv_epi64(__W, __U, __A, __B);
4189 }
4190 
test_mm512_maskz_rorv_epi64(__mmask8 __U,__m512i __A,__m512i __B)4191 __m512i test_mm512_maskz_rorv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
4192   // CHECK-LABEL: @test_mm512_maskz_rorv_epi64
4193   // CHECK: @llvm.fshr.v8i64
4194   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4195   return _mm512_maskz_rorv_epi64(__U, __A, __B);
4196 }
4197 
test_mm512_slli_epi32(__m512i __A)4198 __m512i test_mm512_slli_epi32(__m512i __A) {
4199   // CHECK-LABEL: @test_mm512_slli_epi32
4200   // CHECK: @llvm.x86.avx512.pslli.d.512
4201   return _mm512_slli_epi32(__A, 5);
4202 }
4203 
test_mm512_slli_epi32_2(__m512i __A,int __B)4204 __m512i test_mm512_slli_epi32_2(__m512i __A, int __B) {
4205   // CHECK-LABEL: @test_mm512_slli_epi32_2
4206   // CHECK: @llvm.x86.avx512.pslli.d.512
4207   return _mm512_slli_epi32(__A, __B);
4208 }
4209 
test_mm512_mask_slli_epi32(__m512i __W,__mmask16 __U,__m512i __A)4210 __m512i test_mm512_mask_slli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4211   // CHECK-LABEL: @test_mm512_mask_slli_epi32
4212   // CHECK: @llvm.x86.avx512.pslli.d.512
4213   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4214   return _mm512_mask_slli_epi32(__W, __U, __A, 5);
4215 }
4216 
test_mm512_mask_slli_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,int __B)4217 __m512i test_mm512_mask_slli_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, int __B) {
4218   // CHECK-LABEL: @test_mm512_mask_slli_epi32_2
4219   // CHECK: @llvm.x86.avx512.pslli.d.512
4220   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4221   return _mm512_mask_slli_epi32(__W, __U, __A, __B);
4222 }
4223 
test_mm512_maskz_slli_epi32(__mmask16 __U,__m512i __A)4224 __m512i test_mm512_maskz_slli_epi32(__mmask16 __U, __m512i __A) {
4225   // CHECK-LABEL: @test_mm512_maskz_slli_epi32
4226   // CHECK: @llvm.x86.avx512.pslli.d.512
4227   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4228   return _mm512_maskz_slli_epi32(__U, __A, 5);
4229 }
4230 
test_mm512_maskz_slli_epi32_2(__mmask16 __U,__m512i __A,int __B)4231 __m512i test_mm512_maskz_slli_epi32_2(__mmask16 __U, __m512i __A, int __B) {
4232   // CHECK-LABEL: @test_mm512_maskz_slli_epi32_2
4233   // CHECK: @llvm.x86.avx512.pslli.d.512
4234   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4235   return _mm512_maskz_slli_epi32(__U, __A, __B);
4236 }
4237 
test_mm512_slli_epi64(__m512i __A)4238 __m512i test_mm512_slli_epi64(__m512i __A) {
4239   // CHECK-LABEL: @test_mm512_slli_epi64
4240   // CHECK: @llvm.x86.avx512.pslli.q.512
4241   return _mm512_slli_epi64(__A, 5);
4242 }
4243 
test_mm512_slli_epi64_2(__m512i __A,int __B)4244 __m512i test_mm512_slli_epi64_2(__m512i __A, int __B) {
4245   // CHECK-LABEL: @test_mm512_slli_epi64_2
4246   // CHECK: @llvm.x86.avx512.pslli.q.512
4247   return _mm512_slli_epi64(__A, __B);
4248 }
4249 
test_mm512_mask_slli_epi64(__m512i __W,__mmask8 __U,__m512i __A)4250 __m512i test_mm512_mask_slli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4251   // CHECK-LABEL: @test_mm512_mask_slli_epi64
4252   // CHECK: @llvm.x86.avx512.pslli.q.512
4253   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4254   return _mm512_mask_slli_epi64(__W, __U, __A, 5);
4255 }
4256 
test_mm512_mask_slli_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,int __B)4257 __m512i test_mm512_mask_slli_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, int __B) {
4258   // CHECK-LABEL: @test_mm512_mask_slli_epi64_2
4259   // CHECK: @llvm.x86.avx512.pslli.q.512
4260   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4261   return _mm512_mask_slli_epi64(__W, __U, __A, __B);
4262 }
4263 
test_mm512_maskz_slli_epi64(__mmask8 __U,__m512i __A)4264 __m512i test_mm512_maskz_slli_epi64(__mmask8 __U, __m512i __A) {
4265   // CHECK-LABEL: @test_mm512_maskz_slli_epi64
4266   // CHECK: @llvm.x86.avx512.pslli.q.512
4267   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4268   return _mm512_maskz_slli_epi64(__U, __A, 5);
4269 }
4270 
test_mm512_maskz_slli_epi64_2(__mmask8 __U,__m512i __A,int __B)4271 __m512i test_mm512_maskz_slli_epi64_2(__mmask8 __U, __m512i __A, int __B) {
4272   // CHECK-LABEL: @test_mm512_maskz_slli_epi64_2
4273   // CHECK: @llvm.x86.avx512.pslli.q.512
4274   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4275   return _mm512_maskz_slli_epi64(__U, __A, __B);
4276 }
4277 
test_mm512_srli_epi32(__m512i __A)4278 __m512i test_mm512_srli_epi32(__m512i __A) {
4279   // CHECK-LABEL: @test_mm512_srli_epi32
4280   // CHECK: @llvm.x86.avx512.psrli.d.512
4281   return _mm512_srli_epi32(__A, 5);
4282 }
4283 
test_mm512_srli_epi32_2(__m512i __A,int __B)4284 __m512i test_mm512_srli_epi32_2(__m512i __A, int __B) {
4285   // CHECK-LABEL: @test_mm512_srli_epi32_2
4286   // CHECK: @llvm.x86.avx512.psrli.d.512
4287   return _mm512_srli_epi32(__A, __B);
4288 }
4289 
test_mm512_mask_srli_epi32(__m512i __W,__mmask16 __U,__m512i __A)4290 __m512i test_mm512_mask_srli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4291   // CHECK-LABEL: @test_mm512_mask_srli_epi32
4292   // CHECK: @llvm.x86.avx512.psrli.d.512
4293   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4294   return _mm512_mask_srli_epi32(__W, __U, __A, 5);
4295 }
4296 
test_mm512_mask_srli_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,int __B)4297 __m512i test_mm512_mask_srli_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, int __B) {
4298   // CHECK-LABEL: @test_mm512_mask_srli_epi32_2
4299   // CHECK: @llvm.x86.avx512.psrli.d.512
4300   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4301   return _mm512_mask_srli_epi32(__W, __U, __A, __B);
4302 }
4303 
test_mm512_maskz_srli_epi32(__mmask16 __U,__m512i __A)4304 __m512i test_mm512_maskz_srli_epi32(__mmask16 __U, __m512i __A) {
4305   // CHECK-LABEL: @test_mm512_maskz_srli_epi32
4306   // CHECK: @llvm.x86.avx512.psrli.d.512
4307   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4308   return _mm512_maskz_srli_epi32(__U, __A, 5);
4309 }
4310 
test_mm512_maskz_srli_epi32_2(__mmask16 __U,__m512i __A,int __B)4311 __m512i test_mm512_maskz_srli_epi32_2(__mmask16 __U, __m512i __A, int __B) {
4312   // CHECK-LABEL: @test_mm512_maskz_srli_epi32_2
4313   // CHECK: @llvm.x86.avx512.psrli.d.512
4314   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4315   return _mm512_maskz_srli_epi32(__U, __A, __B);
4316 }
4317 
test_mm512_srli_epi64(__m512i __A)4318 __m512i test_mm512_srli_epi64(__m512i __A) {
4319   // CHECK-LABEL: @test_mm512_srli_epi64
4320   // CHECK: @llvm.x86.avx512.psrli.q.512
4321   return _mm512_srli_epi64(__A, 5);
4322 }
4323 
test_mm512_srli_epi64_2(__m512i __A,int __B)4324 __m512i test_mm512_srli_epi64_2(__m512i __A, int __B) {
4325   // CHECK-LABEL: @test_mm512_srli_epi64_2
4326   // CHECK: @llvm.x86.avx512.psrli.q.512
4327   return _mm512_srli_epi64(__A, __B);
4328 }
4329 
test_mm512_mask_srli_epi64(__m512i __W,__mmask8 __U,__m512i __A)4330 __m512i test_mm512_mask_srli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4331   // CHECK-LABEL: @test_mm512_mask_srli_epi64
4332   // CHECK: @llvm.x86.avx512.psrli.q.512
4333   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4334   return _mm512_mask_srli_epi64(__W, __U, __A, 5);
4335 }
4336 
test_mm512_mask_srli_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,int __B)4337 __m512i test_mm512_mask_srli_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, int __B) {
4338   // CHECK-LABEL: @test_mm512_mask_srli_epi64_2
4339   // CHECK: @llvm.x86.avx512.psrli.q.512
4340   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4341   return _mm512_mask_srli_epi64(__W, __U, __A, __B);
4342 }
4343 
test_mm512_maskz_srli_epi64(__mmask8 __U,__m512i __A)4344 __m512i test_mm512_maskz_srli_epi64(__mmask8 __U, __m512i __A) {
4345   // CHECK-LABEL: @test_mm512_maskz_srli_epi64
4346   // CHECK: @llvm.x86.avx512.psrli.q.512
4347   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4348   return _mm512_maskz_srli_epi64(__U, __A, 5);
4349 }
4350 
test_mm512_maskz_srli_epi64_2(__mmask8 __U,__m512i __A,int __B)4351 __m512i test_mm512_maskz_srli_epi64_2(__mmask8 __U, __m512i __A, int __B) {
4352   // CHECK-LABEL: @test_mm512_maskz_srli_epi64_2
4353   // CHECK: @llvm.x86.avx512.psrli.q.512
4354   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4355   return _mm512_maskz_srli_epi64(__U, __A, __B);
4356 }
4357 
test_mm512_mask_load_epi32(__m512i __W,__mmask16 __U,void const * __P)4358 __m512i test_mm512_mask_load_epi32(__m512i __W, __mmask16 __U, void const *__P) {
4359   // CHECK-LABEL: @test_mm512_mask_load_epi32
4360   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4361   return _mm512_mask_load_epi32(__W, __U, __P);
4362 }
4363 
test_mm512_maskz_load_epi32(__mmask16 __U,void const * __P)4364 __m512i test_mm512_maskz_load_epi32(__mmask16 __U, void const *__P) {
4365   // CHECK-LABEL: @test_mm512_maskz_load_epi32
4366   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4367   return _mm512_maskz_load_epi32(__U, __P);
4368 }
4369 
test_mm512_mask_mov_epi32(__m512i __W,__mmask16 __U,__m512i __A)4370 __m512i test_mm512_mask_mov_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4371   // CHECK-LABEL: @test_mm512_mask_mov_epi32
4372   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4373   return _mm512_mask_mov_epi32(__W, __U, __A);
4374 }
4375 
test_mm512_maskz_mov_epi32(__mmask16 __U,__m512i __A)4376 __m512i test_mm512_maskz_mov_epi32(__mmask16 __U, __m512i __A) {
4377   // CHECK-LABEL: @test_mm512_maskz_mov_epi32
4378   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4379   return _mm512_maskz_mov_epi32(__U, __A);
4380 }
4381 
test_mm512_mask_mov_epi64(__m512i __W,__mmask8 __U,__m512i __A)4382 __m512i test_mm512_mask_mov_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4383   // CHECK-LABEL: @test_mm512_mask_mov_epi64
4384   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4385   return _mm512_mask_mov_epi64(__W, __U, __A);
4386 }
4387 
test_mm512_maskz_mov_epi64(__mmask8 __U,__m512i __A)4388 __m512i test_mm512_maskz_mov_epi64(__mmask8 __U, __m512i __A) {
4389   // CHECK-LABEL: @test_mm512_maskz_mov_epi64
4390   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4391   return _mm512_maskz_mov_epi64(__U, __A);
4392 }
4393 
test_mm512_mask_load_epi64(__m512i __W,__mmask8 __U,void const * __P)4394 __m512i test_mm512_mask_load_epi64(__m512i __W, __mmask8 __U, void const *__P) {
4395   // CHECK-LABEL: @test_mm512_mask_load_epi64
4396   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4397   return _mm512_mask_load_epi64(__W, __U, __P);
4398 }
4399 
test_mm512_maskz_load_epi64(__mmask8 __U,void const * __P)4400 __m512i test_mm512_maskz_load_epi64(__mmask8 __U, void const *__P) {
4401   // CHECK-LABEL: @test_mm512_maskz_load_epi64
4402   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4403   return _mm512_maskz_load_epi64(__U, __P);
4404 }
4405 
test_mm512_mask_store_epi32(void * __P,__mmask16 __U,__m512i __A)4406 void test_mm512_mask_store_epi32(void *__P, __mmask16 __U, __m512i __A) {
4407   // CHECK-LABEL: @test_mm512_mask_store_epi32
4408   // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
4409   return _mm512_mask_store_epi32(__P, __U, __A);
4410 }
4411 
test_mm512_mask_store_epi64(void * __P,__mmask8 __U,__m512i __A)4412 void test_mm512_mask_store_epi64(void *__P, __mmask8 __U, __m512i __A) {
4413   // CHECK-LABEL: @test_mm512_mask_store_epi64
4414   // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
4415   return _mm512_mask_store_epi64(__P, __U, __A);
4416 }
4417 
test_mm512_movedup_pd(__m512d __A)4418 __m512d test_mm512_movedup_pd(__m512d __A) {
4419   // CHECK-LABEL: @test_mm512_movedup_pd
4420   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4421   return _mm512_movedup_pd(__A);
4422 }
4423 
test_mm512_mask_movedup_pd(__m512d __W,__mmask8 __U,__m512d __A)4424 __m512d test_mm512_mask_movedup_pd(__m512d __W, __mmask8 __U, __m512d __A) {
4425   // CHECK-LABEL: @test_mm512_mask_movedup_pd
4426   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4427   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4428   return _mm512_mask_movedup_pd(__W, __U, __A);
4429 }
4430 
test_mm512_maskz_movedup_pd(__mmask8 __U,__m512d __A)4431 __m512d test_mm512_maskz_movedup_pd(__mmask8 __U, __m512d __A) {
4432   // CHECK-LABEL: @test_mm512_maskz_movedup_pd
4433   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4434   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4435   return _mm512_maskz_movedup_pd(__U, __A);
4436 }
4437 
test_mm_comi_round_sd(__m128d __A,__m128d __B)4438 int test_mm_comi_round_sd(__m128d __A, __m128d __B) {
4439   // CHECK-LABEL: @test_mm_comi_round_sd
4440   // CHECK: @llvm.x86.avx512.vcomi.sd
4441   return _mm_comi_round_sd(__A, __B, 5, _MM_FROUND_NO_EXC);
4442 }
4443 
test_mm_comi_round_ss(__m128 __A,__m128 __B)4444 int test_mm_comi_round_ss(__m128 __A, __m128 __B) {
4445   // CHECK-LABEL: @test_mm_comi_round_ss
4446   // CHECK: @llvm.x86.avx512.vcomi.ss
4447   return _mm_comi_round_ss(__A, __B, 5, _MM_FROUND_NO_EXC);
4448 }
4449 
test_mm512_fixupimm_round_pd(__m512d __A,__m512d __B,__m512i __C)4450 __m512d test_mm512_fixupimm_round_pd(__m512d __A, __m512d __B, __m512i __C) {
4451   // CHECK-LABEL: @test_mm512_fixupimm_round_pd
4452   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4453   return _mm512_fixupimm_round_pd(__A, __B, __C, 5, 8);
4454 }
4455 
test_mm512_mask_fixupimm_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512i __C)4456 __m512d test_mm512_mask_fixupimm_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
4457   // CHECK-LABEL: @test_mm512_mask_fixupimm_round_pd
4458   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4459   return _mm512_mask_fixupimm_round_pd(__A, __U, __B, __C, 5, 8);
4460 }
4461 
test_mm512_fixupimm_pd(__m512d __A,__m512d __B,__m512i __C)4462 __m512d test_mm512_fixupimm_pd(__m512d __A, __m512d __B, __m512i __C) {
4463   // CHECK-LABEL: @test_mm512_fixupimm_pd
4464   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4465   return _mm512_fixupimm_pd(__A, __B, __C, 5);
4466 }
4467 
test_mm512_mask_fixupimm_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512i __C)4468 __m512d test_mm512_mask_fixupimm_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
4469   // CHECK-LABEL: @test_mm512_mask_fixupimm_pd
4470   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4471   return _mm512_mask_fixupimm_pd(__A, __U, __B, __C, 5);
4472 }
4473 
test_mm512_maskz_fixupimm_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512i __C)4474 __m512d test_mm512_maskz_fixupimm_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
4475   // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_pd
4476   // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4477   return _mm512_maskz_fixupimm_round_pd(__U, __A, __B, __C, 5, 8);
4478 }
4479 
test_mm512_maskz_fixupimm_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512i __C)4480 __m512d test_mm512_maskz_fixupimm_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
4481   // CHECK-LABEL: @test_mm512_maskz_fixupimm_pd
4482   // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4483   return _mm512_maskz_fixupimm_pd(__U, __A, __B, __C, 5);
4484 }
4485 
test_mm512_fixupimm_round_ps(__m512 __A,__m512 __B,__m512i __C)4486 __m512 test_mm512_fixupimm_round_ps(__m512 __A, __m512 __B, __m512i __C) {
4487   // CHECK-LABEL: @test_mm512_fixupimm_round_ps
4488   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4489   return _mm512_fixupimm_round_ps(__A, __B, __C, 5, 8);
4490 }
4491 
test_mm512_mask_fixupimm_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512i __C)4492 __m512 test_mm512_mask_fixupimm_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
4493   // CHECK-LABEL: @test_mm512_mask_fixupimm_round_ps
4494   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4495   return _mm512_mask_fixupimm_round_ps(__A, __U, __B, __C, 5, 8);
4496 }
4497 
test_mm512_fixupimm_ps(__m512 __A,__m512 __B,__m512i __C)4498 __m512 test_mm512_fixupimm_ps(__m512 __A, __m512 __B, __m512i __C) {
4499   // CHECK-LABEL: @test_mm512_fixupimm_ps
4500   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4501   return _mm512_fixupimm_ps(__A, __B, __C, 5);
4502 }
4503 
test_mm512_mask_fixupimm_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512i __C)4504 __m512 test_mm512_mask_fixupimm_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
4505   // CHECK-LABEL: @test_mm512_mask_fixupimm_ps
4506   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4507   return _mm512_mask_fixupimm_ps(__A, __U, __B, __C, 5);
4508 }
4509 
test_mm512_maskz_fixupimm_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512i __C)4510 __m512 test_mm512_maskz_fixupimm_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
4511   // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_ps
4512   // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4513   return _mm512_maskz_fixupimm_round_ps(__U, __A, __B, __C, 5, 8);
4514 }
4515 
test_mm512_maskz_fixupimm_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512i __C)4516 __m512 test_mm512_maskz_fixupimm_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
4517   // CHECK-LABEL: @test_mm512_maskz_fixupimm_ps
4518   // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4519   return _mm512_maskz_fixupimm_ps(__U, __A, __B, __C, 5);
4520 }
4521 
test_mm_fixupimm_round_sd(__m128d __A,__m128d __B,__m128i __C)4522 __m128d test_mm_fixupimm_round_sd(__m128d __A, __m128d __B, __m128i __C) {
4523   // CHECK-LABEL: @test_mm_fixupimm_round_sd
4524   // CHECK: @llvm.x86.avx512.mask.fixupimm
4525   return _mm_fixupimm_round_sd(__A, __B, __C, 5, 8);
4526 }
4527 
test_mm_mask_fixupimm_round_sd(__m128d __A,__mmask8 __U,__m128d __B,__m128i __C)4528 __m128d test_mm_mask_fixupimm_round_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
4529   // CHECK-LABEL: @test_mm_mask_fixupimm_round_sd
4530   // CHECK: @llvm.x86.avx512.mask.fixupimm
4531   return _mm_mask_fixupimm_round_sd(__A, __U, __B, __C, 5, 8);
4532 }
4533 
test_mm_fixupimm_sd(__m128d __A,__m128d __B,__m128i __C)4534 __m128d test_mm_fixupimm_sd(__m128d __A, __m128d __B, __m128i __C) {
4535   // CHECK-LABEL: @test_mm_fixupimm_sd
4536   // CHECK: @llvm.x86.avx512.mask.fixupimm
4537   return _mm_fixupimm_sd(__A, __B, __C, 5);
4538 }
4539 
test_mm_mask_fixupimm_sd(__m128d __A,__mmask8 __U,__m128d __B,__m128i __C)4540 __m128d test_mm_mask_fixupimm_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
4541   // CHECK-LABEL: @test_mm_mask_fixupimm_sd
4542   // CHECK: @llvm.x86.avx512.mask.fixupimm
4543   return _mm_mask_fixupimm_sd(__A, __U, __B, __C, 5);
4544 }
4545 
test_mm_maskz_fixupimm_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128i __C)4546 __m128d test_mm_maskz_fixupimm_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
4547   // CHECK-LABEL: @test_mm_maskz_fixupimm_round_sd
4548   // CHECK: @llvm.x86.avx512.maskz.fixupimm
4549   return _mm_maskz_fixupimm_round_sd(__U, __A, __B, __C, 5, 8);
4550 }
4551 
test_mm_maskz_fixupimm_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128i __C)4552 __m128d test_mm_maskz_fixupimm_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
4553   // CHECK-LABEL: @test_mm_maskz_fixupimm_sd
4554   // CHECK: @llvm.x86.avx512.maskz.fixupimm
4555   return _mm_maskz_fixupimm_sd(__U, __A, __B, __C, 5);
4556 }
4557 
test_mm_fixupimm_round_ss(__m128 __A,__m128 __B,__m128i __C)4558 __m128 test_mm_fixupimm_round_ss(__m128 __A, __m128 __B, __m128i __C) {
4559   // CHECK-LABEL: @test_mm_fixupimm_round_ss
4560   // CHECK: @llvm.x86.avx512.mask.fixupimm
4561   return _mm_fixupimm_round_ss(__A, __B, __C, 5, 8);
4562 }
4563 
test_mm_mask_fixupimm_round_ss(__m128 __A,__mmask8 __U,__m128 __B,__m128i __C)4564 __m128 test_mm_mask_fixupimm_round_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
4565   // CHECK-LABEL: @test_mm_mask_fixupimm_round_ss
4566   // CHECK: @llvm.x86.avx512.mask.fixupimm
4567   return _mm_mask_fixupimm_round_ss(__A, __U, __B, __C, 5, 8);
4568 }
4569 
test_mm_fixupimm_ss(__m128 __A,__m128 __B,__m128i __C)4570 __m128 test_mm_fixupimm_ss(__m128 __A, __m128 __B, __m128i __C) {
4571   // CHECK-LABEL: @test_mm_fixupimm_ss
4572   // CHECK: @llvm.x86.avx512.mask.fixupimm
4573   return _mm_fixupimm_ss(__A, __B, __C, 5);
4574 }
4575 
test_mm_mask_fixupimm_ss(__m128 __A,__mmask8 __U,__m128 __B,__m128i __C)4576 __m128 test_mm_mask_fixupimm_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
4577   // CHECK-LABEL: @test_mm_mask_fixupimm_ss
4578   // CHECK: @llvm.x86.avx512.mask.fixupimm
4579   return _mm_mask_fixupimm_ss(__A, __U, __B, __C, 5);
4580 }
4581 
test_mm_maskz_fixupimm_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128i __C)4582 __m128 test_mm_maskz_fixupimm_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
4583   // CHECK-LABEL: @test_mm_maskz_fixupimm_round_ss
4584   // CHECK: @llvm.x86.avx512.maskz.fixupimm
4585   return _mm_maskz_fixupimm_round_ss(__U, __A, __B, __C, 5, 8);
4586 }
4587 
test_mm_maskz_fixupimm_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128i __C)4588 __m128 test_mm_maskz_fixupimm_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
4589   // CHECK-LABEL: @test_mm_maskz_fixupimm_ss
4590   // CHECK: @llvm.x86.avx512.maskz.fixupimm
4591   return _mm_maskz_fixupimm_ss(__U, __A, __B, __C, 5);
4592 }
4593 
test_mm_getexp_round_sd(__m128d __A,__m128d __B)4594 __m128d test_mm_getexp_round_sd(__m128d __A, __m128d __B) {
4595   // CHECK-LABEL: @test_mm_getexp_round_sd
4596   // CHECK: @llvm.x86.avx512.mask.getexp.sd
4597   return _mm_getexp_round_sd(__A, __B, 8);
4598 }
4599 
test_mm_getexp_sd(__m128d __A,__m128d __B)4600 __m128d test_mm_getexp_sd(__m128d __A, __m128d __B) {
4601   // CHECK-LABEL: @test_mm_getexp_sd
4602   // CHECK: @llvm.x86.avx512.mask.getexp.sd
4603   return _mm_getexp_sd(__A, __B);
4604 }
4605 
test_mm_getexp_round_ss(__m128 __A,__m128 __B)4606 __m128 test_mm_getexp_round_ss(__m128 __A, __m128 __B) {
4607   // CHECK-LABEL: @test_mm_getexp_round_ss
4608   // CHECK: @llvm.x86.avx512.mask.getexp.ss
4609   return _mm_getexp_round_ss(__A, __B, 8);
4610 }
4611 
test_mm_getexp_ss(__m128 __A,__m128 __B)4612 __m128 test_mm_getexp_ss(__m128 __A, __m128 __B) {
4613   // CHECK-LABEL: @test_mm_getexp_ss
4614   // CHECK: @llvm.x86.avx512.mask.getexp.ss
4615   return _mm_getexp_ss(__A, __B);
4616 }
4617 
test_mm_getmant_round_sd(__m128d __A,__m128d __B)4618 __m128d test_mm_getmant_round_sd(__m128d __A, __m128d __B) {
4619   // CHECK-LABEL: @test_mm_getmant_round_sd
4620   // CHECK: @llvm.x86.avx512.mask.getmant.sd
4621   return _mm_getmant_round_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8);
4622 }
4623 
test_mm_getmant_sd(__m128d __A,__m128d __B)4624 __m128d test_mm_getmant_sd(__m128d __A, __m128d __B) {
4625   // CHECK-LABEL: @test_mm_getmant_sd
4626   // CHECK: @llvm.x86.avx512.mask.getmant.sd
4627   return _mm_getmant_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src);
4628 }
4629 
test_mm_getmant_round_ss(__m128 __A,__m128 __B)4630 __m128 test_mm_getmant_round_ss(__m128 __A, __m128 __B) {
4631   // CHECK-LABEL: @test_mm_getmant_round_ss
4632   // CHECK: @llvm.x86.avx512.mask.getmant.ss
4633   return _mm_getmant_round_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8);
4634 }
4635 
test_mm_getmant_ss(__m128 __A,__m128 __B)4636 __m128 test_mm_getmant_ss(__m128 __A, __m128 __B) {
4637   // CHECK-LABEL: @test_mm_getmant_ss
4638   // CHECK: @llvm.x86.avx512.mask.getmant.ss
4639   return _mm_getmant_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src);
4640 }
4641 
test_mm512_kmov(__mmask16 __A)4642 __mmask16 test_mm512_kmov(__mmask16 __A) {
4643   // CHECK-LABEL: @test_mm512_kmov
4644   // CHECK: load i16, i16* %__A.addr.i, align 2
4645   return _mm512_kmov(__A);
4646 }
4647 
test_mm512_mask_unpackhi_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)4648 __m512d test_mm512_mask_unpackhi_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4649   // CHECK-LABEL: @test_mm512_mask_unpackhi_pd
4650   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
4651   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4652   return _mm512_mask_unpackhi_pd(__W, __U, __A, __B);
4653 }
4654 #if __x86_64__
test_mm_cvt_roundsd_si64(__m128d __A)4655 unsigned long long test_mm_cvt_roundsd_si64(__m128d __A) {
4656   // CHECK-LABEL: @test_mm_cvt_roundsd_si64
4657   // CHECK: @llvm.x86.avx512.vcvtsd2si64
4658   return _mm_cvt_roundsd_si64(__A, _MM_FROUND_CUR_DIRECTION);
4659 }
4660 #endif
test_mm512_mask2_permutex2var_epi32(__m512i __A,__m512i __I,__mmask16 __U,__m512i __B)4661 __m512i test_mm512_mask2_permutex2var_epi32(__m512i __A, __m512i __I, __mmask16 __U, __m512i __B) {
4662   // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi32
4663   // CHECK: @llvm.x86.avx512.vpermi2var.d.512
4664   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4665   return _mm512_mask2_permutex2var_epi32(__A, __I, __U, __B);
4666 }
test_mm512_unpackhi_epi32(__m512i __A,__m512i __B)4667 __m512i test_mm512_unpackhi_epi32(__m512i __A, __m512i __B) {
4668   // CHECK-LABEL: @test_mm512_unpackhi_epi32
4669   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4670   return _mm512_unpackhi_epi32(__A, __B);
4671 }
4672 
test_mm512_maskz_unpackhi_pd(__mmask8 __U,__m512d __A,__m512d __B)4673 __m512d test_mm512_maskz_unpackhi_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4674   // CHECK-LABEL: @test_mm512_maskz_unpackhi_pd
4675   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
4676   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4677   return _mm512_maskz_unpackhi_pd(__U, __A, __B);
4678 }
4679 #if __x86_64__
test_mm_cvt_roundsd_i64(__m128d __A)4680 long long test_mm_cvt_roundsd_i64(__m128d __A) {
4681   // CHECK-LABEL: @test_mm_cvt_roundsd_i64
4682   // CHECK: @llvm.x86.avx512.vcvtsd2si64
4683   return _mm_cvt_roundsd_i64(__A, _MM_FROUND_CUR_DIRECTION);
4684 }
4685 #endif
test_mm512_mask2_permutex2var_pd(__m512d __A,__m512i __I,__mmask8 __U,__m512d __B)4686 __m512d test_mm512_mask2_permutex2var_pd(__m512d __A, __m512i __I, __mmask8 __U, __m512d __B) {
4687   // CHECK-LABEL: @test_mm512_mask2_permutex2var_pd
4688   // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
4689   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4690   return _mm512_mask2_permutex2var_pd(__A, __I, __U, __B);
4691 }
test_mm512_mask_unpackhi_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4692 __m512i test_mm512_mask_unpackhi_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4693   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi32
4694   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4695   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4696   return _mm512_mask_unpackhi_epi32(__W, __U, __A, __B);
4697 }
4698 
test_mm512_mask_unpackhi_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)4699 __m512 test_mm512_mask_unpackhi_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4700   // CHECK-LABEL: @test_mm512_mask_unpackhi_ps
4701   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4702   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4703   return _mm512_mask_unpackhi_ps(__W, __U, __A, __B);
4704 }
4705 
test_mm512_maskz_unpackhi_ps(__mmask16 __U,__m512 __A,__m512 __B)4706 __m512 test_mm512_maskz_unpackhi_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4707   // CHECK-LABEL: @test_mm512_maskz_unpackhi_ps
4708   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4709   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4710   return _mm512_maskz_unpackhi_ps(__U, __A, __B);
4711 }
4712 
test_mm512_mask_unpacklo_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)4713 __m512d test_mm512_mask_unpacklo_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4714   // CHECK-LABEL: @test_mm512_mask_unpacklo_pd
4715   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
4716   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4717   return _mm512_mask_unpacklo_pd(__W, __U, __A, __B);
4718 }
4719 
test_mm512_maskz_unpacklo_pd(__mmask8 __U,__m512d __A,__m512d __B)4720 __m512d test_mm512_maskz_unpacklo_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4721   // CHECK-LABEL: @test_mm512_maskz_unpacklo_pd
4722   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
4723   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4724   return _mm512_maskz_unpacklo_pd(__U, __A, __B);
4725 }
4726 
test_mm512_mask_unpacklo_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)4727 __m512 test_mm512_mask_unpacklo_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4728   // CHECK-LABEL: @test_mm512_mask_unpacklo_ps
4729   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
4730   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4731   return _mm512_mask_unpacklo_ps(__W, __U, __A, __B);
4732 }
4733 
test_mm512_maskz_unpacklo_ps(__mmask16 __U,__m512 __A,__m512 __B)4734 __m512 test_mm512_maskz_unpacklo_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4735   // CHECK-LABEL: @test_mm512_maskz_unpacklo_ps
4736   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
4737   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4738   return _mm512_maskz_unpacklo_ps(__U, __A, __B);
4739 }
test_mm_cvt_roundsd_si32(__m128d __A)4740 int test_mm_cvt_roundsd_si32(__m128d __A) {
4741   // CHECK-LABEL: @test_mm_cvt_roundsd_si32
4742   // CHECK: @llvm.x86.avx512.vcvtsd2si32
4743   return _mm_cvt_roundsd_si32(__A, _MM_FROUND_CUR_DIRECTION);
4744 }
4745 
test_mm_cvt_roundsd_i32(__m128d __A)4746 int test_mm_cvt_roundsd_i32(__m128d __A) {
4747   // CHECK-LABEL: @test_mm_cvt_roundsd_i32
4748   // CHECK: @llvm.x86.avx512.vcvtsd2si32
4749   return _mm_cvt_roundsd_i32(__A, _MM_FROUND_CUR_DIRECTION);
4750 }
4751 
test_mm_cvt_roundsd_u32(__m128d __A)4752 unsigned test_mm_cvt_roundsd_u32(__m128d __A) {
4753   // CHECK-LABEL: @test_mm_cvt_roundsd_u32
4754   // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4755   return _mm_cvt_roundsd_u32(__A, _MM_FROUND_CUR_DIRECTION);
4756 }
4757 
test_mm_cvtsd_u32(__m128d __A)4758 unsigned test_mm_cvtsd_u32(__m128d __A) {
4759   // CHECK-LABEL: @test_mm_cvtsd_u32
4760   // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4761   return _mm_cvtsd_u32(__A);
4762 }
4763 
4764 #ifdef __x86_64__
test_mm_cvt_roundsd_u64(__m128d __A)4765 unsigned long long test_mm_cvt_roundsd_u64(__m128d __A) {
4766   // CHECK-LABEL: @test_mm_cvt_roundsd_u64
4767   // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4768   return _mm_cvt_roundsd_u64(__A, _MM_FROUND_CUR_DIRECTION);
4769 }
4770 
test_mm_cvtsd_u64(__m128d __A)4771 unsigned long long test_mm_cvtsd_u64(__m128d __A) {
4772   // CHECK-LABEL: @test_mm_cvtsd_u64
4773   // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4774   return _mm_cvtsd_u64(__A);
4775 }
4776 #endif
4777 
test_mm_cvt_roundss_si32(__m128 __A)4778 int test_mm_cvt_roundss_si32(__m128 __A) {
4779   // CHECK-LABEL: @test_mm_cvt_roundss_si32
4780   // CHECK: @llvm.x86.avx512.vcvtss2si32
4781   return _mm_cvt_roundss_si32(__A, _MM_FROUND_CUR_DIRECTION);
4782 }
4783 
test_mm_cvt_roundss_i32(__m128 __A)4784 int test_mm_cvt_roundss_i32(__m128 __A) {
4785   // CHECK-LABEL: @test_mm_cvt_roundss_i32
4786   // CHECK: @llvm.x86.avx512.vcvtss2si32
4787   return _mm_cvt_roundss_i32(__A, _MM_FROUND_CUR_DIRECTION);
4788 }
4789 
4790 #ifdef __x86_64__
test_mm_cvt_roundss_si64(__m128 __A)4791 long long test_mm_cvt_roundss_si64(__m128 __A) {
4792   // CHECK-LABEL: @test_mm_cvt_roundss_si64
4793   // CHECK: @llvm.x86.avx512.vcvtss2si64
4794   return _mm_cvt_roundss_si64(__A, _MM_FROUND_CUR_DIRECTION);
4795 }
4796 
test_mm_cvt_roundss_i64(__m128 __A)4797 long long test_mm_cvt_roundss_i64(__m128 __A) {
4798   // CHECK-LABEL: @test_mm_cvt_roundss_i64
4799   // CHECK: @llvm.x86.avx512.vcvtss2si64
4800   return _mm_cvt_roundss_i64(__A, _MM_FROUND_CUR_DIRECTION);
4801 }
4802 #endif
4803 
test_mm_cvt_roundss_u32(__m128 __A)4804 unsigned test_mm_cvt_roundss_u32(__m128 __A) {
4805   // CHECK-LABEL: @test_mm_cvt_roundss_u32
4806   // CHECK: @llvm.x86.avx512.vcvtss2usi32
4807   return _mm_cvt_roundss_u32(__A, _MM_FROUND_CUR_DIRECTION);
4808 }
4809 
test_mm_cvtss_u32(__m128 __A)4810 unsigned test_mm_cvtss_u32(__m128 __A) {
4811   // CHECK-LABEL: @test_mm_cvtss_u32
4812   // CHECK: @llvm.x86.avx512.vcvtss2usi32
4813   return _mm_cvtss_u32(__A);
4814 }
4815 
4816 #ifdef __x86_64__
test_mm_cvt_roundss_u64(__m128 __A)4817 unsigned long long test_mm_cvt_roundss_u64(__m128 __A) {
4818   // CHECK-LABEL: @test_mm_cvt_roundss_u64
4819   // CHECK: @llvm.x86.avx512.vcvtss2usi64
4820   return _mm_cvt_roundss_u64(__A, _MM_FROUND_CUR_DIRECTION);
4821 }
4822 
test_mm_cvtss_u64(__m128 __A)4823 unsigned long long test_mm_cvtss_u64(__m128 __A) {
4824   // CHECK-LABEL: @test_mm_cvtss_u64
4825   // CHECK: @llvm.x86.avx512.vcvtss2usi64
4826   return _mm_cvtss_u64(__A);
4827 }
4828 #endif
4829 
test_mm_cvtt_roundsd_i32(__m128d __A)4830 int test_mm_cvtt_roundsd_i32(__m128d __A) {
4831   // CHECK-LABEL: @test_mm_cvtt_roundsd_i32
4832   // CHECK: @llvm.x86.avx512.cvttsd2si
4833   return _mm_cvtt_roundsd_i32(__A, _MM_FROUND_CUR_DIRECTION);
4834 }
4835 
test_mm_cvtt_roundsd_si32(__m128d __A)4836 int test_mm_cvtt_roundsd_si32(__m128d __A) {
4837   // CHECK-LABEL: @test_mm_cvtt_roundsd_si32
4838   // CHECK: @llvm.x86.avx512.cvttsd2si
4839   return _mm_cvtt_roundsd_si32(__A, _MM_FROUND_CUR_DIRECTION);
4840 }
4841 
test_mm_cvttsd_i32(__m128d __A)4842 int test_mm_cvttsd_i32(__m128d __A) {
4843   // CHECK-LABEL: @test_mm_cvttsd_i32
4844   // CHECK: @llvm.x86.avx512.cvttsd2si
4845   return _mm_cvttsd_i32(__A);
4846 }
4847 
4848 #ifdef __x86_64__
test_mm_cvtt_roundsd_si64(__m128d __A)4849 unsigned long long test_mm_cvtt_roundsd_si64(__m128d __A) {
4850   // CHECK-LABEL: @test_mm_cvtt_roundsd_si64
4851   // CHECK: @llvm.x86.avx512.cvttsd2si64
4852   return _mm_cvtt_roundsd_si64(__A, _MM_FROUND_CUR_DIRECTION);
4853 }
4854 
test_mm_cvtt_roundsd_i64(__m128d __A)4855 long long test_mm_cvtt_roundsd_i64(__m128d __A) {
4856   // CHECK-LABEL: @test_mm_cvtt_roundsd_i64
4857   // CHECK: @llvm.x86.avx512.cvttsd2si64
4858   return _mm_cvtt_roundsd_i64(__A, _MM_FROUND_CUR_DIRECTION);
4859 }
4860 
test_mm_cvttsd_i64(__m128d __A)4861 long long test_mm_cvttsd_i64(__m128d __A) {
4862   // CHECK-LABEL: @test_mm_cvttsd_i64
4863   // CHECK: @llvm.x86.avx512.cvttsd2si64
4864   return _mm_cvttsd_i64(__A);
4865 }
4866 #endif
4867 
test_mm_cvtt_roundsd_u32(__m128d __A)4868 unsigned test_mm_cvtt_roundsd_u32(__m128d __A) {
4869   // CHECK-LABEL: @test_mm_cvtt_roundsd_u32
4870   // CHECK: @llvm.x86.avx512.cvttsd2usi
4871   return _mm_cvtt_roundsd_u32(__A, _MM_FROUND_CUR_DIRECTION);
4872 }
4873 
test_mm_cvttsd_u32(__m128d __A)4874 unsigned test_mm_cvttsd_u32(__m128d __A) {
4875   // CHECK-LABEL: @test_mm_cvttsd_u32
4876   // CHECK: @llvm.x86.avx512.cvttsd2usi
4877   return _mm_cvttsd_u32(__A);
4878 }
4879 
4880 #ifdef __x86_64__
test_mm_cvtt_roundsd_u64(__m128d __A)4881 unsigned long long test_mm_cvtt_roundsd_u64(__m128d __A) {
4882   // CHECK-LABEL: @test_mm_cvtt_roundsd_u64
4883   // CHECK: @llvm.x86.avx512.cvttsd2usi64
4884   return _mm_cvtt_roundsd_u64(__A, _MM_FROUND_CUR_DIRECTION);
4885 }
4886 
test_mm_cvttsd_u64(__m128d __A)4887 unsigned long long test_mm_cvttsd_u64(__m128d __A) {
4888   // CHECK-LABEL: @test_mm_cvttsd_u64
4889   // CHECK: @llvm.x86.avx512.cvttsd2usi64
4890   return _mm_cvttsd_u64(__A);
4891 }
4892 #endif
4893 
test_mm_cvtt_roundss_i32(__m128 __A)4894 int test_mm_cvtt_roundss_i32(__m128 __A) {
4895   // CHECK-LABEL: @test_mm_cvtt_roundss_i32
4896   // CHECK: @llvm.x86.avx512.cvttss2si
4897   return _mm_cvtt_roundss_i32(__A, _MM_FROUND_CUR_DIRECTION);
4898 }
4899 
test_mm_cvtt_roundss_si32(__m128 __A)4900 int test_mm_cvtt_roundss_si32(__m128 __A) {
4901   // CHECK-LABEL: @test_mm_cvtt_roundss_si32
4902   // CHECK: @llvm.x86.avx512.cvttss2si
4903   return _mm_cvtt_roundss_si32(__A, _MM_FROUND_CUR_DIRECTION);
4904 }
4905 
test_mm_cvttss_i32(__m128 __A)4906 int test_mm_cvttss_i32(__m128 __A) {
4907   // CHECK-LABEL: @test_mm_cvttss_i32
4908   // CHECK: @llvm.x86.avx512.cvttss2si
4909   return _mm_cvttss_i32(__A);
4910 }
4911 
4912 #ifdef __x86_64__
test_mm_cvtt_roundss_i64(__m128 __A)4913 float test_mm_cvtt_roundss_i64(__m128 __A) {
4914   // CHECK-LABEL: @test_mm_cvtt_roundss_i64
4915   // CHECK: @llvm.x86.avx512.cvttss2si64
4916   return _mm_cvtt_roundss_i64(__A, _MM_FROUND_CUR_DIRECTION);
4917 }
4918 
test_mm_cvtt_roundss_si64(__m128 __A)4919 long long test_mm_cvtt_roundss_si64(__m128 __A) {
4920   // CHECK-LABEL: @test_mm_cvtt_roundss_si64
4921   // CHECK: @llvm.x86.avx512.cvttss2si64
4922   return _mm_cvtt_roundss_si64(__A, _MM_FROUND_CUR_DIRECTION);
4923 }
4924 
test_mm_cvttss_i64(__m128 __A)4925 long long test_mm_cvttss_i64(__m128 __A) {
4926   // CHECK-LABEL: @test_mm_cvttss_i64
4927   // CHECK: @llvm.x86.avx512.cvttss2si64
4928   return _mm_cvttss_i64(__A);
4929 }
4930 #endif
4931 
test_mm_cvtt_roundss_u32(__m128 __A)4932 unsigned test_mm_cvtt_roundss_u32(__m128 __A) {
4933   // CHECK-LABEL: @test_mm_cvtt_roundss_u32
4934   // CHECK: @llvm.x86.avx512.cvttss2usi
4935   return _mm_cvtt_roundss_u32(__A, _MM_FROUND_CUR_DIRECTION);
4936 }
4937 
test_mm_cvttss_u32(__m128 __A)4938 unsigned test_mm_cvttss_u32(__m128 __A) {
4939   // CHECK-LABEL: @test_mm_cvttss_u32
4940   // CHECK: @llvm.x86.avx512.cvttss2usi
4941   return _mm_cvttss_u32(__A);
4942 }
4943 
4944 #ifdef __x86_64__
test_mm_cvtt_roundss_u64(__m128 __A)4945 unsigned long long test_mm_cvtt_roundss_u64(__m128 __A) {
4946   // CHECK-LABEL: @test_mm_cvtt_roundss_u64
4947   // CHECK: @llvm.x86.avx512.cvttss2usi64
4948   return _mm_cvtt_roundss_u64(__A, _MM_FROUND_CUR_DIRECTION);
4949 }
4950 
test_mm_cvttss_u64(__m128 __A)4951 unsigned long long test_mm_cvttss_u64(__m128 __A) {
4952   // CHECK-LABEL: @test_mm_cvttss_u64
4953   // CHECK: @llvm.x86.avx512.cvttss2usi64
4954   return _mm_cvttss_u64(__A);
4955 }
4956 #endif
4957 
test_mm512_cvtt_roundps_epu32(__m512 __A)4958 __m512i test_mm512_cvtt_roundps_epu32(__m512 __A)
4959 {
4960     // CHECK-LABEL: @test_mm512_cvtt_roundps_epu32
4961     // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4962     return _mm512_cvtt_roundps_epu32(__A, _MM_FROUND_CUR_DIRECTION);
4963 }
4964 
test_mm512_mask_cvtt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)4965 __m512i test_mm512_mask_cvtt_roundps_epu32(__m512i __W, __mmask16 __U, __m512 __A)
4966 {
4967     // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu32
4968     // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4969     return _mm512_mask_cvtt_roundps_epu32(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
4970 }
4971 
test_mm512_maskz_cvtt_roundps_epu32(__mmask16 __U,__m512 __A)4972 __m512i test_mm512_maskz_cvtt_roundps_epu32( __mmask16 __U, __m512 __A)
4973 {
4974     // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu32
4975     // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4976 
4977     return _mm512_maskz_cvtt_roundps_epu32(__U, __A, _MM_FROUND_CUR_DIRECTION);
4978 }
4979 
test_mm512_cvt_roundps_ph(__m512 __A)4980 __m256i test_mm512_cvt_roundps_ph(__m512  __A)
4981 {
4982     // CHECK-LABEL: @test_mm512_cvt_roundps_ph
4983     // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4984     return _mm512_cvt_roundps_ph(__A, _MM_FROUND_CUR_DIRECTION);
4985 }
4986 
test_mm512_mask_cvt_roundps_ph(__m256i __W,__mmask16 __U,__m512 __A)4987 __m256i test_mm512_mask_cvt_roundps_ph(__m256i __W , __mmask16 __U, __m512  __A)
4988 {
4989     // CHECK-LABEL: @test_mm512_mask_cvt_roundps_ph
4990     // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4991     return _mm512_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
4992 }
4993 
test_mm512_maskz_cvt_roundps_ph(__mmask16 __U,__m512 __A)4994 __m256i test_mm512_maskz_cvt_roundps_ph(__mmask16 __U, __m512  __A)
4995 {
4996     // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_ph
4997     // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4998     return _mm512_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION);
4999 }
5000 
test_mm512_cvt_roundph_ps(__m256i __A)5001 __m512 test_mm512_cvt_roundph_ps(__m256i __A)
5002 {
5003     // CHECK-LABEL: @test_mm512_cvt_roundph_ps
5004     // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
5005     return _mm512_cvt_roundph_ps(__A, _MM_FROUND_CUR_DIRECTION);
5006 }
5007 
test_mm512_mask_cvt_roundph_ps(__m512 __W,__mmask16 __U,__m256i __A)5008 __m512 test_mm512_mask_cvt_roundph_ps(__m512 __W, __mmask16 __U, __m256i __A)
5009 {
5010     // CHECK-LABEL: @test_mm512_mask_cvt_roundph_ps
5011     // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
5012     return _mm512_mask_cvt_roundph_ps(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
5013 }
5014 
test_mm512_maskz_cvt_roundph_ps(__mmask16 __U,__m256i __A)5015 __m512 test_mm512_maskz_cvt_roundph_ps(__mmask16 __U, __m256i __A)
5016 {
5017     // CHECK-LABEL: @test_mm512_maskz_cvt_roundph_ps
5018     // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
5019     return _mm512_maskz_cvt_roundph_ps(__U, __A, _MM_FROUND_CUR_DIRECTION);
5020 }
5021 
test_mm512_mask_cvt_roundepi32_ps(__m512 __W,__mmask16 __U,__m512i __A)5022 __m512 test_mm512_mask_cvt_roundepi32_ps(__m512 __W, __mmask16 __U, __m512i __A)
5023 {
5024   // CHECK-LABEL: @test_mm512_mask_cvt_roundepi32_ps
5025   // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512
5026   return _mm512_mask_cvt_roundepi32_ps(__W,__U,__A,4);
5027 }
5028 
test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U,__m512i __A)5029 __m512 test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U, __m512i __A)
5030 {
5031   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi32_ps
5032   // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512
5033   return _mm512_maskz_cvt_roundepi32_ps(__U,__A,4);
5034 }
5035 
test_mm512_mask_cvt_roundepu32_ps(__m512 __W,__mmask16 __U,__m512i __A)5036 __m512 test_mm512_mask_cvt_roundepu32_ps(__m512 __W, __mmask16 __U,__m512i __A)
5037 {
5038   // CHECK-LABEL: @test_mm512_mask_cvt_roundepu32_ps
5039   // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512
5040   return _mm512_mask_cvt_roundepu32_ps(__W,__U,__A,4);
5041 }
5042 
test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A)5043 __m512 test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A)
5044 {
5045   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu32_ps
5046   // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512
5047   return _mm512_maskz_cvt_roundepu32_ps(__U,__A,4);
5048 }
5049 
test_mm512_mask_cvt_roundpd_ps(__m256 W,__mmask8 U,__m512d A)5050 __m256 test_mm512_mask_cvt_roundpd_ps(__m256 W, __mmask8 U,__m512d A)
5051 {
5052   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_ps
5053   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5054   return _mm512_mask_cvt_roundpd_ps(W,U,A,4);
5055 }
5056 
test_mm512_maskz_cvt_roundpd_ps(__mmask8 U,__m512d A)5057 __m256 test_mm512_maskz_cvt_roundpd_ps(__mmask8 U, __m512d A)
5058 {
5059   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_ps
5060   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5061   return _mm512_maskz_cvt_roundpd_ps(U,A,4);
5062 }
5063 
test_mm512_cvtt_roundpd_epi32(__m512d A)5064 __m256i test_mm512_cvtt_roundpd_epi32(__m512d A)
5065 {
5066   // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi32
5067   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5068   return _mm512_cvtt_roundpd_epi32(A,4);
5069 }
5070 
test_mm512_mask_cvtt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)5071 __m256i test_mm512_mask_cvtt_roundpd_epi32(__m256i W, __mmask8 U, __m512d A)
5072 {
5073   // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi32
5074   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5075   return _mm512_mask_cvtt_roundpd_epi32(W,U,A,4);
5076 }
5077 
test_mm512_maskz_cvtt_roundpd_epi32(__mmask8 U,__m512d A)5078 __m256i test_mm512_maskz_cvtt_roundpd_epi32(__mmask8 U, __m512d A)
5079 {
5080   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi32
5081   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5082   return _mm512_maskz_cvtt_roundpd_epi32(U,A,4);
5083 }
5084 
test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U,__m512 A)5085 __m512i test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U, __m512 A)
5086 {
5087   // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi32
5088   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5089   return _mm512_mask_cvtt_roundps_epi32(W,U,A,4);
5090 }
5091 
test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U,__m512 A)5092 __m512i test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U, __m512 A)
5093 {
5094   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi32
5095   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5096   return _mm512_maskz_cvtt_roundps_epi32(U,A,4);
5097 }
5098 
test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A)5099 __m512i test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A)
5100 {
5101   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi32
5102   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5103   return _mm512_mask_cvt_roundps_epi32(__W,__U,__A,4);
5104 }
5105 
test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U,__m512 __A)5106 __m512i test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U, __m512 __A)
5107 {
5108   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi32
5109   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5110   return _mm512_maskz_cvt_roundps_epi32(__U,__A,4);
5111 }
5112 
test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)5113 __m256i test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)
5114 {
5115   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi32
5116   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5117   return _mm512_mask_cvt_roundpd_epi32(W,U,A,4);
5118 }
5119 
test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U,__m512d A)5120 __m256i test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U, __m512d A)
5121 {
5122   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi32
5123   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5124   return _mm512_maskz_cvt_roundpd_epi32(U,A,4);
5125 }
5126 
test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)5127 __m512i test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)
5128 {
5129   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu32
5130   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5131   return _mm512_mask_cvt_roundps_epu32(__W,__U,__A,4);
5132 }
5133 
test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A)5134 __m512i test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A)
5135 {
5136   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu32
5137   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5138   return _mm512_maskz_cvt_roundps_epu32(__U,__A, 4);
5139 }
5140 
test_mm512_mask_cvt_roundpd_epu32(__m256i W,__mmask8 U,__m512d A)5141 __m256i test_mm512_mask_cvt_roundpd_epu32(__m256i W, __mmask8 U, __m512d A)
5142 {
5143   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu32
5144   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5145   return _mm512_mask_cvt_roundpd_epu32(W,U,A,4);
5146 }
5147 
test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U,__m512d A)5148 __m256i test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U, __m512d A)
5149 {
5150   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu32
5151   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5152   return _mm512_maskz_cvt_roundpd_epu32(U, A, 4);
5153 }
5154 
test_mm512_mask2_permutex2var_ps(__m512 __A,__m512i __I,__mmask16 __U,__m512 __B)5155 __m512 test_mm512_mask2_permutex2var_ps(__m512 __A, __m512i __I, __mmask16 __U, __m512 __B) {
5156   // CHECK-LABEL: @test_mm512_mask2_permutex2var_ps
5157   // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5158   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5159   return _mm512_mask2_permutex2var_ps(__A, __I, __U, __B);
5160 }
5161 
test_mm512_mask2_permutex2var_epi64(__m512i __A,__m512i __I,__mmask8 __U,__m512i __B)5162 __m512i test_mm512_mask2_permutex2var_epi64(__m512i __A, __m512i __I, __mmask8 __U, __m512i __B) {
5163   // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi64
5164   // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5165   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5166   return _mm512_mask2_permutex2var_epi64(__A, __I, __U, __B);
5167 }
5168 
test_mm512_permute_pd(__m512d __X)5169 __m512d test_mm512_permute_pd(__m512d __X) {
5170   // CHECK-LABEL: @test_mm512_permute_pd
5171   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5172   return _mm512_permute_pd(__X, 2);
5173 }
5174 
test_mm512_mask_permute_pd(__m512d __W,__mmask8 __U,__m512d __X)5175 __m512d test_mm512_mask_permute_pd(__m512d __W, __mmask8 __U, __m512d __X) {
5176   // CHECK-LABEL: @test_mm512_mask_permute_pd
5177   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5178   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5179   return _mm512_mask_permute_pd(__W, __U, __X, 2);
5180 }
5181 
test_mm512_maskz_permute_pd(__mmask8 __U,__m512d __X)5182 __m512d test_mm512_maskz_permute_pd(__mmask8 __U, __m512d __X) {
5183   // CHECK-LABEL: @test_mm512_maskz_permute_pd
5184   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5185   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5186   return _mm512_maskz_permute_pd(__U, __X, 2);
5187 }
5188 
test_mm512_permute_ps(__m512 __X)5189 __m512 test_mm512_permute_ps(__m512 __X) {
5190   // CHECK-LABEL: @test_mm512_permute_ps
5191   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5192   return _mm512_permute_ps(__X, 2);
5193 }
5194 
test_mm512_mask_permute_ps(__m512 __W,__mmask16 __U,__m512 __X)5195 __m512 test_mm512_mask_permute_ps(__m512 __W, __mmask16 __U, __m512 __X) {
5196   // CHECK-LABEL: @test_mm512_mask_permute_ps
5197   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5198   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5199   return _mm512_mask_permute_ps(__W, __U, __X, 2);
5200 }
5201 
test_mm512_maskz_permute_ps(__mmask16 __U,__m512 __X)5202 __m512 test_mm512_maskz_permute_ps(__mmask16 __U, __m512 __X) {
5203   // CHECK-LABEL: @test_mm512_maskz_permute_ps
5204   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5205   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5206   return _mm512_maskz_permute_ps(__U, __X, 2);
5207 }
5208 
test_mm512_permutevar_pd(__m512d __A,__m512i __C)5209 __m512d test_mm512_permutevar_pd(__m512d __A, __m512i __C) {
5210   // CHECK-LABEL: @test_mm512_permutevar_pd
5211   // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5212   return _mm512_permutevar_pd(__A, __C);
5213 }
5214 
test_mm512_mask_permutevar_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512i __C)5215 __m512d test_mm512_mask_permutevar_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512i __C) {
5216   // CHECK-LABEL: @test_mm512_mask_permutevar_pd
5217   // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5218   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5219   return _mm512_mask_permutevar_pd(__W, __U, __A, __C);
5220 }
5221 
test_mm512_maskz_permutevar_pd(__mmask8 __U,__m512d __A,__m512i __C)5222 __m512d test_mm512_maskz_permutevar_pd(__mmask8 __U, __m512d __A, __m512i __C) {
5223   // CHECK-LABEL: @test_mm512_maskz_permutevar_pd
5224   // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5225   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5226   return _mm512_maskz_permutevar_pd(__U, __A, __C);
5227 }
5228 
test_mm512_permutevar_ps(__m512 __A,__m512i __C)5229 __m512 test_mm512_permutevar_ps(__m512 __A, __m512i __C) {
5230   // CHECK-LABEL: @test_mm512_permutevar_ps
5231   // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5232   return _mm512_permutevar_ps(__A, __C);
5233 }
5234 
test_mm512_mask_permutevar_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512i __C)5235 __m512 test_mm512_mask_permutevar_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512i __C) {
5236   // CHECK-LABEL: @test_mm512_mask_permutevar_ps
5237   // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5238   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5239   return _mm512_mask_permutevar_ps(__W, __U, __A, __C);
5240 }
5241 
test_mm512_maskz_permutevar_ps(__mmask16 __U,__m512 __A,__m512i __C)5242 __m512 test_mm512_maskz_permutevar_ps(__mmask16 __U, __m512 __A, __m512i __C) {
5243   // CHECK-LABEL: @test_mm512_maskz_permutevar_ps
5244   // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5245   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5246   return _mm512_maskz_permutevar_ps(__U, __A, __C);
5247 }
5248 
test_mm512_permutex2var_epi32(__m512i __A,__m512i __I,__m512i __B)5249 __m512i test_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B) {
5250   // CHECK-LABEL: @test_mm512_permutex2var_epi32
5251   // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5252   return _mm512_permutex2var_epi32(__A, __I, __B);
5253 }
5254 
test_mm512_maskz_permutex2var_epi32(__mmask16 __U,__m512i __A,__m512i __I,__m512i __B)5255 __m512i test_mm512_maskz_permutex2var_epi32(__mmask16 __U, __m512i __A, __m512i __I, __m512i __B) {
5256   // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi32
5257   // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5258   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5259   return _mm512_maskz_permutex2var_epi32(__U, __A, __I, __B);
5260 }
5261 
test_mm512_mask_permutex2var_epi32(__m512i __A,__mmask16 __U,__m512i __I,__m512i __B)5262 __m512i test_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U, __m512i __I, __m512i __B)
5263 {
5264   // CHECK-LABEL: @test_mm512_mask_permutex2var_epi32
5265   // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5266   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5267   return _mm512_mask_permutex2var_epi32 (__A,__U,__I,__B);
5268 }
5269 
test_mm512_permutex2var_pd(__m512d __A,__m512i __I,__m512d __B)5270 __m512d test_mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B)
5271 {
5272   // CHECK-LABEL: @test_mm512_permutex2var_pd
5273   // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5274   return _mm512_permutex2var_pd (__A, __I,__B);
5275 }
5276 
test_mm512_mask_permutex2var_pd(__m512d __A,__mmask8 __U,__m512i __I,__m512d __B)5277 __m512d test_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
5278 {
5279   // CHECK-LABEL: @test_mm512_mask_permutex2var_pd
5280   // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5281   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5282   return _mm512_mask_permutex2var_pd (__A,__U,__I,__B);
5283 }
5284 
test_mm512_maskz_permutex2var_pd(__mmask8 __U,__m512d __A,__m512i __I,__m512d __B)5285 __m512d test_mm512_maskz_permutex2var_pd(__mmask8 __U, __m512d __A, __m512i __I, __m512d __B) {
5286   // CHECK-LABEL: @test_mm512_maskz_permutex2var_pd
5287   // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5288   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5289   return _mm512_maskz_permutex2var_pd(__U, __A, __I, __B);
5290 }
5291 
test_mm512_permutex2var_ps(__m512 __A,__m512i __I,__m512 __B)5292 __m512 test_mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B)
5293 {
5294   // CHECK-LABEL: @test_mm512_permutex2var_ps
5295   // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5296   return _mm512_permutex2var_ps (__A, __I, __B);
5297 }
5298 
test_mm512_mask_permutex2var_ps(__m512 __A,__mmask16 __U,__m512i __I,__m512 __B)5299 __m512 test_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
5300 {
5301   // CHECK-LABEL: @test_mm512_mask_permutex2var_ps
5302   // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5303   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5304   return _mm512_mask_permutex2var_ps (__A,__U,__I,__B);
5305 }
5306 
test_mm512_maskz_permutex2var_ps(__mmask16 __U,__m512 __A,__m512i __I,__m512 __B)5307 __m512 test_mm512_maskz_permutex2var_ps(__mmask16 __U, __m512 __A, __m512i __I, __m512 __B) {
5308   // CHECK-LABEL: @test_mm512_maskz_permutex2var_ps
5309   // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5310   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5311   return _mm512_maskz_permutex2var_ps(__U, __A, __I, __B);
5312 }
5313 
test_mm512_permutex2var_epi64(__m512i __A,__m512i __I,__m512i __B)5314 __m512i test_mm512_permutex2var_epi64 (__m512i __A, __m512i __I, __m512i __B){
5315   // CHECK-LABEL: @test_mm512_permutex2var_epi64
5316   // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5317   return _mm512_permutex2var_epi64(__A, __I, __B);
5318 }
5319 
test_mm512_mask_permutex2var_epi64(__m512i __A,__mmask8 __U,__m512i __I,__m512i __B)5320 __m512i test_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I, __m512i __B){
5321   // CHECK-LABEL: @test_mm512_mask_permutex2var_epi64
5322   // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5323   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5324   return _mm512_mask_permutex2var_epi64(__A, __U, __I, __B);
5325 }
5326 
test_mm512_maskz_permutex2var_epi64(__mmask8 __U,__m512i __A,__m512i __I,__m512i __B)5327 __m512i test_mm512_maskz_permutex2var_epi64(__mmask8 __U, __m512i __A, __m512i __I, __m512i __B) {
5328   // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi64
5329   // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5330   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5331   return _mm512_maskz_permutex2var_epi64(__U, __A, __I, __B);
5332 }
test_mm512_testn_epi32_mask(__m512i __A,__m512i __B)5333 __mmask16 test_mm512_testn_epi32_mask(__m512i __A, __m512i __B) {
5334   // CHECK-LABEL: @test_mm512_testn_epi32_mask
5335   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5336   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5337   return _mm512_testn_epi32_mask(__A, __B);
5338 }
5339 
test_mm512_mask_testn_epi32_mask(__mmask16 __U,__m512i __A,__m512i __B)5340 __mmask16 test_mm512_mask_testn_epi32_mask(__mmask16 __U, __m512i __A, __m512i __B) {
5341   // CHECK-LABEL: @test_mm512_mask_testn_epi32_mask
5342   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5343   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5344   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
5345   return _mm512_mask_testn_epi32_mask(__U, __A, __B);
5346 }
5347 
test_mm512_testn_epi64_mask(__m512i __A,__m512i __B)5348 __mmask8 test_mm512_testn_epi64_mask(__m512i __A, __m512i __B) {
5349   // CHECK-LABEL: @test_mm512_testn_epi64_mask
5350   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5351   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5352   return _mm512_testn_epi64_mask(__A, __B);
5353 }
5354 
test_mm512_mask_testn_epi64_mask(__mmask8 __U,__m512i __A,__m512i __B)5355 __mmask8 test_mm512_mask_testn_epi64_mask(__mmask8 __U, __m512i __A, __m512i __B) {
5356   // CHECK-LABEL: @test_mm512_mask_testn_epi64_mask
5357   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5358   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5359   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5360   return _mm512_mask_testn_epi64_mask(__U, __A, __B);
5361 }
5362 
test_mm512_mask_test_epi32_mask(__mmask16 __U,__m512i __A,__m512i __B)5363 __mmask16 test_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
5364 {
5365   // CHECK-LABEL: @test_mm512_mask_test_epi32_mask
5366   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5367   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
5368   return _mm512_mask_test_epi32_mask (__U,__A,__B);
5369 }
5370 
test_mm512_mask_test_epi64_mask(__mmask8 __U,__m512i __A,__m512i __B)5371 __mmask8 test_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
5372 {
5373   // CHECK-LABEL: @test_mm512_mask_test_epi64_mask
5374   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5375   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
5376   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5377   return _mm512_mask_test_epi64_mask (__U,__A,__B);
5378 }
5379 
test_mm512_maskz_unpackhi_epi32(__mmask16 __U,__m512i __A,__m512i __B)5380 __m512i test_mm512_maskz_unpackhi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
5381   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi32
5382   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
5383   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5384   return _mm512_maskz_unpackhi_epi32(__U, __A, __B);
5385 }
5386 
test_mm512_unpackhi_epi64(__m512i __A,__m512i __B)5387 __m512i test_mm512_unpackhi_epi64(__m512i __A, __m512i __B) {
5388   // CHECK-LABEL: @test_mm512_unpackhi_epi64
5389   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5390   return _mm512_unpackhi_epi64(__A, __B);
5391 }
5392 
test_mm512_mask_unpackhi_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)5393 __m512i test_mm512_mask_unpackhi_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
5394   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi64
5395   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5396   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5397   return _mm512_mask_unpackhi_epi64(__W, __U, __A, __B);
5398 }
5399 
test_mm512_maskz_unpackhi_epi64(__mmask8 __U,__m512i __A,__m512i __B)5400 __m512i test_mm512_maskz_unpackhi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
5401   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi64
5402   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5403   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5404   return _mm512_maskz_unpackhi_epi64(__U, __A, __B);
5405 }
5406 
test_mm512_unpacklo_epi32(__m512i __A,__m512i __B)5407 __m512i test_mm512_unpacklo_epi32(__m512i __A, __m512i __B) {
5408   // CHECK-LABEL: @test_mm512_unpacklo_epi32
5409   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5410   return _mm512_unpacklo_epi32(__A, __B);
5411 }
5412 
test_mm512_mask_unpacklo_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)5413 __m512i test_mm512_mask_unpacklo_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
5414   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi32
5415   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5416   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5417   return _mm512_mask_unpacklo_epi32(__W, __U, __A, __B);
5418 }
5419 
test_mm512_maskz_unpacklo_epi32(__mmask16 __U,__m512i __A,__m512i __B)5420 __m512i test_mm512_maskz_unpacklo_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
5421   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi32
5422   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5423   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5424   return _mm512_maskz_unpacklo_epi32(__U, __A, __B);
5425 }
5426 
test_mm512_unpacklo_epi64(__m512i __A,__m512i __B)5427 __m512i test_mm512_unpacklo_epi64(__m512i __A, __m512i __B) {
5428   // CHECK-LABEL: @test_mm512_unpacklo_epi64
5429   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5430   return _mm512_unpacklo_epi64(__A, __B);
5431 }
5432 
test_mm512_mask_unpacklo_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)5433 __m512i test_mm512_mask_unpacklo_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
5434   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi64
5435   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5436   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5437   return _mm512_mask_unpacklo_epi64(__W, __U, __A, __B);
5438 }
5439 
test_mm512_maskz_unpacklo_epi64(__mmask8 __U,__m512i __A,__m512i __B)5440 __m512i test_mm512_maskz_unpacklo_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
5441   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi64
5442   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5443   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5444   return _mm512_maskz_unpacklo_epi64(__U, __A, __B);
5445 }
5446 
test_mm_roundscale_round_sd(__m128d __A,__m128d __B)5447 __m128d test_mm_roundscale_round_sd(__m128d __A, __m128d __B) {
5448   // CHECK-LABEL: @test_mm_roundscale_round_sd
5449   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5450   return _mm_roundscale_round_sd(__A, __B, 3, _MM_FROUND_CUR_DIRECTION);
5451 }
5452 
test_mm_roundscale_sd(__m128d __A,__m128d __B)5453 __m128d test_mm_roundscale_sd(__m128d __A, __m128d __B) {
5454   // CHECK-LABEL: @test_mm_roundscale_sd
5455   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5456   return _mm_roundscale_sd(__A, __B, 3);
5457 }
5458 
test_mm_mask_roundscale_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5459 __m128d test_mm_mask_roundscale_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5460   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5461     return _mm_mask_roundscale_sd(__W,__U,__A,__B,3);
5462 }
5463 
test_mm_mask_roundscale_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5464 __m128d test_mm_mask_roundscale_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5465   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5466     return _mm_mask_roundscale_round_sd(__W,__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION);
5467 }
5468 
test_mm_maskz_roundscale_sd(__mmask8 __U,__m128d __A,__m128d __B)5469 __m128d test_mm_maskz_roundscale_sd(__mmask8 __U, __m128d __A, __m128d __B){
5470   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5471     return _mm_maskz_roundscale_sd(__U,__A,__B,3);
5472 }
5473 
test_mm_maskz_roundscale_round_sd(__mmask8 __U,__m128d __A,__m128d __B)5474 __m128d test_mm_maskz_roundscale_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5475   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5476     return _mm_maskz_roundscale_round_sd(__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION );
5477 }
5478 
test_mm_roundscale_round_ss(__m128 __A,__m128 __B)5479 __m128 test_mm_roundscale_round_ss(__m128 __A, __m128 __B) {
5480   // CHECK-LABEL: @test_mm_roundscale_round_ss
5481   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5482   return _mm_roundscale_round_ss(__A, __B, 3, _MM_FROUND_CUR_DIRECTION);
5483 }
5484 
test_mm_roundscale_ss(__m128 __A,__m128 __B)5485 __m128 test_mm_roundscale_ss(__m128 __A, __m128 __B) {
5486   // CHECK-LABEL: @test_mm_roundscale_ss
5487   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5488   return _mm_roundscale_ss(__A, __B, 3);
5489 }
5490 
test_mm_mask_roundscale_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5491 __m128 test_mm_mask_roundscale_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5492   // CHECK-LABEL: @test_mm_mask_roundscale_ss
5493   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5494     return _mm_mask_roundscale_ss(__W,__U,__A,__B,3);
5495 }
5496 
test_mm_maskz_roundscale_round_ss(__mmask8 __U,__m128 __A,__m128 __B)5497 __m128 test_mm_maskz_roundscale_round_ss( __mmask8 __U, __m128 __A, __m128 __B){
5498   // CHECK-LABEL: @test_mm_maskz_roundscale_round_ss
5499   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5500     return _mm_maskz_roundscale_round_ss(__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION);
5501 }
5502 
test_mm_maskz_roundscale_ss(__mmask8 __U,__m128 __A,__m128 __B)5503 __m128 test_mm_maskz_roundscale_ss(__mmask8 __U, __m128 __A, __m128 __B){
5504   // CHECK-LABEL: @test_mm_maskz_roundscale_ss
5505   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5506     return _mm_maskz_roundscale_ss(__U,__A,__B,3);
5507 }
5508 
test_mm512_scalef_round_pd(__m512d __A,__m512d __B)5509 __m512d test_mm512_scalef_round_pd(__m512d __A, __m512d __B) {
5510   // CHECK-LABEL: @test_mm512_scalef_round_pd
5511   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5512   return _mm512_scalef_round_pd(__A, __B, _MM_FROUND_CUR_DIRECTION);
5513 }
5514 
test_mm512_mask_scalef_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)5515 __m512d test_mm512_mask_scalef_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
5516   // CHECK-LABEL: @test_mm512_mask_scalef_round_pd
5517   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5518   return _mm512_mask_scalef_round_pd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5519 }
5520 
test_mm512_maskz_scalef_round_pd(__mmask8 __U,__m512d __A,__m512d __B)5521 __m512d test_mm512_maskz_scalef_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
5522   // CHECK-LABEL: @test_mm512_maskz_scalef_round_pd
5523   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5524   return _mm512_maskz_scalef_round_pd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5525 }
5526 
test_mm512_scalef_pd(__m512d __A,__m512d __B)5527 __m512d test_mm512_scalef_pd(__m512d __A, __m512d __B) {
5528   // CHECK-LABEL: @test_mm512_scalef_pd
5529   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5530   return _mm512_scalef_pd(__A, __B);
5531 }
5532 
test_mm512_mask_scalef_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)5533 __m512d test_mm512_mask_scalef_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
5534   // CHECK-LABEL: @test_mm512_mask_scalef_pd
5535   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5536   return _mm512_mask_scalef_pd(__W, __U, __A, __B);
5537 }
5538 
test_mm512_maskz_scalef_pd(__mmask8 __U,__m512d __A,__m512d __B)5539 __m512d test_mm512_maskz_scalef_pd(__mmask8 __U, __m512d __A, __m512d __B) {
5540   // CHECK-LABEL: @test_mm512_maskz_scalef_pd
5541   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5542   return _mm512_maskz_scalef_pd(__U, __A, __B);
5543 }
5544 
test_mm512_scalef_round_ps(__m512 __A,__m512 __B)5545 __m512 test_mm512_scalef_round_ps(__m512 __A, __m512 __B) {
5546   // CHECK-LABEL: @test_mm512_scalef_round_ps
5547   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5548   return _mm512_scalef_round_ps(__A, __B, _MM_FROUND_CUR_DIRECTION);
5549 }
5550 
test_mm512_mask_scalef_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)5551 __m512 test_mm512_mask_scalef_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
5552   // CHECK-LABEL: @test_mm512_mask_scalef_round_ps
5553   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5554   return _mm512_mask_scalef_round_ps(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5555 }
5556 
test_mm512_maskz_scalef_round_ps(__mmask16 __U,__m512 __A,__m512 __B)5557 __m512 test_mm512_maskz_scalef_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
5558   // CHECK-LABEL: @test_mm512_maskz_scalef_round_ps
5559   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5560   return _mm512_maskz_scalef_round_ps(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5561 }
5562 
test_mm512_scalef_ps(__m512 __A,__m512 __B)5563 __m512 test_mm512_scalef_ps(__m512 __A, __m512 __B) {
5564   // CHECK-LABEL: @test_mm512_scalef_ps
5565   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5566   return _mm512_scalef_ps(__A, __B);
5567 }
5568 
test_mm512_mask_scalef_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)5569 __m512 test_mm512_mask_scalef_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
5570   // CHECK-LABEL: @test_mm512_mask_scalef_ps
5571   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5572   return _mm512_mask_scalef_ps(__W, __U, __A, __B);
5573 }
5574 
test_mm512_maskz_scalef_ps(__mmask16 __U,__m512 __A,__m512 __B)5575 __m512 test_mm512_maskz_scalef_ps(__mmask16 __U, __m512 __A, __m512 __B) {
5576   // CHECK-LABEL: @test_mm512_maskz_scalef_ps
5577   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5578   return _mm512_maskz_scalef_ps(__U, __A, __B);
5579 }
5580 
test_mm_scalef_round_sd(__m128d __A,__m128d __B)5581 __m128d test_mm_scalef_round_sd(__m128d __A, __m128d __B) {
5582   // CHECK-LABEL: @test_mm_scalef_round_sd
5583   // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %2, i8 -1, i32 8)
5584   return _mm_scalef_round_sd(__A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5585 }
5586 
test_mm_scalef_sd(__m128d __A,__m128d __B)5587 __m128d test_mm_scalef_sd(__m128d __A, __m128d __B) {
5588   // CHECK-LABEL: @test_mm_scalef_sd
5589   // CHECK: @llvm.x86.avx512.mask.scalef
5590   return _mm_scalef_sd(__A, __B);
5591 }
5592 
test_mm_mask_scalef_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5593 __m128d test_mm_mask_scalef_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5594   // CHECK-LABEL: @test_mm_mask_scalef_sd
5595   // CHECK: @llvm.x86.avx512.mask.scalef.sd
5596   return _mm_mask_scalef_sd(__W, __U, __A, __B);
5597 }
5598 
test_mm_mask_scalef_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5599 __m128d test_mm_mask_scalef_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5600   // CHECK-LABEL: @test_mm_mask_scalef_round_sd
5601   // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 8)
5602     return _mm_mask_scalef_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5603 }
5604 
test_mm_maskz_scalef_sd(__mmask8 __U,__m128d __A,__m128d __B)5605 __m128d test_mm_maskz_scalef_sd(__mmask8 __U, __m128d __A, __m128d __B){
5606   // CHECK-LABEL: @test_mm_maskz_scalef_sd
5607   // CHECK: @llvm.x86.avx512.mask.scalef.sd
5608     return _mm_maskz_scalef_sd(__U, __A, __B);
5609 }
5610 
test_mm_maskz_scalef_round_sd(__mmask8 __U,__m128d __A,__m128d __B)5611 __m128d test_mm_maskz_scalef_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5612   // CHECK-LABEL: @test_mm_maskz_scalef_round_sd
5613   // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 8)
5614     return _mm_maskz_scalef_round_sd(__U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5615 }
5616 
test_mm_scalef_round_ss(__m128 __A,__m128 __B)5617 __m128 test_mm_scalef_round_ss(__m128 __A, __m128 __B) {
5618   // CHECK-LABEL: @test_mm_scalef_round_ss
5619   // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 8)
5620   return _mm_scalef_round_ss(__A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5621 }
5622 
test_mm_scalef_ss(__m128 __A,__m128 __B)5623 __m128 test_mm_scalef_ss(__m128 __A, __m128 __B) {
5624   // CHECK-LABEL: @test_mm_scalef_ss
5625   // CHECK: @llvm.x86.avx512.mask.scalef.ss
5626   return _mm_scalef_ss(__A, __B);
5627 }
5628 
test_mm_mask_scalef_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5629 __m128 test_mm_mask_scalef_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5630   // CHECK-LABEL: @test_mm_mask_scalef_ss
5631   // CHECK: @llvm.x86.avx512.mask.scalef.ss
5632     return _mm_mask_scalef_ss(__W, __U, __A, __B);
5633 }
5634 
test_mm_mask_scalef_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5635 __m128 test_mm_mask_scalef_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5636   // CHECK-LABEL: @test_mm_mask_scalef_round_ss
5637   // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 8)
5638     return _mm_mask_scalef_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5639 }
5640 
test_mm_maskz_scalef_ss(__mmask8 __U,__m128 __A,__m128 __B)5641 __m128 test_mm_maskz_scalef_ss(__mmask8 __U, __m128 __A, __m128 __B){
5642   // CHECK-LABEL: @test_mm_maskz_scalef_ss
5643   // CHECK: @llvm.x86.avx512.mask.scalef.ss
5644     return _mm_maskz_scalef_ss(__U, __A, __B);
5645 }
5646 
test_mm_maskz_scalef_round_ss(__mmask8 __U,__m128 __A,__m128 __B)5647 __m128 test_mm_maskz_scalef_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
5648   // CHECK-LABEL: @test_mm_maskz_scalef_round_ss
5649   // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 8)
5650     return _mm_maskz_scalef_round_ss(__U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5651 }
5652 
test_mm512_srai_epi32(__m512i __A)5653 __m512i test_mm512_srai_epi32(__m512i __A) {
5654   // CHECK-LABEL: @test_mm512_srai_epi32
5655   // CHECK: @llvm.x86.avx512.psrai.d.512
5656   return _mm512_srai_epi32(__A, 5);
5657 }
5658 
test_mm512_srai_epi32_2(__m512i __A,int __B)5659 __m512i test_mm512_srai_epi32_2(__m512i __A, int __B) {
5660   // CHECK-LABEL: @test_mm512_srai_epi32_2
5661   // CHECK: @llvm.x86.avx512.psrai.d.512
5662   return _mm512_srai_epi32(__A, __B);
5663 }
5664 
test_mm512_mask_srai_epi32(__m512i __W,__mmask16 __U,__m512i __A)5665 __m512i test_mm512_mask_srai_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
5666   // CHECK-LABEL: @test_mm512_mask_srai_epi32
5667   // CHECK: @llvm.x86.avx512.psrai.d.512
5668   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5669   return _mm512_mask_srai_epi32(__W, __U, __A, 5);
5670 }
5671 
test_mm512_mask_srai_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,int __B)5672 __m512i test_mm512_mask_srai_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, int __B) {
5673   // CHECK-LABEL: @test_mm512_mask_srai_epi32_2
5674   // CHECK: @llvm.x86.avx512.psrai.d.512
5675   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5676   return _mm512_mask_srai_epi32(__W, __U, __A, __B);
5677 }
5678 
test_mm512_maskz_srai_epi32(__mmask16 __U,__m512i __A)5679 __m512i test_mm512_maskz_srai_epi32(__mmask16 __U, __m512i __A) {
5680   // CHECK-LABEL: @test_mm512_maskz_srai_epi32
5681   // CHECK: @llvm.x86.avx512.psrai.d.512
5682   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5683   return _mm512_maskz_srai_epi32(__U, __A, 5);
5684 }
5685 
test_mm512_maskz_srai_epi32_2(__mmask16 __U,__m512i __A,int __B)5686 __m512i test_mm512_maskz_srai_epi32_2(__mmask16 __U, __m512i __A, int __B) {
5687   // CHECK-LABEL: @test_mm512_maskz_srai_epi32_2
5688   // CHECK: @llvm.x86.avx512.psrai.d.512
5689   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5690   return _mm512_maskz_srai_epi32(__U, __A, __B);
5691 }
5692 
test_mm512_srai_epi64(__m512i __A)5693 __m512i test_mm512_srai_epi64(__m512i __A) {
5694   // CHECK-LABEL: @test_mm512_srai_epi64
5695   // CHECK: @llvm.x86.avx512.psrai.q.512
5696   return _mm512_srai_epi64(__A, 5);
5697 }
5698 
test_mm512_srai_epi64_2(__m512i __A,int __B)5699 __m512i test_mm512_srai_epi64_2(__m512i __A, int __B) {
5700   // CHECK-LABEL: @test_mm512_srai_epi64_2
5701   // CHECK: @llvm.x86.avx512.psrai.q.512
5702   return _mm512_srai_epi64(__A, __B);
5703 }
5704 
test_mm512_mask_srai_epi64(__m512i __W,__mmask8 __U,__m512i __A)5705 __m512i test_mm512_mask_srai_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
5706   // CHECK-LABEL: @test_mm512_mask_srai_epi64
5707   // CHECK: @llvm.x86.avx512.psrai.q.512
5708   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5709   return _mm512_mask_srai_epi64(__W, __U, __A, 5);
5710 }
5711 
test_mm512_mask_srai_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,int __B)5712 __m512i test_mm512_mask_srai_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, int __B) {
5713   // CHECK-LABEL: @test_mm512_mask_srai_epi64_2
5714   // CHECK: @llvm.x86.avx512.psrai.q.512
5715   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5716   return _mm512_mask_srai_epi64(__W, __U, __A, __B);
5717 }
5718 
test_mm512_maskz_srai_epi64(__mmask8 __U,__m512i __A)5719 __m512i test_mm512_maskz_srai_epi64(__mmask8 __U, __m512i __A) {
5720   // CHECK-LABEL: @test_mm512_maskz_srai_epi64
5721   // CHECK: @llvm.x86.avx512.psrai.q.512
5722   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5723   return _mm512_maskz_srai_epi64(__U, __A, 5);
5724 }
5725 
test_mm512_maskz_srai_epi64_2(__mmask8 __U,__m512i __A,int __B)5726 __m512i test_mm512_maskz_srai_epi64_2(__mmask8 __U, __m512i __A, int __B) {
5727   // CHECK-LABEL: @test_mm512_maskz_srai_epi64_2
5728   // CHECK: @llvm.x86.avx512.psrai.q.512
5729   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5730   return _mm512_maskz_srai_epi64(__U, __A, __B);
5731 }
5732 
test_mm512_sll_epi32(__m512i __A,__m128i __B)5733 __m512i test_mm512_sll_epi32(__m512i __A, __m128i __B) {
5734   // CHECK-LABEL: @test_mm512_sll_epi32
5735   // CHECK: @llvm.x86.avx512.psll.d.512
5736   return _mm512_sll_epi32(__A, __B);
5737 }
5738 
test_mm512_mask_sll_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5739 __m512i test_mm512_mask_sll_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5740   // CHECK-LABEL: @test_mm512_mask_sll_epi32
5741   // CHECK: @llvm.x86.avx512.psll.d.512
5742   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5743   return _mm512_mask_sll_epi32(__W, __U, __A, __B);
5744 }
5745 
test_mm512_maskz_sll_epi32(__mmask16 __U,__m512i __A,__m128i __B)5746 __m512i test_mm512_maskz_sll_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5747   // CHECK-LABEL: @test_mm512_maskz_sll_epi32
5748   // CHECK: @llvm.x86.avx512.psll.d.512
5749   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5750   return _mm512_maskz_sll_epi32(__U, __A, __B);
5751 }
5752 
test_mm512_sll_epi64(__m512i __A,__m128i __B)5753 __m512i test_mm512_sll_epi64(__m512i __A, __m128i __B) {
5754   // CHECK-LABEL: @test_mm512_sll_epi64
5755   // CHECK: @llvm.x86.avx512.psll.q.512
5756   return _mm512_sll_epi64(__A, __B);
5757 }
5758 
test_mm512_mask_sll_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5759 __m512i test_mm512_mask_sll_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5760   // CHECK-LABEL: @test_mm512_mask_sll_epi64
5761   // CHECK: @llvm.x86.avx512.psll.q.512
5762   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5763   return _mm512_mask_sll_epi64(__W, __U, __A, __B);
5764 }
5765 
test_mm512_maskz_sll_epi64(__mmask8 __U,__m512i __A,__m128i __B)5766 __m512i test_mm512_maskz_sll_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5767   // CHECK-LABEL: @test_mm512_maskz_sll_epi64
5768   // CHECK: @llvm.x86.avx512.psll.q.512
5769   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5770   return _mm512_maskz_sll_epi64(__U, __A, __B);
5771 }
5772 
test_mm512_sllv_epi32(__m512i __X,__m512i __Y)5773 __m512i test_mm512_sllv_epi32(__m512i __X, __m512i __Y) {
5774   // CHECK-LABEL: @test_mm512_sllv_epi32
5775   // CHECK: @llvm.x86.avx512.psllv.d.512
5776   return _mm512_sllv_epi32(__X, __Y);
5777 }
5778 
test_mm512_mask_sllv_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5779 __m512i test_mm512_mask_sllv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5780   // CHECK-LABEL: @test_mm512_mask_sllv_epi32
5781   // CHECK: @llvm.x86.avx512.psllv.d.512
5782   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5783   return _mm512_mask_sllv_epi32(__W, __U, __X, __Y);
5784 }
5785 
test_mm512_maskz_sllv_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5786 __m512i test_mm512_maskz_sllv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5787   // CHECK-LABEL: @test_mm512_maskz_sllv_epi32
5788   // CHECK: @llvm.x86.avx512.psllv.d.512
5789   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5790   return _mm512_maskz_sllv_epi32(__U, __X, __Y);
5791 }
5792 
test_mm512_sllv_epi64(__m512i __X,__m512i __Y)5793 __m512i test_mm512_sllv_epi64(__m512i __X, __m512i __Y) {
5794   // CHECK-LABEL: @test_mm512_sllv_epi64
5795   // CHECK: @llvm.x86.avx512.psllv.q.512
5796   return _mm512_sllv_epi64(__X, __Y);
5797 }
5798 
test_mm512_mask_sllv_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5799 __m512i test_mm512_mask_sllv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5800   // CHECK-LABEL: @test_mm512_mask_sllv_epi64
5801   // CHECK: @llvm.x86.avx512.psllv.q.512
5802   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5803   return _mm512_mask_sllv_epi64(__W, __U, __X, __Y);
5804 }
5805 
test_mm512_maskz_sllv_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5806 __m512i test_mm512_maskz_sllv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5807   // CHECK-LABEL: @test_mm512_maskz_sllv_epi64
5808   // CHECK: @llvm.x86.avx512.psllv.q.512
5809   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5810   return _mm512_maskz_sllv_epi64(__U, __X, __Y);
5811 }
5812 
test_mm512_sra_epi32(__m512i __A,__m128i __B)5813 __m512i test_mm512_sra_epi32(__m512i __A, __m128i __B) {
5814   // CHECK-LABEL: @test_mm512_sra_epi32
5815   // CHECK: @llvm.x86.avx512.psra.d.512
5816   return _mm512_sra_epi32(__A, __B);
5817 }
5818 
test_mm512_mask_sra_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5819 __m512i test_mm512_mask_sra_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5820   // CHECK-LABEL: @test_mm512_mask_sra_epi32
5821   // CHECK: @llvm.x86.avx512.psra.d.512
5822   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5823   return _mm512_mask_sra_epi32(__W, __U, __A, __B);
5824 }
5825 
test_mm512_maskz_sra_epi32(__mmask16 __U,__m512i __A,__m128i __B)5826 __m512i test_mm512_maskz_sra_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5827   // CHECK-LABEL: @test_mm512_maskz_sra_epi32
5828   // CHECK: @llvm.x86.avx512.psra.d.512
5829   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5830   return _mm512_maskz_sra_epi32(__U, __A, __B);
5831 }
5832 
test_mm512_sra_epi64(__m512i __A,__m128i __B)5833 __m512i test_mm512_sra_epi64(__m512i __A, __m128i __B) {
5834   // CHECK-LABEL: @test_mm512_sra_epi64
5835   // CHECK: @llvm.x86.avx512.psra.q.512
5836   return _mm512_sra_epi64(__A, __B);
5837 }
5838 
test_mm512_mask_sra_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5839 __m512i test_mm512_mask_sra_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5840   // CHECK-LABEL: @test_mm512_mask_sra_epi64
5841   // CHECK: @llvm.x86.avx512.psra.q.512
5842   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5843   return _mm512_mask_sra_epi64(__W, __U, __A, __B);
5844 }
5845 
test_mm512_maskz_sra_epi64(__mmask8 __U,__m512i __A,__m128i __B)5846 __m512i test_mm512_maskz_sra_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5847   // CHECK-LABEL: @test_mm512_maskz_sra_epi64
5848   // CHECK: @llvm.x86.avx512.psra.q.512
5849   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5850   return _mm512_maskz_sra_epi64(__U, __A, __B);
5851 }
5852 
test_mm512_srav_epi32(__m512i __X,__m512i __Y)5853 __m512i test_mm512_srav_epi32(__m512i __X, __m512i __Y) {
5854   // CHECK-LABEL: @test_mm512_srav_epi32
5855   // CHECK: @llvm.x86.avx512.psrav.d.512
5856   return _mm512_srav_epi32(__X, __Y);
5857 }
5858 
test_mm512_mask_srav_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5859 __m512i test_mm512_mask_srav_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5860   // CHECK-LABEL: @test_mm512_mask_srav_epi32
5861   // CHECK: @llvm.x86.avx512.psrav.d.512
5862   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5863   return _mm512_mask_srav_epi32(__W, __U, __X, __Y);
5864 }
5865 
test_mm512_maskz_srav_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5866 __m512i test_mm512_maskz_srav_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5867   // CHECK-LABEL: @test_mm512_maskz_srav_epi32
5868   // CHECK: @llvm.x86.avx512.psrav.d.512
5869   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5870   return _mm512_maskz_srav_epi32(__U, __X, __Y);
5871 }
5872 
test_mm512_srav_epi64(__m512i __X,__m512i __Y)5873 __m512i test_mm512_srav_epi64(__m512i __X, __m512i __Y) {
5874   // CHECK-LABEL: @test_mm512_srav_epi64
5875   // CHECK: @llvm.x86.avx512.psrav.q.512
5876   return _mm512_srav_epi64(__X, __Y);
5877 }
5878 
test_mm512_mask_srav_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5879 __m512i test_mm512_mask_srav_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5880   // CHECK-LABEL: @test_mm512_mask_srav_epi64
5881   // CHECK: @llvm.x86.avx512.psrav.q.512
5882   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5883   return _mm512_mask_srav_epi64(__W, __U, __X, __Y);
5884 }
5885 
test_mm512_maskz_srav_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5886 __m512i test_mm512_maskz_srav_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5887   // CHECK-LABEL: @test_mm512_maskz_srav_epi64
5888   // CHECK: @llvm.x86.avx512.psrav.q.512
5889   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5890   return _mm512_maskz_srav_epi64(__U, __X, __Y);
5891 }
5892 
test_mm512_srl_epi32(__m512i __A,__m128i __B)5893 __m512i test_mm512_srl_epi32(__m512i __A, __m128i __B) {
5894   // CHECK-LABEL: @test_mm512_srl_epi32
5895   // CHECK: @llvm.x86.avx512.psrl.d.512
5896   return _mm512_srl_epi32(__A, __B);
5897 }
5898 
test_mm512_mask_srl_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5899 __m512i test_mm512_mask_srl_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5900   // CHECK-LABEL: @test_mm512_mask_srl_epi32
5901   // CHECK: @llvm.x86.avx512.psrl.d.512
5902   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5903   return _mm512_mask_srl_epi32(__W, __U, __A, __B);
5904 }
5905 
test_mm512_maskz_srl_epi32(__mmask16 __U,__m512i __A,__m128i __B)5906 __m512i test_mm512_maskz_srl_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5907   // CHECK-LABEL: @test_mm512_maskz_srl_epi32
5908   // CHECK: @llvm.x86.avx512.psrl.d.512
5909   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5910   return _mm512_maskz_srl_epi32(__U, __A, __B);
5911 }
5912 
test_mm512_srl_epi64(__m512i __A,__m128i __B)5913 __m512i test_mm512_srl_epi64(__m512i __A, __m128i __B) {
5914   // CHECK-LABEL: @test_mm512_srl_epi64
5915   // CHECK: @llvm.x86.avx512.psrl.q.512
5916   return _mm512_srl_epi64(__A, __B);
5917 }
5918 
test_mm512_mask_srl_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5919 __m512i test_mm512_mask_srl_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5920   // CHECK-LABEL: @test_mm512_mask_srl_epi64
5921   // CHECK: @llvm.x86.avx512.psrl.q.512
5922   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5923   return _mm512_mask_srl_epi64(__W, __U, __A, __B);
5924 }
5925 
test_mm512_maskz_srl_epi64(__mmask8 __U,__m512i __A,__m128i __B)5926 __m512i test_mm512_maskz_srl_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5927   // CHECK-LABEL: @test_mm512_maskz_srl_epi64
5928   // CHECK: @llvm.x86.avx512.psrl.q.512
5929   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5930   return _mm512_maskz_srl_epi64(__U, __A, __B);
5931 }
5932 
test_mm512_srlv_epi32(__m512i __X,__m512i __Y)5933 __m512i test_mm512_srlv_epi32(__m512i __X, __m512i __Y) {
5934   // CHECK-LABEL: @test_mm512_srlv_epi32
5935   // CHECK: @llvm.x86.avx512.psrlv.d.512
5936   return _mm512_srlv_epi32(__X, __Y);
5937 }
5938 
test_mm512_mask_srlv_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5939 __m512i test_mm512_mask_srlv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5940   // CHECK-LABEL: @test_mm512_mask_srlv_epi32
5941   // CHECK: @llvm.x86.avx512.psrlv.d.512
5942   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5943   return _mm512_mask_srlv_epi32(__W, __U, __X, __Y);
5944 }
5945 
test_mm512_maskz_srlv_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5946 __m512i test_mm512_maskz_srlv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5947   // CHECK-LABEL: @test_mm512_maskz_srlv_epi32
5948   // CHECK: @llvm.x86.avx512.psrlv.d.512
5949   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5950   return _mm512_maskz_srlv_epi32(__U, __X, __Y);
5951 }
5952 
test_mm512_srlv_epi64(__m512i __X,__m512i __Y)5953 __m512i test_mm512_srlv_epi64(__m512i __X, __m512i __Y) {
5954   // CHECK-LABEL: @test_mm512_srlv_epi64
5955   // CHECK: @llvm.x86.avx512.psrlv.q.512
5956   return _mm512_srlv_epi64(__X, __Y);
5957 }
5958 
test_mm512_mask_srlv_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5959 __m512i test_mm512_mask_srlv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5960   // CHECK-LABEL: @test_mm512_mask_srlv_epi64
5961   // CHECK: @llvm.x86.avx512.psrlv.q.512
5962   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5963   return _mm512_mask_srlv_epi64(__W, __U, __X, __Y);
5964 }
5965 
test_mm512_maskz_srlv_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5966 __m512i test_mm512_maskz_srlv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5967   // CHECK-LABEL: @test_mm512_maskz_srlv_epi64
5968   // CHECK: @llvm.x86.avx512.psrlv.q.512
5969   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5970   return _mm512_maskz_srlv_epi64(__U, __X, __Y);
5971 }
5972 
test_mm512_ternarylogic_epi32(__m512i __A,__m512i __B,__m512i __C)5973 __m512i test_mm512_ternarylogic_epi32(__m512i __A, __m512i __B, __m512i __C) {
5974   // CHECK-LABEL: @test_mm512_ternarylogic_epi32
5975   // CHECK: @llvm.x86.avx512.pternlog.d.512
5976   return _mm512_ternarylogic_epi32(__A, __B, __C, 4);
5977 }
5978 
test_mm512_mask_ternarylogic_epi32(__m512i __A,__mmask16 __U,__m512i __B,__m512i __C)5979 __m512i test_mm512_mask_ternarylogic_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {
5980   // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi32
5981   // CHECK: @llvm.x86.avx512.pternlog.d.512
5982   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5983   return _mm512_mask_ternarylogic_epi32(__A, __U, __B, __C, 4);
5984 }
5985 
test_mm512_maskz_ternarylogic_epi32(__mmask16 __U,__m512i __A,__m512i __B,__m512i __C)5986 __m512i test_mm512_maskz_ternarylogic_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {
5987   // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi32
5988   // CHECK: @llvm.x86.avx512.pternlog.d.512
5989   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> zeroinitializer
5990   return _mm512_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4);
5991 }
5992 
test_mm512_ternarylogic_epi64(__m512i __A,__m512i __B,__m512i __C)5993 __m512i test_mm512_ternarylogic_epi64(__m512i __A, __m512i __B, __m512i __C) {
5994   // CHECK-LABEL: @test_mm512_ternarylogic_epi64
5995   // CHECK: @llvm.x86.avx512.pternlog.q.512
5996   return _mm512_ternarylogic_epi64(__A, __B, __C, 4);
5997 }
5998 
test_mm512_mask_ternarylogic_epi64(__m512i __A,__mmask8 __U,__m512i __B,__m512i __C)5999 __m512i test_mm512_mask_ternarylogic_epi64(__m512i __A, __mmask8 __U, __m512i __B, __m512i __C) {
6000   // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi64
6001   // CHECK: @llvm.x86.avx512.pternlog.q.512
6002   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6003   return _mm512_mask_ternarylogic_epi64(__A, __U, __B, __C, 4);
6004 }
6005 
test_mm512_maskz_ternarylogic_epi64(__mmask8 __U,__m512i __A,__m512i __B,__m512i __C)6006 __m512i test_mm512_maskz_ternarylogic_epi64(__mmask8 __U, __m512i __A, __m512i __B, __m512i __C) {
6007   // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi64
6008   // CHECK: @llvm.x86.avx512.pternlog.q.512
6009   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> zeroinitializer
6010   return _mm512_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4);
6011 }
6012 
test_mm512_shuffle_f32x4(__m512 __A,__m512 __B)6013 __m512 test_mm512_shuffle_f32x4(__m512 __A, __m512 __B) {
6014   // CHECK-LABEL: @test_mm512_shuffle_f32x4
6015   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6016   return _mm512_shuffle_f32x4(__A, __B, 4);
6017 }
6018 
test_mm512_mask_shuffle_f32x4(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)6019 __m512 test_mm512_mask_shuffle_f32x4(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
6020   // CHECK-LABEL: @test_mm512_mask_shuffle_f32x4
6021   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6022   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6023   return _mm512_mask_shuffle_f32x4(__W, __U, __A, __B, 4);
6024 }
6025 
test_mm512_maskz_shuffle_f32x4(__mmask16 __U,__m512 __A,__m512 __B)6026 __m512 test_mm512_maskz_shuffle_f32x4(__mmask16 __U, __m512 __A, __m512 __B) {
6027   // CHECK-LABEL: @test_mm512_maskz_shuffle_f32x4
6028   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6029   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6030   return _mm512_maskz_shuffle_f32x4(__U, __A, __B, 4);
6031 }
6032 
test_mm512_shuffle_f64x2(__m512d __A,__m512d __B)6033 __m512d test_mm512_shuffle_f64x2(__m512d __A, __m512d __B) {
6034   // CHECK-LABEL: @test_mm512_shuffle_f64x2
6035   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6036   return _mm512_shuffle_f64x2(__A, __B, 4);
6037 }
6038 
test_mm512_mask_shuffle_f64x2(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)6039 __m512d test_mm512_mask_shuffle_f64x2(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
6040   // CHECK-LABEL: @test_mm512_mask_shuffle_f64x2
6041   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6042   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6043   return _mm512_mask_shuffle_f64x2(__W, __U, __A, __B, 4);
6044 }
6045 
test_mm512_maskz_shuffle_f64x2(__mmask8 __U,__m512d __A,__m512d __B)6046 __m512d test_mm512_maskz_shuffle_f64x2(__mmask8 __U, __m512d __A, __m512d __B) {
6047   // CHECK-LABEL: @test_mm512_maskz_shuffle_f64x2
6048   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6049   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6050   return _mm512_maskz_shuffle_f64x2(__U, __A, __B, 4);
6051 }
6052 
test_mm512_shuffle_i32x4(__m512i __A,__m512i __B)6053 __m512i test_mm512_shuffle_i32x4(__m512i __A, __m512i __B) {
6054   // CHECK-LABEL: @test_mm512_shuffle_i32x4
6055   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6056   return _mm512_shuffle_i32x4(__A, __B, 4);
6057 }
6058 
test_mm512_mask_shuffle_i32x4(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)6059 __m512i test_mm512_mask_shuffle_i32x4(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
6060   // CHECK-LABEL: @test_mm512_mask_shuffle_i32x4
6061   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6062   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6063   return _mm512_mask_shuffle_i32x4(__W, __U, __A, __B, 4);
6064 }
6065 
test_mm512_maskz_shuffle_i32x4(__mmask16 __U,__m512i __A,__m512i __B)6066 __m512i test_mm512_maskz_shuffle_i32x4(__mmask16 __U, __m512i __A, __m512i __B) {
6067   // CHECK-LABEL: @test_mm512_maskz_shuffle_i32x4
6068   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6069   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6070   return _mm512_maskz_shuffle_i32x4(__U, __A, __B, 4);
6071 }
6072 
test_mm512_shuffle_i64x2(__m512i __A,__m512i __B)6073 __m512i test_mm512_shuffle_i64x2(__m512i __A, __m512i __B) {
6074   // CHECK-LABEL: @test_mm512_shuffle_i64x2
6075   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6076   return _mm512_shuffle_i64x2(__A, __B, 4);
6077 }
6078 
test_mm512_mask_shuffle_i64x2(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)6079 __m512i test_mm512_mask_shuffle_i64x2(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
6080   // CHECK-LABEL: @test_mm512_mask_shuffle_i64x2
6081   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6082   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6083   return _mm512_mask_shuffle_i64x2(__W, __U, __A, __B, 4);
6084 }
6085 
test_mm512_maskz_shuffle_i64x2(__mmask8 __U,__m512i __A,__m512i __B)6086 __m512i test_mm512_maskz_shuffle_i64x2(__mmask8 __U, __m512i __A, __m512i __B) {
6087   // CHECK-LABEL: @test_mm512_maskz_shuffle_i64x2
6088   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6089   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6090   return _mm512_maskz_shuffle_i64x2(__U, __A, __B, 4);
6091 }
6092 
test_mm512_shuffle_pd(__m512d __M,__m512d __V)6093 __m512d test_mm512_shuffle_pd(__m512d __M, __m512d __V) {
6094   // CHECK-LABEL: @test_mm512_shuffle_pd
6095   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6096   return _mm512_shuffle_pd(__M, __V, 4);
6097 }
6098 
test_mm512_mask_shuffle_pd(__m512d __W,__mmask8 __U,__m512d __M,__m512d __V)6099 __m512d test_mm512_mask_shuffle_pd(__m512d __W, __mmask8 __U, __m512d __M, __m512d __V) {
6100   // CHECK-LABEL: @test_mm512_mask_shuffle_pd
6101   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6102   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6103   return _mm512_mask_shuffle_pd(__W, __U, __M, __V, 4);
6104 }
6105 
test_mm512_maskz_shuffle_pd(__mmask8 __U,__m512d __M,__m512d __V)6106 __m512d test_mm512_maskz_shuffle_pd(__mmask8 __U, __m512d __M, __m512d __V) {
6107   // CHECK-LABEL: @test_mm512_maskz_shuffle_pd
6108   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6109   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6110   return _mm512_maskz_shuffle_pd(__U, __M, __V, 4);
6111 }
6112 
test_mm512_shuffle_ps(__m512 __M,__m512 __V)6113 __m512 test_mm512_shuffle_ps(__m512 __M, __m512 __V) {
6114   // CHECK-LABEL: @test_mm512_shuffle_ps
6115   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6116   return _mm512_shuffle_ps(__M, __V, 4);
6117 }
6118 
test_mm512_mask_shuffle_ps(__m512 __W,__mmask16 __U,__m512 __M,__m512 __V)6119 __m512 test_mm512_mask_shuffle_ps(__m512 __W, __mmask16 __U, __m512 __M, __m512 __V) {
6120   // CHECK-LABEL: @test_mm512_mask_shuffle_ps
6121   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6122   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6123   return _mm512_mask_shuffle_ps(__W, __U, __M, __V, 4);
6124 }
6125 
test_mm512_maskz_shuffle_ps(__mmask16 __U,__m512 __M,__m512 __V)6126 __m512 test_mm512_maskz_shuffle_ps(__mmask16 __U, __m512 __M, __m512 __V) {
6127   // CHECK-LABEL: @test_mm512_maskz_shuffle_ps
6128   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6129   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6130   return _mm512_maskz_shuffle_ps(__U, __M, __V, 4);
6131 }
6132 
test_mm_sqrt_round_sd(__m128d __A,__m128d __B)6133 __m128d test_mm_sqrt_round_sd(__m128d __A, __m128d __B) {
6134   // CHECK-LABEL: @test_mm_sqrt_round_sd
6135   // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 -1, i32 8)
6136   return _mm_sqrt_round_sd(__A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6137 }
6138 
test_mm_mask_sqrt_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6139 __m128d test_mm_mask_sqrt_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6140   // CHECK-LABEL: @test_mm_mask_sqrt_sd
6141   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6142   // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6143   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6144   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6145   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6146   // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6147   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6148   return _mm_mask_sqrt_sd(__W,__U,__A,__B);
6149 }
6150 
test_mm_mask_sqrt_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6151 __m128d test_mm_mask_sqrt_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6152   // CHECK-LABEL: @test_mm_mask_sqrt_round_sd
6153   // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 8)
6154   return _mm_mask_sqrt_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6155 }
6156 
test_mm_maskz_sqrt_sd(__mmask8 __U,__m128d __A,__m128d __B)6157 __m128d test_mm_maskz_sqrt_sd(__mmask8 __U, __m128d __A, __m128d __B){
6158   // CHECK-LABEL: @test_mm_maskz_sqrt_sd
6159   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6160   // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6161   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6162   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6163   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6164   // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6165   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6166   return _mm_maskz_sqrt_sd(__U,__A,__B);
6167 }
6168 
test_mm_maskz_sqrt_round_sd(__mmask8 __U,__m128d __A,__m128d __B)6169 __m128d test_mm_maskz_sqrt_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
6170   // CHECK-LABEL: @test_mm_maskz_sqrt_round_sd
6171   // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 8)
6172   return _mm_maskz_sqrt_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6173 }
6174 
test_mm_sqrt_round_ss(__m128 __A,__m128 __B)6175 __m128 test_mm_sqrt_round_ss(__m128 __A, __m128 __B) {
6176   // CHECK-LABEL: @test_mm_sqrt_round_ss
6177   // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 8)
6178   return _mm_sqrt_round_ss(__A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6179 }
6180 
test_mm_mask_sqrt_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6181 __m128 test_mm_mask_sqrt_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
6182   // CHECK-LABEL: @test_mm_mask_sqrt_ss
6183   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6184   // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6185   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6186   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6187   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6188   // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6189   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6190   return _mm_mask_sqrt_ss(__W,__U,__A,__B);
6191 }
6192 
test_mm_mask_sqrt_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6193 __m128 test_mm_mask_sqrt_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
6194   // CHECK-LABEL: @test_mm_mask_sqrt_round_ss
6195   // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 8)
6196   return _mm_mask_sqrt_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6197 }
6198 
test_mm_maskz_sqrt_ss(__mmask8 __U,__m128 __A,__m128 __B)6199 __m128 test_mm_maskz_sqrt_ss(__mmask8 __U, __m128 __A, __m128 __B){
6200   // CHECK-LABEL: @test_mm_maskz_sqrt_ss
6201   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6202   // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6203   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6204   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6205   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6206   // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6207   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6208   return _mm_maskz_sqrt_ss(__U,__A,__B);
6209 }
6210 
test_mm_maskz_sqrt_round_ss(__mmask8 __U,__m128 __A,__m128 __B)6211 __m128 test_mm_maskz_sqrt_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
6212   // CHECK-LABEL: @test_mm_maskz_sqrt_round_ss
6213   // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 8)
6214   return _mm_maskz_sqrt_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6215 }
6216 
test_mm512_broadcast_f32x4(float const * __A)6217 __m512 test_mm512_broadcast_f32x4(float const* __A) {
6218   // CHECK-LABEL: @test_mm512_broadcast_f32x4
6219   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6220   return _mm512_broadcast_f32x4(_mm_loadu_ps(__A));
6221 }
6222 
test_mm512_mask_broadcast_f32x4(__m512 __O,__mmask16 __M,float const * __A)6223 __m512 test_mm512_mask_broadcast_f32x4(__m512 __O, __mmask16 __M, float const* __A) {
6224   // CHECK-LABEL: @test_mm512_mask_broadcast_f32x4
6225   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6226   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6227   return _mm512_mask_broadcast_f32x4(__O, __M, _mm_loadu_ps(__A));
6228 }
6229 
test_mm512_maskz_broadcast_f32x4(__mmask16 __M,float const * __A)6230 __m512 test_mm512_maskz_broadcast_f32x4(__mmask16 __M, float const* __A) {
6231   // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x4
6232   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6233   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6234   return _mm512_maskz_broadcast_f32x4(__M, _mm_loadu_ps(__A));
6235 }
6236 
test_mm512_broadcast_f64x4(double const * __A)6237 __m512d test_mm512_broadcast_f64x4(double const* __A) {
6238   // CHECK-LABEL: @test_mm512_broadcast_f64x4
6239   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6240   return _mm512_broadcast_f64x4(_mm256_loadu_pd(__A));
6241 }
6242 
test_mm512_mask_broadcast_f64x4(__m512d __O,__mmask8 __M,double const * __A)6243 __m512d test_mm512_mask_broadcast_f64x4(__m512d __O, __mmask8 __M, double const* __A) {
6244   // CHECK-LABEL: @test_mm512_mask_broadcast_f64x4
6245   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6246   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6247   return _mm512_mask_broadcast_f64x4(__O, __M, _mm256_loadu_pd(__A));
6248 }
6249 
test_mm512_maskz_broadcast_f64x4(__mmask8 __M,double const * __A)6250 __m512d test_mm512_maskz_broadcast_f64x4(__mmask8 __M, double const* __A) {
6251   // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x4
6252   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6253   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6254   return _mm512_maskz_broadcast_f64x4(__M, _mm256_loadu_pd(__A));
6255 }
6256 
test_mm512_broadcast_i32x4(__m128i const * __A)6257 __m512i test_mm512_broadcast_i32x4(__m128i const* __A) {
6258   // CHECK-LABEL: @test_mm512_broadcast_i32x4
6259   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6260   return _mm512_broadcast_i32x4(_mm_loadu_si128(__A));
6261 }
6262 
test_mm512_mask_broadcast_i32x4(__m512i __O,__mmask16 __M,__m128i const * __A)6263 __m512i test_mm512_mask_broadcast_i32x4(__m512i __O, __mmask16 __M, __m128i const* __A) {
6264   // CHECK-LABEL: @test_mm512_mask_broadcast_i32x4
6265   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6266   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6267   return _mm512_mask_broadcast_i32x4(__O, __M, _mm_loadu_si128(__A));
6268 }
6269 
test_mm512_maskz_broadcast_i32x4(__mmask16 __M,__m128i const * __A)6270 __m512i test_mm512_maskz_broadcast_i32x4(__mmask16 __M, __m128i const* __A) {
6271   // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x4
6272   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6273   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6274   return _mm512_maskz_broadcast_i32x4(__M, _mm_loadu_si128(__A));
6275 }
6276 
test_mm512_broadcast_i64x4(__m256i const * __A)6277 __m512i test_mm512_broadcast_i64x4(__m256i const* __A) {
6278   // CHECK-LABEL: @test_mm512_broadcast_i64x4
6279   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6280   return _mm512_broadcast_i64x4(_mm256_loadu_si256(__A));
6281 }
6282 
test_mm512_mask_broadcast_i64x4(__m512i __O,__mmask8 __M,__m256i const * __A)6283 __m512i test_mm512_mask_broadcast_i64x4(__m512i __O, __mmask8 __M, __m256i const* __A) {
6284   // CHECK-LABEL: @test_mm512_mask_broadcast_i64x4
6285   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6286   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6287   return _mm512_mask_broadcast_i64x4(__O, __M, _mm256_loadu_si256(__A));
6288 }
6289 
test_mm512_maskz_broadcast_i64x4(__mmask8 __M,__m256i const * __A)6290 __m512i test_mm512_maskz_broadcast_i64x4(__mmask8 __M, __m256i const* __A) {
6291   // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x4
6292   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6293   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6294   return _mm512_maskz_broadcast_i64x4(__M, _mm256_loadu_si256(__A));
6295 }
6296 
test_mm512_broadcastsd_pd(__m128d __A)6297 __m512d test_mm512_broadcastsd_pd(__m128d __A) {
6298   // CHECK-LABEL: @test_mm512_broadcastsd_pd
6299   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6300   return _mm512_broadcastsd_pd(__A);
6301 }
6302 
test_mm512_mask_broadcastsd_pd(__m512d __O,__mmask8 __M,__m128d __A)6303 __m512d test_mm512_mask_broadcastsd_pd(__m512d __O, __mmask8 __M, __m128d __A) {
6304   // CHECK-LABEL: @test_mm512_mask_broadcastsd_pd
6305   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6306   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6307   return _mm512_mask_broadcastsd_pd(__O, __M, __A);
6308 }
6309 
test_mm512_maskz_broadcastsd_pd(__mmask8 __M,__m128d __A)6310 __m512d test_mm512_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {
6311   // CHECK-LABEL: @test_mm512_maskz_broadcastsd_pd
6312   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6313   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6314   return _mm512_maskz_broadcastsd_pd(__M, __A);
6315 }
6316 
test_mm512_broadcastss_ps(__m128 __A)6317 __m512 test_mm512_broadcastss_ps(__m128 __A) {
6318   // CHECK-LABEL: @test_mm512_broadcastss_ps
6319   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6320   return _mm512_broadcastss_ps(__A);
6321 }
6322 
test_mm512_mask_broadcastss_ps(__m512 __O,__mmask16 __M,__m128 __A)6323 __m512 test_mm512_mask_broadcastss_ps(__m512 __O, __mmask16 __M, __m128 __A) {
6324   // CHECK-LABEL: @test_mm512_mask_broadcastss_ps
6325   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6326   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6327   return _mm512_mask_broadcastss_ps(__O, __M, __A);
6328 }
6329 
test_mm512_maskz_broadcastss_ps(__mmask16 __M,__m128 __A)6330 __m512 test_mm512_maskz_broadcastss_ps(__mmask16 __M, __m128 __A) {
6331   // CHECK-LABEL: @test_mm512_maskz_broadcastss_ps
6332   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6333   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6334   return _mm512_maskz_broadcastss_ps(__M, __A);
6335 }
6336 
test_mm512_broadcastd_epi32(__m128i __A)6337 __m512i test_mm512_broadcastd_epi32(__m128i __A) {
6338   // CHECK-LABEL: @test_mm512_broadcastd_epi32
6339   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6340   return _mm512_broadcastd_epi32(__A);
6341 }
6342 
test_mm512_mask_broadcastd_epi32(__m512i __O,__mmask16 __M,__m128i __A)6343 __m512i test_mm512_mask_broadcastd_epi32(__m512i __O, __mmask16 __M, __m128i __A) {
6344   // CHECK-LABEL: @test_mm512_mask_broadcastd_epi32
6345   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6346   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6347   return _mm512_mask_broadcastd_epi32(__O, __M, __A);
6348 }
6349 
test_mm512_maskz_broadcastd_epi32(__mmask16 __M,__m128i __A)6350 __m512i test_mm512_maskz_broadcastd_epi32(__mmask16 __M, __m128i __A) {
6351   // CHECK-LABEL: @test_mm512_maskz_broadcastd_epi32
6352   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6353   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6354   return _mm512_maskz_broadcastd_epi32(__M, __A);
6355 }
6356 
test_mm512_broadcastq_epi64(__m128i __A)6357 __m512i test_mm512_broadcastq_epi64(__m128i __A) {
6358   // CHECK-LABEL: @test_mm512_broadcastq_epi64
6359   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6360   return _mm512_broadcastq_epi64(__A);
6361 }
6362 
test_mm512_mask_broadcastq_epi64(__m512i __O,__mmask8 __M,__m128i __A)6363 __m512i test_mm512_mask_broadcastq_epi64(__m512i __O, __mmask8 __M, __m128i __A) {
6364   // CHECK-LABEL: @test_mm512_mask_broadcastq_epi64
6365   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6366   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6367   return _mm512_mask_broadcastq_epi64(__O, __M, __A);
6368 }
6369 
test_mm512_maskz_broadcastq_epi64(__mmask8 __M,__m128i __A)6370 __m512i test_mm512_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
6371   // CHECK-LABEL: @test_mm512_maskz_broadcastq_epi64
6372   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6373   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6374   return _mm512_maskz_broadcastq_epi64(__M, __A);
6375 }
6376 
test_mm512_cvtsepi32_epi8(__m512i __A)6377 __m128i test_mm512_cvtsepi32_epi8(__m512i __A) {
6378   // CHECK-LABEL: @test_mm512_cvtsepi32_epi8
6379   // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6380   return _mm512_cvtsepi32_epi8(__A);
6381 }
6382 
test_mm512_mask_cvtsepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6383 __m128i test_mm512_mask_cvtsepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6384   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi8
6385   // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6386   return _mm512_mask_cvtsepi32_epi8(__O, __M, __A);
6387 }
6388 
test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M,__m512i __A)6389 __m128i test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M, __m512i __A) {
6390   // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi8
6391   // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6392   return _mm512_maskz_cvtsepi32_epi8(__M, __A);
6393 }
6394 
test_mm512_mask_cvtsepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6395 void test_mm512_mask_cvtsepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6396   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi8
6397   // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.512
6398   return _mm512_mask_cvtsepi32_storeu_epi8(__P, __M, __A);
6399 }
6400 
test_mm512_cvtsepi32_epi16(__m512i __A)6401 __m256i test_mm512_cvtsepi32_epi16(__m512i __A) {
6402   // CHECK-LABEL: @test_mm512_cvtsepi32_epi16
6403   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6404   return _mm512_cvtsepi32_epi16(__A);
6405 }
6406 
test_mm512_mask_cvtsepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6407 __m256i test_mm512_mask_cvtsepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6408   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi16
6409   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6410   return _mm512_mask_cvtsepi32_epi16(__O, __M, __A);
6411 }
6412 
test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M,__m512i __A)6413 __m256i test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M, __m512i __A) {
6414   // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi16
6415   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6416   return _mm512_maskz_cvtsepi32_epi16(__M, __A);
6417 }
6418 
test_mm512_mask_cvtsepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6419 void test_mm512_mask_cvtsepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
6420   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi16
6421   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.512
6422   return _mm512_mask_cvtsepi32_storeu_epi16(__P, __M, __A);
6423 }
6424 
test_mm512_cvtsepi64_epi8(__m512i __A)6425 __m128i test_mm512_cvtsepi64_epi8(__m512i __A) {
6426   // CHECK-LABEL: @test_mm512_cvtsepi64_epi8
6427   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6428   return _mm512_cvtsepi64_epi8(__A);
6429 }
6430 
test_mm512_mask_cvtsepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6431 __m128i test_mm512_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6432   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi8
6433   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6434   return _mm512_mask_cvtsepi64_epi8(__O, __M, __A);
6435 }
6436 
test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M,__m512i __A)6437 __m128i test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M, __m512i __A) {
6438   // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi8
6439   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6440   return _mm512_maskz_cvtsepi64_epi8(__M, __A);
6441 }
6442 
test_mm512_mask_cvtsepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6443 void test_mm512_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6444   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi8
6445   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.512
6446   return _mm512_mask_cvtsepi64_storeu_epi8(__P, __M, __A);
6447 }
6448 
test_mm512_cvtsepi64_epi32(__m512i __A)6449 __m256i test_mm512_cvtsepi64_epi32(__m512i __A) {
6450   // CHECK-LABEL: @test_mm512_cvtsepi64_epi32
6451   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6452   return _mm512_cvtsepi64_epi32(__A);
6453 }
6454 
test_mm512_mask_cvtsepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6455 __m256i test_mm512_mask_cvtsepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6456   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi32
6457   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6458   return _mm512_mask_cvtsepi64_epi32(__O, __M, __A);
6459 }
6460 
test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M,__m512i __A)6461 __m256i test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M, __m512i __A) {
6462   // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi32
6463   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6464   return _mm512_maskz_cvtsepi64_epi32(__M, __A);
6465 }
6466 
test_mm512_mask_cvtsepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6467 void test_mm512_mask_cvtsepi64_storeu_epi32(void *__P, __mmask8 __M, __m512i __A) {
6468   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi32
6469   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.512
6470   return _mm512_mask_cvtsepi64_storeu_epi32(__P, __M, __A);
6471 }
6472 
test_mm512_cvtsepi64_epi16(__m512i __A)6473 __m128i test_mm512_cvtsepi64_epi16(__m512i __A) {
6474   // CHECK-LABEL: @test_mm512_cvtsepi64_epi16
6475   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6476   return _mm512_cvtsepi64_epi16(__A);
6477 }
6478 
test_mm512_mask_cvtsepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6479 __m128i test_mm512_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6480   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi16
6481   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6482   return _mm512_mask_cvtsepi64_epi16(__O, __M, __A);
6483 }
6484 
test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M,__m512i __A)6485 __m128i test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M, __m512i __A) {
6486   // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi16
6487   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6488   return _mm512_maskz_cvtsepi64_epi16(__M, __A);
6489 }
6490 
test_mm512_mask_cvtsepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6491 void test_mm512_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m512i __A) {
6492   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi16
6493   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.512
6494   return _mm512_mask_cvtsepi64_storeu_epi16(__P, __M, __A);
6495 }
6496 
test_mm512_cvtusepi32_epi8(__m512i __A)6497 __m128i test_mm512_cvtusepi32_epi8(__m512i __A) {
6498   // CHECK-LABEL: @test_mm512_cvtusepi32_epi8
6499   // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6500   return _mm512_cvtusepi32_epi8(__A);
6501 }
6502 
test_mm512_mask_cvtusepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6503 __m128i test_mm512_mask_cvtusepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6504   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi8
6505   // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6506   return _mm512_mask_cvtusepi32_epi8(__O, __M, __A);
6507 }
6508 
test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M,__m512i __A)6509 __m128i test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M, __m512i __A) {
6510   // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi8
6511   // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6512   return _mm512_maskz_cvtusepi32_epi8(__M, __A);
6513 }
6514 
test_mm512_mask_cvtusepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6515 void test_mm512_mask_cvtusepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6516   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi8
6517   // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.512
6518   return _mm512_mask_cvtusepi32_storeu_epi8(__P, __M, __A);
6519 }
6520 
test_mm512_cvtusepi32_epi16(__m512i __A)6521 __m256i test_mm512_cvtusepi32_epi16(__m512i __A) {
6522   // CHECK-LABEL: @test_mm512_cvtusepi32_epi16
6523   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6524   return _mm512_cvtusepi32_epi16(__A);
6525 }
6526 
test_mm512_mask_cvtusepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6527 __m256i test_mm512_mask_cvtusepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6528   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi16
6529   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6530   return _mm512_mask_cvtusepi32_epi16(__O, __M, __A);
6531 }
6532 
test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M,__m512i __A)6533 __m256i test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M, __m512i __A) {
6534   // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi16
6535   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6536   return _mm512_maskz_cvtusepi32_epi16(__M, __A);
6537 }
6538 
test_mm512_mask_cvtusepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6539 void test_mm512_mask_cvtusepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
6540   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi16
6541   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.512
6542   return _mm512_mask_cvtusepi32_storeu_epi16(__P, __M, __A);
6543 }
6544 
test_mm512_cvtusepi64_epi8(__m512i __A)6545 __m128i test_mm512_cvtusepi64_epi8(__m512i __A) {
6546   // CHECK-LABEL: @test_mm512_cvtusepi64_epi8
6547   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6548   return _mm512_cvtusepi64_epi8(__A);
6549 }
6550 
test_mm512_mask_cvtusepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6551 __m128i test_mm512_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6552   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi8
6553   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6554   return _mm512_mask_cvtusepi64_epi8(__O, __M, __A);
6555 }
6556 
test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M,__m512i __A)6557 __m128i test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M, __m512i __A) {
6558   // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi8
6559   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6560   return _mm512_maskz_cvtusepi64_epi8(__M, __A);
6561 }
6562 
test_mm512_mask_cvtusepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6563 void test_mm512_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6564   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi8
6565   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.512
6566   return _mm512_mask_cvtusepi64_storeu_epi8(__P, __M, __A);
6567 }
6568 
test_mm512_cvtusepi64_epi32(__m512i __A)6569 __m256i test_mm512_cvtusepi64_epi32(__m512i __A) {
6570   // CHECK-LABEL: @test_mm512_cvtusepi64_epi32
6571   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6572   return _mm512_cvtusepi64_epi32(__A);
6573 }
6574 
test_mm512_mask_cvtusepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6575 __m256i test_mm512_mask_cvtusepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6576   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi32
6577   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6578   return _mm512_mask_cvtusepi64_epi32(__O, __M, __A);
6579 }
6580 
test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M,__m512i __A)6581 __m256i test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M, __m512i __A) {
6582   // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi32
6583   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6584   return _mm512_maskz_cvtusepi64_epi32(__M, __A);
6585 }
6586 
test_mm512_mask_cvtusepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6587 void test_mm512_mask_cvtusepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
6588   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi32
6589   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.512
6590   return _mm512_mask_cvtusepi64_storeu_epi32(__P, __M, __A);
6591 }
6592 
test_mm512_cvtusepi64_epi16(__m512i __A)6593 __m128i test_mm512_cvtusepi64_epi16(__m512i __A) {
6594   // CHECK-LABEL: @test_mm512_cvtusepi64_epi16
6595   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6596   return _mm512_cvtusepi64_epi16(__A);
6597 }
6598 
test_mm512_mask_cvtusepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6599 __m128i test_mm512_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6600   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi16
6601   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6602   return _mm512_mask_cvtusepi64_epi16(__O, __M, __A);
6603 }
6604 
test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M,__m512i __A)6605 __m128i test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M, __m512i __A) {
6606   // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi16
6607   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6608   return _mm512_maskz_cvtusepi64_epi16(__M, __A);
6609 }
6610 
test_mm512_mask_cvtusepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6611 void test_mm512_mask_cvtusepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
6612   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi16
6613   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.512
6614   return _mm512_mask_cvtusepi64_storeu_epi16(__P, __M, __A);
6615 }
6616 
test_mm512_cvtepi32_epi8(__m512i __A)6617 __m128i test_mm512_cvtepi32_epi8(__m512i __A) {
6618   // CHECK-LABEL: @test_mm512_cvtepi32_epi8
6619   // CHECK: trunc <16 x i32> %{{.*}} to <16 x i8>
6620   return _mm512_cvtepi32_epi8(__A);
6621 }
6622 
test_mm512_mask_cvtepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6623 __m128i test_mm512_mask_cvtepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6624   // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi8
6625   // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6626   return _mm512_mask_cvtepi32_epi8(__O, __M, __A);
6627 }
6628 
test_mm512_maskz_cvtepi32_epi8(__mmask16 __M,__m512i __A)6629 __m128i test_mm512_maskz_cvtepi32_epi8(__mmask16 __M, __m512i __A) {
6630   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi8
6631   // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6632   return _mm512_maskz_cvtepi32_epi8(__M, __A);
6633 }
6634 
test_mm512_mask_cvtepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6635 void test_mm512_mask_cvtepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6636   // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi8
6637   // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.512
6638   return _mm512_mask_cvtepi32_storeu_epi8(__P, __M, __A);
6639 }
6640 
test_mm512_cvtepi32_epi16(__m512i __A)6641 __m256i test_mm512_cvtepi32_epi16(__m512i __A) {
6642   // CHECK-LABEL: @test_mm512_cvtepi32_epi16
6643   // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
6644   return _mm512_cvtepi32_epi16(__A);
6645 }
6646 
test_mm512_mask_cvtepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6647 __m256i test_mm512_mask_cvtepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6648   // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi16
6649   // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6650   return _mm512_mask_cvtepi32_epi16(__O, __M, __A);
6651 }
6652 
test_mm512_maskz_cvtepi32_epi16(__mmask16 __M,__m512i __A)6653 __m256i test_mm512_maskz_cvtepi32_epi16(__mmask16 __M, __m512i __A) {
6654   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi16
6655   // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6656   return _mm512_maskz_cvtepi32_epi16(__M, __A);
6657 }
6658 
test_mm512_mask_cvtepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6659 void test_mm512_mask_cvtepi32_storeu_epi16(void * __P, __mmask16 __M, __m512i __A) {
6660   // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi16
6661   // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.512
6662   return _mm512_mask_cvtepi32_storeu_epi16(__P, __M, __A);
6663 }
6664 
test_mm512_cvtepi64_epi8(__m512i __A)6665 __m128i test_mm512_cvtepi64_epi8(__m512i __A) {
6666   // CHECK-LABEL: @test_mm512_cvtepi64_epi8
6667   // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6668   return _mm512_cvtepi64_epi8(__A);
6669 }
6670 
test_mm512_mask_cvtepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6671 __m128i test_mm512_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6672   // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi8
6673   // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6674   return _mm512_mask_cvtepi64_epi8(__O, __M, __A);
6675 }
6676 
test_mm512_maskz_cvtepi64_epi8(__mmask8 __M,__m512i __A)6677 __m128i test_mm512_maskz_cvtepi64_epi8(__mmask8 __M, __m512i __A) {
6678   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi8
6679   // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6680   return _mm512_maskz_cvtepi64_epi8(__M, __A);
6681 }
6682 
test_mm512_mask_cvtepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6683 void test_mm512_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6684   // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi8
6685   // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.512
6686   return _mm512_mask_cvtepi64_storeu_epi8(__P, __M, __A);
6687 }
6688 
test_mm512_cvtepi64_epi32(__m512i __A)6689 __m256i test_mm512_cvtepi64_epi32(__m512i __A) {
6690   // CHECK-LABEL: @test_mm512_cvtepi64_epi32
6691   // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6692   return _mm512_cvtepi64_epi32(__A);
6693 }
6694 
test_mm512_mask_cvtepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6695 __m256i test_mm512_mask_cvtepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6696   // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi32
6697   // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6698   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6699   return _mm512_mask_cvtepi64_epi32(__O, __M, __A);
6700 }
6701 
test_mm512_maskz_cvtepi64_epi32(__mmask8 __M,__m512i __A)6702 __m256i test_mm512_maskz_cvtepi64_epi32(__mmask8 __M, __m512i __A) {
6703   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi32
6704   // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6705   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6706   return _mm512_maskz_cvtepi64_epi32(__M, __A);
6707 }
6708 
test_mm512_mask_cvtepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6709 void test_mm512_mask_cvtepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
6710   // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi32
6711   // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.512
6712   return _mm512_mask_cvtepi64_storeu_epi32(__P, __M, __A);
6713 }
6714 
test_mm512_cvtepi64_epi16(__m512i __A)6715 __m128i test_mm512_cvtepi64_epi16(__m512i __A) {
6716   // CHECK-LABEL: @test_mm512_cvtepi64_epi16
6717   // CHECK: trunc <8 x i64> %{{.*}} to <8 x i16>
6718   return _mm512_cvtepi64_epi16(__A);
6719 }
6720 
test_mm512_mask_cvtepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6721 __m128i test_mm512_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6722   // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi16
6723   // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6724   return _mm512_mask_cvtepi64_epi16(__O, __M, __A);
6725 }
6726 
test_mm512_maskz_cvtepi64_epi16(__mmask8 __M,__m512i __A)6727 __m128i test_mm512_maskz_cvtepi64_epi16(__mmask8 __M, __m512i __A) {
6728   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi16
6729   // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6730   return _mm512_maskz_cvtepi64_epi16(__M, __A);
6731 }
6732 
test_mm512_mask_cvtepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6733 void test_mm512_mask_cvtepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
6734   // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi16
6735   // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.512
6736   return _mm512_mask_cvtepi64_storeu_epi16(__P, __M, __A);
6737 }
6738 
test_mm512_extracti32x4_epi32(__m512i __A)6739 __m128i test_mm512_extracti32x4_epi32(__m512i __A) {
6740   // CHECK-LABEL: @test_mm512_extracti32x4_epi32
6741   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6742   return _mm512_extracti32x4_epi32(__A, 3);
6743 }
6744 
test_mm512_mask_extracti32x4_epi32(__m128i __W,__mmask8 __U,__m512i __A)6745 __m128i test_mm512_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m512i __A) {
6746   // CHECK-LABEL: @test_mm512_mask_extracti32x4_epi32
6747   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6748   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6749   return _mm512_mask_extracti32x4_epi32(__W, __U, __A, 3);
6750 }
6751 
test_mm512_maskz_extracti32x4_epi32(__mmask8 __U,__m512i __A)6752 __m128i test_mm512_maskz_extracti32x4_epi32(__mmask8 __U, __m512i __A) {
6753   // CHECK-LABEL: @test_mm512_maskz_extracti32x4_epi32
6754   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6755   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6756   return _mm512_maskz_extracti32x4_epi32(__U, __A, 3);
6757 }
6758 
test_mm512_extracti64x4_epi64(__m512i __A)6759 __m256i test_mm512_extracti64x4_epi64(__m512i __A) {
6760   // CHECK-LABEL: @test_mm512_extracti64x4_epi64
6761   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6762   return _mm512_extracti64x4_epi64(__A, 1);
6763 }
6764 
test_mm512_mask_extracti64x4_epi64(__m256i __W,__mmask8 __U,__m512i __A)6765 __m256i test_mm512_mask_extracti64x4_epi64(__m256i __W, __mmask8 __U, __m512i __A) {
6766   // CHECK-LABEL: @test_mm512_mask_extracti64x4_epi64
6767   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6768   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6769   return _mm512_mask_extracti64x4_epi64(__W, __U, __A, 1);
6770 }
6771 
test_mm512_maskz_extracti64x4_epi64(__mmask8 __U,__m512i __A)6772 __m256i test_mm512_maskz_extracti64x4_epi64(__mmask8 __U, __m512i __A) {
6773   // CHECK-LABEL: @test_mm512_maskz_extracti64x4_epi64
6774   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6775   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6776   return _mm512_maskz_extracti64x4_epi64(__U, __A, 1);
6777 }
6778 
test_mm512_insertf64x4(__m512d __A,__m256d __B)6779 __m512d test_mm512_insertf64x4(__m512d __A, __m256d __B) {
6780   // CHECK-LABEL: @test_mm512_insertf64x4
6781   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6782   return _mm512_insertf64x4(__A, __B, 1);
6783 }
6784 
test_mm512_mask_insertf64x4(__m512d __W,__mmask8 __U,__m512d __A,__m256d __B)6785 __m512d test_mm512_mask_insertf64x4(__m512d __W, __mmask8 __U, __m512d __A, __m256d __B) {
6786   // CHECK-LABEL: @test_mm512_mask_insertf64x4
6787   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6788   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6789   return _mm512_mask_insertf64x4(__W, __U, __A, __B, 1);
6790 }
6791 
test_mm512_maskz_insertf64x4(__mmask8 __U,__m512d __A,__m256d __B)6792 __m512d test_mm512_maskz_insertf64x4(__mmask8 __U, __m512d __A, __m256d __B) {
6793   // CHECK-LABEL: @test_mm512_maskz_insertf64x4
6794   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6795   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6796   return _mm512_maskz_insertf64x4(__U, __A, __B, 1);
6797 }
6798 
test_mm512_inserti64x4(__m512i __A,__m256i __B)6799 __m512i test_mm512_inserti64x4(__m512i __A, __m256i __B) {
6800   // CHECK-LABEL: @test_mm512_inserti64x4
6801   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6802   return _mm512_inserti64x4(__A, __B, 1);
6803 }
6804 
test_mm512_mask_inserti64x4(__m512i __W,__mmask8 __U,__m512i __A,__m256i __B)6805 __m512i test_mm512_mask_inserti64x4(__m512i __W, __mmask8 __U, __m512i __A, __m256i __B) {
6806   // CHECK-LABEL: @test_mm512_mask_inserti64x4
6807   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6808   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6809   return _mm512_mask_inserti64x4(__W, __U, __A, __B, 1);
6810 }
6811 
test_mm512_maskz_inserti64x4(__mmask8 __U,__m512i __A,__m256i __B)6812 __m512i test_mm512_maskz_inserti64x4(__mmask8 __U, __m512i __A, __m256i __B) {
6813   // CHECK-LABEL: @test_mm512_maskz_inserti64x4
6814   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6815   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6816   return _mm512_maskz_inserti64x4(__U, __A, __B, 1);
6817 }
6818 
test_mm512_insertf32x4(__m512 __A,__m128 __B)6819 __m512 test_mm512_insertf32x4(__m512 __A, __m128 __B) {
6820   // CHECK-LABEL: @test_mm512_insertf32x4
6821   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6822   return _mm512_insertf32x4(__A, __B, 1);
6823 }
6824 
test_mm512_mask_insertf32x4(__m512 __W,__mmask16 __U,__m512 __A,__m128 __B)6825 __m512 test_mm512_mask_insertf32x4(__m512 __W, __mmask16 __U, __m512 __A, __m128 __B) {
6826   // CHECK-LABEL: @test_mm512_mask_insertf32x4
6827   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6828   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6829   return _mm512_mask_insertf32x4(__W, __U, __A, __B, 1);
6830 }
6831 
test_mm512_maskz_insertf32x4(__mmask16 __U,__m512 __A,__m128 __B)6832 __m512 test_mm512_maskz_insertf32x4(__mmask16 __U, __m512 __A, __m128 __B) {
6833   // CHECK-LABEL: @test_mm512_maskz_insertf32x4
6834   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6835   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6836   return _mm512_maskz_insertf32x4(__U, __A, __B, 1);
6837 }
6838 
test_mm512_inserti32x4(__m512i __A,__m128i __B)6839 __m512i test_mm512_inserti32x4(__m512i __A, __m128i __B) {
6840   // CHECK-LABEL: @test_mm512_inserti32x4
6841   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6842   return _mm512_inserti32x4(__A, __B, 1);
6843 }
6844 
test_mm512_mask_inserti32x4(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)6845 __m512i test_mm512_mask_inserti32x4(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
6846   // CHECK-LABEL: @test_mm512_mask_inserti32x4
6847   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6848   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6849   return _mm512_mask_inserti32x4(__W, __U, __A, __B, 1);
6850 }
6851 
test_mm512_maskz_inserti32x4(__mmask16 __U,__m512i __A,__m128i __B)6852 __m512i test_mm512_maskz_inserti32x4(__mmask16 __U, __m512i __A, __m128i __B) {
6853   // CHECK-LABEL: @test_mm512_maskz_inserti32x4
6854   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6855   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6856   return _mm512_maskz_inserti32x4(__U, __A, __B, 1);
6857 }
6858 
test_mm512_getmant_round_pd(__m512d __A)6859 __m512d test_mm512_getmant_round_pd(__m512d __A) {
6860   // CHECK-LABEL: @test_mm512_getmant_round_pd
6861   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6862   return _mm512_getmant_round_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6863 }
6864 
test_mm512_mask_getmant_round_pd(__m512d __W,__mmask8 __U,__m512d __A)6865 __m512d test_mm512_mask_getmant_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6866   // CHECK-LABEL: @test_mm512_mask_getmant_round_pd
6867   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6868   return _mm512_mask_getmant_round_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6869 }
6870 
test_mm512_maskz_getmant_round_pd(__mmask8 __U,__m512d __A)6871 __m512d test_mm512_maskz_getmant_round_pd(__mmask8 __U, __m512d __A) {
6872   // CHECK-LABEL: @test_mm512_maskz_getmant_round_pd
6873   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6874   return _mm512_maskz_getmant_round_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6875 }
6876 
test_mm512_getmant_pd(__m512d __A)6877 __m512d test_mm512_getmant_pd(__m512d __A) {
6878   // CHECK-LABEL: @test_mm512_getmant_pd
6879   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6880   return _mm512_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6881 }
6882 
test_mm512_mask_getmant_pd(__m512d __W,__mmask8 __U,__m512d __A)6883 __m512d test_mm512_mask_getmant_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6884   // CHECK-LABEL: @test_mm512_mask_getmant_pd
6885   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6886   return _mm512_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6887 }
6888 
test_mm512_maskz_getmant_pd(__mmask8 __U,__m512d __A)6889 __m512d test_mm512_maskz_getmant_pd(__mmask8 __U, __m512d __A) {
6890   // CHECK-LABEL: @test_mm512_maskz_getmant_pd
6891   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6892   return _mm512_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6893 }
6894 
test_mm512_getmant_round_ps(__m512 __A)6895 __m512 test_mm512_getmant_round_ps(__m512 __A) {
6896   // CHECK-LABEL: @test_mm512_getmant_round_ps
6897   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6898   return _mm512_getmant_round_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6899 }
6900 
test_mm512_mask_getmant_round_ps(__m512 __W,__mmask16 __U,__m512 __A)6901 __m512 test_mm512_mask_getmant_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6902   // CHECK-LABEL: @test_mm512_mask_getmant_round_ps
6903   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6904   return _mm512_mask_getmant_round_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6905 }
6906 
test_mm512_maskz_getmant_round_ps(__mmask16 __U,__m512 __A)6907 __m512 test_mm512_maskz_getmant_round_ps(__mmask16 __U, __m512 __A) {
6908   // CHECK-LABEL: @test_mm512_maskz_getmant_round_ps
6909   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6910   return _mm512_maskz_getmant_round_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6911 }
6912 
test_mm512_getmant_ps(__m512 __A)6913 __m512 test_mm512_getmant_ps(__m512 __A) {
6914   // CHECK-LABEL: @test_mm512_getmant_ps
6915   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6916   return _mm512_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6917 }
6918 
test_mm512_mask_getmant_ps(__m512 __W,__mmask16 __U,__m512 __A)6919 __m512 test_mm512_mask_getmant_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6920   // CHECK-LABEL: @test_mm512_mask_getmant_ps
6921   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6922   return _mm512_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6923 }
6924 
test_mm512_maskz_getmant_ps(__mmask16 __U,__m512 __A)6925 __m512 test_mm512_maskz_getmant_ps(__mmask16 __U, __m512 __A) {
6926   // CHECK-LABEL: @test_mm512_maskz_getmant_ps
6927   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6928   return _mm512_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6929 }
6930 
test_mm512_getexp_round_pd(__m512d __A)6931 __m512d test_mm512_getexp_round_pd(__m512d __A) {
6932   // CHECK-LABEL: @test_mm512_getexp_round_pd
6933   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6934   return _mm512_getexp_round_pd(__A, _MM_FROUND_CUR_DIRECTION);
6935 }
6936 
test_mm512_mask_getexp_round_pd(__m512d __W,__mmask8 __U,__m512d __A)6937 __m512d test_mm512_mask_getexp_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6938   // CHECK-LABEL: @test_mm512_mask_getexp_round_pd
6939   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6940   return _mm512_mask_getexp_round_pd(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
6941 }
6942 
test_mm512_maskz_getexp_round_pd(__mmask8 __U,__m512d __A)6943 __m512d test_mm512_maskz_getexp_round_pd(__mmask8 __U, __m512d __A) {
6944   // CHECK-LABEL: @test_mm512_maskz_getexp_round_pd
6945   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6946   return _mm512_maskz_getexp_round_pd(__U, __A, _MM_FROUND_CUR_DIRECTION);
6947 }
6948 
test_mm512_getexp_pd(__m512d __A)6949 __m512d test_mm512_getexp_pd(__m512d __A) {
6950   // CHECK-LABEL: @test_mm512_getexp_pd
6951   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6952   return _mm512_getexp_pd(__A);
6953 }
6954 
test_mm512_mask_getexp_pd(__m512d __W,__mmask8 __U,__m512d __A)6955 __m512d test_mm512_mask_getexp_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6956   // CHECK-LABEL: @test_mm512_mask_getexp_pd
6957   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6958   return _mm512_mask_getexp_pd(__W, __U, __A);
6959 }
6960 
test_mm512_maskz_getexp_pd(__mmask8 __U,__m512d __A)6961 __m512d test_mm512_maskz_getexp_pd(__mmask8 __U, __m512d __A) {
6962   // CHECK-LABEL: @test_mm512_maskz_getexp_pd
6963   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6964   return _mm512_maskz_getexp_pd(__U, __A);
6965 }
6966 
test_mm512_getexp_round_ps(__m512 __A)6967 __m512 test_mm512_getexp_round_ps(__m512 __A) {
6968   // CHECK-LABEL: @test_mm512_getexp_round_ps
6969   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6970   return _mm512_getexp_round_ps(__A, _MM_FROUND_CUR_DIRECTION);
6971 }
6972 
test_mm512_mask_getexp_round_ps(__m512 __W,__mmask16 __U,__m512 __A)6973 __m512 test_mm512_mask_getexp_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6974   // CHECK-LABEL: @test_mm512_mask_getexp_round_ps
6975   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6976   return _mm512_mask_getexp_round_ps(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
6977 }
6978 
test_mm512_maskz_getexp_round_ps(__mmask16 __U,__m512 __A)6979 __m512 test_mm512_maskz_getexp_round_ps(__mmask16 __U, __m512 __A) {
6980   // CHECK-LABEL: @test_mm512_maskz_getexp_round_ps
6981   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6982   return _mm512_maskz_getexp_round_ps(__U, __A, _MM_FROUND_CUR_DIRECTION);
6983 }
6984 
test_mm512_getexp_ps(__m512 __A)6985 __m512 test_mm512_getexp_ps(__m512 __A) {
6986   // CHECK-LABEL: @test_mm512_getexp_ps
6987   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6988   return _mm512_getexp_ps(__A);
6989 }
6990 
test_mm512_mask_getexp_ps(__m512 __W,__mmask16 __U,__m512 __A)6991 __m512 test_mm512_mask_getexp_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6992   // CHECK-LABEL: @test_mm512_mask_getexp_ps
6993   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6994   return _mm512_mask_getexp_ps(__W, __U, __A);
6995 }
6996 
test_mm512_maskz_getexp_ps(__mmask16 __U,__m512 __A)6997 __m512 test_mm512_maskz_getexp_ps(__mmask16 __U, __m512 __A) {
6998   // CHECK-LABEL: @test_mm512_maskz_getexp_ps
6999   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7000   return _mm512_maskz_getexp_ps(__U, __A);
7001 }
7002 
test_mm512_i64gather_ps(__m512i __index,void const * __addr)7003 __m256 test_mm512_i64gather_ps(__m512i __index, void const *__addr) {
7004   // CHECK-LABEL: @test_mm512_i64gather_ps
7005   // CHECK: @llvm.x86.avx512.gather.qps.512
7006   return _mm512_i64gather_ps(__index, __addr, 2);
7007 }
7008 
test_mm512_mask_i64gather_ps(__m256 __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7009 __m256 test_mm512_mask_i64gather_ps(__m256 __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7010   // CHECK-LABEL: @test_mm512_mask_i64gather_ps
7011   // CHECK: @llvm.x86.avx512.gather.qps.512
7012   return _mm512_mask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
7013 }
7014 
test_mm512_i64gather_epi32(__m512i __index,void const * __addr)7015 __m256i test_mm512_i64gather_epi32(__m512i __index, void const *__addr) {
7016   // CHECK-LABEL: @test_mm512_i64gather_epi32
7017   // CHECK: @llvm.x86.avx512.gather.qpi.512
7018   return _mm512_i64gather_epi32(__index, __addr, 2);
7019 }
7020 
test_mm512_mask_i64gather_epi32(__m256i __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7021 __m256i test_mm512_mask_i64gather_epi32(__m256i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7022   // CHECK-LABEL: @test_mm512_mask_i64gather_epi32
7023   // CHECK: @llvm.x86.avx512.gather.qpi.512
7024   return _mm512_mask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
7025 }
7026 
test_mm512_i64gather_pd(__m512i __index,void const * __addr)7027 __m512d test_mm512_i64gather_pd(__m512i __index, void const *__addr) {
7028   // CHECK-LABEL: @test_mm512_i64gather_pd
7029   // CHECK: @llvm.x86.avx512.gather.qpd.512
7030   return _mm512_i64gather_pd(__index, __addr, 2);
7031 }
7032 
test_mm512_mask_i64gather_pd(__m512d __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7033 __m512d test_mm512_mask_i64gather_pd(__m512d __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7034   // CHECK-LABEL: @test_mm512_mask_i64gather_pd
7035   // CHECK: @llvm.x86.avx512.gather.qpd.512
7036   return _mm512_mask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
7037 }
7038 
test_mm512_i64gather_epi64(__m512i __index,void const * __addr)7039 __m512i test_mm512_i64gather_epi64(__m512i __index, void const *__addr) {
7040   // CHECK-LABEL: @test_mm512_i64gather_epi64
7041   // CHECK: @llvm.x86.avx512.gather.qpq.512
7042   return _mm512_i64gather_epi64(__index, __addr, 2);
7043 }
7044 
test_mm512_mask_i64gather_epi64(__m512i __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7045 __m512i test_mm512_mask_i64gather_epi64(__m512i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7046   // CHECK-LABEL: @test_mm512_mask_i64gather_epi64
7047   // CHECK: @llvm.x86.avx512.gather.qpq.512
7048   return _mm512_mask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
7049 }
7050 
test_mm512_i32gather_ps(__m512i __index,void const * __addr)7051 __m512 test_mm512_i32gather_ps(__m512i __index, void const *__addr) {
7052   // CHECK-LABEL: @test_mm512_i32gather_ps
7053   // CHECK: @llvm.x86.avx512.gather.dps.512
7054   return _mm512_i32gather_ps(__index, __addr, 2);
7055 }
7056 
test_mm512_mask_i32gather_ps(__m512 v1_old,__mmask16 __mask,__m512i __index,void const * __addr)7057 __m512 test_mm512_mask_i32gather_ps(__m512 v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
7058   // CHECK-LABEL: @test_mm512_mask_i32gather_ps
7059   // CHECK: @llvm.x86.avx512.gather.dps.512
7060   return _mm512_mask_i32gather_ps(v1_old, __mask, __index, __addr, 2);
7061 }
7062 
test_mm512_i32gather_epi32(__m512i __index,void const * __addr)7063 __m512i test_mm512_i32gather_epi32(__m512i __index, void const *__addr) {
7064   // CHECK-LABEL: @test_mm512_i32gather_epi32
7065   // CHECK: @llvm.x86.avx512.gather.dpi.512
7066   return _mm512_i32gather_epi32(__index, __addr, 2);
7067 }
7068 
test_mm512_mask_i32gather_epi32(__m512i __v1_old,__mmask16 __mask,__m512i __index,void const * __addr)7069 __m512i test_mm512_mask_i32gather_epi32(__m512i __v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
7070   // CHECK-LABEL: @test_mm512_mask_i32gather_epi32
7071   // CHECK: @llvm.x86.avx512.gather.dpi.512
7072   return _mm512_mask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
7073 }
7074 
test_mm512_i32gather_pd(__m256i __index,void const * __addr)7075 __m512d test_mm512_i32gather_pd(__m256i __index, void const *__addr) {
7076   // CHECK-LABEL: @test_mm512_i32gather_pd
7077   // CHECK: @llvm.x86.avx512.gather.dpd.512
7078   return _mm512_i32gather_pd(__index, __addr, 2);
7079 }
7080 
test_mm512_mask_i32gather_pd(__m512d __v1_old,__mmask8 __mask,__m256i __index,void const * __addr)7081 __m512d test_mm512_mask_i32gather_pd(__m512d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
7082   // CHECK-LABEL: @test_mm512_mask_i32gather_pd
7083   // CHECK: @llvm.x86.avx512.gather.dpd.512
7084   return _mm512_mask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
7085 }
7086 
test_mm512_i32gather_epi64(__m256i __index,void const * __addr)7087 __m512i test_mm512_i32gather_epi64(__m256i __index, void const *__addr) {
7088   // CHECK-LABEL: @test_mm512_i32gather_epi64
7089   // CHECK: @llvm.x86.avx512.gather.dpq.512
7090   return _mm512_i32gather_epi64(__index, __addr, 2);
7091 }
7092 
test_mm512_mask_i32gather_epi64(__m512i __v1_old,__mmask8 __mask,__m256i __index,void const * __addr)7093 __m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
7094   // CHECK-LABEL: @test_mm512_mask_i32gather_epi64
7095   // CHECK: @llvm.x86.avx512.gather.dpq.512
7096   return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
7097 }
7098 
test_mm512_i64scatter_ps(void * __addr,__m512i __index,__m256 __v1)7099 void test_mm512_i64scatter_ps(void *__addr, __m512i __index, __m256 __v1) {
7100   // CHECK-LABEL: @test_mm512_i64scatter_ps
7101   // CHECK: @llvm.x86.avx512.scatter.qps.512
7102   return _mm512_i64scatter_ps(__addr, __index, __v1, 2);
7103 }
7104 
test_mm512_mask_i64scatter_ps(void * __addr,__mmask8 __mask,__m512i __index,__m256 __v1)7105 void test_mm512_mask_i64scatter_ps(void *__addr, __mmask8 __mask, __m512i __index, __m256 __v1) {
7106   // CHECK-LABEL: @test_mm512_mask_i64scatter_ps
7107   // CHECK: @llvm.x86.avx512.scatter.qps.512
7108   return _mm512_mask_i64scatter_ps(__addr, __mask, __index, __v1, 2);
7109 }
7110 
test_mm512_i64scatter_epi32(void * __addr,__m512i __index,__m256i __v1)7111 void test_mm512_i64scatter_epi32(void *__addr, __m512i __index, __m256i __v1) {
7112   // CHECK-LABEL: @test_mm512_i64scatter_epi32
7113   // CHECK: @llvm.x86.avx512.scatter.qpi.512
7114   return _mm512_i64scatter_epi32(__addr, __index, __v1, 2);
7115 }
7116 
test_mm512_mask_i64scatter_epi32(void * __addr,__mmask8 __mask,__m512i __index,__m256i __v1)7117 void test_mm512_mask_i64scatter_epi32(void *__addr, __mmask8 __mask, __m512i __index, __m256i __v1) {
7118   // CHECK-LABEL: @test_mm512_mask_i64scatter_epi32
7119   // CHECK: @llvm.x86.avx512.scatter.qpi.512
7120   return _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, 2);
7121 }
7122 
test_mm512_i64scatter_pd(void * __addr,__m512i __index,__m512d __v1)7123 void test_mm512_i64scatter_pd(void *__addr, __m512i __index, __m512d __v1) {
7124   // CHECK-LABEL: @test_mm512_i64scatter_pd
7125   // CHECK: @llvm.x86.avx512.scatter.qpd.512
7126   return _mm512_i64scatter_pd(__addr, __index, __v1, 2);
7127 }
7128 
test_mm512_mask_i64scatter_pd(void * __addr,__mmask8 __mask,__m512i __index,__m512d __v1)7129 void test_mm512_mask_i64scatter_pd(void *__addr, __mmask8 __mask, __m512i __index, __m512d __v1) {
7130   // CHECK-LABEL: @test_mm512_mask_i64scatter_pd
7131   // CHECK: @llvm.x86.avx512.scatter.qpd.512
7132   return _mm512_mask_i64scatter_pd(__addr, __mask, __index, __v1, 2);
7133 }
7134 
test_mm512_i64scatter_epi64(void * __addr,__m512i __index,__m512i __v1)7135 void test_mm512_i64scatter_epi64(void *__addr, __m512i __index, __m512i __v1) {
7136   // CHECK-LABEL: @test_mm512_i64scatter_epi64
7137   // CHECK: @llvm.x86.avx512.scatter.qpq.512
7138   return _mm512_i64scatter_epi64(__addr, __index, __v1, 2);
7139 }
7140 
test_mm512_mask_i64scatter_epi64(void * __addr,__mmask8 __mask,__m512i __index,__m512i __v1)7141 void test_mm512_mask_i64scatter_epi64(void *__addr, __mmask8 __mask, __m512i __index, __m512i __v1) {
7142   // CHECK-LABEL: @test_mm512_mask_i64scatter_epi64
7143   // CHECK: @llvm.x86.avx512.scatter.qpq.512
7144   return _mm512_mask_i64scatter_epi64(__addr, __mask, __index, __v1, 2);
7145 }
7146 
test_mm512_i32scatter_ps(void * __addr,__m512i __index,__m512 __v1)7147 void test_mm512_i32scatter_ps(void *__addr, __m512i __index, __m512 __v1) {
7148   // CHECK-LABEL: @test_mm512_i32scatter_ps
7149   // CHECK: @llvm.x86.avx512.scatter.dps.512
7150   return _mm512_i32scatter_ps(__addr, __index, __v1, 2);
7151 }
7152 
test_mm512_mask_i32scatter_ps(void * __addr,__mmask16 __mask,__m512i __index,__m512 __v1)7153 void test_mm512_mask_i32scatter_ps(void *__addr, __mmask16 __mask, __m512i __index, __m512 __v1) {
7154   // CHECK-LABEL: @test_mm512_mask_i32scatter_ps
7155   // CHECK: @llvm.x86.avx512.scatter.dps.512
7156   return _mm512_mask_i32scatter_ps(__addr, __mask, __index, __v1, 2);
7157 }
7158 
test_mm512_i32scatter_epi32(void * __addr,__m512i __index,__m512i __v1)7159 void test_mm512_i32scatter_epi32(void *__addr, __m512i __index, __m512i __v1) {
7160   // CHECK-LABEL: @test_mm512_i32scatter_epi32
7161   // CHECK: @llvm.x86.avx512.scatter.dpi.512
7162   return _mm512_i32scatter_epi32(__addr, __index, __v1, 2);
7163 }
7164 
test_mm512_mask_i32scatter_epi32(void * __addr,__mmask16 __mask,__m512i __index,__m512i __v1)7165 void test_mm512_mask_i32scatter_epi32(void *__addr, __mmask16 __mask, __m512i __index, __m512i __v1) {
7166   // CHECK-LABEL: @test_mm512_mask_i32scatter_epi32
7167   // CHECK: @llvm.x86.avx512.scatter.dpi.512
7168   return _mm512_mask_i32scatter_epi32(__addr, __mask, __index, __v1, 2);
7169 }
7170 
test_mm512_i32scatter_pd(void * __addr,__m256i __index,__m512d __v1)7171 void test_mm512_i32scatter_pd(void *__addr, __m256i __index, __m512d __v1) {
7172   // CHECK-LABEL: @test_mm512_i32scatter_pd
7173   // CHECK: @llvm.x86.avx512.scatter.dpd.512
7174   return _mm512_i32scatter_pd(__addr, __index, __v1, 2);
7175 }
7176 
test_mm512_mask_i32scatter_pd(void * __addr,__mmask8 __mask,__m256i __index,__m512d __v1)7177 void test_mm512_mask_i32scatter_pd(void *__addr, __mmask8 __mask, __m256i __index, __m512d __v1) {
7178   // CHECK-LABEL: @test_mm512_mask_i32scatter_pd
7179   // CHECK: @llvm.x86.avx512.scatter.dpd.512
7180   return _mm512_mask_i32scatter_pd(__addr, __mask, __index, __v1, 2);
7181 }
7182 
test_mm512_i32scatter_epi64(void * __addr,__m256i __index,__m512i __v1)7183 void test_mm512_i32scatter_epi64(void *__addr, __m256i __index, __m512i __v1) {
7184   // CHECK-LABEL: @test_mm512_i32scatter_epi64
7185   // CHECK: @llvm.x86.avx512.scatter.dpq.512
7186   return _mm512_i32scatter_epi64(__addr, __index, __v1, 2);
7187 }
7188 
test_mm512_mask_i32scatter_epi64(void * __addr,__mmask8 __mask,__m256i __index,__m512i __v1)7189 void test_mm512_mask_i32scatter_epi64(void *__addr, __mmask8 __mask, __m256i __index, __m512i __v1) {
7190   // CHECK-LABEL: @test_mm512_mask_i32scatter_epi64
7191   // CHECK: @llvm.x86.avx512.scatter.dpq.512
7192   return _mm512_mask_i32scatter_epi64(__addr, __mask, __index, __v1, 2);
7193 }
7194 
test_mm_mask_rsqrt14_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7195 __m128d test_mm_mask_rsqrt14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7196   // CHECK-LABEL: @test_mm_mask_rsqrt14_sd
7197   // CHECK: @llvm.x86.avx512.rsqrt14.sd
7198   return _mm_mask_rsqrt14_sd(__W, __U, __A, __B);
7199 }
7200 
test_mm_maskz_rsqrt14_sd(__mmask8 __U,__m128d __A,__m128d __B)7201 __m128d test_mm_maskz_rsqrt14_sd(__mmask8 __U, __m128d __A, __m128d __B){
7202   // CHECK-LABEL: @test_mm_maskz_rsqrt14_sd
7203   // CHECK: @llvm.x86.avx512.rsqrt14.sd
7204   return _mm_maskz_rsqrt14_sd(__U, __A, __B);
7205 }
7206 
test_mm_mask_rsqrt14_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7207 __m128 test_mm_mask_rsqrt14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7208   // CHECK-LABEL: @test_mm_mask_rsqrt14_ss
7209   // CHECK: @llvm.x86.avx512.rsqrt14.ss
7210   return _mm_mask_rsqrt14_ss(__W, __U, __A, __B);
7211 }
7212 
test_mm_maskz_rsqrt14_ss(__mmask8 __U,__m128 __A,__m128 __B)7213 __m128 test_mm_maskz_rsqrt14_ss(__mmask8 __U, __m128 __A, __m128 __B){
7214   // CHECK-LABEL: @test_mm_maskz_rsqrt14_ss
7215   // CHECK: @llvm.x86.avx512.rsqrt14.ss
7216   return _mm_maskz_rsqrt14_ss(__U, __A, __B);
7217 }
7218 
test_mm512_mask_rcp14_pd(__m512d __W,__mmask8 __U,__m512d __A)7219 __m512d test_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
7220 {
7221   // CHECK-LABEL: @test_mm512_mask_rcp14_pd
7222   // CHECK: @llvm.x86.avx512.rcp14.pd.512
7223   return _mm512_mask_rcp14_pd (__W,__U,__A);
7224 }
7225 
test_mm512_maskz_rcp14_pd(__mmask8 __U,__m512d __A)7226 __m512d test_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
7227 {
7228   // CHECK-LABEL: @test_mm512_maskz_rcp14_pd
7229   // CHECK: @llvm.x86.avx512.rcp14.pd.512
7230   return _mm512_maskz_rcp14_pd (__U,__A);
7231 }
7232 
test_mm512_mask_rcp14_ps(__m512 __W,__mmask16 __U,__m512 __A)7233 __m512 test_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
7234 {
7235   // CHECK-LABEL: @test_mm512_mask_rcp14_ps
7236   // CHECK: @llvm.x86.avx512.rcp14.ps.512
7237   return _mm512_mask_rcp14_ps (__W,__U,__A);
7238 }
7239 
test_mm512_maskz_rcp14_ps(__mmask16 __U,__m512 __A)7240 __m512 test_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
7241 {
7242   // CHECK-LABEL: @test_mm512_maskz_rcp14_ps
7243   // CHECK: @llvm.x86.avx512.rcp14.ps.512
7244   return _mm512_maskz_rcp14_ps (__U,__A);
7245 }
7246 
test_mm_mask_rcp14_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7247 __m128d test_mm_mask_rcp14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7248   // CHECK-LABEL: @test_mm_mask_rcp14_sd
7249   // CHECK: @llvm.x86.avx512.rcp14.sd
7250   return _mm_mask_rcp14_sd(__W, __U, __A, __B);
7251 }
7252 
test_mm_maskz_rcp14_sd(__mmask8 __U,__m128d __A,__m128d __B)7253 __m128d test_mm_maskz_rcp14_sd(__mmask8 __U, __m128d __A, __m128d __B){
7254   // CHECK-LABEL: @test_mm_maskz_rcp14_sd
7255   // CHECK: @llvm.x86.avx512.rcp14.sd
7256   return _mm_maskz_rcp14_sd(__U, __A, __B);
7257 }
7258 
test_mm_mask_rcp14_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7259 __m128 test_mm_mask_rcp14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7260   // CHECK-LABEL: @test_mm_mask_rcp14_ss
7261   // CHECK: @llvm.x86.avx512.rcp14.ss
7262   return _mm_mask_rcp14_ss(__W, __U, __A, __B);
7263 }
7264 
test_mm_maskz_rcp14_ss(__mmask8 __U,__m128 __A,__m128 __B)7265 __m128 test_mm_maskz_rcp14_ss(__mmask8 __U, __m128 __A, __m128 __B){
7266   // CHECK-LABEL: @test_mm_maskz_rcp14_ss
7267   // CHECK: @llvm.x86.avx512.rcp14.ss
7268   return _mm_maskz_rcp14_ss(__U, __A, __B);
7269 }
7270 
test_mm_mask_getexp_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7271 __m128d test_mm_mask_getexp_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7272   // CHECK-LABEL: @test_mm_mask_getexp_sd
7273   // CHECK: @llvm.x86.avx512.mask.getexp.sd
7274   return _mm_mask_getexp_sd(__W, __U, __A, __B);
7275 }
7276 
test_mm_mask_getexp_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7277 __m128d test_mm_mask_getexp_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7278   // CHECK-LABEL: @test_mm_mask_getexp_round_sd
7279   // CHECK: @llvm.x86.avx512.mask.getexp.sd
7280   return _mm_mask_getexp_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
7281 }
7282 
test_mm_maskz_getexp_sd(__mmask8 __U,__m128d __A,__m128d __B)7283 __m128d test_mm_maskz_getexp_sd(__mmask8 __U, __m128d __A, __m128d __B){
7284   // CHECK-LABEL: @test_mm_maskz_getexp_sd
7285   // CHECK: @llvm.x86.avx512.mask.getexp.sd
7286   return _mm_maskz_getexp_sd(__U, __A, __B);
7287 }
7288 
test_mm_maskz_getexp_round_sd(__mmask8 __U,__m128d __A,__m128d __B)7289 __m128d test_mm_maskz_getexp_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
7290   // CHECK-LABEL: @test_mm_maskz_getexp_round_sd
7291   // CHECK: @llvm.x86.avx512.mask.getexp.sd
7292   return _mm_maskz_getexp_round_sd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
7293 }
7294 
test_mm_mask_getexp_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7295 __m128 test_mm_mask_getexp_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7296   // CHECK-LABEL: @test_mm_mask_getexp_ss
7297   // CHECK: @llvm.x86.avx512.mask.getexp.ss
7298   return _mm_mask_getexp_ss(__W, __U, __A, __B);
7299 }
7300 
test_mm_mask_getexp_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7301 __m128 test_mm_mask_getexp_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7302   // CHECK-LABEL: @test_mm_mask_getexp_round_ss
7303   // CHECK: @llvm.x86.avx512.mask.getexp.ss
7304   return _mm_mask_getexp_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
7305 }
7306 
test_mm_maskz_getexp_ss(__mmask8 __U,__m128 __A,__m128 __B)7307 __m128 test_mm_maskz_getexp_ss(__mmask8 __U, __m128 __A, __m128 __B){
7308   // CHECK-LABEL: @test_mm_maskz_getexp_ss
7309   // CHECK: @llvm.x86.avx512.mask.getexp.ss
7310   return _mm_maskz_getexp_ss(__U, __A, __B);
7311 }
7312 
test_mm_maskz_getexp_round_ss(__mmask8 __U,__m128 __A,__m128 __B)7313 __m128 test_mm_maskz_getexp_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
7314   // CHECK-LABEL: @test_mm_maskz_getexp_round_ss
7315   // CHECK: @llvm.x86.avx512.mask.getexp.ss
7316   return _mm_maskz_getexp_round_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
7317 }
7318 
test_mm_mask_getmant_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7319 __m128d test_mm_mask_getmant_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7320   // CHECK-LABEL: @test_mm_mask_getmant_sd
7321   // CHECK: @llvm.x86.avx512.mask.getmant.sd
7322   return _mm_mask_getmant_sd(__W, __U, __A, __B, 1, 2);
7323 }
7324 
test_mm_mask_getmant_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7325 __m128d test_mm_mask_getmant_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7326   // CHECK-LABEL: @test_mm_mask_getmant_round_sd
7327   // CHECK: @llvm.x86.avx512.mask.getmant.sd
7328   return _mm_mask_getmant_round_sd(__W, __U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
7329 }
7330 
test_mm_maskz_getmant_sd(__mmask8 __U,__m128d __A,__m128d __B)7331 __m128d test_mm_maskz_getmant_sd(__mmask8 __U, __m128d __A, __m128d __B){
7332   // CHECK-LABEL: @test_mm_maskz_getmant_sd
7333   // CHECK: @llvm.x86.avx512.mask.getmant.sd
7334   return _mm_maskz_getmant_sd(__U, __A, __B, 1, 2);
7335 }
7336 
test_mm_maskz_getmant_round_sd(__mmask8 __U,__m128d __A,__m128d __B)7337 __m128d test_mm_maskz_getmant_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
7338   // CHECK-LABEL: @test_mm_maskz_getmant_round_sd
7339   // CHECK: @llvm.x86.avx512.mask.getmant.sd
7340   return _mm_maskz_getmant_round_sd(__U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
7341 }
7342 
test_mm_mask_getmant_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7343 __m128 test_mm_mask_getmant_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7344   // CHECK-LABEL: @test_mm_mask_getmant_ss
7345   // CHECK: @llvm.x86.avx512.mask.getmant.ss
7346   return _mm_mask_getmant_ss(__W, __U, __A, __B, 1, 2);
7347 }
7348 
test_mm_mask_getmant_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7349 __m128 test_mm_mask_getmant_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7350   // CHECK-LABEL: @test_mm_mask_getmant_round_ss
7351   // CHECK: @llvm.x86.avx512.mask.getmant.ss
7352   return _mm_mask_getmant_round_ss(__W, __U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
7353 }
7354 
test_mm_maskz_getmant_ss(__mmask8 __U,__m128 __A,__m128 __B)7355 __m128 test_mm_maskz_getmant_ss(__mmask8 __U, __m128 __A, __m128 __B){
7356   // CHECK-LABEL: @test_mm_maskz_getmant_ss
7357   // CHECK: @llvm.x86.avx512.mask.getmant.ss
7358   return _mm_maskz_getmant_ss(__U, __A, __B, 1, 2);
7359 }
7360 
test_mm_maskz_getmant_round_ss(__mmask8 __U,__m128 __A,__m128 __B)7361 __m128 test_mm_maskz_getmant_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
7362   // CHECK-LABEL: @test_mm_maskz_getmant_round_ss
7363   // CHECK: @llvm.x86.avx512.mask.getmant.ss
7364   return _mm_maskz_getmant_round_ss(__U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
7365 }
7366 
test_mm_mask_fmadd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7367 __m128 test_mm_mask_fmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7368   // CHECK-LABEL: @test_mm_mask_fmadd_ss
7369   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7370   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7371   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7372   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7373   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7374   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7375   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7376   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7377   return _mm_mask_fmadd_ss(__W, __U, __A, __B);
7378 }
7379 
test_mm_fmadd_round_ss(__m128 __A,__m128 __B,__m128 __C)7380 __m128 test_mm_fmadd_round_ss(__m128 __A, __m128 __B, __m128 __C){
7381   // CHECK-LABEL: @test_mm_fmadd_round_ss
7382   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7383   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7384   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7385   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7386   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7387   return _mm_fmadd_round_ss(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7388 }
7389 
test_mm_mask_fmadd_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7390 __m128 test_mm_mask_fmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7391   // CHECK-LABEL: @test_mm_mask_fmadd_round_ss
7392   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7393   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7394   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7395   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7396   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7397   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7398   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7399   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7400   return _mm_mask_fmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7401 }
7402 
test_mm_maskz_fmadd_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7403 __m128 test_mm_maskz_fmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7404   // CHECK-LABEL: @test_mm_maskz_fmadd_ss
7405   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7406   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7407   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7408   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7409   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7410   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7411   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7412   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7413   return _mm_maskz_fmadd_ss(__U, __A, __B, __C);
7414 }
7415 
test_mm_maskz_fmadd_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7416 __m128 test_mm_maskz_fmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7417   // CHECK-LABEL: @test_mm_maskz_fmadd_round_ss
7418   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7419   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7420   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7421   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7422   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7423   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7424   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7425   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7426   return _mm_maskz_fmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7427 }
7428 
test_mm_mask3_fmadd_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7429 __m128 test_mm_mask3_fmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7430   // CHECK-LABEL: @test_mm_mask3_fmadd_ss
7431   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7432   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7433   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7434   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7435   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7436   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7437   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7438   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7439   return _mm_mask3_fmadd_ss(__W, __X, __Y, __U);
7440 }
7441 
test_mm_mask3_fmadd_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7442 __m128 test_mm_mask3_fmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7443   // CHECK-LABEL: @test_mm_mask3_fmadd_round_ss
7444   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7445   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7446   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7447   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7448   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7449   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7450   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7451   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7452   return _mm_mask3_fmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7453 }
7454 
test_mm_mask_fmsub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7455 __m128 test_mm_mask_fmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7456   // CHECK-LABEL: @test_mm_mask_fmsub_ss
7457   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7458   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7459   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7460   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7461   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7462   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7463   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7464   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7465   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7466   return _mm_mask_fmsub_ss(__W, __U, __A, __B);
7467 }
7468 
test_mm_fmsub_round_ss(__m128 __A,__m128 __B,__m128 __C)7469 __m128 test_mm_fmsub_round_ss(__m128 __A, __m128 __B, __m128 __C){
7470   // CHECK-LABEL: @test_mm_fmsub_round_ss
7471   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7472   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7473   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7474   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7475   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7476   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7477   return _mm_fmsub_round_ss(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7478 }
7479 
test_mm_mask_fmsub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7480 __m128 test_mm_mask_fmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7481   // CHECK-LABEL: @test_mm_mask_fmsub_round_ss
7482   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7483   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7484   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7485   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7486   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7487   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7488   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7489   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7490   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7491   return _mm_mask_fmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7492 }
7493 
test_mm_maskz_fmsub_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7494 __m128 test_mm_maskz_fmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7495   // CHECK-LABEL: @test_mm_maskz_fmsub_ss
7496   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7497   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7498   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7499   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7500   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7501   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7502   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7503   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7504   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7505   return _mm_maskz_fmsub_ss(__U, __A, __B, __C);
7506 }
7507 
test_mm_maskz_fmsub_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7508 __m128 test_mm_maskz_fmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7509   // CHECK-LABEL: @test_mm_maskz_fmsub_round_ss
7510   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7511   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7512   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7513   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7514   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7515   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7516   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7517   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7518   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7519   return _mm_maskz_fmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7520 }
7521 
test_mm_mask3_fmsub_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7522 __m128 test_mm_mask3_fmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7523   // CHECK-LABEL: @test_mm_mask3_fmsub_ss
7524   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, [[ORIGC:%.+]]
7525   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7526   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7527   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7528   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7529   // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7530   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7531   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7532   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7533   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7534   return _mm_mask3_fmsub_ss(__W, __X, __Y, __U);
7535 }
7536 
test_mm_mask3_fmsub_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7537 __m128 test_mm_mask3_fmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7538   // CHECK-LABEL: @test_mm_mask3_fmsub_round_ss
7539   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, [[ORIGC:%.+]]
7540   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7541   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7542   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7543   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7544   // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7545   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7546   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7547   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7548   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7549   return _mm_mask3_fmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7550 }
7551 
test_mm_mask_fnmadd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7552 __m128 test_mm_mask_fnmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7553   // CHECK-LABEL: @test_mm_mask_fnmadd_ss
7554   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7555   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7556   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7557   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7558   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7559   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7560   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7561   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7562   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7563   return _mm_mask_fnmadd_ss(__W, __U, __A, __B);
7564 }
7565 
test_mm_fnmadd_round_ss(__m128 __A,__m128 __B,__m128 __C)7566 __m128 test_mm_fnmadd_round_ss(__m128 __A, __m128 __B, __m128 __C){
7567   // CHECK-LABEL: @test_mm_fnmadd_round_ss
7568   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7569   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7570   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7571   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7572   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7573   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7574   return _mm_fnmadd_round_ss(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7575 }
7576 
test_mm_mask_fnmadd_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7577 __m128 test_mm_mask_fnmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7578   // CHECK-LABEL: @test_mm_mask_fnmadd_round_ss
7579   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7580   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7581   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7582   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7583   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7584   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7585   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7586   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7587   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7588   return _mm_mask_fnmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7589 }
7590 
test_mm_maskz_fnmadd_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7591 __m128 test_mm_maskz_fnmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7592   // CHECK-LABEL: @test_mm_maskz_fnmadd_ss
7593   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7594   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7595   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7596   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7597   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7598   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7599   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7600   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7601   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7602   return _mm_maskz_fnmadd_ss(__U, __A, __B, __C);
7603 }
7604 
test_mm_maskz_fnmadd_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7605 __m128 test_mm_maskz_fnmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7606   // CHECK-LABEL: @test_mm_maskz_fnmadd_round_ss
7607   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7608   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7609   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7610   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7611   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7612   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7613   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7614   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7615   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7616   return _mm_maskz_fnmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7617 }
7618 
test_mm_mask3_fnmadd_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7619 __m128 test_mm_mask3_fnmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7620   // CHECK-LABEL: @test_mm_mask3_fnmadd_ss
7621   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7622   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7623   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7624   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7625   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7626   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7627   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7628   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7629   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7630   return _mm_mask3_fnmadd_ss(__W, __X, __Y, __U);
7631 }
7632 
test_mm_mask3_fnmadd_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7633 __m128 test_mm_mask3_fnmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7634   // CHECK-LABEL: @test_mm_mask3_fnmadd_round_ss
7635   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7636   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7637   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7638   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7639   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7640   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7641   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7642   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7643   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7644   return _mm_mask3_fnmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7645 }
7646 
test_mm_mask_fnmsub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7647 __m128 test_mm_mask_fnmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7648   // CHECK-LABEL: @test_mm_mask_fnmsub_ss
7649   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7650   // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7651   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7652   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7653   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7654   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7655   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7656   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7657   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7658   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7659   return _mm_mask_fnmsub_ss(__W, __U, __A, __B);
7660 }
7661 
test_mm_fnmsub_round_ss(__m128 __A,__m128 __B,__m128 __C)7662 __m128 test_mm_fnmsub_round_ss(__m128 __A, __m128 __B, __m128 __C){
7663   // CHECK-LABEL: @test_mm_fnmsub_round_ss
7664   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7665   // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7666   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7667   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7668   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7669   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7670   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7671   return _mm_fnmsub_round_ss(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7672 }
7673 
test_mm_mask_fnmsub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7674 __m128 test_mm_mask_fnmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7675   // CHECK-LABEL: @test_mm_mask_fnmsub_round_ss
7676   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7677   // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7678   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7679   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7680   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7681   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7682   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7683   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7684   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7685   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7686   return _mm_mask_fnmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7687 }
7688 
test_mm_maskz_fnmsub_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7689 __m128 test_mm_maskz_fnmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7690   // CHECK-LABEL: @test_mm_maskz_fnmsub_ss
7691   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7692   // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7693   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7694   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7695   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7696   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7697   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7698   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7699   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7700   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7701   return _mm_maskz_fnmsub_ss(__U, __A, __B, __C);
7702 }
7703 
test_mm_maskz_fnmsub_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7704 __m128 test_mm_maskz_fnmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7705   // CHECK-LABEL: @test_mm_maskz_fnmsub_round_ss
7706   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7707   // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7708   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7709   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7710   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7711   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7712   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7713   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7714   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7715   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7716   return _mm_maskz_fnmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7717 }
7718 
test_mm_mask3_fnmsub_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7719 __m128 test_mm_mask3_fnmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7720   // CHECK-LABEL: @test_mm_mask3_fnmsub_ss
7721   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7722   // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, [[ORIGC:%.+]]
7723   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7724   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7725   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7726   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7727   // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7728   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7729   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7730   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7731   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7732   return _mm_mask3_fnmsub_ss(__W, __X, __Y, __U);
7733 }
7734 
test_mm_mask3_fnmsub_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7735 __m128 test_mm_mask3_fnmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7736   // CHECK-LABEL: @test_mm_mask3_fnmsub_round_ss
7737   // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7738   // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, [[ORIGC:%.+]]
7739   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7740   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7741   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7742   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7743   // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7744   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7745   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7746   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7747   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7748   return _mm_mask3_fnmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7749 }
7750 
test_mm_mask_fmadd_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7751 __m128d test_mm_mask_fmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7752   // CHECK-LABEL: @test_mm_mask_fmadd_sd
7753   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7754   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7755   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7756   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7757   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7758   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7759   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7760   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7761   return _mm_mask_fmadd_sd(__W, __U, __A, __B);
7762 }
7763 
test_mm_fmadd_round_sd(__m128d __A,__m128d __B,__m128d __C)7764 __m128d test_mm_fmadd_round_sd(__m128d __A, __m128d __B, __m128d __C){
7765   // CHECK-LABEL: @test_mm_fmadd_round_sd
7766   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7767   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7768   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7769   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7770   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7771   return _mm_fmadd_round_sd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7772 }
7773 
test_mm_mask_fmadd_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7774 __m128d test_mm_mask_fmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7775   // CHECK-LABEL: @test_mm_mask_fmadd_round_sd
7776   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7777   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7778   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7779   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7780   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7781   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7782   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7783   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7784   return _mm_mask_fmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7785 }
7786 
test_mm_maskz_fmadd_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7787 __m128d test_mm_maskz_fmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7788   // CHECK-LABEL: @test_mm_maskz_fmadd_sd
7789   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7790   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7791   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7792   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7793   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7794   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7795   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7796   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7797   return _mm_maskz_fmadd_sd(__U, __A, __B, __C);
7798 }
7799 
test_mm_maskz_fmadd_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7800 __m128d test_mm_maskz_fmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7801   // CHECK-LABEL: @test_mm_maskz_fmadd_round_sd
7802   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7803   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7804   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7805   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7806   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7807   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7808   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7809   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7810   return _mm_maskz_fmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7811 }
7812 
test_mm_mask3_fmadd_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7813 __m128d test_mm_mask3_fmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7814   // CHECK-LABEL: @test_mm_mask3_fmadd_sd
7815   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7816   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7817   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7818   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7819   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7820   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7821   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7822   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7823   return _mm_mask3_fmadd_sd(__W, __X, __Y, __U);
7824 }
7825 
test_mm_mask3_fmadd_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7826 __m128d test_mm_mask3_fmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7827   // CHECK-LABEL: @test_mm_mask3_fmadd_round_sd
7828   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7829   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7830   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7831   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7832   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7833   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7834   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7835   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7836   return _mm_mask3_fmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7837 }
7838 
test_mm_mask_fmsub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7839 __m128d test_mm_mask_fmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7840   // CHECK-LABEL: @test_mm_mask_fmsub_sd
7841   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7842   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7843   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7844   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7845   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7846   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7847   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7848   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7849   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7850   return _mm_mask_fmsub_sd(__W, __U, __A, __B);
7851 }
7852 
test_mm_fmsub_round_sd(__m128d __A,__m128d __B,__m128d __C)7853 __m128d test_mm_fmsub_round_sd(__m128d __A, __m128d __B, __m128d __C){
7854   // CHECK-LABEL: @test_mm_fmsub_round_sd
7855   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7856   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7857   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7858   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7859   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7860   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7861   return _mm_fmsub_round_sd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7862 }
7863 
test_mm_mask_fmsub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7864 __m128d test_mm_mask_fmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7865   // CHECK-LABEL: @test_mm_mask_fmsub_round_sd
7866   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7867   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7868   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7869   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7870   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7871   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7872   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7873   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7874   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7875   return _mm_mask_fmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7876 }
7877 
test_mm_maskz_fmsub_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7878 __m128d test_mm_maskz_fmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7879   // CHECK-LABEL: @test_mm_maskz_fmsub_sd
7880   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7881   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7882   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7883   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7884   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7885   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7886   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7887   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7888   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7889   return _mm_maskz_fmsub_sd(__U, __A, __B, __C);
7890 }
7891 
test_mm_maskz_fmsub_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7892 __m128d test_mm_maskz_fmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7893   // CHECK-LABEL: @test_mm_maskz_fmsub_round_sd
7894   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7895   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7896   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7897   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7898   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7899   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7900   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7901   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7902   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7903   return _mm_maskz_fmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7904 }
7905 
test_mm_mask3_fmsub_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7906 __m128d test_mm_mask3_fmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7907   // CHECK-LABEL: @test_mm_mask3_fmsub_sd
7908   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ORIGC:%.+]]
7909   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7910   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7911   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7912   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7913   // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
7914   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7915   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7916   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
7917   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7918   return _mm_mask3_fmsub_sd(__W, __X, __Y, __U);
7919 }
7920 
test_mm_mask3_fmsub_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7921 __m128d test_mm_mask3_fmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7922   // CHECK-LABEL: @test_mm_mask3_fmsub_round_sd
7923   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ORIGC:%.+]]
7924   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7925   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7926   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7927   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7928   // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
7929   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7930   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7931   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
7932   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7933   return _mm_mask3_fmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7934 }
7935 
test_mm_mask_fnmadd_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7936 __m128d test_mm_mask_fnmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7937   // CHECK-LABEL: @test_mm_mask_fnmadd_sd
7938   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7939   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7940   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7941   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7942   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7943   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7944   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7945   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7946   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7947   return _mm_mask_fnmadd_sd(__W, __U, __A, __B);
7948 }
7949 
test_mm_fnmadd_round_sd(__m128d __A,__m128d __B,__m128d __C)7950 __m128d test_mm_fnmadd_round_sd(__m128d __A, __m128d __B, __m128d __C){
7951   // CHECK-LABEL: @test_mm_fnmadd_round_sd
7952   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7953   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7954   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7955   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7956   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7957   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7958   return _mm_fnmadd_round_sd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7959 }
7960 
test_mm_mask_fnmadd_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7961 __m128d test_mm_mask_fnmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7962   // CHECK-LABEL: @test_mm_mask_fnmadd_round_sd
7963   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7964   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7965   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7966   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7967   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7968   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7969   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7970   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7971   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7972   return _mm_mask_fnmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7973 }
7974 
test_mm_maskz_fnmadd_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7975 __m128d test_mm_maskz_fnmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7976   // CHECK-LABEL: @test_mm_maskz_fnmadd_sd
7977   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7978   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7979   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7980   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7981   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7982   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7983   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7984   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7985   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7986   return _mm_maskz_fnmadd_sd(__U, __A, __B, __C);
7987 }
7988 
test_mm_maskz_fnmadd_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7989 __m128d test_mm_maskz_fnmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7990   // CHECK-LABEL: @test_mm_maskz_fnmadd_round_sd
7991   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7992   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7993   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7994   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7995   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7996   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7997   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7998   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7999   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8000   return _mm_maskz_fnmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8001 }
8002 
test_mm_mask3_fnmadd_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8003 __m128d test_mm_mask3_fnmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8004   // CHECK-LABEL: @test_mm_mask3_fnmadd_sd
8005   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8006   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8007   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8008   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
8009   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8010   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8011   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8012   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
8013   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8014   return _mm_mask3_fnmadd_sd(__W, __X, __Y, __U);
8015 }
8016 
test_mm_mask3_fnmadd_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8017 __m128d test_mm_mask3_fnmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8018   // CHECK-LABEL: @test_mm_mask3_fnmadd_round_sd
8019   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8020   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8021   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8022   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
8023   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8024   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8025   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8026   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
8027   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8028   return _mm_mask3_fnmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8029 }
8030 
test_mm_mask_fnmsub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)8031 __m128d test_mm_mask_fnmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
8032   // CHECK-LABEL: @test_mm_mask_fnmsub_sd
8033   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8034   // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8035   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8036   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8037   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8038   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8039   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8040   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8041   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8042   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8043   return _mm_mask_fnmsub_sd(__W, __U, __A, __B);
8044 }
8045 
test_mm_fnmsub_round_sd(__m128d __A,__m128d __B,__m128d __C)8046 __m128d test_mm_fnmsub_round_sd(__m128d __A, __m128d __B, __m128d __C){
8047   // CHECK-LABEL: @test_mm_fnmsub_round_sd
8048   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8049   // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8050   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8051   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8052   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8053   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8054   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
8055   return _mm_fnmsub_round_sd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8056 }
8057 
test_mm_mask_fnmsub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)8058 __m128d test_mm_mask_fnmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
8059   // CHECK-LABEL: @test_mm_mask_fnmsub_round_sd
8060   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8061   // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8062   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8063   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8064   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8065   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8066   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8067   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8068   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8069   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8070   return _mm_mask_fnmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8071 }
8072 
test_mm_maskz_fnmsub_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8073 __m128d test_mm_maskz_fnmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8074   // CHECK-LABEL: @test_mm_maskz_fnmsub_sd
8075   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8076   // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8077   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8078   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8079   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8080   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8081   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8082   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8083   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8084   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8085   return _mm_maskz_fnmsub_sd(__U, __A, __B, __C);
8086 }
8087 
test_mm_maskz_fnmsub_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8088 __m128d test_mm_maskz_fnmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8089   // CHECK-LABEL: @test_mm_maskz_fnmsub_round_sd
8090   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8091   // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8092   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8093   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8094   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8095   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8096   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8097   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8098   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8099   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8100   return _mm_maskz_fnmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8101 }
8102 
test_mm_mask3_fnmsub_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8103 __m128d test_mm_mask3_fnmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8104   // CHECK-LABEL: @test_mm_mask3_fnmsub_sd
8105   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8106   // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ORIGC:%.+]]
8107   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8108   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8109   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8110   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8111   // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8112   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8113   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8114   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8115   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8116   return _mm_mask3_fnmsub_sd(__W, __X, __Y, __U);
8117 }
8118 
test_mm_mask3_fnmsub_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8119 __m128d test_mm_mask3_fnmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8120   // CHECK-LABEL: @test_mm_mask3_fnmsub_round_sd
8121   // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8122   // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ORIGC:%.+]]
8123   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8124   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8125   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8126   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8127   // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8128   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8129   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8130   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8131   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8132   return _mm_mask3_fnmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8133 }
8134 
test_mm512_permutex_pd(__m512d __X)8135 __m512d test_mm512_permutex_pd(__m512d __X) {
8136   // CHECK-LABEL: @test_mm512_permutex_pd
8137   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8138   return _mm512_permutex_pd(__X, 0);
8139 }
8140 
test_mm512_mask_permutex_pd(__m512d __W,__mmask8 __U,__m512d __X)8141 __m512d test_mm512_mask_permutex_pd(__m512d __W, __mmask8 __U, __m512d __X) {
8142   // CHECK-LABEL: @test_mm512_mask_permutex_pd
8143   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8144   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8145   return _mm512_mask_permutex_pd(__W, __U, __X, 0);
8146 }
8147 
test_mm512_maskz_permutex_pd(__mmask8 __U,__m512d __X)8148 __m512d test_mm512_maskz_permutex_pd(__mmask8 __U, __m512d __X) {
8149   // CHECK-LABEL: @test_mm512_maskz_permutex_pd
8150   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8151   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8152   return _mm512_maskz_permutex_pd(__U, __X, 0);
8153 }
8154 
test_mm512_permutex_epi64(__m512i __X)8155 __m512i test_mm512_permutex_epi64(__m512i __X) {
8156   // CHECK-LABEL: @test_mm512_permutex_epi64
8157   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8158   return _mm512_permutex_epi64(__X, 0);
8159 }
8160 
test_mm512_mask_permutex_epi64(__m512i __W,__mmask8 __M,__m512i __X)8161 __m512i test_mm512_mask_permutex_epi64(__m512i __W, __mmask8 __M, __m512i __X) {
8162   // CHECK-LABEL: @test_mm512_mask_permutex_epi64
8163   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8164   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8165   return _mm512_mask_permutex_epi64(__W, __M, __X, 0);
8166 }
8167 
test_mm512_maskz_permutex_epi64(__mmask8 __M,__m512i __X)8168 __m512i test_mm512_maskz_permutex_epi64(__mmask8 __M, __m512i __X) {
8169   // CHECK-LABEL: @test_mm512_maskz_permutex_epi64
8170   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8171   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8172   return _mm512_maskz_permutex_epi64(__M, __X, 0);
8173 }
8174 
test_mm512_permutexvar_pd(__m512i __X,__m512d __Y)8175 __m512d test_mm512_permutexvar_pd(__m512i __X, __m512d __Y) {
8176   // CHECK-LABEL: @test_mm512_permutexvar_pd
8177   // CHECK: @llvm.x86.avx512.permvar.df.512
8178   return _mm512_permutexvar_pd(__X, __Y);
8179 }
8180 
test_mm512_mask_permutexvar_pd(__m512d __W,__mmask8 __U,__m512i __X,__m512d __Y)8181 __m512d test_mm512_mask_permutexvar_pd(__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y) {
8182   // CHECK-LABEL: @test_mm512_mask_permutexvar_pd
8183   // CHECK: @llvm.x86.avx512.permvar.df.512
8184   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8185   return _mm512_mask_permutexvar_pd(__W, __U, __X, __Y);
8186 }
8187 
test_mm512_maskz_permutexvar_pd(__mmask8 __U,__m512i __X,__m512d __Y)8188 __m512d test_mm512_maskz_permutexvar_pd(__mmask8 __U, __m512i __X, __m512d __Y) {
8189   // CHECK-LABEL: @test_mm512_maskz_permutexvar_pd
8190   // CHECK: @llvm.x86.avx512.permvar.df.512
8191   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8192   return _mm512_maskz_permutexvar_pd(__U, __X, __Y);
8193 }
8194 
test_mm512_maskz_permutexvar_epi64(__mmask8 __M,__m512i __X,__m512i __Y)8195 __m512i test_mm512_maskz_permutexvar_epi64(__mmask8 __M, __m512i __X, __m512i __Y) {
8196   // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi64
8197   // CHECK: @llvm.x86.avx512.permvar.di.512
8198   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8199   return _mm512_maskz_permutexvar_epi64(__M, __X, __Y);
8200 }
8201 
test_mm512_permutexvar_epi64(__m512i __X,__m512i __Y)8202 __m512i test_mm512_permutexvar_epi64(__m512i __X, __m512i __Y) {
8203   // CHECK-LABEL: @test_mm512_permutexvar_epi64
8204   // CHECK: @llvm.x86.avx512.permvar.di.512
8205   return _mm512_permutexvar_epi64(__X, __Y);
8206 }
8207 
test_mm512_mask_permutexvar_epi64(__m512i __W,__mmask8 __M,__m512i __X,__m512i __Y)8208 __m512i test_mm512_mask_permutexvar_epi64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
8209   // CHECK-LABEL: @test_mm512_mask_permutexvar_epi64
8210   // CHECK: @llvm.x86.avx512.permvar.di.512
8211   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8212   return _mm512_mask_permutexvar_epi64(__W, __M, __X, __Y);
8213 }
8214 
test_mm512_permutexvar_ps(__m512i __X,__m512 __Y)8215 __m512 test_mm512_permutexvar_ps(__m512i __X, __m512 __Y) {
8216   // CHECK-LABEL: @test_mm512_permutexvar_ps
8217   // CHECK: @llvm.x86.avx512.permvar.sf.512
8218   return _mm512_permutexvar_ps(__X, __Y);
8219 }
8220 
test_mm512_mask_permutexvar_ps(__m512 __W,__mmask16 __U,__m512i __X,__m512 __Y)8221 __m512 test_mm512_mask_permutexvar_ps(__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y) {
8222   // CHECK-LABEL: @test_mm512_mask_permutexvar_ps
8223   // CHECK: @llvm.x86.avx512.permvar.sf.512
8224   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8225   return _mm512_mask_permutexvar_ps(__W, __U, __X, __Y);
8226 }
8227 
test_mm512_maskz_permutexvar_ps(__mmask16 __U,__m512i __X,__m512 __Y)8228 __m512 test_mm512_maskz_permutexvar_ps(__mmask16 __U, __m512i __X, __m512 __Y) {
8229   // CHECK-LABEL: @test_mm512_maskz_permutexvar_ps
8230   // CHECK: @llvm.x86.avx512.permvar.sf.512
8231   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8232   return _mm512_maskz_permutexvar_ps(__U, __X, __Y);
8233 }
8234 
test_mm512_maskz_permutexvar_epi32(__mmask16 __M,__m512i __X,__m512i __Y)8235 __m512i test_mm512_maskz_permutexvar_epi32(__mmask16 __M, __m512i __X, __m512i __Y) {
8236   // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi32
8237   // CHECK: @llvm.x86.avx512.permvar.si.512
8238   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8239   return _mm512_maskz_permutexvar_epi32(__M, __X, __Y);
8240 }
8241 
test_mm512_permutexvar_epi32(__m512i __X,__m512i __Y)8242 __m512i test_mm512_permutexvar_epi32(__m512i __X, __m512i __Y) {
8243   // CHECK-LABEL: @test_mm512_permutexvar_epi32
8244   // CHECK: @llvm.x86.avx512.permvar.si.512
8245   return _mm512_permutexvar_epi32(__X, __Y);
8246 }
8247 
test_mm512_mask_permutexvar_epi32(__m512i __W,__mmask16 __M,__m512i __X,__m512i __Y)8248 __m512i test_mm512_mask_permutexvar_epi32(__m512i __W, __mmask16 __M, __m512i __X, __m512i __Y) {
8249   // CHECK-LABEL: @test_mm512_mask_permutexvar_epi32
8250   // CHECK: @llvm.x86.avx512.permvar.si.512
8251   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8252   return _mm512_mask_permutexvar_epi32(__W, __M, __X, __Y);
8253 }
8254 
test_mm512_kand(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8255 __mmask16 test_mm512_kand(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8256   // CHECK-LABEL: @test_mm512_kand
8257   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8258   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8259   // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8260   // CHECK: bitcast <16 x i1> [[RES]] to i16
8261   return _mm512_mask_cmpneq_epu32_mask(_mm512_kand(_mm512_cmpneq_epu32_mask(__A, __B),
8262                                                    _mm512_cmpneq_epu32_mask(__C, __D)),
8263                                                    __E, __F);
8264 }
8265 
test_mm512_kandn(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8266 __mmask16 test_mm512_kandn(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8267   // CHECK-LABEL: @test_mm512_kandn
8268   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8269   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8270   // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8271   // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8272   // CHECK: bitcast <16 x i1> [[RES]] to i16
8273   return _mm512_mask_cmpneq_epu32_mask(_mm512_kandn(_mm512_cmpneq_epu32_mask(__A, __B),
8274                                                     _mm512_cmpneq_epu32_mask(__C, __D)),
8275                                                     __E, __F);
8276 }
8277 
test_mm512_kor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8278 __mmask16 test_mm512_kor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8279   // CHECK-LABEL: @test_mm512_kor
8280   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8281   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8282   // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8283   // CHECK: bitcast <16 x i1> [[RES]] to i16
8284   return _mm512_mask_cmpneq_epu32_mask(_mm512_kor(_mm512_cmpneq_epu32_mask(__A, __B),
8285                                                   _mm512_cmpneq_epu32_mask(__C, __D)),
8286                                                   __E, __F);
8287 }
8288 
test_mm512_kortestc(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8289 int test_mm512_kortestc(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8290   // CHECK-LABEL: @test_mm512_kortestc
8291   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8292   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8293   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8294   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8295   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8296   // CHECK: zext i1 [[CMP]] to i32
8297   return _mm512_kortestc(_mm512_cmpneq_epu32_mask(__A, __B),
8298                          _mm512_cmpneq_epu32_mask(__C, __D));
8299 }
8300 
test_mm512_kortestz(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8301 int test_mm512_kortestz(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8302   // CHECK-LABEL: @test_mm512_kortestz
8303   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8304   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8305   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8306   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8307   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8308   // CHECK: zext i1 [[CMP]] to i32
8309   return _mm512_kortestz(_mm512_cmpneq_epu32_mask(__A, __B),
8310                          _mm512_cmpneq_epu32_mask(__C, __D));
8311 }
8312 
test_kortestz_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8313 unsigned char test_kortestz_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8314   // CHECK-LABEL: @test_kortestz_mask16_u8
8315   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8316   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8317   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8318   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8319   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8320   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8321   // CHECK: trunc i32 [[ZEXT]] to i8
8322   return _kortestz_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8323                              _mm512_cmpneq_epu32_mask(__C, __D));
8324 }
8325 
test_kortestc_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8326 unsigned char test_kortestc_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8327   // CHECK-LABEL: @test_kortestc_mask16_u8
8328   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8329   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8330   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8331   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8332   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8333   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8334   // CHECK: trunc i32 [[ZEXT]] to i8
8335   return _kortestc_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8336                              _mm512_cmpneq_epu32_mask(__C, __D));
8337 }
8338 
test_kortest_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)8339 unsigned char test_kortest_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
8340   // CHECK-LABEL: @test_kortest_mask16_u8
8341   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8342   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8343   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8344   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8345   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8346   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8347   // CHECK: trunc i32 [[ZEXT]] to i8
8348   // CHECK: [[LHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8349   // CHECK: [[RHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8350   // CHECK: [[OR2:%.*]] = or <16 x i1> [[LHS2]], [[RHS2]]
8351   // CHECK: [[CAST2:%.*]] = bitcast <16 x i1> [[OR2]] to i16
8352   // CHECK: [[CMP2:%.*]] = icmp eq i16 [[CAST2]], 0
8353   // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
8354   // CHECK: trunc i32 [[ZEXT2]] to i8
8355   return _kortest_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8356                             _mm512_cmpneq_epu32_mask(__C, __D), CF);
8357 }
8358 
test_mm512_kunpackb(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8359 __mmask16 test_mm512_kunpackb(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8360   // CHECK-LABEL: @test_mm512_kunpackb
8361   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8362   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8363   // CHECK: [[LHS2:%.*]] = shufflevector <16 x i1> [[LHS]], <16 x i1> [[LHS]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8364   // CHECK: [[RHS2:%.*]] = shufflevector <16 x i1> [[RHS]], <16 x i1> [[RHS]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8365   // CHECK: [[CONCAT:%.*]] = shufflevector <8 x i1> [[RHS2]], <8 x i1> [[LHS2]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
8366   // CHECK: bitcast <16 x i1> [[CONCAT]] to i16
8367   return _mm512_mask_cmpneq_epu32_mask(_mm512_kunpackb(_mm512_cmpneq_epu32_mask(__A, __B),
8368                                                        _mm512_cmpneq_epu32_mask(__C, __D)),
8369                                                        __E, __F);
8370 }
8371 
test_mm512_kxnor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8372 __mmask16 test_mm512_kxnor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8373   // CHECK-LABEL: @test_mm512_kxnor
8374   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8375   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8376   // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8377   // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8378   // CHECK: bitcast <16 x i1> [[RES]] to i16
8379   return _mm512_mask_cmpneq_epu32_mask(_mm512_kxnor(_mm512_cmpneq_epu32_mask(__A, __B),
8380                                                     _mm512_cmpneq_epu32_mask(__C, __D)),
8381                                                     __E, __F);
8382 }
8383 
test_mm512_kxor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8384 __mmask16 test_mm512_kxor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8385   // CHECK-LABEL: @test_mm512_kxor
8386   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8387   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8388   // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8389   // CHECK: bitcast <16 x i1> [[RES]] to i16
8390   return _mm512_mask_cmpneq_epu32_mask(_mm512_kxor(_mm512_cmpneq_epu32_mask(__A, __B),
8391                                                    _mm512_cmpneq_epu32_mask(__C, __D)),
8392                                                    __E, __F);
8393 }
8394 
test_knot_mask16(__mmask16 a)8395 __mmask16 test_knot_mask16(__mmask16 a) {
8396   // CHECK-LABEL: @test_knot_mask16
8397   // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8398   // CHECK: [[NOT:%.*]] = xor <16 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8399   // CHECK: bitcast <16 x i1> [[NOT]] to i16
8400   return _knot_mask16(a);
8401 }
8402 
test_kand_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8403 __mmask16 test_kand_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8404   // CHECK-LABEL: @test_kand_mask16
8405   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8406   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8407   // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8408   // CHECK: bitcast <16 x i1> [[RES]] to i16
8409   return _mm512_mask_cmpneq_epu32_mask(_kand_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8410                                                     _mm512_cmpneq_epu32_mask(__C, __D)),
8411                                                     __E, __F);
8412 }
8413 
test_kandn_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8414 __mmask16 test_kandn_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8415   // CHECK-LABEL: @test_kandn_mask16
8416   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8417   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8418   // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8419   // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8420   // CHECK: bitcast <16 x i1> [[RES]] to i16
8421   return _mm512_mask_cmpneq_epu32_mask(_kandn_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8422                                                      _mm512_cmpneq_epu32_mask(__C, __D)),
8423                                                      __E, __F);
8424 }
8425 
test_kor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8426 __mmask16 test_kor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8427   // CHECK-LABEL: @test_kor_mask16
8428   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8429   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8430   // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8431   // CHECK: bitcast <16 x i1> [[RES]] to i16
8432   return _mm512_mask_cmpneq_epu32_mask(_kor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8433                                                    _mm512_cmpneq_epu32_mask(__C, __D)),
8434                                                    __E, __F);
8435 }
8436 
test_kxnor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8437 __mmask16 test_kxnor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8438   // CHECK-LABEL: @test_kxnor_mask16
8439   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8440   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8441   // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8442   // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8443   // CHECK: bitcast <16 x i1> [[RES]] to i16
8444   return _mm512_mask_cmpneq_epu32_mask(_kxnor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8445                                                      _mm512_cmpneq_epu32_mask(__C, __D)),
8446                                                      __E, __F);
8447 }
8448 
test_kxor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8449 __mmask16 test_kxor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8450   // CHECK-LABEL: @test_kxor_mask16
8451   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8452   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8453   // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8454   // CHECK: bitcast <16 x i1> [[RES]] to i16
8455   return _mm512_mask_cmpneq_epu32_mask(_kxor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8456                                                     _mm512_cmpneq_epu32_mask(__C, __D)),
8457                                                     __E, __F);
8458 }
8459 
test_kshiftli_mask16(__m512i A,__m512i B,__m512i C,__m512i D)8460 __mmask16 test_kshiftli_mask16(__m512i A, __m512i B, __m512i C, __m512i D) {
8461   // CHECK-LABEL: @test_kshiftli_mask16
8462   // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8463   // CHECK: [[RES:%.*]] = shufflevector <16 x i1> zeroinitializer, <16 x i1> [[VAL]], <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
8464   // CHECK: bitcast <16 x i1> [[RES]] to i16
8465   return _mm512_mask_cmpneq_epu32_mask(_kshiftli_mask16(_mm512_cmpneq_epu32_mask(A, B), 1), C, D);
8466 }
8467 
test_kshiftri_mask16(__m512i A,__m512i B,__m512i C,__m512i D)8468 __mmask16 test_kshiftri_mask16(__m512i A, __m512i B, __m512i C, __m512i D) {
8469   // CHECK-LABEL: @test_kshiftri_mask16
8470   // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8471   // CHECK: [[RES:%.*]] = shufflevector <16 x i1> [[VAL]], <16 x i1> zeroinitializer, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16>
8472   // CHECK: bitcast <16 x i1> [[RES]] to i16
8473   return _mm512_mask_cmpneq_epu32_mask(_kshiftri_mask16(_mm512_cmpneq_epu32_mask(A, B), 1), C, D);
8474 }
8475 
test_cvtmask16_u32(__m512i A,__m512i B)8476 unsigned int test_cvtmask16_u32(__m512i A, __m512i B) {
8477   // CHECK-LABEL: @test_cvtmask16_u32
8478   // CHECK: bitcast <16 x i1> %{{.*}} to i16
8479   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8480   // CHECK: zext i16 %{{.*}} to i32
8481   return _cvtmask16_u32(_mm512_cmpneq_epu32_mask(A, B));
8482 }
8483 
test_cvtu32_mask16(__m512i A,__m512i B,unsigned int C)8484 __mmask16 test_cvtu32_mask16(__m512i A, __m512i B, unsigned int C) {
8485   // CHECK-LABEL: @test_cvtu32_mask16
8486   // CHECK: trunc i32 %{{.*}} to i16
8487   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8488   return _mm512_mask_cmpneq_epu32_mask(_cvtu32_mask16(C), A, B);
8489 }
8490 
test_load_mask16(__mmask16 * A,__m512i B,__m512i C)8491 __mmask16 test_load_mask16(__mmask16 *A, __m512i B, __m512i C) {
8492   // CHECK-LABEL: @test_load_mask16
8493   // CHECK: [[LOAD:%.*]] = load i16, i16* %{{.*}}
8494   // CHECK: bitcast i16 [[LOAD]] to <16 x i1>
8495   return _mm512_mask_cmpneq_epu32_mask(_load_mask16(A), B, C);
8496 }
8497 
test_store_mask16(__mmask16 * A,__m512i B,__m512i C)8498 void test_store_mask16(__mmask16 *A, __m512i B, __m512i C) {
8499   // CHECK-LABEL: @test_store_mask16
8500   // CHECK: bitcast <16 x i1> %{{.*}} to i16
8501   // CHECK: store i16 %{{.*}}, i16* %{{.*}}
8502   _store_mask16(A, _mm512_cmpneq_epu32_mask(B, C));
8503 }
8504 
test_mm512_stream_si512(__m512i * __P,__m512i __A)8505 void test_mm512_stream_si512(__m512i * __P, __m512i __A) {
8506   // CHECK-LABEL: @test_mm512_stream_si512
8507   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 64, !nontemporal
8508   _mm512_stream_si512(__P, __A);
8509 }
8510 
test_mm512_stream_load_si512(void * __P)8511 __m512i test_mm512_stream_load_si512(void *__P) {
8512   // CHECK-LABEL: @test_mm512_stream_load_si512
8513   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal
8514   return _mm512_stream_load_si512(__P);
8515 }
8516 
test_mm512_stream_load_si512_const(void const * __P)8517 __m512i test_mm512_stream_load_si512_const(void const *__P) {
8518   // CHECK-LABEL: @test_mm512_stream_load_si512_const
8519   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal
8520   return _mm512_stream_load_si512(__P);
8521 }
8522 
test_mm512_stream_pd(double * __P,__m512d __A)8523 void test_mm512_stream_pd(double *__P, __m512d __A) {
8524   // CHECK-LABEL: @test_mm512_stream_pd
8525   // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 64, !nontemporal
8526   return _mm512_stream_pd(__P, __A);
8527 }
8528 
test_mm512_stream_ps(float * __P,__m512 __A)8529 void test_mm512_stream_ps(float *__P, __m512 __A) {
8530   // CHECK-LABEL: @test_mm512_stream_ps
8531   // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal
8532   _mm512_stream_ps(__P, __A);
8533 }
8534 
test_mm512_mask_compress_pd(__m512d __W,__mmask8 __U,__m512d __A)8535 __m512d test_mm512_mask_compress_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8536   // CHECK-LABEL: @test_mm512_mask_compress_pd
8537   // CHECK: @llvm.x86.avx512.mask.compress.pd.512
8538   return _mm512_mask_compress_pd(__W, __U, __A);
8539 }
8540 
test_mm512_maskz_compress_pd(__mmask8 __U,__m512d __A)8541 __m512d test_mm512_maskz_compress_pd(__mmask8 __U, __m512d __A) {
8542   // CHECK-LABEL: @test_mm512_maskz_compress_pd
8543   // CHECK: @llvm.x86.avx512.mask.compress.pd.512
8544   return _mm512_maskz_compress_pd(__U, __A);
8545 }
8546 
test_mm512_mask_compress_epi64(__m512i __W,__mmask8 __U,__m512i __A)8547 __m512i test_mm512_mask_compress_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
8548   // CHECK-LABEL: @test_mm512_mask_compress_epi64
8549   // CHECK: @llvm.x86.avx512.mask.compress.q.512
8550   return _mm512_mask_compress_epi64(__W, __U, __A);
8551 }
8552 
test_mm512_maskz_compress_epi64(__mmask8 __U,__m512i __A)8553 __m512i test_mm512_maskz_compress_epi64(__mmask8 __U, __m512i __A) {
8554   // CHECK-LABEL: @test_mm512_maskz_compress_epi64
8555   // CHECK: @llvm.x86.avx512.mask.compress.q.512
8556   return _mm512_maskz_compress_epi64(__U, __A);
8557 }
8558 
test_mm512_mask_compress_ps(__m512 __W,__mmask16 __U,__m512 __A)8559 __m512 test_mm512_mask_compress_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8560   // CHECK-LABEL: @test_mm512_mask_compress_ps
8561   // CHECK: @llvm.x86.avx512.mask.compress.ps.512
8562   return _mm512_mask_compress_ps(__W, __U, __A);
8563 }
8564 
test_mm512_maskz_compress_ps(__mmask16 __U,__m512 __A)8565 __m512 test_mm512_maskz_compress_ps(__mmask16 __U, __m512 __A) {
8566   // CHECK-LABEL: @test_mm512_maskz_compress_ps
8567   // CHECK: @llvm.x86.avx512.mask.compress.ps.512
8568   return _mm512_maskz_compress_ps(__U, __A);
8569 }
8570 
test_mm512_mask_compress_epi32(__m512i __W,__mmask16 __U,__m512i __A)8571 __m512i test_mm512_mask_compress_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8572   // CHECK-LABEL: @test_mm512_mask_compress_epi32
8573   // CHECK: @llvm.x86.avx512.mask.compress.d.512
8574   return _mm512_mask_compress_epi32(__W, __U, __A);
8575 }
8576 
test_mm512_maskz_compress_epi32(__mmask16 __U,__m512i __A)8577 __m512i test_mm512_maskz_compress_epi32(__mmask16 __U, __m512i __A) {
8578   // CHECK-LABEL: @test_mm512_maskz_compress_epi32
8579   // CHECK: @llvm.x86.avx512.mask.compress.d.512
8580   return _mm512_maskz_compress_epi32(__U, __A);
8581 }
8582 
test_mm_cmp_round_ss_mask(__m128 __X,__m128 __Y)8583 __mmask8 test_mm_cmp_round_ss_mask(__m128 __X, __m128 __Y) {
8584   // CHECK-LABEL: @test_mm_cmp_round_ss_mask
8585   // CHECK: @llvm.x86.avx512.mask.cmp
8586   return _mm_cmp_round_ss_mask(__X, __Y, 5, _MM_FROUND_CUR_DIRECTION);
8587 }
8588 
test_mm_mask_cmp_round_ss_mask(__mmask8 __M,__m128 __X,__m128 __Y)8589 __mmask8 test_mm_mask_cmp_round_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
8590   // CHECK-LABEL: @test_mm_mask_cmp_round_ss_mask
8591   // CHECK: @llvm.x86.avx512.mask.cmp
8592   return _mm_mask_cmp_round_ss_mask(__M, __X, __Y, 5, _MM_FROUND_CUR_DIRECTION);
8593 }
8594 
test_mm_cmp_ss_mask(__m128 __X,__m128 __Y)8595 __mmask8 test_mm_cmp_ss_mask(__m128 __X, __m128 __Y) {
8596   // CHECK-LABEL: @test_mm_cmp_ss_mask
8597   // CHECK: @llvm.x86.avx512.mask.cmp
8598   return _mm_cmp_ss_mask(__X, __Y, 5);
8599 }
8600 
test_mm_mask_cmp_ss_mask(__mmask8 __M,__m128 __X,__m128 __Y)8601 __mmask8 test_mm_mask_cmp_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
8602   // CHECK-LABEL: @test_mm_mask_cmp_ss_mask
8603   // CHECK: @llvm.x86.avx512.mask.cmp
8604   return _mm_mask_cmp_ss_mask(__M, __X, __Y, 5);
8605 }
8606 
test_mm_cmp_round_sd_mask(__m128d __X,__m128d __Y)8607 __mmask8 test_mm_cmp_round_sd_mask(__m128d __X, __m128d __Y) {
8608   // CHECK-LABEL: @test_mm_cmp_round_sd_mask
8609   // CHECK: @llvm.x86.avx512.mask.cmp
8610   return _mm_cmp_round_sd_mask(__X, __Y, 5, _MM_FROUND_CUR_DIRECTION);
8611 }
8612 
test_mm_mask_cmp_round_sd_mask(__mmask8 __M,__m128d __X,__m128d __Y)8613 __mmask8 test_mm_mask_cmp_round_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
8614   // CHECK-LABEL: @test_mm_mask_cmp_round_sd_mask
8615   // CHECK: @llvm.x86.avx512.mask.cmp
8616   return _mm_mask_cmp_round_sd_mask(__M, __X, __Y, 5, _MM_FROUND_CUR_DIRECTION);
8617 }
8618 
test_mm_cmp_sd_mask(__m128d __X,__m128d __Y)8619 __mmask8 test_mm_cmp_sd_mask(__m128d __X, __m128d __Y) {
8620   // CHECK-LABEL: @test_mm_cmp_sd_mask
8621   // CHECK: @llvm.x86.avx512.mask.cmp
8622   return _mm_cmp_sd_mask(__X, __Y, 5);
8623 }
8624 
test_mm_mask_cmp_sd_mask(__mmask8 __M,__m128d __X,__m128d __Y)8625 __mmask8 test_mm_mask_cmp_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
8626   // CHECK-LABEL: @test_mm_mask_cmp_sd_mask
8627   // CHECK: @llvm.x86.avx512.mask.cmp
8628   return _mm_mask_cmp_sd_mask(__M, __X, __Y, 5);
8629 }
8630 
test_mm512_movehdup_ps(__m512 __A)8631 __m512 test_mm512_movehdup_ps(__m512 __A) {
8632   // CHECK-LABEL: @test_mm512_movehdup_ps
8633   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8634   return _mm512_movehdup_ps(__A);
8635 }
8636 
test_mm512_mask_movehdup_ps(__m512 __W,__mmask16 __U,__m512 __A)8637 __m512 test_mm512_mask_movehdup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8638   // CHECK-LABEL: @test_mm512_mask_movehdup_ps
8639   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8640   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8641   return _mm512_mask_movehdup_ps(__W, __U, __A);
8642 }
8643 
test_mm512_maskz_movehdup_ps(__mmask16 __U,__m512 __A)8644 __m512 test_mm512_maskz_movehdup_ps(__mmask16 __U, __m512 __A) {
8645   // CHECK-LABEL: @test_mm512_maskz_movehdup_ps
8646   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8647   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8648   return _mm512_maskz_movehdup_ps(__U, __A);
8649 }
8650 
test_mm512_moveldup_ps(__m512 __A)8651 __m512 test_mm512_moveldup_ps(__m512 __A) {
8652   // CHECK-LABEL: @test_mm512_moveldup_ps
8653   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8654   return _mm512_moveldup_ps(__A);
8655 }
8656 
test_mm512_mask_moveldup_ps(__m512 __W,__mmask16 __U,__m512 __A)8657 __m512 test_mm512_mask_moveldup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8658   // CHECK-LABEL: @test_mm512_mask_moveldup_ps
8659   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8660   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8661   return _mm512_mask_moveldup_ps(__W, __U, __A);
8662 }
8663 
test_mm512_maskz_moveldup_ps(__mmask16 __U,__m512 __A)8664 __m512 test_mm512_maskz_moveldup_ps(__mmask16 __U, __m512 __A) {
8665   // CHECK-LABEL: @test_mm512_maskz_moveldup_ps
8666   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8667   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8668   return _mm512_maskz_moveldup_ps(__U, __A);
8669 }
8670 
test_mm512_shuffle_epi32(__m512i __A)8671 __m512i test_mm512_shuffle_epi32(__m512i __A) {
8672   // CHECK-LABEL: @test_mm512_shuffle_epi32
8673   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8674   return _mm512_shuffle_epi32(__A, 1);
8675 }
8676 
test_mm512_mask_shuffle_epi32(__m512i __W,__mmask16 __U,__m512i __A)8677 __m512i test_mm512_mask_shuffle_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8678   // CHECK-LABEL: @test_mm512_mask_shuffle_epi32
8679   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8680   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8681   return _mm512_mask_shuffle_epi32(__W, __U, __A, 1);
8682 }
8683 
test_mm512_maskz_shuffle_epi32(__mmask16 __U,__m512i __A)8684 __m512i test_mm512_maskz_shuffle_epi32(__mmask16 __U, __m512i __A) {
8685   // CHECK-LABEL: @test_mm512_maskz_shuffle_epi32
8686   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8687   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8688   return _mm512_maskz_shuffle_epi32(__U, __A, 1);
8689 }
8690 
test_mm512_mask_expand_pd(__m512d __W,__mmask8 __U,__m512d __A)8691 __m512d test_mm512_mask_expand_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8692   // CHECK-LABEL: @test_mm512_mask_expand_pd
8693   // CHECK: @llvm.x86.avx512.mask.expand.pd.512
8694   return _mm512_mask_expand_pd(__W, __U, __A);
8695 }
8696 
test_mm512_maskz_expand_pd(__mmask8 __U,__m512d __A)8697 __m512d test_mm512_maskz_expand_pd(__mmask8 __U, __m512d __A) {
8698   // CHECK-LABEL: @test_mm512_maskz_expand_pd
8699   // CHECK: @llvm.x86.avx512.mask.expand.pd.512
8700   return _mm512_maskz_expand_pd(__U, __A);
8701 }
8702 
test_mm512_mask_expand_epi64(__m512i __W,__mmask8 __U,__m512i __A)8703 __m512i test_mm512_mask_expand_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
8704   // CHECK-LABEL: @test_mm512_mask_expand_epi64
8705   // CHECK: @llvm.x86.avx512.mask.expand.q.512
8706   return _mm512_mask_expand_epi64(__W, __U, __A);
8707 }
8708 
test_mm512_maskz_expand_epi64(__mmask8 __U,__m512i __A)8709 __m512i test_mm512_maskz_expand_epi64(__mmask8 __U, __m512i __A) {
8710   // CHECK-LABEL: @test_mm512_maskz_expand_epi64
8711   // CHECK: @llvm.x86.avx512.mask.expand.q.512
8712   return _mm512_maskz_expand_epi64(__U, __A);
8713 }
test_mm512_mask_expandloadu_epi64(__m512i __W,__mmask8 __U,void const * __P)8714 __m512i test_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P) {
8715   // CHECK-LABEL: @test_mm512_mask_expandloadu_epi64
8716   // CHECK: @llvm.masked.expandload.v8i64(i64* %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8717   return _mm512_mask_expandloadu_epi64(__W, __U, __P);
8718 }
8719 
test_mm512_maskz_expandloadu_epi64(__mmask8 __U,void const * __P)8720 __m512i test_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
8721   // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi64
8722   // CHECK: @llvm.masked.expandload.v8i64(i64* %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8723   return _mm512_maskz_expandloadu_epi64(__U, __P);
8724 }
8725 
test_mm512_mask_expandloadu_pd(__m512d __W,__mmask8 __U,void const * __P)8726 __m512d test_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P) {
8727   // CHECK-LABEL: @test_mm512_mask_expandloadu_pd
8728   // CHECK: @llvm.masked.expandload.v8f64(double* %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8729   return _mm512_mask_expandloadu_pd(__W, __U, __P);
8730 }
8731 
test_mm512_maskz_expandloadu_pd(__mmask8 __U,void const * __P)8732 __m512d test_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
8733   // CHECK-LABEL: @test_mm512_maskz_expandloadu_pd
8734   // CHECK: @llvm.masked.expandload.v8f64(double* %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8735   return _mm512_maskz_expandloadu_pd(__U, __P);
8736 }
8737 
test_mm512_mask_expandloadu_epi32(__m512i __W,__mmask16 __U,void const * __P)8738 __m512i test_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P) {
8739   // CHECK-LABEL: @test_mm512_mask_expandloadu_epi32
8740   // CHECK: @llvm.masked.expandload.v16i32(i32* %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8741   return _mm512_mask_expandloadu_epi32(__W, __U, __P);
8742 }
8743 
test_mm512_maskz_expandloadu_epi32(__mmask16 __U,void const * __P)8744 __m512i test_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P) {
8745   // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi32
8746   // CHECK: @llvm.masked.expandload.v16i32(i32* %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8747   return _mm512_maskz_expandloadu_epi32(__U, __P);
8748 }
8749 
test_mm512_mask_expandloadu_ps(__m512 __W,__mmask16 __U,void const * __P)8750 __m512 test_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P) {
8751   // CHECK-LABEL: @test_mm512_mask_expandloadu_ps
8752   // CHECK: @llvm.masked.expandload.v16f32(float* %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8753   return _mm512_mask_expandloadu_ps(__W, __U, __P);
8754 }
8755 
test_mm512_maskz_expandloadu_ps(__mmask16 __U,void const * __P)8756 __m512 test_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P) {
8757   // CHECK-LABEL: @test_mm512_maskz_expandloadu_ps
8758   // CHECK: @llvm.masked.expandload.v16f32(float* %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8759   return _mm512_maskz_expandloadu_ps(__U, __P);
8760 }
8761 
test_mm512_mask_expand_ps(__m512 __W,__mmask16 __U,__m512 __A)8762 __m512 test_mm512_mask_expand_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8763   // CHECK-LABEL: @test_mm512_mask_expand_ps
8764   // CHECK: @llvm.x86.avx512.mask.expand.ps.512
8765   return _mm512_mask_expand_ps(__W, __U, __A);
8766 }
8767 
test_mm512_maskz_expand_ps(__mmask16 __U,__m512 __A)8768 __m512 test_mm512_maskz_expand_ps(__mmask16 __U, __m512 __A) {
8769   // CHECK-LABEL: @test_mm512_maskz_expand_ps
8770   // CHECK: @llvm.x86.avx512.mask.expand.ps.512
8771   return _mm512_maskz_expand_ps(__U, __A);
8772 }
8773 
test_mm512_mask_expand_epi32(__m512i __W,__mmask16 __U,__m512i __A)8774 __m512i test_mm512_mask_expand_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8775   // CHECK-LABEL: @test_mm512_mask_expand_epi32
8776   // CHECK: @llvm.x86.avx512.mask.expand.d.512
8777   return _mm512_mask_expand_epi32(__W, __U, __A);
8778 }
8779 
test_mm512_maskz_expand_epi32(__mmask16 __U,__m512i __A)8780 __m512i test_mm512_maskz_expand_epi32(__mmask16 __U, __m512i __A) {
8781   // CHECK-LABEL: @test_mm512_maskz_expand_epi32
8782   // CHECK: @llvm.x86.avx512.mask.expand.d.512
8783   return _mm512_maskz_expand_epi32(__U, __A);
8784 }
test_mm512_cvt_roundps_pd(__m256 __A)8785 __m512d test_mm512_cvt_roundps_pd(__m256 __A) {
8786   // CHECK-LABEL: @test_mm512_cvt_roundps_pd
8787   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8788   return _mm512_cvt_roundps_pd(__A, _MM_FROUND_CUR_DIRECTION);
8789 }
8790 
test_mm512_mask_cvt_roundps_pd(__m512d __W,__mmask8 __U,__m256 __A)8791 __m512d test_mm512_mask_cvt_roundps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
8792   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_pd
8793   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8794   return _mm512_mask_cvt_roundps_pd(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
8795 }
8796 
test_mm512_maskz_cvt_roundps_pd(__mmask8 __U,__m256 __A)8797 __m512d test_mm512_maskz_cvt_roundps_pd(__mmask8 __U, __m256 __A) {
8798   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_pd
8799   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8800   return _mm512_maskz_cvt_roundps_pd(__U, __A, _MM_FROUND_CUR_DIRECTION);
8801 }
8802 
test_mm512_cvtps_pd(__m256 __A)8803 __m512d test_mm512_cvtps_pd(__m256 __A) {
8804   // CHECK-LABEL: @test_mm512_cvtps_pd
8805   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8806   return _mm512_cvtps_pd(__A);
8807 }
8808 
test_mm512_cvtpslo_pd(__m512 __A)8809 __m512d test_mm512_cvtpslo_pd(__m512 __A) {
8810   // CHECK-LABEL: @test_mm512_cvtpslo_pd
8811   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8812   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8813   return _mm512_cvtpslo_pd(__A);
8814 }
8815 
test_mm512_mask_cvtps_pd(__m512d __W,__mmask8 __U,__m256 __A)8816 __m512d test_mm512_mask_cvtps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
8817   // CHECK-LABEL: @test_mm512_mask_cvtps_pd
8818   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8819   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8820   return _mm512_mask_cvtps_pd(__W, __U, __A);
8821 }
8822 
test_mm512_mask_cvtpslo_pd(__m512d __W,__mmask8 __U,__m512 __A)8823 __m512d test_mm512_mask_cvtpslo_pd(__m512d __W, __mmask8 __U, __m512 __A) {
8824   // CHECK-LABEL: @test_mm512_mask_cvtpslo_pd
8825   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8826   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8827   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8828   return _mm512_mask_cvtpslo_pd(__W, __U, __A);
8829 }
8830 
test_mm512_maskz_cvtps_pd(__mmask8 __U,__m256 __A)8831 __m512d test_mm512_maskz_cvtps_pd(__mmask8 __U, __m256 __A) {
8832   // CHECK-LABEL: @test_mm512_maskz_cvtps_pd
8833   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8834   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8835   return _mm512_maskz_cvtps_pd(__U, __A);
8836 }
test_mm512_mask_mov_pd(__m512d __W,__mmask8 __U,__m512d __A)8837 __m512d test_mm512_mask_mov_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8838   // CHECK-LABEL: @test_mm512_mask_mov_pd
8839   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8840   return _mm512_mask_mov_pd(__W, __U, __A);
8841 }
8842 
test_mm512_maskz_mov_pd(__mmask8 __U,__m512d __A)8843 __m512d test_mm512_maskz_mov_pd(__mmask8 __U, __m512d __A) {
8844   // CHECK-LABEL: @test_mm512_maskz_mov_pd
8845   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8846   return _mm512_maskz_mov_pd(__U, __A);
8847 }
8848 
test_mm512_mask_mov_ps(__m512 __W,__mmask16 __U,__m512 __A)8849 __m512 test_mm512_mask_mov_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8850   // CHECK-LABEL: @test_mm512_mask_mov_ps
8851   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8852   return _mm512_mask_mov_ps(__W, __U, __A);
8853 }
8854 
test_mm512_maskz_mov_ps(__mmask16 __U,__m512 __A)8855 __m512 test_mm512_maskz_mov_ps(__mmask16 __U, __m512 __A) {
8856   // CHECK-LABEL: @test_mm512_maskz_mov_ps
8857   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8858   return _mm512_maskz_mov_ps(__U, __A);
8859 }
8860 
test_mm512_mask_compressstoreu_pd(void * __P,__mmask8 __U,__m512d __A)8861 void test_mm512_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m512d __A) {
8862   // CHECK-LABEL: @test_mm512_mask_compressstoreu_pd
8863   // CHECK: @llvm.masked.compressstore.v8f64(<8 x double> %{{.*}}, double* %{{.*}}, <8 x i1> %{{.*}})
8864   return _mm512_mask_compressstoreu_pd(__P, __U, __A);
8865 }
8866 
test_mm512_mask_compressstoreu_epi64(void * __P,__mmask8 __U,__m512i __A)8867 void test_mm512_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m512i __A) {
8868   // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi64
8869   // CHECK: @llvm.masked.compressstore.v8i64(<8 x i64> %{{.*}}, i64* %{{.*}}, <8 x i1> %{{.*}})
8870   return _mm512_mask_compressstoreu_epi64(__P, __U, __A);
8871 }
8872 
test_mm512_mask_compressstoreu_ps(void * __P,__mmask16 __U,__m512 __A)8873 void test_mm512_mask_compressstoreu_ps(void *__P, __mmask16 __U, __m512 __A) {
8874   // CHECK-LABEL: @test_mm512_mask_compressstoreu_ps
8875   // CHECK: @llvm.masked.compressstore.v16f32(<16 x float> %{{.*}}, float* %{{.*}}, <16 x i1> %{{.*}})
8876   return _mm512_mask_compressstoreu_ps(__P, __U, __A);
8877 }
8878 
test_mm512_mask_compressstoreu_epi32(void * __P,__mmask16 __U,__m512i __A)8879 void test_mm512_mask_compressstoreu_epi32(void *__P, __mmask16 __U, __m512i __A) {
8880   // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi32
8881   // CHECK: @llvm.masked.compressstore.v16i32(<16 x i32> %{{.*}}, i32* %{{.*}}, <16 x i1> %{{.*}})
8882   return _mm512_mask_compressstoreu_epi32(__P, __U, __A);
8883 }
8884 
test_mm512_cvtt_roundpd_epu32(__m512d __A)8885 __m256i test_mm512_cvtt_roundpd_epu32(__m512d __A) {
8886   // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu32
8887   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8888   return _mm512_cvtt_roundpd_epu32(__A, _MM_FROUND_CUR_DIRECTION);
8889 }
8890 
test_mm512_mask_cvtt_roundpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)8891 __m256i test_mm512_mask_cvtt_roundpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
8892   // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu32
8893   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8894   return _mm512_mask_cvtt_roundpd_epu32(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
8895 }
8896 
test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U,__m512d __A)8897 __m256i test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U, __m512d __A) {
8898   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu32
8899   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8900   return _mm512_maskz_cvtt_roundpd_epu32(__U, __A, _MM_FROUND_CUR_DIRECTION);
8901 }
8902 
test_mm512_cvttpd_epu32(__m512d __A)8903 __m256i test_mm512_cvttpd_epu32(__m512d __A) {
8904   // CHECK-LABEL: @test_mm512_cvttpd_epu32
8905   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8906   return _mm512_cvttpd_epu32(__A);
8907 }
8908 
test_mm512_mask_cvttpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)8909 __m256i test_mm512_mask_cvttpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
8910   // CHECK-LABEL: @test_mm512_mask_cvttpd_epu32
8911   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8912   return _mm512_mask_cvttpd_epu32(__W, __U, __A);
8913 }
8914 
test_mm512_maskz_cvttpd_epu32(__mmask8 __U,__m512d __A)8915 __m256i test_mm512_maskz_cvttpd_epu32(__mmask8 __U, __m512d __A) {
8916   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu32
8917   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8918   return _mm512_maskz_cvttpd_epu32(__U, __A);
8919 }
8920 
test_mm512_castpd_ps(__m512d __A)8921 __m512 test_mm512_castpd_ps (__m512d __A)
8922 {
8923   // CHECK-LABEL: @test_mm512_castpd_ps
8924   // CHECK: bitcast <8 x double> %{{.}} to <16 x float>
8925   return _mm512_castpd_ps (__A);
8926 }
8927 
test_mm512_castps_pd(__m512 __A)8928 __m512d test_mm512_castps_pd (__m512 __A)
8929 {
8930   // CHECK-LABEL: @test_mm512_castps_pd
8931   // CHECK: bitcast <16 x float> %{{.}} to <8 x double>
8932   return _mm512_castps_pd (__A);
8933 }
8934 
test_mm512_castpd_si512(__m512d __A)8935 __m512i test_mm512_castpd_si512 (__m512d __A)
8936 {
8937   // CHECK-LABEL: @test_mm512_castpd_si512
8938   // CHECK: bitcast <8 x double> %{{.}} to <8 x i64>
8939   return _mm512_castpd_si512 (__A);
8940 }
8941 
test_mm512_castps128_ps512(__m128 __A)8942 __m512 test_mm512_castps128_ps512(__m128 __A) {
8943   // CHECK-LABEL: @test_mm512_castps128_ps512
8944   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
8945   return _mm512_castps128_ps512(__A);
8946 }
8947 
test_mm512_castpd128_pd512(__m128d __A)8948 __m512d test_mm512_castpd128_pd512(__m128d __A) {
8949   // CHECK-LABEL: @test_mm512_castpd128_pd512
8950   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
8951   return _mm512_castpd128_pd512(__A);
8952 }
8953 
test_mm512_set1_epi8(char d)8954 __m512i test_mm512_set1_epi8(char d)
8955 {
8956   // CHECK-LABEL: @test_mm512_set1_epi8
8957   // CHECK: insertelement <64 x i8> {{.*}}, i32 0
8958   // CHECK: insertelement <64 x i8> {{.*}}, i32 1
8959   // CHECK: insertelement <64 x i8> {{.*}}, i32 2
8960   // CHECK: insertelement <64 x i8> {{.*}}, i32 3
8961   // CHECK: insertelement <64 x i8> {{.*}}, i32 4
8962   // CHECK: insertelement <64 x i8> {{.*}}, i32 5
8963   // CHECK: insertelement <64 x i8> {{.*}}, i32 6
8964   // CHECK: insertelement <64 x i8> {{.*}}, i32 7
8965   // CHECK: insertelement <64 x i8> {{.*}}, i32 63
8966   return _mm512_set1_epi8(d);
8967 }
8968 
test_mm512_set1_epi16(short d)8969 __m512i test_mm512_set1_epi16(short d)
8970 {
8971   // CHECK-LABEL: @test_mm512_set1_epi16
8972   // CHECK: insertelement <32 x i16> {{.*}}, i32 0
8973   // CHECK: insertelement <32 x i16> {{.*}}, i32 1
8974   // CHECK: insertelement <32 x i16> {{.*}}, i32 2
8975   // CHECK: insertelement <32 x i16> {{.*}}, i32 3
8976   // CHECK: insertelement <32 x i16> {{.*}}, i32 4
8977   // CHECK: insertelement <32 x i16> {{.*}}, i32 5
8978   // CHECK: insertelement <32 x i16> {{.*}}, i32 6
8979   // CHECK: insertelement <32 x i16> {{.*}}, i32 7
8980   // CHECK: insertelement <32 x i16> {{.*}}, i32 31
8981   return _mm512_set1_epi16(d);
8982 }
8983 
test_mm512_set4_epi32(int __A,int __B,int __C,int __D)8984 __m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
8985 {
8986   // CHECK-LABEL: @test_mm512_set4_epi32
8987   // CHECK: insertelement <16 x i32> {{.*}}, i32 15
8988   return _mm512_set4_epi32 (__A,__B,__C,__D);
8989 }
8990 
test_mm512_set4_epi64(long long __A,long long __B,long long __C,long long __D)8991 __m512i test_mm512_set4_epi64 (long long __A, long long __B, long long __C, long long __D)
8992 {
8993   // CHECK-LABEL: @test_mm512_set4_epi64
8994   // CHECK: insertelement <8 x i64> {{.*}}, i32 7
8995   return _mm512_set4_epi64 (__A,__B,__C,__D);
8996 }
8997 
test_mm512_set4_pd(double __A,double __B,double __C,double __D)8998 __m512d test_mm512_set4_pd (double __A, double __B, double __C, double __D)
8999 {
9000   // CHECK-LABEL: @test_mm512_set4_pd
9001   // CHECK: insertelement <8 x double> {{.*}}, i32 7
9002   return _mm512_set4_pd (__A,__B,__C,__D);
9003 }
9004 
test_mm512_set4_ps(float __A,float __B,float __C,float __D)9005 __m512 test_mm512_set4_ps (float __A, float __B, float __C, float __D)
9006 {
9007   // CHECK-LABEL: @test_mm512_set4_ps
9008   // CHECK: insertelement <16 x float> {{.*}}, i32 15
9009   return _mm512_set4_ps (__A,__B,__C,__D);
9010 }
9011 
test_mm512_setr4_epi32(int e0,int e1,int e2,int e3)9012 __m512i test_mm512_setr4_epi32(int e0, int e1, int e2, int e3)
9013 {
9014   // CHECK-LABEL: @test_mm512_setr4_epi32
9015   // CHECK: insertelement <16 x i32> {{.*}}, i32 15
9016   return _mm512_setr4_epi32(e0, e1, e2, e3);
9017 }
9018 
test_mm512_setr4_epi64(long long e0,long long e1,long long e2,long long e3)9019  __m512i test_mm512_setr4_epi64(long long e0, long long e1, long long e2, long long e3)
9020 {
9021   // CHECK-LABEL: @test_mm512_setr4_epi64
9022   // CHECK: insertelement <8 x i64> {{.*}}, i32 7
9023   return _mm512_setr4_epi64(e0, e1, e2, e3);
9024 }
9025 
test_mm512_setr4_pd(double e0,double e1,double e2,double e3)9026 __m512d test_mm512_setr4_pd(double e0, double e1, double e2, double e3)
9027 {
9028   // CHECK-LABEL: @test_mm512_setr4_pd
9029   // CHECK: insertelement <8 x double> {{.*}}, i32 7
9030   return _mm512_setr4_pd(e0,e1,e2,e3);
9031 }
9032 
test_mm512_setr4_ps(float e0,float e1,float e2,float e3)9033  __m512 test_mm512_setr4_ps(float e0, float e1, float e2, float e3)
9034 {
9035   // CHECK-LABEL: @test_mm512_setr4_ps
9036   // CHECK: insertelement <16 x float> {{.*}}, i32 15
9037   return _mm512_setr4_ps(e0,e1,e2,e3);
9038 }
9039 
test_mm512_castpd256_pd512(__m256d a)9040 __m512d test_mm512_castpd256_pd512(__m256d a)
9041 {
9042   // CHECK-LABEL: @test_mm512_castpd256_pd512
9043   // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
9044   return _mm512_castpd256_pd512(a);
9045 }
9046 
test_mm512_castpd512_pd256(__m512d __A)9047 __m256d test_mm512_castpd512_pd256 (__m512d __A)
9048 {
9049   // CHECK-LABEL: @test_mm512_castpd512_pd256
9050   // CHECK: shufflevector <8 x double> %{{.}}, <8 x double> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9051   return _mm512_castpd512_pd256 (__A);
9052 }
9053 
test_mm512_castps512_ps256(__m512 __A)9054 __m256 test_mm512_castps512_ps256 (__m512 __A)
9055 {
9056   // CHECK-LABEL: @test_mm512_castps512_ps256
9057   // CHECK: shufflevector <16 x float> %{{.}}, <16 x float> %{{.}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9058   return _mm512_castps512_ps256 (__A);
9059 }
9060 
test_mm512_castps_si512(__m512 __A)9061 __m512i test_mm512_castps_si512 (__m512 __A)
9062 {
9063   // CHECK-LABEL: @test_mm512_castps_si512
9064   // CHECK: bitcast <16 x float> %{{.}} to <8 x i64>
9065   return _mm512_castps_si512 (__A);
9066 }
test_mm512_castsi128_si512(__m128i __A)9067 __m512i test_mm512_castsi128_si512(__m128i __A) {
9068   // CHECK-LABEL: @test_mm512_castsi128_si512
9069   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
9070   return _mm512_castsi128_si512(__A);
9071 }
9072 
test_mm512_castsi256_si512(__m256i __A)9073 __m512i test_mm512_castsi256_si512(__m256i __A) {
9074   // CHECK-LABEL: @test_mm512_castsi256_si512
9075   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
9076   return _mm512_castsi256_si512(__A);
9077 }
9078 
test_mm512_castsi512_ps(__m512i __A)9079 __m512 test_mm512_castsi512_ps (__m512i __A)
9080 {
9081   // CHECK-LABEL: @test_mm512_castsi512_ps
9082   // CHECK: bitcast <8 x i64> %{{.}} to <16 x float>
9083   return _mm512_castsi512_ps (__A);
9084 }
9085 
test_mm512_castsi512_pd(__m512i __A)9086 __m512d test_mm512_castsi512_pd (__m512i __A)
9087 {
9088   // CHECK-LABEL: @test_mm512_castsi512_pd
9089   // CHECK: bitcast <8 x i64> %{{.}} to <8 x double>
9090   return _mm512_castsi512_pd (__A);
9091 }
9092 
test_mm512_castsi512_si128(__m512i __A)9093 __m128i test_mm512_castsi512_si128 (__m512i __A)
9094 {
9095   // CHECK-LABEL: @test_mm512_castsi512_si128
9096   // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <2 x i32> <i32 0, i32 1>
9097   return _mm512_castsi512_si128 (__A);
9098 }
9099 
test_mm512_castsi512_si256(__m512i __A)9100 __m256i test_mm512_castsi512_si256 (__m512i __A)
9101 {
9102   // CHECK-LABEL: @test_mm512_castsi512_si256
9103   // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9104   return _mm512_castsi512_si256 (__A);
9105 }
9106 
test_mm_cvt_roundsd_ss(__m128 __A,__m128d __B)9107 __m128 test_mm_cvt_roundsd_ss(__m128 __A, __m128d __B) {
9108   // CHECK-LABEL: @test_mm_cvt_roundsd_ss
9109   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9110   return _mm_cvt_roundsd_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9111 }
9112 
test_mm_mask_cvt_roundsd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128d __B)9113 __m128 test_mm_mask_cvt_roundsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
9114   // CHECK-LABEL: @test_mm_mask_cvt_roundsd_ss
9115   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9116   return _mm_mask_cvt_roundsd_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
9117 }
9118 
test_mm_maskz_cvt_roundsd_ss(__mmask8 __U,__m128 __A,__m128d __B)9119 __m128 test_mm_maskz_cvt_roundsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
9120   // CHECK-LABEL: @test_mm_maskz_cvt_roundsd_ss
9121   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9122   return _mm_maskz_cvt_roundsd_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
9123 }
9124 
9125 #ifdef __x86_64__
test_mm_cvt_roundi64_sd(__m128d __A,long long __B)9126 __m128d test_mm_cvt_roundi64_sd(__m128d __A, long long __B) {
9127   // CHECK-LABEL: @test_mm_cvt_roundi64_sd
9128   // CHECK: @llvm.x86.avx512.cvtsi2sd64
9129   return _mm_cvt_roundi64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION);
9130 }
9131 
test_mm_cvt_roundsi64_sd(__m128d __A,long long __B)9132 __m128d test_mm_cvt_roundsi64_sd(__m128d __A, long long __B) {
9133   // CHECK-LABEL: @test_mm_cvt_roundsi64_sd
9134   // CHECK: @llvm.x86.avx512.cvtsi2sd64
9135   return _mm_cvt_roundsi64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION);
9136 }
9137 #endif
9138 
test_mm_cvt_roundsi32_ss(__m128 __A,int __B)9139 __m128 test_mm_cvt_roundsi32_ss(__m128 __A, int __B) {
9140   // CHECK-LABEL: @test_mm_cvt_roundsi32_ss
9141   // CHECK: @llvm.x86.avx512.cvtsi2ss32
9142   return _mm_cvt_roundsi32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9143 }
9144 
test_mm_cvt_roundi32_ss(__m128 __A,int __B)9145 __m128 test_mm_cvt_roundi32_ss(__m128 __A, int __B) {
9146   // CHECK-LABEL: @test_mm_cvt_roundi32_ss
9147   // CHECK: @llvm.x86.avx512.cvtsi2ss32
9148   return _mm_cvt_roundi32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9149 }
9150 
9151 #ifdef __x86_64__
test_mm_cvt_roundsi64_ss(__m128 __A,long long __B)9152 __m128 test_mm_cvt_roundsi64_ss(__m128 __A, long long __B) {
9153   // CHECK-LABEL: @test_mm_cvt_roundsi64_ss
9154   // CHECK: @llvm.x86.avx512.cvtsi2ss64
9155   return _mm_cvt_roundsi64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9156 }
9157 
test_mm_cvt_roundi64_ss(__m128 __A,long long __B)9158 __m128 test_mm_cvt_roundi64_ss(__m128 __A, long long __B) {
9159   // CHECK-LABEL: @test_mm_cvt_roundi64_ss
9160   // CHECK: @llvm.x86.avx512.cvtsi2ss64
9161   return _mm_cvt_roundi64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9162 }
9163 #endif
9164 
test_mm_cvt_roundss_sd(__m128d __A,__m128 __B)9165 __m128d test_mm_cvt_roundss_sd(__m128d __A, __m128 __B) {
9166   // CHECK-LABEL: @test_mm_cvt_roundss_sd
9167   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9168   return _mm_cvt_roundss_sd(__A, __B, _MM_FROUND_CUR_DIRECTION);
9169 }
9170 
test_mm_mask_cvt_roundss_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128 __B)9171 __m128d test_mm_mask_cvt_roundss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
9172   // CHECK-LABEL: @test_mm_mask_cvt_roundss_sd
9173   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9174   return _mm_mask_cvt_roundss_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
9175 }
9176 
test_mm_maskz_cvt_roundss_sd(__mmask8 __U,__m128d __A,__m128 __B)9177 __m128d test_mm_maskz_cvt_roundss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
9178   // CHECK-LABEL: @test_mm_maskz_cvt_roundss_sd
9179   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9180   return _mm_maskz_cvt_roundss_sd( __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
9181 }
9182 
test_mm_cvtu32_sd(__m128d __A,unsigned __B)9183 __m128d test_mm_cvtu32_sd(__m128d __A, unsigned __B) {
9184   // CHECK-LABEL: @test_mm_cvtu32_sd
9185   // CHECK: uitofp i32 %{{.*}} to double
9186   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9187   return _mm_cvtu32_sd(__A, __B);
9188 }
9189 
9190 #ifdef __x86_64__
test_mm_cvt_roundu64_sd(__m128d __A,unsigned long long __B)9191 __m128d test_mm_cvt_roundu64_sd(__m128d __A, unsigned long long __B) {
9192   // CHECK-LABEL: @test_mm_cvt_roundu64_sd
9193   // CHECK: @llvm.x86.avx512.cvtusi642sd
9194   return _mm_cvt_roundu64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION);
9195 }
9196 
test_mm_cvtu64_sd(__m128d __A,unsigned long long __B)9197 __m128d test_mm_cvtu64_sd(__m128d __A, unsigned long long __B) {
9198   // CHECK-LABEL: @test_mm_cvtu64_sd
9199   // CHECK: uitofp i64 %{{.*}} to double
9200   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9201   return _mm_cvtu64_sd(__A, __B);
9202 }
9203 #endif
9204 
test_mm_cvt_roundu32_ss(__m128 __A,unsigned __B)9205 __m128 test_mm_cvt_roundu32_ss(__m128 __A, unsigned __B) {
9206   // CHECK-LABEL: @test_mm_cvt_roundu32_ss
9207   // CHECK: @llvm.x86.avx512.cvtusi2ss
9208   return _mm_cvt_roundu32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9209 }
9210 
test_mm_cvtu32_ss(__m128 __A,unsigned __B)9211 __m128 test_mm_cvtu32_ss(__m128 __A, unsigned __B) {
9212   // CHECK-LABEL: @test_mm_cvtu32_ss
9213   // CHECK: uitofp i32 %{{.*}} to float
9214   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9215   return _mm_cvtu32_ss(__A, __B);
9216 }
9217 
9218 #ifdef __x86_64__
test_mm_cvt_roundu64_ss(__m128 __A,unsigned long long __B)9219 __m128 test_mm_cvt_roundu64_ss(__m128 __A, unsigned long long __B) {
9220   // CHECK-LABEL: @test_mm_cvt_roundu64_ss
9221   // CHECK: @llvm.x86.avx512.cvtusi642ss
9222     return _mm_cvt_roundu64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9223 }
9224 
test_mm_cvtu64_ss(__m128 __A,unsigned long long __B)9225 __m128 test_mm_cvtu64_ss(__m128 __A, unsigned long long __B) {
9226   // CHECK-LABEL: @test_mm_cvtu64_ss
9227   // CHECK: uitofp i64 %{{.*}} to float
9228   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9229   return _mm_cvtu64_ss(__A, __B);
9230 }
9231 #endif
9232 
test_mm512_mask_cvttps_epu32(__m512i __W,__mmask16 __U,__m512 __A)9233 __m512i test_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
9234 {
9235   // CHECK-LABEL: @test_mm512_mask_cvttps_epu32
9236   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9237   return _mm512_mask_cvttps_epu32 (__W,__U,__A);
9238 }
9239 
test_mm512_maskz_cvttps_epu32(__mmask16 __U,__m512 __A)9240 __m512i test_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
9241 {
9242   // CHECK-LABEL: @test_mm512_maskz_cvttps_epu32
9243   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9244   return _mm512_maskz_cvttps_epu32 (__U,__A);
9245 }
9246 
test_mm512_cvtepu32_ps(__m512i __A)9247 __m512 test_mm512_cvtepu32_ps (__m512i __A)
9248 {
9249   // CHECK-LABEL: @test_mm512_cvtepu32_ps
9250   // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9251   return _mm512_cvtepu32_ps (__A);
9252 }
9253 
test_mm512_mask_cvtepu32_ps(__m512 __W,__mmask16 __U,__m512i __A)9254 __m512 test_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
9255 {
9256   // CHECK-LABEL: @test_mm512_mask_cvtepu32_ps
9257   // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9258   // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9259   return _mm512_mask_cvtepu32_ps (__W,__U,__A);
9260 }
9261 
test_mm512_maskz_cvtepu32_ps(__mmask16 __U,__m512i __A)9262 __m512 test_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
9263 {
9264   // CHECK-LABEL: @test_mm512_maskz_cvtepu32_ps
9265   // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9266   // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9267   return _mm512_maskz_cvtepu32_ps (__U,__A);
9268 }
9269 
test_mm512_cvtepi32_pd(__m256i __A)9270 __m512d test_mm512_cvtepi32_pd (__m256i __A)
9271 {
9272   // CHECK-LABEL: @test_mm512_cvtepi32_pd
9273   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9274   return _mm512_cvtepi32_pd (__A);
9275 }
9276 
test_mm512_mask_cvtepi32_pd(__m512d __W,__mmask8 __U,__m256i __A)9277 __m512d test_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
9278 {
9279   // CHECK-LABEL: @test_mm512_mask_cvtepi32_pd
9280   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9281   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9282   return _mm512_mask_cvtepi32_pd (__W,__U,__A);
9283 }
9284 
test_mm512_maskz_cvtepi32_pd(__mmask8 __U,__m256i __A)9285 __m512d test_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
9286 {
9287   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_pd
9288   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9289   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9290   return _mm512_maskz_cvtepi32_pd (__U,__A);
9291 }
9292 
test_mm512_cvtepi32lo_pd(__m512i __A)9293 __m512d test_mm512_cvtepi32lo_pd (__m512i __A)
9294 {
9295   // CHECK-LABEL: @test_mm512_cvtepi32lo_pd
9296   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9297   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9298   return _mm512_cvtepi32lo_pd (__A);
9299 }
9300 
test_mm512_mask_cvtepi32lo_pd(__m512d __W,__mmask8 __U,__m512i __A)9301 __m512d test_mm512_mask_cvtepi32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
9302 {
9303   // CHECK-LABEL: @test_mm512_mask_cvtepi32lo_pd
9304   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9305   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9306   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9307   return _mm512_mask_cvtepi32lo_pd (__W, __U, __A);
9308 }
9309 
test_mm512_cvtepi32_ps(__m512i __A)9310 __m512 test_mm512_cvtepi32_ps (__m512i __A)
9311 {
9312   // CHECK-LABEL: @test_mm512_cvtepi32_ps
9313   // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9314   return _mm512_cvtepi32_ps (__A);
9315 }
9316 
test_mm512_mask_cvtepi32_ps(__m512 __W,__mmask16 __U,__m512i __A)9317 __m512 test_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
9318 {
9319   // CHECK-LABEL: @test_mm512_mask_cvtepi32_ps
9320   // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9321   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9322   return _mm512_mask_cvtepi32_ps (__W,__U,__A);
9323 }
9324 
test_mm512_maskz_cvtepi32_ps(__mmask16 __U,__m512i __A)9325 __m512 test_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
9326 {
9327   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_ps
9328   // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9329   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9330   return _mm512_maskz_cvtepi32_ps (__U,__A);
9331 }
9332 
test_mm512_cvtepu32_pd(__m256i __A)9333 __m512d test_mm512_cvtepu32_pd(__m256i __A)
9334 {
9335   // CHECK-LABEL: @test_mm512_cvtepu32_pd
9336   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9337   return _mm512_cvtepu32_pd(__A);
9338 }
9339 
test_mm512_mask_cvtepu32_pd(__m512d __W,__mmask8 __U,__m256i __A)9340 __m512d test_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
9341 {
9342   // CHECK-LABEL: @test_mm512_mask_cvtepu32_pd
9343   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9344   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9345   return _mm512_mask_cvtepu32_pd (__W,__U,__A);
9346 }
9347 
test_mm512_maskz_cvtepu32_pd(__mmask8 __U,__m256i __A)9348 __m512d test_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
9349 {
9350   // CHECK-LABEL: @test_mm512_maskz_cvtepu32_pd
9351   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9352   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9353   return _mm512_maskz_cvtepu32_pd (__U,__A);
9354 }
9355 
test_mm512_cvtepu32lo_pd(__m512i __A)9356 __m512d test_mm512_cvtepu32lo_pd (__m512i __A)
9357 {
9358   // CHECK-LABEL: @test_mm512_cvtepu32lo_pd
9359   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9360   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9361   return _mm512_cvtepu32lo_pd (__A);
9362 }
9363 
test_mm512_mask_cvtepu32lo_pd(__m512d __W,__mmask8 __U,__m512i __A)9364 __m512d test_mm512_mask_cvtepu32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
9365 {
9366   // CHECK-LABEL: @test_mm512_mask_cvtepu32lo_pd
9367   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9368   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9369   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9370   return _mm512_mask_cvtepu32lo_pd (__W, __U, __A);
9371 }
9372 
test_mm512_cvtpd_ps(__m512d __A)9373 __m256 test_mm512_cvtpd_ps (__m512d __A)
9374 {
9375   // CHECK-LABEL: @test_mm512_cvtpd_ps
9376   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9377   return _mm512_cvtpd_ps (__A);
9378 }
9379 
test_mm512_mask_cvtpd_ps(__m256 __W,__mmask8 __U,__m512d __A)9380 __m256 test_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
9381 {
9382   // CHECK-LABEL: @test_mm512_mask_cvtpd_ps
9383   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9384   return _mm512_mask_cvtpd_ps (__W,__U,__A);
9385 }
9386 
test_mm512_cvtpd_pslo(__m512 __A)9387 __m512d test_mm512_cvtpd_pslo(__m512 __A)
9388 {
9389   // CHECK-LABEL: @test_mm512_cvtpd_pslo
9390   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9391   // CHECK: zeroinitializer
9392   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9393   return _mm512_cvtpd_pslo(__A);
9394 }
9395 
test_mm512_mask_cvtpd_pslo(__m512 __W,__mmask8 __U,__m512d __A)9396 __m512d test_mm512_mask_cvtpd_pslo(__m512 __W, __mmask8 __U, __m512d __A) {
9397   // CHECK-LABEL: @test_mm512_mask_cvtpd_pslo
9398   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9399   // CHECK: zeroinitializer
9400   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9401   return _mm512_mask_cvtpd_pslo(__W, __U, __A);
9402 }
9403 
test_mm512_maskz_cvtpd_ps(__mmask8 __U,__m512d __A)9404 __m256 test_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
9405 {
9406   // CHECK-LABEL: @test_mm512_maskz_cvtpd_ps
9407   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9408   return _mm512_maskz_cvtpd_ps (__U,__A);
9409 }
9410 
test_mm512_mask_cvtph_ps(__m512 __W,__mmask16 __U,__m256i __A)9411 __m512 test_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
9412 {
9413   // CHECK-LABEL: @test_mm512_mask_cvtph_ps
9414   // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
9415   return _mm512_mask_cvtph_ps (__W,__U,__A);
9416 }
9417 
test_mm512_maskz_cvtph_ps(__mmask16 __U,__m256i __A)9418 __m512 test_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
9419 {
9420   // CHECK-LABEL: @test_mm512_maskz_cvtph_ps
9421   // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
9422   return _mm512_maskz_cvtph_ps (__U,__A);
9423 }
9424 
test_mm512_mask_cvttpd_epi32(__m256i __W,__mmask8 __U,__m512d __A)9425 __m256i test_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
9426 {
9427   // CHECK-LABEL: @test_mm512_mask_cvttpd_epi32
9428   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9429   return _mm512_mask_cvttpd_epi32 (__W,__U,__A);
9430 }
9431 
test_mm512_maskz_cvttpd_epi32(__mmask8 __U,__m512d __A)9432 __m256i test_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
9433 {
9434   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi32
9435   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9436   return _mm512_maskz_cvttpd_epi32 (__U,__A);
9437 }
9438 
test_mm512_mask_cvttps_epi32(__m512i __W,__mmask16 __U,__m512 __A)9439 __m512i test_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
9440 {
9441   // CHECK-LABEL: @test_mm512_mask_cvttps_epi32
9442   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9443   return _mm512_mask_cvttps_epi32 (__W,__U,__A);
9444 }
9445 
test_mm512_maskz_cvttps_epi32(__mmask16 __U,__m512 __A)9446 __m512i test_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
9447 {
9448   // CHECK-LABEL: @test_mm512_maskz_cvttps_epi32
9449   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9450   return _mm512_maskz_cvttps_epi32 (__U,__A);
9451 }
9452 
test_mm512_cvtps_epi32(__m512 __A)9453 __m512i test_mm512_cvtps_epi32 (__m512 __A)
9454 {
9455   // CHECK-LABEL: @test_mm512_cvtps_epi32
9456   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9457   return _mm512_cvtps_epi32 (__A);
9458 }
9459 
test_mm512_mask_cvtps_epi32(__m512i __W,__mmask16 __U,__m512 __A)9460 __m512i test_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
9461 {
9462   // CHECK-LABEL: @test_mm512_mask_cvtps_epi32
9463   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9464   return _mm512_mask_cvtps_epi32 (__W,__U,__A);
9465 }
9466 
test_mm512_maskz_cvtps_epi32(__mmask16 __U,__m512 __A)9467 __m512i test_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
9468 {
9469   // CHECK-LABEL: @test_mm512_maskz_cvtps_epi32
9470   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9471   return _mm512_maskz_cvtps_epi32 (__U,__A);
9472 }
9473 
test_mm512_cvtpd_epi32(__m512d __A)9474 __m256i test_mm512_cvtpd_epi32 (__m512d __A)
9475 {
9476   // CHECK-LABEL: @test_mm512_cvtpd_epi32
9477   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9478   return _mm512_cvtpd_epi32 (__A);
9479 }
9480 
test_mm512_mask_cvtpd_epi32(__m256i __W,__mmask8 __U,__m512d __A)9481 __m256i test_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
9482 {
9483   // CHECK-LABEL: @test_mm512_mask_cvtpd_epi32
9484   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9485   return _mm512_mask_cvtpd_epi32 (__W,__U,__A);
9486 }
9487 
test_mm512_maskz_cvtpd_epi32(__mmask8 __U,__m512d __A)9488 __m256i test_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
9489 {
9490   // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi32
9491   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9492   return _mm512_maskz_cvtpd_epi32 (__U,__A);
9493 }
9494 
test_mm512_cvtpd_epu32(__m512d __A)9495 __m256i test_mm512_cvtpd_epu32 (__m512d __A)
9496 {
9497   // CHECK-LABEL: @test_mm512_cvtpd_epu32
9498   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9499   return _mm512_cvtpd_epu32 (__A);
9500 }
9501 
test_mm512_mask_cvtpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)9502 __m256i test_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
9503 {
9504   // CHECK-LABEL: @test_mm512_mask_cvtpd_epu32
9505   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9506   return _mm512_mask_cvtpd_epu32 (__W,__U,__A);
9507 }
9508 
test_mm512_maskz_cvtpd_epu32(__mmask8 __U,__m512d __A)9509 __m256i test_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
9510 {
9511   // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu32
9512   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9513   return _mm512_maskz_cvtpd_epu32 (__U,__A);
9514 }
9515 
test_mm512_mask_cvtps_ph(__m256i src,__mmask16 k,__m512 a)9516 __m256i test_mm512_mask_cvtps_ph(__m256i src, __mmask16 k, __m512 a)
9517 {
9518   // CHECK-LABEL: @test_mm512_mask_cvtps_ph
9519   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9520   return _mm512_mask_cvtps_ph(src, k, a,_MM_FROUND_CUR_DIRECTION);
9521 }
9522 
test_mm512_maskz_cvtps_ph(__mmask16 k,__m512 a)9523 __m256i test_mm512_maskz_cvtps_ph (__mmask16 k, __m512 a)
9524 {
9525   // CHECK-LABEL: @test_mm512_maskz_cvtps_ph
9526   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9527   return _mm512_maskz_cvtps_ph( k, a,_MM_FROUND_CUR_DIRECTION);
9528 }
9529 
test_mm512_cvtps_epu32(__m512 __A)9530 __m512i test_mm512_cvtps_epu32 ( __m512 __A)
9531 {
9532   // CHECK-LABEL: @test_mm512_cvtps_epu32
9533   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9534   return _mm512_cvtps_epu32(__A);
9535 }
9536 
test_mm512_mask_cvtps_epu32(__m512i __W,__mmask16 __U,__m512 __A)9537 __m512i test_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
9538 {
9539   // CHECK-LABEL: @test_mm512_mask_cvtps_epu32
9540   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9541   return _mm512_mask_cvtps_epu32( __W, __U, __A);
9542 }
test_mm512_maskz_cvtps_epu32(__mmask16 __U,__m512 __A)9543 __m512i test_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A)
9544 {
9545   // CHECK-LABEL: @test_mm512_maskz_cvtps_epu32
9546   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9547   return _mm512_maskz_cvtps_epu32( __U, __A);
9548 }
9549 
test_mm512_cvtsd_f64(__m512d A)9550 double test_mm512_cvtsd_f64(__m512d A) {
9551   // CHECK-LABEL: test_mm512_cvtsd_f64
9552   // CHECK: extractelement <8 x double> %{{.*}}, i32 0
9553   return _mm512_cvtsd_f64(A);
9554 }
9555 
test_mm512_cvtss_f32(__m512 A)9556 float test_mm512_cvtss_f32(__m512 A) {
9557   // CHECK-LABEL: test_mm512_cvtss_f32
9558   // CHECK: extractelement <16 x float> %{{.*}}, i32 0
9559   return _mm512_cvtss_f32(A);
9560 }
9561 
test_mm512_mask_max_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9562 __m512d test_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
9563 {
9564   // CHECK-LABEL: @test_mm512_mask_max_pd
9565   // CHECK: @llvm.x86.avx512.max.pd.512
9566   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9567   return _mm512_mask_max_pd (__W,__U,__A,__B);
9568 }
9569 
test_mm512_maskz_max_pd(__mmask8 __U,__m512d __A,__m512d __B)9570 __m512d test_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
9571 {
9572   // CHECK-LABEL: @test_mm512_maskz_max_pd
9573   // CHECK: @llvm.x86.avx512.max.pd.512
9574   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9575   return _mm512_maskz_max_pd (__U,__A,__B);
9576 }
9577 
test_mm512_mask_max_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9578 __m512 test_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
9579 {
9580   // CHECK-LABEL: @test_mm512_mask_max_ps
9581   // CHECK: @llvm.x86.avx512.max.ps.512
9582   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9583   return _mm512_mask_max_ps (__W,__U,__A,__B);
9584 }
9585 
test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9586 __m512d test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
9587 {
9588   // CHECK-LABEL: @test_mm512_mask_max_round_pd
9589   // CHECK: @llvm.x86.avx512.max.pd.512
9590   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9591   return _mm512_mask_max_round_pd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9592 }
9593 
test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B)9594 __m512d test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
9595 {
9596   // CHECK-LABEL: @test_mm512_maskz_max_round_pd
9597   // CHECK: @llvm.x86.avx512.max.pd.512
9598   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9599   return _mm512_maskz_max_round_pd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9600 }
9601 
test_mm512_max_round_pd(__m512d __A,__m512d __B)9602 __m512d test_mm512_max_round_pd(__m512d __A,__m512d __B)
9603 {
9604   // CHECK-LABEL: @test_mm512_max_round_pd
9605   // CHECK: @llvm.x86.avx512.max.pd.512
9606   return _mm512_max_round_pd(__A,__B,_MM_FROUND_CUR_DIRECTION);
9607 }
9608 
test_mm512_maskz_max_ps(__mmask16 __U,__m512 __A,__m512 __B)9609 __m512 test_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
9610 {
9611   // CHECK-LABEL: @test_mm512_maskz_max_ps
9612   // CHECK: @llvm.x86.avx512.max.ps.512
9613   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9614   return _mm512_maskz_max_ps (__U,__A,__B);
9615 }
9616 
test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9617 __m512 test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
9618 {
9619   // CHECK-LABEL: @test_mm512_mask_max_round_ps
9620   // CHECK: @llvm.x86.avx512.max.ps.512
9621   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9622   return _mm512_mask_max_round_ps(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9623 }
9624 
test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B)9625 __m512 test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
9626 {
9627   // CHECK-LABEL: @test_mm512_maskz_max_round_ps
9628   // CHECK: @llvm.x86.avx512.max.ps.512
9629   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9630   return _mm512_maskz_max_round_ps(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9631 }
9632 
test_mm512_max_round_ps(__m512 __A,__m512 __B)9633 __m512 test_mm512_max_round_ps(__m512 __A,__m512 __B)
9634 {
9635   // CHECK-LABEL: @test_mm512_max_round_ps
9636   // CHECK: @llvm.x86.avx512.max.ps.512
9637   return _mm512_max_round_ps(__A,__B,_MM_FROUND_CUR_DIRECTION);
9638 }
9639 
test_mm512_mask_min_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9640 __m512d test_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
9641 {
9642   // CHECK-LABEL: @test_mm512_mask_min_pd
9643   // CHECK: @llvm.x86.avx512.min.pd.512
9644   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9645   return _mm512_mask_min_pd (__W,__U,__A,__B);
9646 }
9647 
test_mm512_maskz_min_pd(__mmask8 __U,__m512d __A,__m512d __B)9648 __m512d test_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
9649 {
9650   // CHECK-LABEL: @test_mm512_maskz_min_pd
9651   // CHECK: @llvm.x86.avx512.min.pd.512
9652   return _mm512_maskz_min_pd (__U,__A,__B);
9653 }
9654 
test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9655 __m512d test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
9656 {
9657   // CHECK-LABEL: @test_mm512_mask_min_round_pd
9658   // CHECK: @llvm.x86.avx512.min.pd.512
9659   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9660   return _mm512_mask_min_round_pd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9661 }
9662 
test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B)9663 __m512d test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
9664 {
9665   // CHECK-LABEL: @test_mm512_maskz_min_round_pd
9666   // CHECK: @llvm.x86.avx512.min.pd.512
9667   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9668   return _mm512_maskz_min_round_pd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9669 }
9670 
test_mm512_min_round_pd(__m512d __A,__m512d __B)9671 __m512d test_mm512_min_round_pd( __m512d __A,__m512d __B)
9672 {
9673   // CHECK-LABEL: @test_mm512_min_round_pd
9674   // CHECK: @llvm.x86.avx512.min.pd.512
9675   return _mm512_min_round_pd(__A,__B,_MM_FROUND_CUR_DIRECTION);
9676 }
9677 
test_mm512_mask_min_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9678 __m512 test_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
9679 {
9680   // CHECK-LABEL: @test_mm512_mask_min_ps
9681   // CHECK: @llvm.x86.avx512.min.ps.512
9682   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9683   return _mm512_mask_min_ps (__W,__U,__A,__B);
9684 }
9685 
test_mm512_maskz_min_ps(__mmask16 __U,__m512 __A,__m512 __B)9686 __m512 test_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
9687 {
9688   // CHECK-LABEL: @test_mm512_maskz_min_ps
9689   // CHECK: @llvm.x86.avx512.min.ps.512
9690   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9691   return _mm512_maskz_min_ps (__U,__A,__B);
9692 }
9693 
test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9694 __m512 test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
9695 {
9696   // CHECK-LABEL: @test_mm512_mask_min_round_ps
9697   // CHECK: @llvm.x86.avx512.min.ps.512
9698   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9699   return _mm512_mask_min_round_ps(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9700 }
9701 
test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B)9702 __m512 test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
9703 {
9704   // CHECK-LABEL: @test_mm512_maskz_min_round_ps
9705   // CHECK: @llvm.x86.avx512.min.ps.512
9706   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9707   return _mm512_maskz_min_round_ps(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9708 }
9709 
test_mm512_min_round_ps(__m512 __A,__m512 __B)9710 __m512 test_mm512_min_round_ps(__m512 __A,__m512 __B)
9711 {
9712   // CHECK-LABEL: @test_mm512_min_round_ps
9713   // CHECK: @llvm.x86.avx512.min.ps.512
9714   return _mm512_min_round_ps(__A,__B,_MM_FROUND_CUR_DIRECTION);
9715 }
9716 
test_mm512_mask_floor_ps(__m512 __W,__mmask16 __U,__m512 __A)9717 __m512 test_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
9718 {
9719   // CHECK-LABEL: @test_mm512_mask_floor_ps
9720   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9721   return _mm512_mask_floor_ps (__W,__U,__A);
9722 }
9723 
test_mm512_mask_floor_pd(__m512d __W,__mmask8 __U,__m512d __A)9724 __m512d test_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
9725 {
9726   // CHECK-LABEL: @test_mm512_mask_floor_pd
9727   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9728   return _mm512_mask_floor_pd (__W,__U,__A);
9729 }
9730 
test_mm512_mask_ceil_ps(__m512 __W,__mmask16 __U,__m512 __A)9731 __m512 test_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
9732 {
9733   // CHECK-LABEL: @test_mm512_mask_ceil_ps
9734   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9735   return _mm512_mask_ceil_ps (__W,__U,__A);
9736 }
9737 
test_mm512_mask_ceil_pd(__m512d __W,__mmask8 __U,__m512d __A)9738 __m512d test_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
9739 {
9740   // CHECK-LABEL: @test_mm512_mask_ceil_pd
9741   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9742   return _mm512_mask_ceil_pd (__W,__U,__A);
9743 }
9744 
test_mm512_mask_roundscale_ps(__m512 __W,__mmask16 __U,__m512 __A)9745 __m512 test_mm512_mask_roundscale_ps(__m512 __W, __mmask16 __U, __m512 __A)
9746 {
9747   // CHECK-LABEL: @test_mm512_mask_roundscale_ps
9748   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9749   return _mm512_mask_roundscale_ps(__W,__U,__A, 1);
9750 }
9751 
test_mm512_maskz_roundscale_ps(__mmask16 __U,__m512 __A)9752 __m512 test_mm512_maskz_roundscale_ps(__mmask16 __U, __m512 __A)
9753 {
9754   // CHECK-LABEL: @test_mm512_maskz_roundscale_ps
9755   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9756   return _mm512_maskz_roundscale_ps(__U,__A, 1);
9757 }
9758 
test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C)9759 __m512 test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C)
9760 {
9761   // CHECK-LABEL: @test_mm512_mask_roundscale_round_ps
9762   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9763   return _mm512_mask_roundscale_round_ps(__A,__U,__C,3,_MM_FROUND_CUR_DIRECTION);
9764 }
9765 
test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U)9766 __m512 test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U)
9767 {
9768   // CHECK-LABEL: @test_mm512_maskz_roundscale_round_ps
9769   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9770   return _mm512_maskz_roundscale_round_ps(__U,__A,3,_MM_FROUND_CUR_DIRECTION);
9771 }
9772 
test_mm512_roundscale_round_ps(__m512 __A)9773 __m512 test_mm512_roundscale_round_ps(__m512 __A)
9774 {
9775   // CHECK-LABEL: @test_mm512_roundscale_round_ps
9776   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9777   return _mm512_roundscale_round_ps(__A,3,_MM_FROUND_CUR_DIRECTION);
9778 }
9779 
test_mm512_mask_roundscale_pd(__m512d __W,__mmask8 __U,__m512d __A)9780 __m512d test_mm512_mask_roundscale_pd(__m512d __W, __mmask8 __U, __m512d __A)
9781 {
9782   // CHECK-LABEL: @test_mm512_mask_roundscale_pd
9783   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9784   return _mm512_mask_roundscale_pd(__W,__U,__A, 1);
9785 }
9786 
test_mm512_maskz_roundscale_pd(__mmask8 __U,__m512d __A)9787 __m512d test_mm512_maskz_roundscale_pd(__mmask8 __U, __m512d __A)
9788 {
9789   // CHECK-LABEL: @test_mm512_maskz_roundscale_pd
9790   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9791   return _mm512_maskz_roundscale_pd(__U,__A, 1);
9792 }
9793 
test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C)9794 __m512d test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C)
9795 {
9796   // CHECK-LABEL: @test_mm512_mask_roundscale_round_pd
9797   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9798   return _mm512_mask_roundscale_round_pd(__A,__U,__C,3,_MM_FROUND_CUR_DIRECTION);
9799 }
9800 
test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U)9801 __m512d test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U)
9802 {
9803   // CHECK-LABEL: @test_mm512_maskz_roundscale_round_pd
9804   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9805   return _mm512_maskz_roundscale_round_pd(__U,__A,3,_MM_FROUND_CUR_DIRECTION);
9806 }
9807 
test_mm512_roundscale_round_pd(__m512d __A)9808 __m512d test_mm512_roundscale_round_pd(__m512d __A)
9809 {
9810   // CHECK-LABEL: @test_mm512_roundscale_round_pd
9811   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9812   return _mm512_roundscale_round_pd(__A,3,_MM_FROUND_CUR_DIRECTION);
9813 }
9814 
test_mm512_max_epi32(__m512i __A,__m512i __B)9815 __m512i test_mm512_max_epi32 (__m512i __A, __m512i __B)
9816 {
9817   // CHECK-LABEL: @test_mm512_max_epi32
9818   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9819   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9820   return _mm512_max_epi32 (__A,__B);
9821 }
9822 
test_mm512_mask_max_epi32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9823 __m512i test_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9824 {
9825   // CHECK-LABEL: @test_mm512_mask_max_epi32
9826   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9827   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9828   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9829   return _mm512_mask_max_epi32 (__W,__M,__A,__B);
9830 }
9831 
test_mm512_maskz_max_epi32(__mmask16 __M,__m512i __A,__m512i __B)9832 __m512i test_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
9833 {
9834   // CHECK-LABEL: @test_mm512_maskz_max_epi32
9835   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9836   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9837   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9838   return _mm512_maskz_max_epi32 (__M,__A,__B);
9839 }
9840 
test_mm512_max_epi64(__m512i __A,__m512i __B)9841 __m512i test_mm512_max_epi64 (__m512i __A, __m512i __B)
9842 {
9843   // CHECK-LABEL: @test_mm512_max_epi64
9844   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9845   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9846   return _mm512_max_epi64 (__A,__B);
9847 }
9848 
test_mm512_mask_max_epi64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9849 __m512i test_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9850 {
9851   // CHECK-LABEL: @test_mm512_mask_max_epi64
9852   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9853   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9854   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9855   return _mm512_mask_max_epi64 (__W,__M,__A,__B);
9856 }
9857 
test_mm512_maskz_max_epi64(__mmask8 __M,__m512i __A,__m512i __B)9858 __m512i test_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
9859 {
9860   // CHECK-LABEL: @test_mm512_maskz_max_epi64
9861   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9862   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9863   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9864   return _mm512_maskz_max_epi64 (__M,__A,__B);
9865 }
9866 
test_mm512_max_epu64(__m512i __A,__m512i __B)9867 __m512i test_mm512_max_epu64 (__m512i __A, __m512i __B)
9868 {
9869   // CHECK-LABEL: @test_mm512_max_epu64
9870   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9871   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9872   return _mm512_max_epu64 (__A,__B);
9873 }
9874 
test_mm512_mask_max_epu64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9875 __m512i test_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9876 {
9877   // CHECK-LABEL: @test_mm512_mask_max_epu64
9878   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9879   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9880   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9881   return _mm512_mask_max_epu64 (__W,__M,__A,__B);
9882 }
9883 
test_mm512_maskz_max_epu64(__mmask8 __M,__m512i __A,__m512i __B)9884 __m512i test_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
9885 {
9886   // CHECK-LABEL: @test_mm512_maskz_max_epu64
9887   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9888   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9889   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9890   return _mm512_maskz_max_epu64 (__M,__A,__B);
9891 }
9892 
test_mm512_max_epu32(__m512i __A,__m512i __B)9893 __m512i test_mm512_max_epu32 (__m512i __A, __m512i __B)
9894 {
9895   // CHECK-LABEL: @test_mm512_max_epu32
9896   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9897   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9898   return _mm512_max_epu32 (__A,__B);
9899 }
9900 
test_mm512_mask_max_epu32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9901 __m512i test_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9902 {
9903   // CHECK-LABEL: @test_mm512_mask_max_epu32
9904   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9905   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9906   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9907   return _mm512_mask_max_epu32 (__W,__M,__A,__B);
9908 }
9909 
test_mm512_maskz_max_epu32(__mmask16 __M,__m512i __A,__m512i __B)9910 __m512i test_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
9911 {
9912   // CHECK-LABEL: @test_mm512_maskz_max_epu32
9913   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9914   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9915   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9916   return _mm512_maskz_max_epu32 (__M,__A,__B);
9917 }
9918 
test_mm512_min_epi32(__m512i __A,__m512i __B)9919 __m512i test_mm512_min_epi32 (__m512i __A, __m512i __B)
9920 {
9921   // CHECK-LABEL: @test_mm512_min_epi32
9922   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9923   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9924   return _mm512_min_epi32 (__A,__B);
9925 }
9926 
test_mm512_mask_min_epi32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9927 __m512i test_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9928 {
9929   // CHECK-LABEL: @test_mm512_mask_min_epi32
9930   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9931   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9932   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9933   return _mm512_mask_min_epi32 (__W,__M,__A,__B);
9934 }
9935 
test_mm512_maskz_min_epi32(__mmask16 __M,__m512i __A,__m512i __B)9936 __m512i test_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
9937 {
9938   // CHECK-LABEL: @test_mm512_maskz_min_epi32
9939   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9940   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9941   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9942   return _mm512_maskz_min_epi32 (__M,__A,__B);
9943 }
9944 
test_mm512_min_epu32(__m512i __A,__m512i __B)9945 __m512i test_mm512_min_epu32 (__m512i __A, __m512i __B)
9946 {
9947   // CHECK-LABEL: @test_mm512_min_epu32
9948   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
9949   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9950   return _mm512_min_epu32 (__A,__B);
9951 }
9952 
test_mm512_mask_min_epu32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9953 __m512i test_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9954 {
9955   // CHECK-LABEL: @test_mm512_mask_min_epu32
9956   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
9957   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9958   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9959   return _mm512_mask_min_epu32 (__W,__M,__A,__B);
9960 }
9961 
test_mm512_maskz_min_epu32(__mmask16 __M,__m512i __A,__m512i __B)9962 __m512i test_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
9963 {
9964   // CHECK-LABEL: @test_mm512_maskz_min_epu32
9965   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
9966   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9967   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9968   return _mm512_maskz_min_epu32 (__M,__A,__B);
9969 }
9970 
test_mm512_min_epi64(__m512i __A,__m512i __B)9971 __m512i test_mm512_min_epi64 (__m512i __A, __m512i __B)
9972 {
9973   // CHECK-LABEL: @test_mm512_min_epi64
9974   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
9975   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9976   return _mm512_min_epi64 (__A,__B);
9977 }
9978 
test_mm512_mask_min_epi64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9979 __m512i test_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9980 {
9981   // CHECK-LABEL: @test_mm512_mask_min_epi64
9982   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
9983   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9984   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9985   return _mm512_mask_min_epi64 (__W,__M,__A,__B);
9986 }
9987 
test_mm512_maskz_min_epi64(__mmask8 __M,__m512i __A,__m512i __B)9988 __m512i test_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
9989 {
9990   // CHECK-LABEL: @test_mm512_maskz_min_epi64
9991   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
9992   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9993   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9994   return _mm512_maskz_min_epi64 (__M,__A,__B);
9995 }
9996 
test_mm512_min_epu64(__m512i __A,__m512i __B)9997 __m512i test_mm512_min_epu64 (__m512i __A, __m512i __B)
9998 {
9999   // CHECK-LABEL: @test_mm512_min_epu64
10000   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10001   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10002   return _mm512_min_epu64 (__A,__B);
10003 }
10004 
test_mm512_mask_min_epu64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)10005 __m512i test_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10006 {
10007   // CHECK-LABEL: @test_mm512_mask_min_epu64
10008   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10009   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10010   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10011   return _mm512_mask_min_epu64 (__W,__M,__A,__B);
10012 }
10013 
test_mm512_maskz_min_epu64(__mmask8 __M,__m512i __A,__m512i __B)10014 __m512i test_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
10015 {
10016   // CHECK-LABEL: @test_mm512_maskz_min_epu64
10017   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10018   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10019   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10020   return _mm512_maskz_min_epu64 (__M,__A,__B);
10021 }
10022 
test_mm512_mask_set1_epi32(__m512i __O,__mmask16 __M,int __A)10023 __m512i test_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
10024 {
10025   // CHECK-LABEL: @test_mm512_mask_set1_epi32
10026   // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10027   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10028   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10029   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10030   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10031   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10032   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10033   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10034   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10035   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10036   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10037   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10038   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10039   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10040   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10041   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10042   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10043   return _mm512_mask_set1_epi32 ( __O, __M, __A);
10044 }
10045 
test_mm512_maskz_set1_epi32(__mmask16 __M,int __A)10046 __m512i test_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
10047 {
10048   // CHECK-LABEL: @test_mm512_maskz_set1_epi32
10049   // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10050   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10051   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10052   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10053   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10054   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10055   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10056   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10057   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10058   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10059   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10060   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10061   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10062   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10063   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10064   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10065   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10066     return _mm512_maskz_set1_epi32(__M, __A);
10067 }
10068 
10069 
test_mm512_set_epi8(char e63,char e62,char e61,char e60,char e59,char e58,char e57,char e56,char e55,char e54,char e53,char e52,char e51,char e50,char e49,char e48,char e47,char e46,char e45,char e44,char e43,char e42,char e41,char e40,char e39,char e38,char e37,char e36,char e35,char e34,char e33,char e32,char e31,char e30,char e29,char e28,char e27,char e26,char e25,char e24,char e23,char e22,char e21,char e20,char e19,char e18,char e17,char e16,char e15,char e14,char e13,char e12,char e11,char e10,char e9,char e8,char e7,char e6,char e5,char e4,char e3,char e2,char e1,char e0)10070 __m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59,
10071     char e58, char e57, char e56, char e55, char e54, char e53, char e52,
10072     char e51, char e50, char e49, char e48, char e47, char e46, char e45,
10073     char e44, char e43, char e42, char e41, char e40, char e39, char e38,
10074     char e37, char e36, char e35, char e34, char e33, char e32, char e31,
10075     char e30, char e29, char e28, char e27, char e26, char e25, char e24,
10076     char e23, char e22, char e21, char e20, char e19, char e18, char e17,
10077     char e16, char e15, char e14, char e13, char e12, char e11, char e10,
10078     char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2,
10079     char e1, char e0) {
10080 
10081   //CHECK-LABEL: @test_mm512_set_epi8
10082   //CHECK: load i8, i8* %e63.addr, align 1
10083    //CHECK: load i8, i8* %e62.addr, align 1
10084    //CHECK: load i8, i8* %e61.addr, align 1
10085    //CHECK: load i8, i8* %e60.addr, align 1
10086    //CHECK: load i8, i8* %e59.addr, align 1
10087    //CHECK: load i8, i8* %e58.addr, align 1
10088    //CHECK: load i8, i8* %e57.addr, align 1
10089    //CHECK: load i8, i8* %e56.addr, align 1
10090    //CHECK: load i8, i8* %e55.addr, align 1
10091    //CHECK: load i8, i8* %e54.addr, align 1
10092    //CHECK: load i8, i8* %e53.addr, align 1
10093    //CHECK: load i8, i8* %e52.addr, align 1
10094    //CHECK: load i8, i8* %e51.addr, align 1
10095    //CHECK: load i8, i8* %e50.addr, align 1
10096    //CHECK: load i8, i8* %e49.addr, align 1
10097    //CHECK: load i8, i8* %e48.addr, align 1
10098    //CHECK: load i8, i8* %e47.addr, align 1
10099    //CHECK: load i8, i8* %e46.addr, align 1
10100    //CHECK: load i8, i8* %e45.addr, align 1
10101    //CHECK: load i8, i8* %e44.addr, align 1
10102    //CHECK: load i8, i8* %e43.addr, align 1
10103    //CHECK: load i8, i8* %e42.addr, align 1
10104    //CHECK: load i8, i8* %e41.addr, align 1
10105    //CHECK: load i8, i8* %e40.addr, align 1
10106    //CHECK: load i8, i8* %e39.addr, align 1
10107    //CHECK: load i8, i8* %e38.addr, align 1
10108    //CHECK: load i8, i8* %e37.addr, align 1
10109    //CHECK: load i8, i8* %e36.addr, align 1
10110    //CHECK: load i8, i8* %e35.addr, align 1
10111    //CHECK: load i8, i8* %e34.addr, align 1
10112    //CHECK: load i8, i8* %e33.addr, align 1
10113    //CHECK: load i8, i8* %e32.addr, align 1
10114    //CHECK: load i8, i8* %e31.addr, align 1
10115    //CHECK: load i8, i8* %e30.addr, align 1
10116    //CHECK: load i8, i8* %e29.addr, align 1
10117    //CHECK: load i8, i8* %e28.addr, align 1
10118    //CHECK: load i8, i8* %e27.addr, align 1
10119    //CHECK: load i8, i8* %e26.addr, align 1
10120    //CHECK: load i8, i8* %e25.addr, align 1
10121    //CHECK: load i8, i8* %e24.addr, align 1
10122    //CHECK: load i8, i8* %e23.addr, align 1
10123    //CHECK: load i8, i8* %e22.addr, align 1
10124    //CHECK: load i8, i8* %e21.addr, align 1
10125    //CHECK: load i8, i8* %e20.addr, align 1
10126    //CHECK: load i8, i8* %e19.addr, align 1
10127    //CHECK: load i8, i8* %e18.addr, align 1
10128    //CHECK: load i8, i8* %e17.addr, align 1
10129    //CHECK: load i8, i8* %e16.addr, align 1
10130    //CHECK: load i8, i8* %e15.addr, align 1
10131    //CHECK: load i8, i8* %e14.addr, align 1
10132    //CHECK: load i8, i8* %e13.addr, align 1
10133    //CHECK: load i8, i8* %e12.addr, align 1
10134    //CHECK: load i8, i8* %e11.addr, align 1
10135    //CHECK: load i8, i8* %e10.addr, align 1
10136    //CHECK: load i8, i8* %e9.addr, align 1
10137    //CHECK: load i8, i8* %e8.addr, align 1
10138    //CHECK: load i8, i8* %e7.addr, align 1
10139    //CHECK: load i8, i8* %e6.addr, align 1
10140    //CHECK: load i8, i8* %e5.addr, align 1
10141    //CHECK: load i8, i8* %e4.addr, align 1
10142    //CHECK: load i8, i8* %e3.addr, align 1
10143    //CHECK: load i8, i8* %e2.addr, align 1
10144    //CHECK: load i8, i8* %e1.addr, align 1
10145    //CHECK: load i8, i8* %e0.addr, align 1
10146   return _mm512_set_epi8(e63, e62, e61, e60, e59, e58, e57, e56, e55, e54,
10147       e53, e52, e51, e50, e49, e48,e47, e46, e45, e44, e43, e42, e41, e40,
10148       e39, e38, e37, e36, e35, e34, e33, e32,e31, e30, e29, e28, e27, e26,
10149       e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12,
10150       e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0);
10151 }
10152 
test_mm512_set_epi16(short e31,short e30,short e29,short e28,short e27,short e26,short e25,short e24,short e23,short e22,short e21,short e20,short e19,short e18,short e17,short e16,short e15,short e14,short e13,short e12,short e11,short e10,short e9,short e8,short e7,short e6,short e5,short e4,short e3,short e2,short e1,short e0)10153 __m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28,
10154     short e27, short e26, short e25, short e24, short e23, short e22,
10155     short e21, short e20, short e19, short e18, short e17,
10156     short e16, short e15, short e14, short e13, short e12,
10157     short e11, short e10, short e9, short e8, short e7,
10158     short e6, short e5, short e4, short e3, short e2, short e1, short e0) {
10159   //CHECK-LABEL: @test_mm512_set_epi16
10160   //CHECK: insertelement{{.*}}i32 0
10161   //CHECK: insertelement{{.*}}i32 1
10162   //CHECK: insertelement{{.*}}i32 2
10163   //CHECK: insertelement{{.*}}i32 3
10164   //CHECK: insertelement{{.*}}i32 4
10165   //CHECK: insertelement{{.*}}i32 5
10166   //CHECK: insertelement{{.*}}i32 6
10167   //CHECK: insertelement{{.*}}i32 7
10168   //CHECK: insertelement{{.*}}i32 8
10169   //CHECK: insertelement{{.*}}i32 9
10170   //CHECK: insertelement{{.*}}i32 10
10171   //CHECK: insertelement{{.*}}i32 11
10172   //CHECK: insertelement{{.*}}i32 12
10173   //CHECK: insertelement{{.*}}i32 13
10174   //CHECK: insertelement{{.*}}i32 14
10175   //CHECK: insertelement{{.*}}i32 15
10176   //CHECK: insertelement{{.*}}i32 16
10177   //CHECK: insertelement{{.*}}i32 17
10178   //CHECK: insertelement{{.*}}i32 18
10179   //CHECK: insertelement{{.*}}i32 19
10180   //CHECK: insertelement{{.*}}i32 20
10181   //CHECK: insertelement{{.*}}i32 21
10182   //CHECK: insertelement{{.*}}i32 22
10183   //CHECK: insertelement{{.*}}i32 23
10184   //CHECK: insertelement{{.*}}i32 24
10185   //CHECK: insertelement{{.*}}i32 25
10186   //CHECK: insertelement{{.*}}i32 26
10187   //CHECK: insertelement{{.*}}i32 27
10188   //CHECK: insertelement{{.*}}i32 28
10189   //CHECK: insertelement{{.*}}i32 29
10190   //CHECK: insertelement{{.*}}i32 30
10191   //CHECK: insertelement{{.*}}i32 31
10192   return _mm512_set_epi16(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22,
10193       e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7,
10194       e6, e5, e4, e3, e2, e1, e0);
10195 
10196 }
test_mm512_set_epi32(int __A,int __B,int __C,int __D,int __E,int __F,int __G,int __H,int __I,int __J,int __K,int __L,int __M,int __N,int __O,int __P)10197 __m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D,
10198                int __E, int __F, int __G, int __H,
10199                int __I, int __J, int __K, int __L,
10200                int __M, int __N, int __O, int __P)
10201 {
10202  //CHECK-LABEL: @test_mm512_set_epi32
10203  //CHECK: insertelement{{.*}}i32 0
10204  //CHECK: insertelement{{.*}}i32 1
10205  //CHECK: insertelement{{.*}}i32 2
10206  //CHECK: insertelement{{.*}}i32 3
10207  //CHECK: insertelement{{.*}}i32 4
10208  //CHECK: insertelement{{.*}}i32 5
10209  //CHECK: insertelement{{.*}}i32 6
10210  //CHECK: insertelement{{.*}}i32 7
10211  //CHECK: insertelement{{.*}}i32 8
10212  //CHECK: insertelement{{.*}}i32 9
10213  //CHECK: insertelement{{.*}}i32 10
10214  //CHECK: insertelement{{.*}}i32 11
10215  //CHECK: insertelement{{.*}}i32 12
10216  //CHECK: insertelement{{.*}}i32 13
10217  //CHECK: insertelement{{.*}}i32 14
10218  //CHECK: insertelement{{.*}}i32 15
10219  return _mm512_set_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
10220               __I, __J, __K, __L,__M, __N, __O, __P);
10221 }
10222 
test_mm512_setr_epi32(int __A,int __B,int __C,int __D,int __E,int __F,int __G,int __H,int __I,int __J,int __K,int __L,int __M,int __N,int __O,int __P)10223 __m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D,
10224                int __E, int __F, int __G, int __H,
10225                int __I, int __J, int __K, int __L,
10226                int __M, int __N, int __O, int __P)
10227 {
10228  //CHECK-LABEL: @test_mm512_setr_epi32
10229  //CHECK: load{{.*}}%__P.addr, align 4
10230  //CHECK: load{{.*}}%__O.addr, align 4
10231  //CHECK: load{{.*}}%__N.addr, align 4
10232  //CHECK: load{{.*}}%__M.addr, align 4
10233  //CHECK: load{{.*}}%__L.addr, align 4
10234  //CHECK: load{{.*}}%__K.addr, align 4
10235  //CHECK: load{{.*}}%__J.addr, align 4
10236  //CHECK: load{{.*}}%__I.addr, align 4
10237  //CHECK: load{{.*}}%__H.addr, align 4
10238  //CHECK: load{{.*}}%__G.addr, align 4
10239  //CHECK: load{{.*}}%__F.addr, align 4
10240  //CHECK: load{{.*}}%__E.addr, align 4
10241  //CHECK: load{{.*}}%__D.addr, align 4
10242  //CHECK: load{{.*}}%__C.addr, align 4
10243  //CHECK: load{{.*}}%__B.addr, align 4
10244  //CHECK: load{{.*}}%__A.addr, align 4
10245  //CHECK: insertelement{{.*}}i32 0
10246  //CHECK: insertelement{{.*}}i32 1
10247  //CHECK: insertelement{{.*}}i32 2
10248  //CHECK: insertelement{{.*}}i32 3
10249  //CHECK: insertelement{{.*}}i32 4
10250  //CHECK: insertelement{{.*}}i32 5
10251  //CHECK: insertelement{{.*}}i32 6
10252  //CHECK: insertelement{{.*}}i32 7
10253  //CHECK: insertelement{{.*}}i32 8
10254  //CHECK: insertelement{{.*}}i32 9
10255  //CHECK: insertelement{{.*}}i32 10
10256  //CHECK: insertelement{{.*}}i32 11
10257  //CHECK: insertelement{{.*}}i32 12
10258  //CHECK: insertelement{{.*}}i32 13
10259  //CHECK: insertelement{{.*}}i32 14
10260  //CHECK: insertelement{{.*}}i32 15
10261  return _mm512_setr_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
10262               __I, __J, __K, __L,__M, __N, __O, __P);
10263 }
10264 
test_mm512_mask_set1_epi64(__m512i __O,__mmask8 __M,long long __A)10265 __m512i test_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
10266 {
10267   // CHECK-LABEL: @test_mm512_mask_set1_epi64
10268   // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10269   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10270   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10271   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10272   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10273   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10274   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10275   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10276   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10277   return _mm512_mask_set1_epi64 (__O, __M, __A);
10278 }
10279 
test_mm512_maskz_set1_epi64(__mmask8 __M,long long __A)10280 __m512i test_mm512_maskz_set1_epi64 (__mmask8 __M, long long __A)
10281 {
10282   // CHECK-LABEL: @test_mm512_maskz_set1_epi64
10283   // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10284   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10285   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10286   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10287   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10288   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10289   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10290   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10291   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10292   return _mm512_maskz_set1_epi64 (__M, __A);
10293 }
10294 
10295 
test_mm512_set_epi64(long long __A,long long __B,long long __C,long long __D,long long __E,long long __F,long long __G,long long __H)10296 __m512i test_mm512_set_epi64 (long long __A, long long __B, long long __C,
10297                               long long __D, long long __E, long long __F,
10298                               long long __G, long long __H)
10299 {
10300     //CHECK-LABEL: @test_mm512_set_epi64
10301     //CHECK: insertelement{{.*}}i32 0
10302     //CHECK: insertelement{{.*}}i32 1
10303     //CHECK: insertelement{{.*}}i32 2
10304     //CHECK: insertelement{{.*}}i32 3
10305     //CHECK: insertelement{{.*}}i32 4
10306     //CHECK: insertelement{{.*}}i32 5
10307     //CHECK: insertelement{{.*}}i32 6
10308     //CHECK: insertelement{{.*}}i32 7
10309   return _mm512_set_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
10310 }
10311 
test_mm512_setr_epi64(long long __A,long long __B,long long __C,long long __D,long long __E,long long __F,long long __G,long long __H)10312 __m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C,
10313                               long long __D, long long __E, long long __F,
10314                               long long __G, long long __H)
10315 {
10316     //CHECK-LABEL: @test_mm512_setr_epi64
10317     //CHECK: load{{.*}}%__H.addr, align 8
10318     //CHECK: load{{.*}}%__G.addr, align 8
10319     //CHECK: load{{.*}}%__F.addr, align 8
10320     //CHECK: load{{.*}}%__E.addr, align 8
10321     //CHECK: load{{.*}}%__D.addr, align 8
10322     //CHECK: load{{.*}}%__C.addr, align 8
10323     //CHECK: load{{.*}}%__B.addr, align 8
10324     //CHECK: load{{.*}}%__A.addr, align 8
10325     //CHECK: insertelement{{.*}}i32 0
10326     //CHECK: insertelement{{.*}}i32 1
10327     //CHECK: insertelement{{.*}}i32 2
10328     //CHECK: insertelement{{.*}}i32 3
10329     //CHECK: insertelement{{.*}}i32 4
10330     //CHECK: insertelement{{.*}}i32 5
10331     //CHECK: insertelement{{.*}}i32 6
10332     //CHECK: insertelement{{.*}}i32 7
10333   return _mm512_setr_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
10334 }
10335 
test_mm512_set_pd(double __A,double __B,double __C,double __D,double __E,double __F,double __G,double __H)10336 __m512d test_mm512_set_pd (double __A, double __B, double __C, double __D,
10337                            double __E, double __F, double __G, double __H)
10338 {
10339     //CHECK-LABEL: @test_mm512_set_pd
10340     //CHECK: insertelement{{.*}}i32 0
10341     //CHECK: insertelement{{.*}}i32 1
10342     //CHECK: insertelement{{.*}}i32 2
10343     //CHECK: insertelement{{.*}}i32 3
10344     //CHECK: insertelement{{.*}}i32 4
10345     //CHECK: insertelement{{.*}}i32 5
10346     //CHECK: insertelement{{.*}}i32 6
10347     //CHECK: insertelement{{.*}}i32 7
10348   return _mm512_set_pd( __A, __B, __C, __D, __E, __F, __G, __H);
10349 }
10350 
test_mm512_setr_pd(double __A,double __B,double __C,double __D,double __E,double __F,double __G,double __H)10351 __m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D,
10352                            double __E, double __F, double __G, double __H)
10353 {
10354     //CHECK-LABEL: @test_mm512_setr_pd
10355     //CHECK: load{{.*}}%__H.addr, align 8
10356     //CHECK: load{{.*}}%__G.addr, align 8
10357     //CHECK: load{{.*}}%__F.addr, align 8
10358     //CHECK: load{{.*}}%__E.addr, align 8
10359     //CHECK: load{{.*}}%__D.addr, align 8
10360     //CHECK: load{{.*}}%__C.addr, align 8
10361     //CHECK: load{{.*}}%__B.addr, align 8
10362     //CHECK: load{{.*}}%__A.addr, align 8
10363     //CHECK: insertelement{{.*}}i32 0
10364     //CHECK: insertelement{{.*}}i32 1
10365     //CHECK: insertelement{{.*}}i32 2
10366     //CHECK: insertelement{{.*}}i32 3
10367     //CHECK: insertelement{{.*}}i32 4
10368     //CHECK: insertelement{{.*}}i32 5
10369     //CHECK: insertelement{{.*}}i32 6
10370     //CHECK: insertelement{{.*}}i32 7
10371   return _mm512_setr_pd( __A, __B, __C, __D, __E, __F, __G, __H);
10372 }
10373 
test_mm512_set_ps(float __A,float __B,float __C,float __D,float __E,float __F,float __G,float __H,float __I,float __J,float __K,float __L,float __M,float __N,float __O,float __P)10374 __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D,
10375                           float __E, float __F, float __G, float __H,
10376                           float __I, float __J, float __K, float __L,
10377                           float __M, float __N, float __O, float __P)
10378 {
10379     //CHECK-LABEL: @test_mm512_set_ps
10380     //CHECK: insertelement{{.*}}i32 0
10381     //CHECK: insertelement{{.*}}i32 1
10382     //CHECK: insertelement{{.*}}i32 2
10383     //CHECK: insertelement{{.*}}i32 3
10384     //CHECK: insertelement{{.*}}i32 4
10385     //CHECK: insertelement{{.*}}i32 5
10386     //CHECK: insertelement{{.*}}i32 6
10387     //CHECK: insertelement{{.*}}i32 7
10388     //CHECK: insertelement{{.*}}i32 8
10389     //CHECK: insertelement{{.*}}i32 9
10390     //CHECK: insertelement{{.*}}i32 10
10391     //CHECK: insertelement{{.*}}i32 11
10392     //CHECK: insertelement{{.*}}i32 12
10393     //CHECK: insertelement{{.*}}i32 13
10394     //CHECK: insertelement{{.*}}i32 14
10395     //CHECK: insertelement{{.*}}i32 15
10396     return _mm512_set_ps( __A, __B, __C, __D, __E, __F, __G, __H,
10397                           __I, __J, __K, __L, __M, __N, __O, __P);
10398 }
10399 
test_mm512_mask_abs_epi64(__m512i __W,__mmask8 __U,__m512i __A)10400 __m512i test_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
10401 {
10402   // CHECK-LABEL: @test_mm512_mask_abs_epi64
10403   // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]]
10404   // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer
10405   // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]]
10406   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}}
10407   return _mm512_mask_abs_epi64 (__W,__U,__A);
10408 }
10409 
test_mm512_maskz_abs_epi64(__mmask8 __U,__m512i __A)10410 __m512i test_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
10411 {
10412   // CHECK-LABEL: @test_mm512_maskz_abs_epi64
10413   // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]]
10414   // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer
10415   // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]]
10416   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}}
10417   return _mm512_maskz_abs_epi64 (__U,__A);
10418 }
10419 
test_mm512_mask_abs_epi32(__m512i __W,__mmask16 __U,__m512i __A)10420 __m512i test_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
10421 {
10422   // CHECK-LABEL: @test_mm512_mask_abs_epi32
10423   // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]]
10424   // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer
10425   // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]]
10426   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}}
10427   return _mm512_mask_abs_epi32 (__W,__U,__A);
10428 }
10429 
test_mm512_maskz_abs_epi32(__mmask16 __U,__m512i __A)10430 __m512i test_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
10431 {
10432   // CHECK-LABEL: @test_mm512_maskz_abs_epi32
10433   // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]]
10434   // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer
10435   // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]]
10436   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}}
10437   return _mm512_maskz_abs_epi32 (__U,__A);
10438 }
10439 
test_mm512_setr_ps(float __A,float __B,float __C,float __D,float __E,float __F,float __G,float __H,float __I,float __J,float __K,float __L,float __M,float __N,float __O,float __P)10440 __m512 test_mm512_setr_ps (float __A, float __B, float __C, float __D,
10441                           float __E, float __F, float __G, float __H,
10442                           float __I, float __J, float __K, float __L,
10443                           float __M, float __N, float __O, float __P)
10444 {
10445     //CHECK-LABEL: @test_mm512_setr_ps
10446     //CHECK: load{{.*}}%__P.addr, align 4
10447     //CHECK: load{{.*}}%__O.addr, align 4
10448     //CHECK: load{{.*}}%__N.addr, align 4
10449     //CHECK: load{{.*}}%__M.addr, align 4
10450     //CHECK: load{{.*}}%__L.addr, align 4
10451     //CHECK: load{{.*}}%__K.addr, align 4
10452     //CHECK: load{{.*}}%__J.addr, align 4
10453     //CHECK: load{{.*}}%__I.addr, align 4
10454     //CHECK: load{{.*}}%__H.addr, align 4
10455     //CHECK: load{{.*}}%__G.addr, align 4
10456     //CHECK: load{{.*}}%__F.addr, align 4
10457     //CHECK: load{{.*}}%__E.addr, align 4
10458     //CHECK: load{{.*}}%__D.addr, align 4
10459     //CHECK: load{{.*}}%__C.addr, align 4
10460     //CHECK: load{{.*}}%__B.addr, align 4
10461     //CHECK: load{{.*}}%__A.addr, align 4
10462     //CHECK: insertelement{{.*}}i32 0
10463     //CHECK: insertelement{{.*}}i32 1
10464     //CHECK: insertelement{{.*}}i32 2
10465     //CHECK: insertelement{{.*}}i32 3
10466     //CHECK: insertelement{{.*}}i32 4
10467     //CHECK: insertelement{{.*}}i32 5
10468     //CHECK: insertelement{{.*}}i32 6
10469     //CHECK: insertelement{{.*}}i32 7
10470     //CHECK: insertelement{{.*}}i32 8
10471     //CHECK: insertelement{{.*}}i32 9
10472     //CHECK: insertelement{{.*}}i32 10
10473     //CHECK: insertelement{{.*}}i32 11
10474     //CHECK: insertelement{{.*}}i32 12
10475     //CHECK: insertelement{{.*}}i32 13
10476     //CHECK: insertelement{{.*}}i32 14
10477     //CHECK: insertelement{{.*}}i32 15
10478     return _mm512_setr_ps( __A, __B, __C, __D, __E, __F, __G, __H,
10479                           __I, __J, __K, __L, __M, __N, __O, __P);
10480 }
10481 
test_mm_cvtss_i32(__m128 A)10482 int test_mm_cvtss_i32(__m128 A) {
10483   // CHECK-LABEL: test_mm_cvtss_i32
10484   // CHECK: call i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}})
10485   return _mm_cvtss_i32(A);
10486 }
10487 
10488 #ifdef __x86_64__
test_mm_cvtss_i64(__m128 A)10489 long long test_mm_cvtss_i64(__m128 A) {
10490   // CHECK-LABEL: test_mm_cvtss_i64
10491   // CHECK: call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %{{.*}})
10492   return _mm_cvtss_i64(A);
10493 }
10494 #endif
10495 
test_mm_cvti32_sd(__m128d A,int B)10496 __m128d test_mm_cvti32_sd(__m128d A, int B) {
10497   // CHECK-LABEL: test_mm_cvti32_sd
10498   // CHECK: sitofp i32 %{{.*}} to double
10499   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10500   return _mm_cvti32_sd(A, B);
10501 }
10502 
10503 #ifdef __x86_64__
test_mm_cvti64_sd(__m128d A,long long B)10504 __m128d test_mm_cvti64_sd(__m128d A, long long B) {
10505   // CHECK-LABEL: test_mm_cvti64_sd
10506   // CHECK: sitofp i64 %{{.*}} to double
10507   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10508   return _mm_cvti64_sd(A, B);
10509 }
10510 #endif
10511 
test_mm_cvti32_ss(__m128 A,int B)10512 __m128 test_mm_cvti32_ss(__m128 A, int B) {
10513   // CHECK-LABEL: test_mm_cvti32_ss
10514   // CHECK: sitofp i32 %{{.*}} to float
10515   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10516   return _mm_cvti32_ss(A, B);
10517 }
10518 
10519 #ifdef __x86_64__
test_mm_cvti64_ss(__m128 A,long long B)10520 __m128 test_mm_cvti64_ss(__m128 A, long long B) {
10521   // CHECK-LABEL: test_mm_cvti64_ss
10522   // CHECK: sitofp i64 %{{.*}} to float
10523   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10524   return _mm_cvti64_ss(A, B);
10525 }
10526 #endif
10527 
test_mm_cvtsd_i32(__m128d A)10528 int test_mm_cvtsd_i32(__m128d A) {
10529   // CHECK-LABEL: test_mm_cvtsd_i32
10530   // CHECK: call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %{{.*}})
10531   return _mm_cvtsd_i32(A);
10532 }
10533 
10534 #ifdef __x86_64__
test_mm_cvtsd_i64(__m128d A)10535 long long test_mm_cvtsd_i64(__m128d A) {
10536   // CHECK-LABEL: test_mm_cvtsd_i64
10537   // CHECK: call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %{{.*}})
10538   return _mm_cvtsd_i64(A);
10539 }
10540 #endif
10541 
test_mm_mask_cvtss_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128 __B)10542 __m128d test_mm_mask_cvtss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
10543   // CHECK-LABEL: @test_mm_mask_cvtss_sd
10544   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10545   return _mm_mask_cvtss_sd(__W, __U, __A, __B);
10546 }
10547 
test_mm_maskz_cvtss_sd(__mmask8 __U,__m128d __A,__m128 __B)10548 __m128d test_mm_maskz_cvtss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
10549   // CHECK-LABEL: @test_mm_maskz_cvtss_sd
10550   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10551   return _mm_maskz_cvtss_sd( __U, __A, __B);
10552 }
10553 
test_mm_mask_cvtsd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128d __B)10554 __m128 test_mm_mask_cvtsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
10555   // CHECK-LABEL: @test_mm_mask_cvtsd_ss
10556   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10557   return _mm_mask_cvtsd_ss(__W, __U, __A, __B);
10558 }
10559 
test_mm_maskz_cvtsd_ss(__mmask8 __U,__m128 __A,__m128d __B)10560 __m128 test_mm_maskz_cvtsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
10561   // CHECK-LABEL: @test_mm_maskz_cvtsd_ss
10562   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10563   return _mm_maskz_cvtsd_ss(__U, __A, __B);
10564 }
10565 
10566 
test_mm512_setzero_epi32()10567 __m512i test_mm512_setzero_epi32()
10568 {
10569   // CHECK-LABEL: @test_mm512_setzero_epi32
10570   // CHECK: zeroinitializer
10571   return _mm512_setzero_epi32();
10572 }
10573 
test_mm512_setzero()10574 __m512i test_mm512_setzero()
10575 {
10576   // CHECK-LABEL: @test_mm512_setzero
10577   // CHECK: zeroinitializer
10578   return _mm512_setzero();
10579 }
10580 
test_mm512_setzero_si512()10581 __m512i test_mm512_setzero_si512()
10582 {
10583   // CHECK-LABEL: @test_mm512_setzero_si512
10584   // CHECK: zeroinitializer
10585   return _mm512_setzero_si512();
10586 }
10587 
test_mm512_setzero_ps()10588 __m512i test_mm512_setzero_ps()
10589 {
10590   // CHECK-LABEL: @test_mm512_setzero_ps
10591   // CHECK: zeroinitializer
10592   return _mm512_setzero_ps();
10593 }
10594 
test_mm512_setzero_pd()10595 __m512d test_mm512_setzero_pd()
10596 {
10597   // CHECK-LABEL: @test_mm512_setzero_pd
10598   // CHECK: zeroinitializer
10599   return _mm512_setzero_pd();
10600 }
10601 
test_mm512_int2mask(int __a)10602 __mmask16 test_mm512_int2mask(int __a)
10603 {
10604   // CHECK-LABEL: test_mm512_int2mask
10605   // CHECK: trunc i32 %{{.*}} to i16
10606   return _mm512_int2mask(__a);
10607 }
10608 
test_mm512_mask2int(__mmask16 __a)10609 int test_mm512_mask2int(__mmask16 __a)
10610 {
10611   // CHECK-LABEL: test_mm512_mask2int
10612   // CHECK: zext i16 %{{.*}} to i32
10613   return _mm512_mask2int(__a);
10614 }
10615 
test_mm_mask_move_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)10616 __m128 test_mm_mask_move_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
10617 {
10618   // CHECK-LABEL: @test_mm_mask_move_ss
10619   // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10620   // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10621   // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10622   // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10623   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10624   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10625   // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10626   // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10627   return _mm_mask_move_ss ( __W,  __U,  __A,  __B);
10628 }
10629 
test_mm_maskz_move_ss(__mmask8 __U,__m128 __A,__m128 __B)10630 __m128 test_mm_maskz_move_ss (__mmask8 __U, __m128 __A, __m128 __B)
10631 {
10632   // CHECK-LABEL: @test_mm_maskz_move_ss
10633   // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10634   // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10635   // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10636   // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10637   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10638   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10639   // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10640   // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10641   return _mm_maskz_move_ss (__U, __A, __B);
10642 }
10643 
test_mm_mask_move_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)10644 __m128d test_mm_mask_move_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
10645 {
10646   // CHECK-LABEL: @test_mm_mask_move_sd
10647   // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10648   // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10649   // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10650   // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10651   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10652   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10653   // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, double [[A]], double [[B]]
10654   // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10655   return _mm_mask_move_sd ( __W,  __U,  __A,  __B);
10656 }
10657 
test_mm_maskz_move_sd(__mmask8 __U,__m128d __A,__m128d __B)10658 __m128d test_mm_maskz_move_sd (__mmask8 __U, __m128d __A, __m128d __B)
10659 {
10660   // CHECK-LABEL: @test_mm_maskz_move_sd
10661   // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10662   // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10663   // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10664   // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10665   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10666   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10667   // CHECK-NEXT: [[SEL:%.*]] = select i1 %13, double [[A]], double [[B]]
10668   // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10669   return _mm_maskz_move_sd (__U, __A, __B);
10670 }
10671 
test_mm_mask_store_ss(float * __P,__mmask8 __U,__m128 __A)10672 void test_mm_mask_store_ss(float * __P, __mmask8 __U, __m128 __A)
10673 {
10674   // CHECK-LABEL: @test_mm_mask_store_ss
10675   // CHECK: call void @llvm.masked.store.v4f32.p0v4f32(
10676   _mm_mask_store_ss(__P, __U, __A);
10677 }
10678 
test_mm_mask_store_sd(double * __P,__mmask8 __U,__m128d __A)10679 void test_mm_mask_store_sd(double * __P, __mmask8 __U, __m128d __A)
10680 {
10681   // CHECK-LABEL: @test_mm_mask_store_sd
10682   // CHECK: call void @llvm.masked.store.v2f64.p0v2f64(
10683   _mm_mask_store_sd(__P, __U, __A);
10684 }
10685 
test_mm_mask_load_ss(__m128 __A,__mmask8 __U,const float * __W)10686 __m128 test_mm_mask_load_ss(__m128 __A, __mmask8 __U, const float* __W)
10687 {
10688   // CHECK-LABEL: @test_mm_mask_load_ss
10689   // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0v4f32(
10690   return _mm_mask_load_ss(__A, __U, __W);
10691 }
10692 
test_mm_maskz_load_ss(__mmask8 __U,const float * __W)10693 __m128 test_mm_maskz_load_ss (__mmask8 __U, const float * __W)
10694 {
10695   // CHECK-LABEL: @test_mm_maskz_load_ss
10696   // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0v4f32(
10697   return _mm_maskz_load_ss (__U, __W);
10698 }
10699 
test_mm_mask_load_sd(__m128d __A,__mmask8 __U,const double * __W)10700 __m128d test_mm_mask_load_sd (__m128d __A, __mmask8 __U, const double * __W)
10701 {
10702   // CHECK-LABEL: @test_mm_mask_load_sd
10703   // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0v2f64(
10704   return _mm_mask_load_sd (__A, __U, __W);
10705 }
10706 
test_mm_maskz_load_sd(__mmask8 __U,const double * __W)10707 __m128d test_mm_maskz_load_sd (__mmask8 __U, const double * __W)
10708 {
10709   // CHECK-LABEL: @test_mm_maskz_load_sd
10710   // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0v2f64(
10711   return _mm_maskz_load_sd (__U, __W);
10712 }
10713 
test_mm512_abs_pd(__m512d a)10714 __m512d test_mm512_abs_pd(__m512d a){
10715   // CHECK-LABEL: @test_mm512_abs_pd
10716   // CHECK: and <8 x i64>
10717   return _mm512_abs_pd(a);
10718 }
10719 
test_mm512_mask_abs_pd(__m512d __W,__mmask8 __U,__m512d __A)10720 __m512d test_mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512d __A){
10721   // CHECK-LABEL: @test_mm512_mask_abs_pd
10722   // CHECK: %[[AND_RES:.*]] = and <8 x i64>
10723   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
10724   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
10725   return _mm512_mask_abs_pd (__W,__U,__A);
10726 }
10727 
test_mm512_abs_ps(__m512 a)10728 __m512 test_mm512_abs_ps(__m512 a){
10729   // CHECK-LABEL: @test_mm512_abs_ps
10730   // CHECK: and <16 x i32>
10731   return _mm512_abs_ps(a);
10732 }
10733 
test_mm512_mask_abs_ps(__m512 __W,__mmask16 __U,__m512 __A)10734 __m512 test_mm512_mask_abs_ps(__m512 __W, __mmask16 __U, __m512 __A){
10735   // CHECK-LABEL: @test_mm512_mask_abs_ps
10736   // CHECK: and <16 x i32>
10737   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
10738   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10739   return _mm512_mask_abs_ps( __W, __U, __A);
10740 }
10741 
test_mm512_zextpd128_pd512(__m128d A)10742 __m512d test_mm512_zextpd128_pd512(__m128d A) {
10743   // CHECK-LABEL: test_mm512_zextpd128_pd512
10744   // CHECK: store <2 x double> zeroinitializer
10745   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
10746   return _mm512_zextpd128_pd512(A);
10747 }
10748 
test_mm512_zextpd256_pd512(__m256d A)10749 __m512d test_mm512_zextpd256_pd512(__m256d A) {
10750   // CHECK-LABEL: test_mm512_zextpd256_pd512
10751   // CHECK: store <4 x double> zeroinitializer
10752   // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
10753   return _mm512_zextpd256_pd512(A);
10754 }
10755 
test_mm512_zextps128_ps512(__m128 A)10756 __m512 test_mm512_zextps128_ps512(__m128 A) {
10757   // CHECK-LABEL: test_mm512_zextps128_ps512
10758   // CHECK: store <4 x float> zeroinitializer
10759   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7>
10760   return _mm512_zextps128_ps512(A);
10761 }
10762 
test_mm512_zextps256_ps512(__m256 A)10763 __m512 test_mm512_zextps256_ps512(__m256 A) {
10764   // CHECK-LABEL: test_mm512_zextps256_ps512
10765   // CHECK: store <8 x float> zeroinitializer
10766   // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
10767   return _mm512_zextps256_ps512(A);
10768 }
10769 
test_mm512_zextsi128_si512(__m128i A)10770 __m512i test_mm512_zextsi128_si512(__m128i A) {
10771   // CHECK-LABEL: test_mm512_zextsi128_si512
10772   // CHECK: store <2 x i64> zeroinitializer
10773   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
10774   return _mm512_zextsi128_si512(A);
10775 }
10776 
test_mm512_zextsi256_si512(__m256i A)10777 __m512i test_mm512_zextsi256_si512(__m256i A) {
10778   // CHECK-LABEL: test_mm512_zextsi256_si512
10779   // CHECK: store <4 x i64> zeroinitializer
10780   // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
10781   return _mm512_zextsi256_si512(A);
10782 }
10783