1 // RUN: %clang_cc1 -fexperimental-new-pass-manager -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
2 // RUN: %clang_cc1 -fexperimental-new-pass-manager -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +avx512f -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
3 
4 #include <immintrin.h>
5 
test_mm512_sqrt_pd(__m512d a)6 __m512d test_mm512_sqrt_pd(__m512d a)
7 {
8   // CHECK-LABEL: @test_mm512_sqrt_pd
9   // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
10   return _mm512_sqrt_pd(a);
11 }
12 
test_mm512_mask_sqrt_pd(__m512d __W,__mmask8 __U,__m512d __A)13 __m512d test_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
14 {
15   // CHECK-LABEL: @test_mm512_mask_sqrt_pd
16   // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
17   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
18   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
19   return _mm512_mask_sqrt_pd (__W,__U,__A);
20 }
21 
test_mm512_maskz_sqrt_pd(__mmask8 __U,__m512d __A)22 __m512d test_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
23 {
24   // CHECK-LABEL: @test_mm512_maskz_sqrt_pd
25   // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
26   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
27   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
28   return _mm512_maskz_sqrt_pd (__U,__A);
29 }
30 
test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A)31 __m512d test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A)
32 {
33   // CHECK-LABEL: @test_mm512_mask_sqrt_round_pd
34   // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 11)
35   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
36   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
37   return _mm512_mask_sqrt_round_pd(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
38 }
39 
test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A)40 __m512d test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A)
41 {
42   // CHECK-LABEL: @test_mm512_maskz_sqrt_round_pd
43   // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 11)
44   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
45   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
46   return _mm512_maskz_sqrt_round_pd(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
47 }
48 
test_mm512_sqrt_round_pd(__m512d __A)49 __m512d test_mm512_sqrt_round_pd(__m512d __A)
50 {
51   // CHECK-LABEL: @test_mm512_sqrt_round_pd
52   // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 11)
53   return _mm512_sqrt_round_pd(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
54 }
55 
test_mm512_sqrt_ps(__m512 a)56 __m512 test_mm512_sqrt_ps(__m512 a)
57 {
58   // CHECK-LABEL: @test_mm512_sqrt_ps
59   // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
60   return _mm512_sqrt_ps(a);
61 }
62 
test_mm512_mask_sqrt_ps(__m512 __W,__mmask16 __U,__m512 __A)63 __m512 test_mm512_mask_sqrt_ps(__m512 __W, __mmask16 __U, __m512 __A)
64 {
65   // CHECK-LABEL: @test_mm512_mask_sqrt_ps
66   // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
67   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
68   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
69   return _mm512_mask_sqrt_ps( __W, __U, __A);
70 }
71 
test_mm512_maskz_sqrt_ps(__mmask16 __U,__m512 __A)72 __m512 test_mm512_maskz_sqrt_ps( __mmask16 __U, __m512 __A)
73 {
74   // CHECK-LABEL: @test_mm512_maskz_sqrt_ps
75   // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
76   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
77   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
78   return _mm512_maskz_sqrt_ps(__U ,__A);
79 }
80 
test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A)81 __m512 test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A)
82 {
83   // CHECK-LABEL: @test_mm512_mask_sqrt_round_ps
84   // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 11)
85   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
86   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
87   return _mm512_mask_sqrt_round_ps(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
88 }
89 
test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A)90 __m512 test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A)
91 {
92   // CHECK-LABEL: @test_mm512_maskz_sqrt_round_ps
93   // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 11)
94   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
95   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
96   return _mm512_maskz_sqrt_round_ps(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
97 }
98 
test_mm512_sqrt_round_ps(__m512 __A)99 __m512 test_mm512_sqrt_round_ps(__m512 __A)
100 {
101   // CHECK-LABEL: @test_mm512_sqrt_round_ps
102   // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 11)
103   return _mm512_sqrt_round_ps(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
104 }
105 
test_mm512_rsqrt14_pd(__m512d a)106 __m512d test_mm512_rsqrt14_pd(__m512d a)
107 {
108   // CHECK-LABEL: @test_mm512_rsqrt14_pd
109   // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
110   return _mm512_rsqrt14_pd(a);
111 }
112 
test_mm512_mask_rsqrt14_pd(__m512d __W,__mmask8 __U,__m512d __A)113 __m512d test_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
114 {
115   // CHECK-LABEL: @test_mm512_mask_rsqrt14_pd
116   // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
117   return _mm512_mask_rsqrt14_pd (__W,__U,__A);
118 }
119 
test_mm512_maskz_rsqrt14_pd(__mmask8 __U,__m512d __A)120 __m512d test_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
121 {
122   // CHECK-LABEL: @test_mm512_maskz_rsqrt14_pd
123   // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
124   return _mm512_maskz_rsqrt14_pd (__U,__A);
125 }
126 
test_mm512_rsqrt14_ps(__m512 a)127 __m512 test_mm512_rsqrt14_ps(__m512 a)
128 {
129   // CHECK-LABEL: @test_mm512_rsqrt14_ps
130   // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
131   return _mm512_rsqrt14_ps(a);
132 }
133 
test_mm512_mask_rsqrt14_ps(__m512 __W,__mmask16 __U,__m512 __A)134 __m512 test_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
135 {
136   // CHECK-LABEL: @test_mm512_mask_rsqrt14_ps
137   // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
138   return _mm512_mask_rsqrt14_ps (__W,__U,__A);
139 }
140 
test_mm512_maskz_rsqrt14_ps(__mmask16 __U,__m512 __A)141 __m512 test_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
142 {
143   // CHECK-LABEL: @test_mm512_maskz_rsqrt14_ps
144   // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
145   return _mm512_maskz_rsqrt14_ps (__U,__A);
146 }
147 
test_mm512_add_ps(__m512 a,__m512 b)148 __m512 test_mm512_add_ps(__m512 a, __m512 b)
149 {
150   // CHECK-LABEL: @test_mm512_add_ps
151   // CHECK: fadd <16 x float>
152   return _mm512_add_ps(a, b);
153 }
154 
test_mm512_add_pd(__m512d a,__m512d b)155 __m512d test_mm512_add_pd(__m512d a, __m512d b)
156 {
157   // CHECK-LABEL: @test_mm512_add_pd
158   // CHECK: fadd <8 x double>
159   return _mm512_add_pd(a, b);
160 }
161 
test_mm512_mul_ps(__m512 a,__m512 b)162 __m512 test_mm512_mul_ps(__m512 a, __m512 b)
163 {
164   // CHECK-LABEL: @test_mm512_mul_ps
165   // CHECK: fmul <16 x float>
166   return _mm512_mul_ps(a, b);
167 }
168 
test_mm512_mul_pd(__m512d a,__m512d b)169 __m512d test_mm512_mul_pd(__m512d a, __m512d b)
170 {
171   // CHECK-LABEL: @test_mm512_mul_pd
172   // CHECK: fmul <8 x double>
173   return _mm512_mul_pd(a, b);
174 }
175 
test_mm512_storeu_si512(void * __P,__m512i __A)176 void test_mm512_storeu_si512 (void *__P, __m512i __A)
177 {
178   // CHECK-LABEL: @test_mm512_storeu_si512
179   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
180   // CHECK-NEXT: ret void
181   _mm512_storeu_si512 ( __P,__A);
182 }
183 
test_mm512_storeu_ps(void * p,__m512 a)184 void test_mm512_storeu_ps(void *p, __m512 a)
185 {
186   // CHECK-LABEL: @test_mm512_storeu_ps
187   // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 1{{$}}
188   // CHECK-NEXT: ret void
189   _mm512_storeu_ps(p, a);
190 }
191 
test_mm512_storeu_pd(void * p,__m512d a)192 void test_mm512_storeu_pd(void *p, __m512d a)
193 {
194   // CHECK-LABEL: @test_mm512_storeu_pd
195   // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 1{{$}}
196   // CHECK-NEXT: ret void
197   _mm512_storeu_pd(p, a);
198 }
199 
test_mm512_mask_store_ps(void * p,__m512 a,__mmask16 m)200 void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m)
201 {
202   // CHECK-LABEL: @test_mm512_mask_store_ps
203   // CHECK: @llvm.masked.store.v16f32.p0v16f32(<16 x float> %{{.*}}, <16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
204   _mm512_mask_store_ps(p, m, a);
205 }
206 
test_mm512_store_si512(void * __P,__m512i __A)207 void test_mm512_store_si512 (void *__P, __m512i __A)
208 {
209   // CHECK-LABEL: @test_mm512_store_si512
210   // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
211   // CHECK: [[SI512_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
212   // CHECK: bitcast i8* [[SI512_3]] to <8 x i64>*
213   // CHECK: store <8 x i64>
214   _mm512_store_si512 ( __P,__A);
215 }
216 
test_mm512_store_epi32(void * __P,__m512i __A)217 void test_mm512_store_epi32 (void *__P, __m512i __A)
218 {
219   // CHECK-LABEL: @test_mm512_store_epi32
220   // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
221   // CHECK: [[Si32_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
222   // CHECK: bitcast i8* [[Si32_3]] to <8 x i64>*
223   // CHECK: store <8 x i64>
224   _mm512_store_epi32 ( __P,__A);
225 }
226 
test_mm512_store_epi64(void * __P,__m512i __A)227 void test_mm512_store_epi64 (void *__P, __m512i __A)
228 {
229   // CHECK-LABEL: @test_mm512_store_epi64
230   // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
231   // CHECK: [[SI64_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
232   // CHECK: bitcast i8* [[SI64_3]] to <8 x i64>*
233   // CHECK: store <8 x i64>
234   _mm512_store_epi64 ( __P,__A);
235 }
236 
test_mm512_store_ps(void * p,__m512 a)237 void test_mm512_store_ps(void *p, __m512 a)
238 {
239   // CHECK-LABEL: @test_mm512_store_ps
240   // CHECK: store <16 x float>
241   _mm512_store_ps(p, a);
242 }
243 
test_mm512_store_pd(void * p,__m512d a)244 void test_mm512_store_pd(void *p, __m512d a)
245 {
246   // CHECK-LABEL: @test_mm512_store_pd
247   // CHECK: store <8 x double>
248   _mm512_store_pd(p, a);
249 }
250 
test_mm512_mask_store_pd(void * p,__m512d a,__mmask8 m)251 void test_mm512_mask_store_pd(void *p, __m512d a, __mmask8 m)
252 {
253   // CHECK-LABEL: @test_mm512_mask_store_pd
254   // CHECK: @llvm.masked.store.v8f64.p0v8f64(<8 x double> %{{.*}}, <8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
255   _mm512_mask_store_pd(p, m, a);
256 }
257 
test_mm512_storeu_epi32(void * __P,__m512i __A)258 void test_mm512_storeu_epi32(void *__P, __m512i __A) {
259   // CHECK-LABEL: @test_mm512_storeu_epi32
260   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
261   return _mm512_storeu_epi32(__P, __A);
262 }
263 
test_mm512_mask_storeu_epi32(void * __P,__mmask16 __U,__m512i __A)264 void test_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A) {
265   // CHECK-LABEL: @test_mm512_mask_storeu_epi32
266   // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
267   return _mm512_mask_storeu_epi32(__P, __U, __A);
268 }
269 
test_mm512_storeu_epi64(void * __P,__m512i __A)270 void test_mm512_storeu_epi64(void *__P, __m512i __A) {
271   // CHECK-LABEL: @test_mm512_storeu_epi64
272   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
273   return _mm512_storeu_epi64(__P, __A);
274 }
275 
test_mm512_mask_storeu_epi64(void * __P,__mmask8 __U,__m512i __A)276 void test_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A) {
277   // CHECK-LABEL: @test_mm512_mask_storeu_epi64
278   // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
279   return _mm512_mask_storeu_epi64(__P, __U, __A);
280 }
281 
test_mm512_loadu_si512(void * __P)282 __m512i test_mm512_loadu_si512 (void *__P)
283 {
284   // CHECK-LABEL: @test_mm512_loadu_si512
285   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
286   return _mm512_loadu_si512 ( __P);
287 }
288 
test_mm512_loadu_epi32(void * __P)289 __m512i test_mm512_loadu_epi32 (void *__P)
290 {
291   // CHECK-LABEL: @test_mm512_loadu_epi32
292   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
293   return _mm512_loadu_epi32 (__P);
294 }
295 
test_mm512_mask_loadu_epi32(__m512i __W,__mmask16 __U,void * __P)296 __m512i test_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void *__P)
297 {
298   // CHECK-LABEL: @test_mm512_mask_loadu_epi32
299   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
300   return _mm512_mask_loadu_epi32 (__W,__U, __P);
301 }
302 
test_mm512_maskz_loadu_epi32(__mmask16 __U,void * __P)303 __m512i test_mm512_maskz_loadu_epi32 (__mmask16 __U, void *__P)
304 {
305   // CHECK-LABEL: @test_mm512_maskz_loadu_epi32
306   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
307   return _mm512_maskz_loadu_epi32 (__U, __P);
308 }
309 
test_mm512_loadu_epi64(void * __P)310 __m512i test_mm512_loadu_epi64 (void *__P)
311 {
312   // CHECK-LABEL: @test_mm512_loadu_epi64
313   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
314   return _mm512_loadu_epi64 (__P);
315 }
316 
test_mm512_mask_loadu_epi64(__m512i __W,__mmask8 __U,void * __P)317 __m512i test_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void *__P)
318 {
319   // CHECK-LABEL: @test_mm512_mask_loadu_epi64
320   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
321   return _mm512_mask_loadu_epi64 (__W,__U, __P);
322 }
323 
test_mm512_maskz_loadu_epi64(__mmask16 __U,void * __P)324 __m512i test_mm512_maskz_loadu_epi64 (__mmask16 __U, void *__P)
325 {
326   // CHECK-LABEL: @test_mm512_maskz_loadu_epi64
327   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
328   return _mm512_maskz_loadu_epi64 (__U, __P);
329 }
330 
test_mm512_loadu_ps(void * p)331 __m512 test_mm512_loadu_ps(void *p)
332 {
333   // CHECK-LABEL: @test_mm512_loadu_ps
334   // CHECK: load <16 x float>, <16 x float>* {{.*}}, align 1{{$}}
335   return _mm512_loadu_ps(p);
336 }
337 
test_mm512_mask_loadu_ps(__m512 __W,__mmask16 __U,void * __P)338 __m512 test_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void *__P)
339 {
340   // CHECK-LABEL: @test_mm512_mask_loadu_ps
341   // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
342   return _mm512_mask_loadu_ps (__W,__U, __P);
343 }
344 
test_mm512_loadu_pd(void * p)345 __m512d test_mm512_loadu_pd(void *p)
346 {
347   // CHECK-LABEL: @test_mm512_loadu_pd
348   // CHECK: load <8 x double>, <8 x double>* {{.*}}, align 1{{$}}
349   return _mm512_loadu_pd(p);
350 }
351 
test_mm512_mask_loadu_pd(__m512d __W,__mmask8 __U,void * __P)352 __m512d test_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void *__P)
353 {
354   // CHECK-LABEL: @test_mm512_mask_loadu_pd
355   // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
356   return _mm512_mask_loadu_pd (__W,__U, __P);
357 }
358 
test_mm512_load_si512(void * __P)359 __m512i test_mm512_load_si512 (void *__P)
360 {
361   // CHECK-LABEL: @test_mm512_load_si512
362   // CHECK: [[LI512_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
363   // CHECK: [[LI512_2:%.+]] = bitcast i8* [[LI512_1]] to <8 x i64>*
364   // CHECK: load <8 x i64>, <8 x i64>* [[LI512_2]], align 64
365   return _mm512_load_si512 ( __P);
366 }
367 
test_mm512_load_epi32(void * __P)368 __m512i test_mm512_load_epi32 (void *__P)
369 {
370   // CHECK-LABEL: @test_mm512_load_epi32
371   // CHECK: [[LI32_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
372   // CHECK: [[LI32_2:%.+]] = bitcast i8* [[LI32_1]] to <8 x i64>*
373   // CHECK: load <8 x i64>, <8 x i64>* [[LI32_2]], align 64
374   return _mm512_load_epi32 ( __P);
375 }
376 
test_mm512_load_epi64(void * __P)377 __m512i test_mm512_load_epi64 (void *__P)
378 {
379   // CHECK-LABEL: @test_mm512_load_epi64
380   // CHECK: [[LI64_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
381   // CHECK: [[LI64_2:%.+]] = bitcast i8* [[LI64_1]] to <8 x i64>*
382   // CHECK: load <8 x i64>, <8 x i64>* [[LI64_2]], align 64
383   return _mm512_load_epi64 ( __P);
384 }
385 
test_mm512_load_ps(void * p)386 __m512 test_mm512_load_ps(void *p)
387 {
388   // CHECK-LABEL: @test_mm512_load_ps
389   // CHECK: load <16 x float>, <16 x float>* %{{.*}}, align 64
390   return _mm512_load_ps(p);
391 }
392 
test_mm512_mask_load_ps(__m512 __W,__mmask16 __U,void * __P)393 __m512 test_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void *__P)
394 {
395   // CHECK-LABEL: @test_mm512_mask_load_ps
396   // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
397   return _mm512_mask_load_ps (__W,__U, __P);
398 }
399 
test_mm512_maskz_load_ps(__mmask16 __U,void * __P)400 __m512 test_mm512_maskz_load_ps(__mmask16 __U, void *__P)
401 {
402   // CHECK-LABEL: @test_mm512_maskz_load_ps
403   // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
404   return _mm512_maskz_load_ps(__U, __P);
405 }
406 
test_mm512_load_pd(void * p)407 __m512d test_mm512_load_pd(void *p)
408 {
409   // CHECK-LABEL: @test_mm512_load_pd
410   // CHECK: load <8 x double>, <8 x double>* %{{.*}}, align 64
411   return _mm512_load_pd(p);
412 }
413 
test_mm512_mask_load_pd(__m512d __W,__mmask8 __U,void * __P)414 __m512d test_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void *__P)
415 {
416   // CHECK-LABEL: @test_mm512_mask_load_pd
417   // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
418   return _mm512_mask_load_pd (__W,__U, __P);
419 }
420 
test_mm512_maskz_load_pd(__mmask8 __U,void * __P)421 __m512d test_mm512_maskz_load_pd(__mmask8 __U, void *__P)
422 {
423   // CHECK-LABEL: @test_mm512_maskz_load_pd
424   // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
425   return _mm512_maskz_load_pd(__U, __P);
426 }
427 
test_mm512_set1_pd(double d)428 __m512d test_mm512_set1_pd(double d)
429 {
430   // CHECK-LABEL: @test_mm512_set1_pd
431   // CHECK: insertelement <8 x double> {{.*}}, i32 0
432   // CHECK: insertelement <8 x double> {{.*}}, i32 1
433   // CHECK: insertelement <8 x double> {{.*}}, i32 2
434   // CHECK: insertelement <8 x double> {{.*}}, i32 3
435   // CHECK: insertelement <8 x double> {{.*}}, i32 4
436   // CHECK: insertelement <8 x double> {{.*}}, i32 5
437   // CHECK: insertelement <8 x double> {{.*}}, i32 6
438   // CHECK: insertelement <8 x double> {{.*}}, i32 7
439   return _mm512_set1_pd(d);
440 }
441 
test_mm512_knot(__mmask16 a)442 __mmask16 test_mm512_knot(__mmask16 a)
443 {
444   // CHECK-LABEL: @test_mm512_knot
445   // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
446   // 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>
447   // CHECK: bitcast <16 x i1> [[NOT]] to i16
448   return _mm512_knot(a);
449 }
450 
test_mm512_alignr_epi32(__m512i a,__m512i b)451 __m512i test_mm512_alignr_epi32(__m512i a, __m512i b)
452 {
453   // CHECK-LABEL: @test_mm512_alignr_epi32
454   // 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>
455   return _mm512_alignr_epi32(a, b, 2);
456 }
457 
test_mm512_mask_alignr_epi32(__m512i w,__mmask16 u,__m512i a,__m512i b)458 __m512i test_mm512_mask_alignr_epi32(__m512i w, __mmask16 u, __m512i a, __m512i b)
459 {
460   // CHECK-LABEL: @test_mm512_mask_alignr_epi32
461   // 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>
462   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
463   return _mm512_mask_alignr_epi32(w, u, a, b, 2);
464 }
465 
test_mm512_maskz_alignr_epi32(__mmask16 u,__m512i a,__m512i b)466 __m512i test_mm512_maskz_alignr_epi32( __mmask16 u, __m512i a, __m512i b)
467 {
468   // CHECK-LABEL: @test_mm512_maskz_alignr_epi32
469   // 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>
470   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
471   return _mm512_maskz_alignr_epi32(u, a, b, 2);
472 }
473 
test_mm512_alignr_epi64(__m512i a,__m512i b)474 __m512i test_mm512_alignr_epi64(__m512i a, __m512i b)
475 {
476   // CHECK-LABEL: @test_mm512_alignr_epi64
477   // 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>
478   return _mm512_alignr_epi64(a, b, 2);
479 }
480 
test_mm512_mask_alignr_epi64(__m512i w,__mmask8 u,__m512i a,__m512i b)481 __m512i test_mm512_mask_alignr_epi64(__m512i w, __mmask8 u, __m512i a, __m512i b)
482 {
483   // CHECK-LABEL: @test_mm512_mask_alignr_epi64
484   // 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>
485   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
486   return _mm512_mask_alignr_epi64(w, u, a, b, 2);
487 }
488 
test_mm512_maskz_alignr_epi64(__mmask8 u,__m512i a,__m512i b)489 __m512i test_mm512_maskz_alignr_epi64( __mmask8 u, __m512i a, __m512i b)
490 {
491   // CHECK-LABEL: @test_mm512_maskz_alignr_epi64
492   // 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>
493   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
494   return _mm512_maskz_alignr_epi64(u, a, b, 2);
495 }
496 
test_mm512_fmadd_round_pd(__m512d __A,__m512d __B,__m512d __C)497 __m512d test_mm512_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
498   // CHECK-LABEL: @test_mm512_fmadd_round_pd
499   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
500   return _mm512_fmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
501 }
502 
test_mm512_mask_fmadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)503 __m512d test_mm512_mask_fmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
504   // CHECK-LABEL: @test_mm512_mask_fmadd_round_pd
505   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
506   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
507   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
508   return _mm512_mask_fmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
509 }
test_mm512_mask3_fmadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)510 __m512d test_mm512_mask3_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
511   // CHECK-LABEL: @test_mm512_mask3_fmadd_round_pd
512   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
513   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
514   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
515   return _mm512_mask3_fmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
516 }
test_mm512_maskz_fmadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)517 __m512d test_mm512_maskz_fmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
518   // CHECK-LABEL: @test_mm512_maskz_fmadd_round_pd
519   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
520   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
521   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
522   return _mm512_maskz_fmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
523 }
test_mm512_fmsub_round_pd(__m512d __A,__m512d __B,__m512d __C)524 __m512d test_mm512_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
525   // CHECK-LABEL: @test_mm512_fmsub_round_pd
526   // CHECK: fneg <8 x double>
527   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
528   return _mm512_fmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
529 }
test_mm512_mask_fmsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)530 __m512d test_mm512_mask_fmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
531   // CHECK-LABEL: @test_mm512_mask_fmsub_round_pd
532   // CHECK: fneg <8 x double>
533   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
534   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
535   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
536   return _mm512_mask_fmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
537 }
test_mm512_maskz_fmsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)538 __m512d test_mm512_maskz_fmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
539   // CHECK-LABEL: @test_mm512_maskz_fmsub_round_pd
540   // CHECK: fneg <8 x double>
541   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
542   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
543   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
544   return _mm512_maskz_fmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
545 }
test_mm512_fnmadd_round_pd(__m512d __A,__m512d __B,__m512d __C)546 __m512d test_mm512_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
547   // CHECK-LABEL: @test_mm512_fnmadd_round_pd
548   // CHECK: fneg <8 x double>
549   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
550   return _mm512_fnmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
551 }
test_mm512_mask3_fnmadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)552 __m512d test_mm512_mask3_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
553   // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_pd
554   // CHECK: fneg <8 x double>
555   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
556   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
557   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
558   return _mm512_mask3_fnmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
559 }
test_mm512_maskz_fnmadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)560 __m512d test_mm512_maskz_fnmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
561   // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_pd
562   // CHECK: fneg <8 x double>
563   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
564   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
565   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
566   return _mm512_maskz_fnmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
567 }
test_mm512_fnmsub_round_pd(__m512d __A,__m512d __B,__m512d __C)568 __m512d test_mm512_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
569   // CHECK-LABEL: @test_mm512_fnmsub_round_pd
570   // CHECK: fneg <8 x double>
571   // CHECK: fneg <8 x double>
572   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
573   return _mm512_fnmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
574 }
test_mm512_maskz_fnmsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)575 __m512d test_mm512_maskz_fnmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
576   // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_pd
577   // CHECK: fneg <8 x double>
578   // CHECK: fneg <8 x double>
579   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
580   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
581   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
582   return _mm512_maskz_fnmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
583 }
test_mm512_fmadd_pd(__m512d __A,__m512d __B,__m512d __C)584 __m512d test_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
585   // CHECK-LABEL: @test_mm512_fmadd_pd
586   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
587   return _mm512_fmadd_pd(__A, __B, __C);
588 }
test_mm512_mask_fmadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)589 __m512d test_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
590   // CHECK-LABEL: @test_mm512_mask_fmadd_pd
591   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
592   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
593   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
594   return _mm512_mask_fmadd_pd(__A, __U, __B, __C);
595 }
test_mm512_mask3_fmadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)596 __m512d test_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
597   // CHECK-LABEL: @test_mm512_mask3_fmadd_pd
598   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
599   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
600   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
601   return _mm512_mask3_fmadd_pd(__A, __B, __C, __U);
602 }
test_mm512_maskz_fmadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)603 __m512d test_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
604   // CHECK-LABEL: @test_mm512_maskz_fmadd_pd
605   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
606   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
607   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
608   return _mm512_maskz_fmadd_pd(__U, __A, __B, __C);
609 }
test_mm512_fmsub_pd(__m512d __A,__m512d __B,__m512d __C)610 __m512d test_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
611   // CHECK-LABEL: @test_mm512_fmsub_pd
612   // CHECK: fneg <8 x double> %{{.*}}
613   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
614   return _mm512_fmsub_pd(__A, __B, __C);
615 }
test_mm512_mask_fmsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)616 __m512d test_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
617   // CHECK-LABEL: @test_mm512_mask_fmsub_pd
618   // CHECK: fneg <8 x double> %{{.*}}
619   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
620   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
621   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
622   return _mm512_mask_fmsub_pd(__A, __U, __B, __C);
623 }
test_mm512_maskz_fmsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)624 __m512d test_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
625   // CHECK-LABEL: @test_mm512_maskz_fmsub_pd
626   // CHECK: fneg <8 x double> %{{.*}}
627   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
628   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
629   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
630   return _mm512_maskz_fmsub_pd(__U, __A, __B, __C);
631 }
test_mm512_fnmadd_pd(__m512d __A,__m512d __B,__m512d __C)632 __m512d test_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
633   // CHECK-LABEL: @test_mm512_fnmadd_pd
634   // CHECK: fneg <8 x double> %{{.*}}
635   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
636   return _mm512_fnmadd_pd(__A, __B, __C);
637 }
test_mm512_mask3_fnmadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)638 __m512d test_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
639   // CHECK-LABEL: @test_mm512_mask3_fnmadd_pd
640   // CHECK: fneg <8 x double> %{{.*}}
641   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
642   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
643   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
644   return _mm512_mask3_fnmadd_pd(__A, __B, __C, __U);
645 }
test_mm512_maskz_fnmadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)646 __m512d test_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
647   // CHECK-LABEL: @test_mm512_maskz_fnmadd_pd
648   // CHECK: fneg <8 x double> %{{.*}}
649   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
650   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
651   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
652   return _mm512_maskz_fnmadd_pd(__U, __A, __B, __C);
653 }
test_mm512_fnmsub_pd(__m512d __A,__m512d __B,__m512d __C)654 __m512d test_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
655   // CHECK-LABEL: @test_mm512_fnmsub_pd
656   // CHECK: fneg <8 x double> %{{.*}}
657   // CHECK: fneg <8 x double> %{{.*}}
658   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
659   return _mm512_fnmsub_pd(__A, __B, __C);
660 }
test_mm512_maskz_fnmsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)661 __m512d test_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
662   // CHECK-LABEL: @test_mm512_maskz_fnmsub_pd
663   // CHECK: fneg <8 x double> %{{.*}}
664   // CHECK: fneg <8 x double> %{{.*}}
665   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
666   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
667   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
668   return _mm512_maskz_fnmsub_pd(__U, __A, __B, __C);
669 }
test_mm512_fmadd_round_ps(__m512 __A,__m512 __B,__m512 __C)670 __m512 test_mm512_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
671   // CHECK-LABEL: @test_mm512_fmadd_round_ps
672   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
673   return _mm512_fmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
674 }
test_mm512_mask_fmadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)675 __m512 test_mm512_mask_fmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
676   // CHECK-LABEL: @test_mm512_mask_fmadd_round_ps
677   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
678   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
679   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
680   return _mm512_mask_fmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
681 }
test_mm512_mask3_fmadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)682 __m512 test_mm512_mask3_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
683   // CHECK-LABEL: @test_mm512_mask3_fmadd_round_ps
684   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
685   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
686   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
687   return _mm512_mask3_fmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
688 }
test_mm512_maskz_fmadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)689 __m512 test_mm512_maskz_fmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
690   // CHECK-LABEL: @test_mm512_maskz_fmadd_round_ps
691   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
692   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
693   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
694   return _mm512_maskz_fmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
695 }
test_mm512_fmsub_round_ps(__m512 __A,__m512 __B,__m512 __C)696 __m512 test_mm512_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
697   // CHECK-LABEL: @test_mm512_fmsub_round_ps
698   // CHECK: fneg <16 x float> %{{.*}}
699   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
700   return _mm512_fmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
701 }
test_mm512_mask_fmsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)702 __m512 test_mm512_mask_fmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
703   // CHECK-LABEL: @test_mm512_mask_fmsub_round_ps
704   // CHECK: fneg <16 x float> %{{.*}}
705   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
706   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
707   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
708   return _mm512_mask_fmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
709 }
test_mm512_maskz_fmsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)710 __m512 test_mm512_maskz_fmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
711   // CHECK-LABEL: @test_mm512_maskz_fmsub_round_ps
712   // CHECK: fneg <16 x float> %{{.*}}
713   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
714   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
715   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
716   return _mm512_maskz_fmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
717 }
test_mm512_fnmadd_round_ps(__m512 __A,__m512 __B,__m512 __C)718 __m512 test_mm512_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
719   // CHECK-LABEL: @test_mm512_fnmadd_round_ps
720   // CHECK: fneg <16 x float> %{{.*}}
721   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
722   return _mm512_fnmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
723 }
test_mm512_mask3_fnmadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)724 __m512 test_mm512_mask3_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
725   // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_ps
726   // CHECK: fneg <16 x float> %{{.*}}
727   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
728   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
729   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
730   return _mm512_mask3_fnmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
731 }
test_mm512_maskz_fnmadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)732 __m512 test_mm512_maskz_fnmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
733   // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_ps
734   // CHECK: fneg <16 x float> %{{.*}}
735   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
736   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
737   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
738   return _mm512_maskz_fnmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
739 }
test_mm512_fnmsub_round_ps(__m512 __A,__m512 __B,__m512 __C)740 __m512 test_mm512_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
741   // CHECK-LABEL: @test_mm512_fnmsub_round_ps
742   // CHECK: fneg <16 x float> %{{.*}}
743   // CHECK: fneg <16 x float> %{{.*}}
744   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
745   return _mm512_fnmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
746 }
test_mm512_maskz_fnmsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)747 __m512 test_mm512_maskz_fnmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
748   // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_ps
749   // CHECK: fneg <16 x float> %{{.*}}
750   // CHECK: fneg <16 x float> %{{.*}}
751   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
752   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
753   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
754   return _mm512_maskz_fnmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
755 }
test_mm512_fmadd_ps(__m512 __A,__m512 __B,__m512 __C)756 __m512 test_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
757   // CHECK-LABEL: @test_mm512_fmadd_ps
758   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
759   return _mm512_fmadd_ps(__A, __B, __C);
760 }
test_mm512_mask_fmadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)761 __m512 test_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
762   // CHECK-LABEL: @test_mm512_mask_fmadd_ps
763   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
764   return _mm512_mask_fmadd_ps(__A, __U, __B, __C);
765 }
test_mm512_mask3_fmadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)766 __m512 test_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
767   // CHECK-LABEL: @test_mm512_mask3_fmadd_ps
768   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
769   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
770   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
771   return _mm512_mask3_fmadd_ps(__A, __B, __C, __U);
772 }
test_mm512_maskz_fmadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)773 __m512 test_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
774   // CHECK-LABEL: @test_mm512_maskz_fmadd_ps
775   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
776   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
777   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
778   return _mm512_maskz_fmadd_ps(__U, __A, __B, __C);
779 }
test_mm512_fmsub_ps(__m512 __A,__m512 __B,__m512 __C)780 __m512 test_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
781   // CHECK-LABEL: @test_mm512_fmsub_ps
782   // CHECK: fneg <16 x float> %{{.*}}
783   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
784   return _mm512_fmsub_ps(__A, __B, __C);
785 }
test_mm512_mask_fmsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)786 __m512 test_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
787   // CHECK-LABEL: @test_mm512_mask_fmsub_ps
788   // CHECK: fneg <16 x float> %{{.*}}
789   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
790   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
791   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
792   return _mm512_mask_fmsub_ps(__A, __U, __B, __C);
793 }
test_mm512_maskz_fmsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)794 __m512 test_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
795   // CHECK-LABEL: @test_mm512_maskz_fmsub_ps
796   // CHECK: fneg <16 x float> %{{.*}}
797   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
798   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
799   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
800   return _mm512_maskz_fmsub_ps(__U, __A, __B, __C);
801 }
test_mm512_fnmadd_ps(__m512 __A,__m512 __B,__m512 __C)802 __m512 test_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
803   // CHECK-LABEL: @test_mm512_fnmadd_ps
804   // CHECK: fneg <16 x float> %{{.*}}
805   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
806   return _mm512_fnmadd_ps(__A, __B, __C);
807 }
test_mm512_mask3_fnmadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)808 __m512 test_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
809   // CHECK-LABEL: @test_mm512_mask3_fnmadd_ps
810   // CHECK: fneg <16 x float> %{{.*}}
811   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
812   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
813   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
814   return _mm512_mask3_fnmadd_ps(__A, __B, __C, __U);
815 }
test_mm512_maskz_fnmadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)816 __m512 test_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
817   // CHECK-LABEL: @test_mm512_maskz_fnmadd_ps
818   // CHECK: fneg <16 x float> %{{.*}}
819   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
820   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
821   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
822   return _mm512_maskz_fnmadd_ps(__U, __A, __B, __C);
823 }
test_mm512_fnmsub_ps(__m512 __A,__m512 __B,__m512 __C)824 __m512 test_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
825   // CHECK-LABEL: @test_mm512_fnmsub_ps
826   // CHECK: fneg <16 x float> %{{.*}}
827   // CHECK: fneg <16 x float> %{{.*}}
828   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
829   return _mm512_fnmsub_ps(__A, __B, __C);
830 }
test_mm512_maskz_fnmsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)831 __m512 test_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
832   // CHECK-LABEL: @test_mm512_maskz_fnmsub_ps
833   // CHECK: fneg <16 x float> %{{.*}}
834   // CHECK: fneg <16 x float> %{{.*}}
835   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
836   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
837   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
838   return _mm512_maskz_fnmsub_ps(__U, __A, __B, __C);
839 }
test_mm512_fmaddsub_round_pd(__m512d __A,__m512d __B,__m512d __C)840 __m512d test_mm512_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
841   // CHECK-LABEL: @test_mm512_fmaddsub_round_pd
842   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
843   return _mm512_fmaddsub_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
844 }
test_mm512_mask_fmaddsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)845 __m512d test_mm512_mask_fmaddsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
846   // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_pd
847   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
848   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
849   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
850   return _mm512_mask_fmaddsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
851 }
test_mm512_mask3_fmaddsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)852 __m512d test_mm512_mask3_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
853   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_pd
854   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
855   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
856   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
857   return _mm512_mask3_fmaddsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
858 }
test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)859 __m512d test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
860   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_pd
861   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
862   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
863   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
864   return _mm512_maskz_fmaddsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
865 }
test_mm512_fmsubadd_round_pd(__m512d __A,__m512d __B,__m512d __C)866 __m512d test_mm512_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
867   // CHECK-LABEL: @test_mm512_fmsubadd_round_pd
868   // CHECK: fneg <8 x double> %{{.*}}
869   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
870   return _mm512_fmsubadd_round_pd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
871 }
test_mm512_mask_fmsubadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)872 __m512d test_mm512_mask_fmsubadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
873   // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_pd
874   // CHECK: fneg <8 x double> %{{.*}}
875   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
876   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
877   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
878   return _mm512_mask_fmsubadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
879 }
test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)880 __m512d test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
881   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_pd
882   // CHECK: fneg <8 x double> %{{.*}}
883   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
884   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
885   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
886   return _mm512_maskz_fmsubadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
887 }
test_mm512_fmaddsub_pd(__m512d __A,__m512d __B,__m512d __C)888 __m512d test_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C) {
889   // CHECK-LABEL: @test_mm512_fmaddsub_pd
890   // CHECK-NOT: fneg
891   // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
892   return _mm512_fmaddsub_pd(__A, __B, __C);
893 }
test_mm512_mask_fmaddsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)894 __m512d test_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
895   // CHECK-LABEL: @test_mm512_mask_fmaddsub_pd
896   // CHECK-NOT: fneg
897   // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
898   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
899   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
900   return _mm512_mask_fmaddsub_pd(__A, __U, __B, __C);
901 }
test_mm512_mask3_fmaddsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)902 __m512d test_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
903   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_pd
904   // CHECK-NOT: fneg
905   // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
906   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
907   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
908   return _mm512_mask3_fmaddsub_pd(__A, __B, __C, __U);
909 }
test_mm512_maskz_fmaddsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)910 __m512d test_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
911   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_pd
912   // CHECK-NOT: fneg
913   // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
914   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
915   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
916   return _mm512_maskz_fmaddsub_pd(__U, __A, __B, __C);
917 }
test_mm512_fmsubadd_pd(__m512d __A,__m512d __B,__m512d __C)918 __m512d test_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C) {
919   // CHECK-LABEL: @test_mm512_fmsubadd_pd
920   // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
921   // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
922   return _mm512_fmsubadd_pd(__A, __B, __C);
923 }
test_mm512_mask_fmsubadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)924 __m512d test_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
925   // CHECK-LABEL: @test_mm512_mask_fmsubadd_pd
926   // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
927   // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
928   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
929   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
930   return _mm512_mask_fmsubadd_pd(__A, __U, __B, __C);
931 }
test_mm512_maskz_fmsubadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)932 __m512d test_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
933   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_pd
934   // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
935   // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
936   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
937   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
938   return _mm512_maskz_fmsubadd_pd(__U, __A, __B, __C);
939 }
test_mm512_fmaddsub_round_ps(__m512 __A,__m512 __B,__m512 __C)940 __m512 test_mm512_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
941   // CHECK-LABEL: @test_mm512_fmaddsub_round_ps
942   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
943   return _mm512_fmaddsub_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
944 }
test_mm512_mask_fmaddsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)945 __m512 test_mm512_mask_fmaddsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
946   // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_ps
947   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
948   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
949   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
950   return _mm512_mask_fmaddsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
951 }
test_mm512_mask3_fmaddsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)952 __m512 test_mm512_mask3_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
953   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_ps
954   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
955   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
956   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
957   return _mm512_mask3_fmaddsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
958 }
test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)959 __m512 test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
960   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_ps
961   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
962   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
963   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
964   return _mm512_maskz_fmaddsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
965 }
test_mm512_fmsubadd_round_ps(__m512 __A,__m512 __B,__m512 __C)966 __m512 test_mm512_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
967   // CHECK-LABEL: @test_mm512_fmsubadd_round_ps
968   // CHECK: fneg <16 x float> %{{.*}}
969   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
970   return _mm512_fmsubadd_round_ps(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
971 }
test_mm512_mask_fmsubadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)972 __m512 test_mm512_mask_fmsubadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
973   // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_ps
974   // CHECK: fneg <16 x float> %{{.*}}
975   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
976   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
977   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
978   return _mm512_mask_fmsubadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
979 }
test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)980 __m512 test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
981   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_ps
982   // CHECK: fneg <16 x float> %{{.*}}
983   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
984   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
985   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
986   return _mm512_maskz_fmsubadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
987 }
test_mm512_fmaddsub_ps(__m512 __A,__m512 __B,__m512 __C)988 __m512 test_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C) {
989   // CHECK-LABEL: @test_mm512_fmaddsub_ps
990   // CHECK-NOT: fneg
991   // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
992   return _mm512_fmaddsub_ps(__A, __B, __C);
993 }
test_mm512_mask_fmaddsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)994 __m512 test_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
995   // CHECK-LABEL: @test_mm512_mask_fmaddsub_ps
996   // CHECK-NOT: fneg
997   // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
998   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
999   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1000   return _mm512_mask_fmaddsub_ps(__A, __U, __B, __C);
1001 }
test_mm512_mask3_fmaddsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1002 __m512 test_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1003   // CHECK-LABEL: @test_mm512_mask3_fmaddsub_ps
1004   // CHECK-NOT: fneg
1005   // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1006   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1007   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1008   return _mm512_mask3_fmaddsub_ps(__A, __B, __C, __U);
1009 }
test_mm512_maskz_fmaddsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)1010 __m512 test_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
1011   // CHECK-LABEL: @test_mm512_maskz_fmaddsub_ps
1012   // CHECK-NOT: fneg
1013   // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1014   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1015   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1016   return _mm512_maskz_fmaddsub_ps(__U, __A, __B, __C);
1017 }
test_mm512_fmsubadd_ps(__m512 __A,__m512 __B,__m512 __C)1018 __m512 test_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C) {
1019   // CHECK-LABEL: @test_mm512_fmsubadd_ps
1020   // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1021   // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1022   return _mm512_fmsubadd_ps(__A, __B, __C);
1023 }
test_mm512_mask_fmsubadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1024 __m512 test_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1025   // CHECK-LABEL: @test_mm512_mask_fmsubadd_ps
1026   // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1027   // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1028   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1029   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1030   return _mm512_mask_fmsubadd_ps(__A, __U, __B, __C);
1031 }
test_mm512_maskz_fmsubadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)1032 __m512 test_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
1033   // CHECK-LABEL: @test_mm512_maskz_fmsubadd_ps
1034   // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1035   // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1036   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1037   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1038   return _mm512_maskz_fmsubadd_ps(__U, __A, __B, __C);
1039 }
test_mm512_mask3_fmsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1040 __m512d test_mm512_mask3_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1041   // CHECK-LABEL: @test_mm512_mask3_fmsub_round_pd
1042   // CHECK: fneg <8 x double> %{{.*}}
1043   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1044   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1045   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1046   return _mm512_mask3_fmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1047 }
test_mm512_mask3_fmsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1048 __m512d test_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1049   // CHECK-LABEL: @test_mm512_mask3_fmsub_pd
1050   // CHECK: fneg <8 x double> %{{.*}}
1051   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1052   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1053   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1054   return _mm512_mask3_fmsub_pd(__A, __B, __C, __U);
1055 }
test_mm512_mask3_fmsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1056 __m512 test_mm512_mask3_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1057   // CHECK-LABEL: @test_mm512_mask3_fmsub_round_ps
1058   // CHECK: fneg <16 x float> %{{.*}}
1059   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1060   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1061   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1062   return _mm512_mask3_fmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1063 }
test_mm512_mask3_fmsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1064 __m512 test_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1065   // CHECK-LABEL: @test_mm512_mask3_fmsub_ps
1066   // CHECK: fneg <16 x float> %{{.*}}
1067   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1068   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1069   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1070   return _mm512_mask3_fmsub_ps(__A, __B, __C, __U);
1071 }
test_mm512_mask3_fmsubadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1072 __m512d test_mm512_mask3_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1073   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_pd
1074   // CHECK: fneg <8 x double> %{{.*}}
1075   // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
1076   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1077   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1078   return _mm512_mask3_fmsubadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1079 }
test_mm512_mask3_fmsubadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1080 __m512d test_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1081   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_pd
1082   // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
1083   // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
1084   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1085   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1086   return _mm512_mask3_fmsubadd_pd(__A, __B, __C, __U);
1087 }
test_mm512_mask3_fmsubadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1088 __m512 test_mm512_mask3_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1089   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_ps
1090   // CHECK: fneg <16 x float> %{{.*}}
1091   // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
1092   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1093   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1094   return _mm512_mask3_fmsubadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1095 }
test_mm512_mask3_fmsubadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1096 __m512 test_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1097   // CHECK-LABEL: @test_mm512_mask3_fmsubadd_ps
1098   // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1099   // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1100   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1101   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1102   return _mm512_mask3_fmsubadd_ps(__A, __B, __C, __U);
1103 }
test_mm512_mask_fnmadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1104 __m512d test_mm512_mask_fnmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1105   // CHECK-LABEL: @test_mm512_mask_fnmadd_round_pd
1106   // CHECK: fneg <8 x double>
1107   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1108   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1109   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1110   return _mm512_mask_fnmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1111 }
test_mm512_mask_fnmadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1112 __m512d test_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1113   // CHECK-LABEL: @test_mm512_mask_fnmadd_pd
1114   // CHECK: fneg <8 x double> %{{.*}}
1115   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1116   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1117   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1118   return _mm512_mask_fnmadd_pd(__A, __U, __B, __C);
1119 }
test_mm512_mask_fnmadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1120 __m512 test_mm512_mask_fnmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1121   // CHECK-LABEL: @test_mm512_mask_fnmadd_round_ps
1122   // CHECK: fneg <16 x float> %{{.*}}
1123   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1124   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1125   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1126   return _mm512_mask_fnmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1127 }
test_mm512_mask_fnmadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1128 __m512 test_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1129   // CHECK-LABEL: @test_mm512_mask_fnmadd_ps
1130   // CHECK: fneg <16 x float> %{{.*}}
1131   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1132   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1133   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1134   return _mm512_mask_fnmadd_ps(__A, __U, __B, __C);
1135 }
test_mm512_mask_fnmsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1136 __m512d test_mm512_mask_fnmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1137   // CHECK-LABEL: @test_mm512_mask_fnmsub_round_pd
1138   // CHECK: fneg <8 x double>
1139   // CHECK: fneg <8 x double>
1140   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1141   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1142   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1143   return _mm512_mask_fnmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1144 }
test_mm512_mask3_fnmsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1145 __m512d test_mm512_mask3_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1146   // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_pd
1147   // CHECK: fneg <8 x double>
1148   // CHECK: fneg <8 x double>
1149   // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1150   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1151   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1152   return _mm512_mask3_fnmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1153 }
test_mm512_mask_fnmsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1154 __m512d test_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1155   // CHECK-LABEL: @test_mm512_mask_fnmsub_pd
1156   // CHECK: fneg <8 x double> %{{.*}}
1157   // CHECK: fneg <8 x double> %{{.*}}
1158   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1159   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1160   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1161   return _mm512_mask_fnmsub_pd(__A, __U, __B, __C);
1162 }
test_mm512_mask3_fnmsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1163 __m512d test_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1164   // CHECK-LABEL: @test_mm512_mask3_fnmsub_pd
1165   // CHECK: fneg <8 x double> %{{.*}}
1166   // CHECK: fneg <8 x double> %{{.*}}
1167   // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1168   // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1169   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1170   return _mm512_mask3_fnmsub_pd(__A, __B, __C, __U);
1171 }
test_mm512_mask_fnmsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1172 __m512 test_mm512_mask_fnmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1173   // CHECK-LABEL: @test_mm512_mask_fnmsub_round_ps
1174   // CHECK: fneg <16 x float> %{{.*}}
1175   // CHECK: fneg <16 x float> %{{.*}}
1176   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1177   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1178   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1179   return _mm512_mask_fnmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1180 }
test_mm512_mask3_fnmsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1181 __m512 test_mm512_mask3_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1182   // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_ps
1183   // CHECK: fneg <16 x float> %{{.*}}
1184   // CHECK: fneg <16 x float> %{{.*}}
1185   // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1186   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1187   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1188   return _mm512_mask3_fnmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
1189 }
test_mm512_mask_fnmsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1190 __m512 test_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1191   // CHECK-LABEL: @test_mm512_mask_fnmsub_ps
1192   // CHECK: fneg <16 x float> %{{.*}}
1193   // CHECK: fneg <16 x float> %{{.*}}
1194   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1195   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1196   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1197   return _mm512_mask_fnmsub_ps(__A, __U, __B, __C);
1198 }
test_mm512_mask3_fnmsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1199 __m512 test_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1200   // CHECK-LABEL: @test_mm512_mask3_fnmsub_ps
1201   // CHECK: fneg <16 x float> %{{.*}}
1202   // CHECK: fneg <16 x float> %{{.*}}
1203   // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1204   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1205   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1206   return _mm512_mask3_fnmsub_ps(__A, __B, __C, __U);
1207 }
1208 
test_mm512_cmpeq_epi32_mask(__m512i __a,__m512i __b)1209 __mmask16 test_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
1210   // CHECK-LABEL: @test_mm512_cmpeq_epi32_mask
1211   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1212   return (__mmask16)_mm512_cmpeq_epi32_mask(__a, __b);
1213 }
1214 
test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)1215 __mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1216   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi32_mask
1217   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1218   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1219   return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b);
1220 }
1221 
test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)1222 __mmask8 test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1223   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi64_mask
1224   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1225   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1226   return (__mmask8)_mm512_mask_cmpeq_epi64_mask(__u, __a, __b);
1227 }
1228 
test_mm512_cmpeq_epi64_mask(__m512i __a,__m512i __b)1229 __mmask8 test_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
1230   // CHECK-LABEL: @test_mm512_cmpeq_epi64_mask
1231   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1232   return (__mmask8)_mm512_cmpeq_epi64_mask(__a, __b);
1233 }
1234 
test_mm512_cmpgt_epi32_mask(__m512i __a,__m512i __b)1235 __mmask16 test_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
1236   // CHECK-LABEL: @test_mm512_cmpgt_epi32_mask
1237   // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1238   return (__mmask16)_mm512_cmpgt_epi32_mask(__a, __b);
1239 }
1240 
test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)1241 __mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1242   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi32_mask
1243   // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1244   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1245   return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b);
1246 }
1247 
test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)1248 __mmask8 test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1249   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi64_mask
1250   // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1251   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1252   return (__mmask8)_mm512_mask_cmpgt_epi64_mask(__u, __a, __b);
1253 }
1254 
test_mm512_cmpgt_epi64_mask(__m512i __a,__m512i __b)1255 __mmask8 test_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
1256   // CHECK-LABEL: @test_mm512_cmpgt_epi64_mask
1257   // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1258   return (__mmask8)_mm512_cmpgt_epi64_mask(__a, __b);
1259 }
1260 
test_mm512_unpackhi_pd(__m512d a,__m512d b)1261 __m512d test_mm512_unpackhi_pd(__m512d a, __m512d b)
1262 {
1263   // CHECK-LABEL: @test_mm512_unpackhi_pd
1264   // CHECK: shufflevector <8 x double> {{.*}} <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1265   return _mm512_unpackhi_pd(a, b);
1266 }
1267 
test_mm512_unpacklo_pd(__m512d a,__m512d b)1268 __m512d test_mm512_unpacklo_pd(__m512d a, __m512d b)
1269 {
1270   // CHECK-LABEL: @test_mm512_unpacklo_pd
1271   // CHECK: shufflevector <8 x double> {{.*}} <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1272   return _mm512_unpacklo_pd(a, b);
1273 }
1274 
test_mm512_unpackhi_ps(__m512 a,__m512 b)1275 __m512 test_mm512_unpackhi_ps(__m512 a, __m512 b)
1276 {
1277   // CHECK-LABEL: @test_mm512_unpackhi_ps
1278   // 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>
1279   return _mm512_unpackhi_ps(a, b);
1280 }
1281 
test_mm512_unpacklo_ps(__m512 a,__m512 b)1282 __m512 test_mm512_unpacklo_ps(__m512 a, __m512 b)
1283 {
1284   // CHECK-LABEL: @test_mm512_unpacklo_ps
1285   // 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>
1286   return _mm512_unpacklo_ps(a, b);
1287 }
1288 
test_mm512_cmp_round_ps_mask(__m512 a,__m512 b)1289 __mmask16 test_mm512_cmp_round_ps_mask(__m512 a, __m512 b) {
1290   // CHECK-LABEL: @test_mm512_cmp_round_ps_mask
1291   // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1292   return _mm512_cmp_round_ps_mask(a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
1293 }
1294 
test_mm512_mask_cmp_round_ps_mask(__mmask16 m,__m512 a,__m512 b)1295 __mmask16 test_mm512_mask_cmp_round_ps_mask(__mmask16 m, __m512 a, __m512 b) {
1296   // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask
1297   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1298   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1299   return _mm512_mask_cmp_round_ps_mask(m, a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
1300 }
1301 
test_mm512_cmp_ps_mask_eq_oq(__m512 a,__m512 b)1302 __mmask16 test_mm512_cmp_ps_mask_eq_oq(__m512 a, __m512 b) {
1303   // CHECK-LABEL: @test_mm512_cmp_ps_mask_eq_oq
1304   // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1305   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OQ);
1306 }
1307 
test_mm512_cmp_ps_mask_lt_os(__m512 a,__m512 b)1308 __mmask16 test_mm512_cmp_ps_mask_lt_os(__m512 a, __m512 b) {
1309   // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_os
1310   // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1311   return _mm512_cmp_ps_mask(a, b, _CMP_LT_OS);
1312 }
1313 
test_mm512_cmp_ps_mask_le_os(__m512 a,__m512 b)1314 __mmask16 test_mm512_cmp_ps_mask_le_os(__m512 a, __m512 b) {
1315   // CHECK-LABEL: test_mm512_cmp_ps_mask_le_os
1316   // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1317   return _mm512_cmp_ps_mask(a, b, _CMP_LE_OS);
1318 }
1319 
test_mm512_cmp_ps_mask_unord_q(__m512 a,__m512 b)1320 __mmask16 test_mm512_cmp_ps_mask_unord_q(__m512 a, __m512 b) {
1321   // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_q
1322   // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1323   return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_Q);
1324 }
1325 
test_mm512_cmp_ps_mask_neq_uq(__m512 a,__m512 b)1326 __mmask16 test_mm512_cmp_ps_mask_neq_uq(__m512 a, __m512 b) {
1327   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_uq
1328   // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1329   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
1330 }
1331 
test_mm512_cmp_ps_mask_nlt_us(__m512 a,__m512 b)1332 __mmask16 test_mm512_cmp_ps_mask_nlt_us(__m512 a, __m512 b) {
1333   // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_us
1334   // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1335   return _mm512_cmp_ps_mask(a, b, _CMP_NLT_US);
1336 }
1337 
test_mm512_cmp_ps_mask_nle_us(__m512 a,__m512 b)1338 __mmask16 test_mm512_cmp_ps_mask_nle_us(__m512 a, __m512 b) {
1339   // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_us
1340   // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1341   return _mm512_cmp_ps_mask(a, b, _CMP_NLE_US);
1342 }
1343 
test_mm512_cmp_ps_mask_ord_q(__m512 a,__m512 b)1344 __mmask16 test_mm512_cmp_ps_mask_ord_q(__m512 a, __m512 b) {
1345   // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_q
1346   // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1347   return _mm512_cmp_ps_mask(a, b, _CMP_ORD_Q);
1348 }
1349 
test_mm512_cmp_ps_mask_eq_uq(__m512 a,__m512 b)1350 __mmask16 test_mm512_cmp_ps_mask_eq_uq(__m512 a, __m512 b) {
1351   // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_uq
1352   // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1353   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_UQ);
1354 }
1355 
test_mm512_cmp_ps_mask_nge_us(__m512 a,__m512 b)1356 __mmask16 test_mm512_cmp_ps_mask_nge_us(__m512 a, __m512 b) {
1357   // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_us
1358   // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1359   return _mm512_cmp_ps_mask(a, b, _CMP_NGE_US);
1360 }
1361 
test_mm512_cmp_ps_mask_ngt_us(__m512 a,__m512 b)1362 __mmask16 test_mm512_cmp_ps_mask_ngt_us(__m512 a, __m512 b) {
1363   // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_us
1364   // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1365   return _mm512_cmp_ps_mask(a, b, _CMP_NGT_US);
1366 }
1367 
test_mm512_cmp_ps_mask_false_oq(__m512 a,__m512 b)1368 __mmask16 test_mm512_cmp_ps_mask_false_oq(__m512 a, __m512 b) {
1369   // CHECK-LABEL: test_mm512_cmp_ps_mask_false_oq
1370   // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1371   return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
1372 }
1373 
test_mm512_cmp_ps_mask_neq_oq(__m512 a,__m512 b)1374 __mmask16 test_mm512_cmp_ps_mask_neq_oq(__m512 a, __m512 b) {
1375   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_oq
1376   // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1377   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
1378 }
1379 
test_mm512_cmp_ps_mask_ge_os(__m512 a,__m512 b)1380 __mmask16 test_mm512_cmp_ps_mask_ge_os(__m512 a, __m512 b) {
1381   // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_os
1382   // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1383   return _mm512_cmp_ps_mask(a, b, _CMP_GE_OS);
1384 }
1385 
test_mm512_cmp_ps_mask_gt_os(__m512 a,__m512 b)1386 __mmask16 test_mm512_cmp_ps_mask_gt_os(__m512 a, __m512 b) {
1387   // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_os
1388   // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1389   return _mm512_cmp_ps_mask(a, b, _CMP_GT_OS);
1390 }
1391 
test_mm512_cmp_ps_mask_true_uq(__m512 a,__m512 b)1392 __mmask16 test_mm512_cmp_ps_mask_true_uq(__m512 a, __m512 b) {
1393   // CHECK-LABEL: test_mm512_cmp_ps_mask_true_uq
1394   // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1395   return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
1396 }
1397 
test_mm512_cmp_ps_mask_eq_os(__m512 a,__m512 b)1398 __mmask16 test_mm512_cmp_ps_mask_eq_os(__m512 a, __m512 b) {
1399   // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_os
1400   // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1401   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OS);
1402 }
1403 
test_mm512_cmp_ps_mask_lt_oq(__m512 a,__m512 b)1404 __mmask16 test_mm512_cmp_ps_mask_lt_oq(__m512 a, __m512 b) {
1405   // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_oq
1406   // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1407   return _mm512_cmp_ps_mask(a, b, _CMP_LT_OQ);
1408 }
1409 
test_mm512_cmp_ps_mask_le_oq(__m512 a,__m512 b)1410 __mmask16 test_mm512_cmp_ps_mask_le_oq(__m512 a, __m512 b) {
1411   // CHECK-LABEL: test_mm512_cmp_ps_mask_le_oq
1412   // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1413   return _mm512_cmp_ps_mask(a, b, _CMP_LE_OQ);
1414 }
1415 
test_mm512_cmp_ps_mask_unord_s(__m512 a,__m512 b)1416 __mmask16 test_mm512_cmp_ps_mask_unord_s(__m512 a, __m512 b) {
1417   // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_s
1418   // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1419   return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_S);
1420 }
1421 
test_mm512_cmp_ps_mask_neq_us(__m512 a,__m512 b)1422 __mmask16 test_mm512_cmp_ps_mask_neq_us(__m512 a, __m512 b) {
1423   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_us
1424   // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1425   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_US);
1426 }
1427 
test_mm512_cmp_ps_mask_nlt_uq(__m512 a,__m512 b)1428 __mmask16 test_mm512_cmp_ps_mask_nlt_uq(__m512 a, __m512 b) {
1429   // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_uq
1430   // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1431   return _mm512_cmp_ps_mask(a, b, _CMP_NLT_UQ);
1432 }
1433 
test_mm512_cmp_ps_mask_nle_uq(__m512 a,__m512 b)1434 __mmask16 test_mm512_cmp_ps_mask_nle_uq(__m512 a, __m512 b) {
1435   // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_uq
1436   // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1437   return _mm512_cmp_ps_mask(a, b, _CMP_NLE_UQ);
1438 }
1439 
test_mm512_cmp_ps_mask_ord_s(__m512 a,__m512 b)1440 __mmask16 test_mm512_cmp_ps_mask_ord_s(__m512 a, __m512 b) {
1441   // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_s
1442   // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1443   return _mm512_cmp_ps_mask(a, b, _CMP_ORD_S);
1444 }
1445 
test_mm512_cmp_ps_mask_eq_us(__m512 a,__m512 b)1446 __mmask16 test_mm512_cmp_ps_mask_eq_us(__m512 a, __m512 b) {
1447   // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_us
1448   // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1449   return _mm512_cmp_ps_mask(a, b, _CMP_EQ_US);
1450 }
1451 
test_mm512_cmp_ps_mask_nge_uq(__m512 a,__m512 b)1452 __mmask16 test_mm512_cmp_ps_mask_nge_uq(__m512 a, __m512 b) {
1453   // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_uq
1454   // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1455   return _mm512_cmp_ps_mask(a, b, _CMP_NGE_UQ);
1456 }
1457 
test_mm512_cmp_ps_mask_ngt_uq(__m512 a,__m512 b)1458 __mmask16 test_mm512_cmp_ps_mask_ngt_uq(__m512 a, __m512 b) {
1459   // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_uq
1460   // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1461   return _mm512_cmp_ps_mask(a, b, _CMP_NGT_UQ);
1462 }
1463 
test_mm512_cmp_ps_mask_false_os(__m512 a,__m512 b)1464 __mmask16 test_mm512_cmp_ps_mask_false_os(__m512 a, __m512 b) {
1465   // CHECK-LABEL: test_mm512_cmp_ps_mask_false_os
1466   // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1467   return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OS);
1468 }
1469 
test_mm512_cmp_ps_mask_neq_os(__m512 a,__m512 b)1470 __mmask16 test_mm512_cmp_ps_mask_neq_os(__m512 a, __m512 b) {
1471   // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_os
1472   // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1473   return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OS);
1474 }
1475 
test_mm512_cmp_ps_mask_ge_oq(__m512 a,__m512 b)1476 __mmask16 test_mm512_cmp_ps_mask_ge_oq(__m512 a, __m512 b) {
1477   // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_oq
1478   // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1479   return _mm512_cmp_ps_mask(a, b, _CMP_GE_OQ);
1480 }
1481 
test_mm512_cmp_ps_mask_gt_oq(__m512 a,__m512 b)1482 __mmask16 test_mm512_cmp_ps_mask_gt_oq(__m512 a, __m512 b) {
1483   // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_oq
1484   // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1485   return _mm512_cmp_ps_mask(a, b, _CMP_GT_OQ);
1486 }
1487 
test_mm512_cmp_ps_mask_true_us(__m512 a,__m512 b)1488 __mmask16 test_mm512_cmp_ps_mask_true_us(__m512 a, __m512 b) {
1489   // CHECK-LABEL: test_mm512_cmp_ps_mask_true_us
1490   // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1491   return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_US);
1492 }
1493 
test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m,__m512 a,__m512 b)1494 __mmask16 test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m, __m512 a, __m512 b) {
1495   // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask_eq_oq
1496   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1497   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1498   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
1499 }
1500 
test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m,__m512 a,__m512 b)1501 __mmask16 test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m, __m512 a, __m512 b) {
1502   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_os
1503   // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1504   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1505   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
1506 }
1507 
test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m,__m512 a,__m512 b)1508 __mmask16 test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m, __m512 a, __m512 b) {
1509   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_os
1510   // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1511   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1512   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
1513 }
1514 
test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m,__m512 a,__m512 b)1515 __mmask16 test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m, __m512 a, __m512 b) {
1516   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_q
1517   // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1518   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1519   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
1520 }
1521 
test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m,__m512 a,__m512 b)1522 __mmask16 test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m, __m512 a, __m512 b) {
1523   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_uq
1524   // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1525   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1526   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
1527 }
1528 
test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m,__m512 a,__m512 b)1529 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m, __m512 a, __m512 b) {
1530   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_us
1531   // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1532   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1533   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
1534 }
1535 
test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m,__m512 a,__m512 b)1536 __mmask16 test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m, __m512 a, __m512 b) {
1537   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_us
1538   // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1539   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1540   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
1541 }
1542 
test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m,__m512 a,__m512 b)1543 __mmask16 test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m, __m512 a, __m512 b) {
1544   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_q
1545   // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1546   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1547   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
1548 }
1549 
test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m,__m512 a,__m512 b)1550 __mmask16 test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m, __m512 a, __m512 b) {
1551   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_uq
1552   // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1553   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1554   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
1555 }
1556 
test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m,__m512 a,__m512 b)1557 __mmask16 test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m, __m512 a, __m512 b) {
1558   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_us
1559   // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1560   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1561   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
1562 }
1563 
test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m,__m512 a,__m512 b)1564 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m, __m512 a, __m512 b) {
1565   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_us
1566   // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1567   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1568   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
1569 }
1570 
test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m,__m512 a,__m512 b)1571 __mmask16 test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m, __m512 a, __m512 b) {
1572   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_oq
1573   // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1574   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1575   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
1576 }
1577 
test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m,__m512 a,__m512 b)1578 __mmask16 test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m, __m512 a, __m512 b) {
1579   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_oq
1580   // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1581   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1582   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
1583 }
1584 
test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m,__m512 a,__m512 b)1585 __mmask16 test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m, __m512 a, __m512 b) {
1586   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_os
1587   // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1588   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1589   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
1590 }
1591 
test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m,__m512 a,__m512 b)1592 __mmask16 test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m, __m512 a, __m512 b) {
1593   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_os
1594   // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1595   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1596   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
1597 }
1598 
test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m,__m512 a,__m512 b)1599 __mmask16 test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m, __m512 a, __m512 b) {
1600   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_uq
1601   // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1602   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1603   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
1604 }
1605 
test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m,__m512 a,__m512 b)1606 __mmask16 test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m, __m512 a, __m512 b) {
1607   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_os
1608   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1609   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1610   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
1611 }
1612 
test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m,__m512 a,__m512 b)1613 __mmask16 test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m, __m512 a, __m512 b) {
1614   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_oq
1615   // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1616   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1617   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
1618 }
1619 
test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m,__m512 a,__m512 b)1620 __mmask16 test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m, __m512 a, __m512 b) {
1621   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_oq
1622   // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1623   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1624   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
1625 }
1626 
test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m,__m512 a,__m512 b)1627 __mmask16 test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m, __m512 a, __m512 b) {
1628   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_s
1629   // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1630   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1631   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
1632 }
1633 
test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m,__m512 a,__m512 b)1634 __mmask16 test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m, __m512 a, __m512 b) {
1635   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_us
1636   // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1637   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1638   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
1639 }
1640 
test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m,__m512 a,__m512 b)1641 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m, __m512 a, __m512 b) {
1642   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_uq
1643   // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1644   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1645   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
1646 }
1647 
test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m,__m512 a,__m512 b)1648 __mmask16 test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m, __m512 a, __m512 b) {
1649   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_uq
1650   // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1651   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1652   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
1653 }
1654 
test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m,__m512 a,__m512 b)1655 __mmask16 test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m, __m512 a, __m512 b) {
1656   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_s
1657   // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1658   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1659   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
1660 }
1661 
test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m,__m512 a,__m512 b)1662 __mmask16 test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m, __m512 a, __m512 b) {
1663   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_us
1664   // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1665   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1666   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
1667 }
1668 
test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m,__m512 a,__m512 b)1669 __mmask16 test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m, __m512 a, __m512 b) {
1670   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_uq
1671   // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1672   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1673   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
1674 }
1675 
test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m,__m512 a,__m512 b)1676 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m, __m512 a, __m512 b) {
1677   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_uq
1678   // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1679   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1680   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
1681 }
1682 
test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m,__m512 a,__m512 b)1683 __mmask16 test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m, __m512 a, __m512 b) {
1684   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_os
1685   // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1686   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1687   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
1688 }
1689 
test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m,__m512 a,__m512 b)1690 __mmask16 test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m, __m512 a, __m512 b) {
1691   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_os
1692   // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1693   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1694   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
1695 }
1696 
test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m,__m512 a,__m512 b)1697 __mmask16 test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m, __m512 a, __m512 b) {
1698   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_oq
1699   // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1700   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1701   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
1702 }
1703 
test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m,__m512 a,__m512 b)1704 __mmask16 test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m, __m512 a, __m512 b) {
1705   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_oq
1706   // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1707   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1708   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
1709 }
1710 
test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m,__m512 a,__m512 b)1711 __mmask16 test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m, __m512 a, __m512 b) {
1712   // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_us
1713   // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1714   // CHECK: and <16 x i1> [[CMP]], {{.*}}
1715   return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
1716 }
1717 
test_mm512_cmp_round_pd_mask(__m512d a,__m512d b)1718 __mmask8 test_mm512_cmp_round_pd_mask(__m512d a, __m512d b) {
1719   // CHECK-LABEL: @test_mm512_cmp_round_pd_mask
1720   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1721   return _mm512_cmp_round_pd_mask(a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
1722 }
1723 
test_mm512_mask_cmp_round_pd_mask(__mmask8 m,__m512d a,__m512d b)1724 __mmask8 test_mm512_mask_cmp_round_pd_mask(__mmask8 m, __m512d a, __m512d b) {
1725   // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask
1726   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1727   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1728   return _mm512_mask_cmp_round_pd_mask(m, a, b, _CMP_EQ_OQ, _MM_FROUND_NO_EXC);
1729 }
1730 
test_mm512_cmp_pd_mask_eq_oq(__m512d a,__m512d b)1731 __mmask8 test_mm512_cmp_pd_mask_eq_oq(__m512d a, __m512d b) {
1732   // CHECK-LABEL: @test_mm512_cmp_pd_mask_eq_oq
1733   // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1734   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OQ);
1735 }
1736 
test_mm512_cmp_pd_mask_lt_os(__m512d a,__m512d b)1737 __mmask8 test_mm512_cmp_pd_mask_lt_os(__m512d a, __m512d b) {
1738   // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_os
1739   // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1740   return _mm512_cmp_pd_mask(a, b, _CMP_LT_OS);
1741 }
1742 
test_mm512_cmp_pd_mask_le_os(__m512d a,__m512d b)1743 __mmask8 test_mm512_cmp_pd_mask_le_os(__m512d a, __m512d b) {
1744   // CHECK-LABEL: test_mm512_cmp_pd_mask_le_os
1745   // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1746   return _mm512_cmp_pd_mask(a, b, _CMP_LE_OS);
1747 }
1748 
test_mm512_cmp_pd_mask_unord_q(__m512d a,__m512d b)1749 __mmask8 test_mm512_cmp_pd_mask_unord_q(__m512d a, __m512d b) {
1750   // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_q
1751   // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1752   return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_Q);
1753 }
1754 
test_mm512_cmp_pd_mask_neq_uq(__m512d a,__m512d b)1755 __mmask8 test_mm512_cmp_pd_mask_neq_uq(__m512d a, __m512d b) {
1756   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_uq
1757   // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1758   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
1759 }
1760 
test_mm512_cmp_pd_mask_nlt_us(__m512d a,__m512d b)1761 __mmask8 test_mm512_cmp_pd_mask_nlt_us(__m512d a, __m512d b) {
1762   // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_us
1763   // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1764   return _mm512_cmp_pd_mask(a, b, _CMP_NLT_US);
1765 }
1766 
test_mm512_cmp_pd_mask_nle_us(__m512d a,__m512d b)1767 __mmask8 test_mm512_cmp_pd_mask_nle_us(__m512d a, __m512d b) {
1768   // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_us
1769   // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1770   return _mm512_cmp_pd_mask(a, b, _CMP_NLE_US);
1771 }
1772 
test_mm512_cmp_pd_mask_ord_q(__m512d a,__m512d b)1773 __mmask8 test_mm512_cmp_pd_mask_ord_q(__m512d a, __m512d b) {
1774   // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_q
1775   // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1776   return _mm512_cmp_pd_mask(a, b, _CMP_ORD_Q);
1777 }
1778 
test_mm512_cmp_pd_mask_eq_uq(__m512d a,__m512d b)1779 __mmask8 test_mm512_cmp_pd_mask_eq_uq(__m512d a, __m512d b) {
1780   // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_uq
1781   // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1782   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_UQ);
1783 }
1784 
test_mm512_cmp_pd_mask_nge_us(__m512d a,__m512d b)1785 __mmask8 test_mm512_cmp_pd_mask_nge_us(__m512d a, __m512d b) {
1786   // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_us
1787   // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1788   return _mm512_cmp_pd_mask(a, b, _CMP_NGE_US);
1789 }
1790 
test_mm512_cmp_pd_mask_ngt_us(__m512d a,__m512d b)1791 __mmask8 test_mm512_cmp_pd_mask_ngt_us(__m512d a, __m512d b) {
1792   // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_us
1793   // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1794   return _mm512_cmp_pd_mask(a, b, _CMP_NGT_US);
1795 }
1796 
test_mm512_cmp_pd_mask_false_oq(__m512d a,__m512d b)1797 __mmask8 test_mm512_cmp_pd_mask_false_oq(__m512d a, __m512d b) {
1798   // CHECK-LABEL: test_mm512_cmp_pd_mask_false_oq
1799   // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1800   return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
1801 }
1802 
test_mm512_cmp_pd_mask_neq_oq(__m512d a,__m512d b)1803 __mmask8 test_mm512_cmp_pd_mask_neq_oq(__m512d a, __m512d b) {
1804   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_oq
1805   // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1806   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
1807 }
1808 
test_mm512_cmp_pd_mask_ge_os(__m512d a,__m512d b)1809 __mmask8 test_mm512_cmp_pd_mask_ge_os(__m512d a, __m512d b) {
1810   // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_os
1811   // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1812   return _mm512_cmp_pd_mask(a, b, _CMP_GE_OS);
1813 }
1814 
test_mm512_cmp_pd_mask_gt_os(__m512d a,__m512d b)1815 __mmask8 test_mm512_cmp_pd_mask_gt_os(__m512d a, __m512d b) {
1816   // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_os
1817   // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1818   return _mm512_cmp_pd_mask(a, b, _CMP_GT_OS);
1819 }
1820 
test_mm512_cmp_pd_mask_true_uq(__m512d a,__m512d b)1821 __mmask8 test_mm512_cmp_pd_mask_true_uq(__m512d a, __m512d b) {
1822   // CHECK-LABEL: test_mm512_cmp_pd_mask_true_uq
1823   // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1824   return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
1825 }
1826 
test_mm512_cmp_pd_mask_eq_os(__m512d a,__m512d b)1827 __mmask8 test_mm512_cmp_pd_mask_eq_os(__m512d a, __m512d b) {
1828   // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_os
1829   // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1830   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OS);
1831 }
1832 
test_mm512_cmp_pd_mask_lt_oq(__m512d a,__m512d b)1833 __mmask8 test_mm512_cmp_pd_mask_lt_oq(__m512d a, __m512d b) {
1834   // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_oq
1835   // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1836   return _mm512_cmp_pd_mask(a, b, _CMP_LT_OQ);
1837 }
1838 
test_mm512_cmp_pd_mask_le_oq(__m512d a,__m512d b)1839 __mmask8 test_mm512_cmp_pd_mask_le_oq(__m512d a, __m512d b) {
1840   // CHECK-LABEL: test_mm512_cmp_pd_mask_le_oq
1841   // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1842   return _mm512_cmp_pd_mask(a, b, _CMP_LE_OQ);
1843 }
1844 
test_mm512_cmp_pd_mask_unord_s(__m512d a,__m512d b)1845 __mmask8 test_mm512_cmp_pd_mask_unord_s(__m512d a, __m512d b) {
1846   // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_s
1847   // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1848   return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_S);
1849 }
1850 
test_mm512_cmp_pd_mask_neq_us(__m512d a,__m512d b)1851 __mmask8 test_mm512_cmp_pd_mask_neq_us(__m512d a, __m512d b) {
1852   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_us
1853   // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1854   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_US);
1855 }
1856 
test_mm512_cmp_pd_mask_nlt_uq(__m512d a,__m512d b)1857 __mmask8 test_mm512_cmp_pd_mask_nlt_uq(__m512d a, __m512d b) {
1858   // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_uq
1859   // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1860   return _mm512_cmp_pd_mask(a, b, _CMP_NLT_UQ);
1861 }
1862 
test_mm512_cmp_pd_mask_nle_uq(__m512d a,__m512d b)1863 __mmask8 test_mm512_cmp_pd_mask_nle_uq(__m512d a, __m512d b) {
1864   // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_uq
1865   // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1866   return _mm512_cmp_pd_mask(a, b, _CMP_NLE_UQ);
1867 }
1868 
test_mm512_cmp_pd_mask_ord_s(__m512d a,__m512d b)1869 __mmask8 test_mm512_cmp_pd_mask_ord_s(__m512d a, __m512d b) {
1870   // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_s
1871   // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1872   return _mm512_cmp_pd_mask(a, b, _CMP_ORD_S);
1873 }
1874 
test_mm512_cmp_pd_mask_eq_us(__m512d a,__m512d b)1875 __mmask8 test_mm512_cmp_pd_mask_eq_us(__m512d a, __m512d b) {
1876   // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_us
1877   // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1878   return _mm512_cmp_pd_mask(a, b, _CMP_EQ_US);
1879 }
1880 
test_mm512_cmp_pd_mask_nge_uq(__m512d a,__m512d b)1881 __mmask8 test_mm512_cmp_pd_mask_nge_uq(__m512d a, __m512d b) {
1882   // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_uq
1883   // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1884   return _mm512_cmp_pd_mask(a, b, _CMP_NGE_UQ);
1885 }
1886 
test_mm512_cmp_pd_mask_ngt_uq(__m512d a,__m512d b)1887 __mmask8 test_mm512_cmp_pd_mask_ngt_uq(__m512d a, __m512d b) {
1888   // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_uq
1889   // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1890   return _mm512_cmp_pd_mask(a, b, _CMP_NGT_UQ);
1891 }
1892 
test_mm512_cmp_pd_mask_false_os(__m512d a,__m512d b)1893 __mmask8 test_mm512_cmp_pd_mask_false_os(__m512d a, __m512d b) {
1894   // CHECK-LABEL: test_mm512_cmp_pd_mask_false_os
1895   // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1896   return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OS);
1897 }
1898 
test_mm512_cmp_pd_mask_neq_os(__m512d a,__m512d b)1899 __mmask8 test_mm512_cmp_pd_mask_neq_os(__m512d a, __m512d b) {
1900   // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_os
1901   // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1902   return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OS);
1903 }
1904 
test_mm512_cmp_pd_mask_ge_oq(__m512d a,__m512d b)1905 __mmask8 test_mm512_cmp_pd_mask_ge_oq(__m512d a, __m512d b) {
1906   // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_oq
1907   // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1908   return _mm512_cmp_pd_mask(a, b, _CMP_GE_OQ);
1909 }
1910 
test_mm512_cmp_pd_mask_gt_oq(__m512d a,__m512d b)1911 __mmask8 test_mm512_cmp_pd_mask_gt_oq(__m512d a, __m512d b) {
1912   // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_oq
1913   // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1914   return _mm512_cmp_pd_mask(a, b, _CMP_GT_OQ);
1915 }
1916 
test_mm512_cmp_pd_mask_true_us(__m512d a,__m512d b)1917 __mmask8 test_mm512_cmp_pd_mask_true_us(__m512d a, __m512d b) {
1918   // CHECK-LABEL: test_mm512_cmp_pd_mask_true_us
1919   // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1920   return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_US);
1921 }
1922 
test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m,__m512d a,__m512d b)1923 __mmask8 test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m512d a, __m512d b) {
1924   // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask_eq_oq
1925   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1926   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1927   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
1928 }
1929 
test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m,__m512d a,__m512d b)1930 __mmask8 test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m, __m512d a, __m512d b) {
1931   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_os
1932   // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
1933   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1934   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
1935 }
1936 
test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m,__m512d a,__m512d b)1937 __mmask8 test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m, __m512d a, __m512d b) {
1938   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_os
1939   // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
1940   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1941   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
1942 }
1943 
test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m,__m512d a,__m512d b)1944 __mmask8 test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m, __m512d a, __m512d b) {
1945   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_q
1946   // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
1947   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1948   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
1949 }
1950 
test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m,__m512d a,__m512d b)1951 __mmask8 test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m512d a, __m512d b) {
1952   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_uq
1953   // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
1954   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1955   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
1956 }
1957 
test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m,__m512d a,__m512d b)1958 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m512d a, __m512d b) {
1959   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_us
1960   // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
1961   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1962   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
1963 }
1964 
test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m,__m512d a,__m512d b)1965 __mmask8 test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m, __m512d a, __m512d b) {
1966   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_us
1967   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1968   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1969   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
1970 }
1971 
test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m,__m512d a,__m512d b)1972 __mmask8 test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m, __m512d a, __m512d b) {
1973   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_q
1974   // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
1975   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1976   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
1977 }
1978 
test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m,__m512d a,__m512d b)1979 __mmask8 test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m512d a, __m512d b) {
1980   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_uq
1981   // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1982   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1983   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
1984 }
1985 
test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m,__m512d a,__m512d b)1986 __mmask8 test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m, __m512d a, __m512d b) {
1987   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_us
1988   // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
1989   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1990   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
1991 }
1992 
test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m,__m512d a,__m512d b)1993 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m512d a, __m512d b) {
1994   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_us
1995   // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
1996   // CHECK: and <8 x i1> [[CMP]], {{.*}}
1997   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
1998 }
1999 
test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m,__m512d a,__m512d b)2000 __mmask8 test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m, __m512d a, __m512d b) {
2001   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_oq
2002   // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
2003   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2004   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
2005 }
2006 
test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m,__m512d a,__m512d b)2007 __mmask8 test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m512d a, __m512d b) {
2008   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_oq
2009   // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2010   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2011   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
2012 }
2013 
test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m,__m512d a,__m512d b)2014 __mmask8 test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m, __m512d a, __m512d b) {
2015   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_os
2016   // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2017   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2018   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
2019 }
2020 
test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m,__m512d a,__m512d b)2021 __mmask8 test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m, __m512d a, __m512d b) {
2022   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_os
2023   // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2024   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2025   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
2026 }
2027 
test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m,__m512d a,__m512d b)2028 __mmask8 test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m, __m512d a, __m512d b) {
2029   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_uq
2030   // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2031   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2032   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
2033 }
2034 
test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m,__m512d a,__m512d b)2035 __mmask8 test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m, __m512d a, __m512d b) {
2036   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_os
2037   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2038   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2039   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
2040 }
2041 
test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m,__m512d a,__m512d b)2042 __mmask8 test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m512d a, __m512d b) {
2043   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_oq
2044   // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2045   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2046   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
2047 }
2048 
test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m,__m512d a,__m512d b)2049 __mmask8 test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m, __m512d a, __m512d b) {
2050   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_oq
2051   // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2052   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2053   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
2054 }
2055 
test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m,__m512d a,__m512d b)2056 __mmask8 test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m, __m512d a, __m512d b) {
2057   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_s
2058   // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2059   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2060   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
2061 }
2062 
test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m,__m512d a,__m512d b)2063 __mmask8 test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m, __m512d a, __m512d b) {
2064   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_us
2065   // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2066   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2067   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
2068 }
2069 
test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m,__m512d a,__m512d b)2070 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m512d a, __m512d b) {
2071   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_uq
2072   // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2073   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2074   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
2075 }
2076 
test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m,__m512d a,__m512d b)2077 __mmask8 test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m512d a, __m512d b) {
2078   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_uq
2079   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2080   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2081   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
2082 }
2083 
test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m,__m512d a,__m512d b)2084 __mmask8 test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m, __m512d a, __m512d b) {
2085   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_s
2086   // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2087   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2088   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
2089 }
2090 
test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m,__m512d a,__m512d b)2091 __mmask8 test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m, __m512d a, __m512d b) {
2092   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_us
2093   // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
2094   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2095   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
2096 }
2097 
test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m,__m512d a,__m512d b)2098 __mmask8 test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m512d a, __m512d b) {
2099   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_uq
2100   // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
2101   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2102   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
2103 }
2104 
test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m,__m512d a,__m512d b)2105 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m512d a, __m512d b) {
2106   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_uq
2107   // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
2108   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2109   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
2110 }
2111 
test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m,__m512d a,__m512d b)2112 __mmask8 test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m, __m512d a, __m512d b) {
2113   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_os
2114   // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
2115   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2116   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
2117 }
2118 
test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m,__m512d a,__m512d b)2119 __mmask8 test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m, __m512d a, __m512d b) {
2120   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_os
2121   // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2122   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2123   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
2124 }
2125 
test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m,__m512d a,__m512d b)2126 __mmask8 test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m512d a, __m512d b) {
2127   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_oq
2128   // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2129   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2130   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
2131 }
2132 
test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m,__m512d a,__m512d b)2133 __mmask8 test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m512d a, __m512d b) {
2134   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_oq
2135   // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2136   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2137   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
2138 }
2139 
test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m,__m512d a,__m512d b)2140 __mmask8 test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m, __m512d a, __m512d b) {
2141   // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_us
2142   // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2143   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2144   return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
2145 }
2146 
test_mm512_mask_cmp_pd_mask(__mmask8 m,__m512d a,__m512d b)2147 __mmask8 test_mm512_mask_cmp_pd_mask(__mmask8 m, __m512d a, __m512d b) {
2148   // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask
2149   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2150   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2151   return _mm512_mask_cmp_pd_mask(m, a, b, 0);
2152 }
2153 
test_mm512_cmpeq_pd_mask(__m512d a,__m512d b)2154 __mmask8 test_mm512_cmpeq_pd_mask(__m512d a, __m512d b) {
2155   // CHECK-LABEL: @test_mm512_cmpeq_pd_mask
2156   // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2157   return _mm512_cmpeq_pd_mask(a, b);
2158 }
2159 
test_mm512_cmpeq_ps_mask(__m512 a,__m512 b)2160 __mmask16 test_mm512_cmpeq_ps_mask(__m512 a, __m512 b) {
2161   // CHECK-LABEL: @test_mm512_cmpeq_ps_mask
2162   // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2163   return _mm512_cmpeq_ps_mask(a, b);
2164 }
2165 
test_mm512_mask_cmpeq_pd_mask(__mmask8 k,__m512d a,__m512d b)2166 __mmask8 test_mm512_mask_cmpeq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2167   // CHECK-LABEL: @test_mm512_mask_cmpeq_pd_mask
2168   // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2169   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2170   return _mm512_mask_cmpeq_pd_mask(k, a, b);
2171 }
2172 
test_mm512_mask_cmpeq_ps_mask(__mmask16 k,__m512 a,__m512 b)2173 __mmask16 test_mm512_mask_cmpeq_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2174   // CHECK-LABEL: @test_mm512_mask_cmpeq_ps_mask
2175   // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2176   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2177   return _mm512_mask_cmpeq_ps_mask(k, a, b);
2178 }
2179 
test_mm512_cmple_pd_mask(__m512d a,__m512d b)2180 __mmask8 test_mm512_cmple_pd_mask(__m512d a, __m512d b) {
2181   // CHECK-LABEL: @test_mm512_cmple_pd_mask
2182   // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
2183   return _mm512_cmple_pd_mask(a, b);
2184 }
2185 
test_mm512_cmple_ps_mask(__m512 a,__m512 b)2186 __mmask16 test_mm512_cmple_ps_mask(__m512 a, __m512 b) {
2187   // CHECK-LABEL: @test_mm512_cmple_ps_mask
2188   // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
2189   return _mm512_cmple_ps_mask(a, b);
2190 }
2191 
test_mm512_mask_cmple_pd_mask(__mmask8 k,__m512d a,__m512d b)2192 __mmask8 test_mm512_mask_cmple_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2193   // CHECK-LABEL: @test_mm512_mask_cmple_pd_mask
2194   // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2195   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2196   return _mm512_mask_cmple_pd_mask(k, a, b);
2197 }
2198 
test_mm512_mask_cmple_ps_mask(__mmask16 k,__m512 a,__m512 b)2199 __mmask16 test_mm512_mask_cmple_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2200   // CHECK-LABEL: @test_mm512_mask_cmple_ps_mask
2201   // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
2202   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2203   return _mm512_mask_cmple_ps_mask(k, a, b);
2204 }
2205 
test_mm512_cmplt_pd_mask(__m512d a,__m512d b)2206 __mmask8 test_mm512_cmplt_pd_mask(__m512d a, __m512d b) {
2207   // CHECK-LABEL: @test_mm512_cmplt_pd_mask
2208   // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
2209   return _mm512_cmplt_pd_mask(a, b);
2210 }
2211 
test_mm512_cmplt_ps_mask(__m512 a,__m512 b)2212 __mmask16 test_mm512_cmplt_ps_mask(__m512 a, __m512 b) {
2213   // CHECK-LABEL: @test_mm512_cmplt_ps_mask
2214   // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
2215   return _mm512_cmplt_ps_mask(a, b);
2216 }
2217 
test_mm512_mask_cmplt_pd_mask(__mmask8 k,__m512d a,__m512d b)2218 __mmask8 test_mm512_mask_cmplt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2219   // CHECK-LABEL: @test_mm512_mask_cmplt_pd_mask
2220   // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2221   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2222   return _mm512_mask_cmplt_pd_mask(k, a, b);
2223 }
2224 
test_mm512_mask_cmplt_ps_mask(__mmask16 k,__m512 a,__m512 b)2225 __mmask16 test_mm512_mask_cmplt_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2226   // CHECK-LABEL: @test_mm512_mask_cmplt_ps_mask
2227   // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
2228   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2229   return _mm512_mask_cmplt_ps_mask(k, a, b);
2230 }
2231 
test_mm512_cmpneq_pd_mask(__m512d a,__m512d b)2232 __mmask8 test_mm512_cmpneq_pd_mask(__m512d a, __m512d b) {
2233   // CHECK-LABEL: @test_mm512_cmpneq_pd_mask
2234   // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
2235   return _mm512_cmpneq_pd_mask(a, b);
2236 }
2237 
test_mm512_cmpneq_ps_mask(__m512 a,__m512 b)2238 __mmask16 test_mm512_cmpneq_ps_mask(__m512 a, __m512 b) {
2239   // CHECK-LABEL: @test_mm512_cmpneq_ps_mask
2240   // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
2241   return _mm512_cmpneq_ps_mask(a, b);
2242 }
2243 
test_mm512_mask_cmpneq_pd_mask(__mmask8 k,__m512d a,__m512d b)2244 __mmask8 test_mm512_mask_cmpneq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2245   // CHECK-LABEL: @test_mm512_mask_cmpneq_pd_mask
2246   // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2247   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2248   return _mm512_mask_cmpneq_pd_mask(k, a, b);
2249 }
2250 
test_mm512_mask_cmpneq_ps_mask(__mmask16 k,__m512 a,__m512 b)2251 __mmask16 test_mm512_mask_cmpneq_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2252   // CHECK-LABEL: @test_mm512_mask_cmpneq_ps_mask
2253   // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
2254   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2255   return _mm512_mask_cmpneq_ps_mask(k, a, b);
2256 }
2257 
test_mm512_cmpnle_pd_mask(__m512d a,__m512d b)2258 __mmask8 test_mm512_cmpnle_pd_mask(__m512d a, __m512d b) {
2259   // CHECK-LABEL: @test_mm512_cmpnle_pd_mask
2260   // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2261   return _mm512_cmpnle_pd_mask(a, b);
2262 }
2263 
test_mm512_cmpnle_ps_mask(__m512 a,__m512 b)2264 __mmask16 test_mm512_cmpnle_ps_mask(__m512 a, __m512 b) {
2265   // CHECK-LABEL: @test_mm512_cmpnle_ps_mask
2266   // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2267   return _mm512_cmpnle_ps_mask(a, b);
2268 }
2269 
test_mm512_mask_cmpnle_pd_mask(__mmask8 k,__m512d a,__m512d b)2270 __mmask8 test_mm512_mask_cmpnle_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2271   // CHECK-LABEL: @test_mm512_mask_cmpnle_pd_mask
2272   // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2273   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2274   return _mm512_mask_cmpnle_pd_mask(k, a, b);
2275 }
2276 
test_mm512_mask_cmpnle_ps_mask(__mmask16 k,__m512 a,__m512 b)2277 __mmask16 test_mm512_mask_cmpnle_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2278   // CHECK-LABEL: @test_mm512_mask_cmpnle_ps_mask
2279   // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2280   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2281   return _mm512_mask_cmpnle_ps_mask(k, a, b);
2282 }
2283 
test_mm512_cmpnlt_pd_mask(__m512d a,__m512d b)2284 __mmask8 test_mm512_cmpnlt_pd_mask(__m512d a, __m512d b) {
2285   // CHECK-LABEL: @test_mm512_cmpnlt_pd_mask
2286   // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
2287   return _mm512_cmpnlt_pd_mask(a, b);
2288 }
2289 
test_mm512_cmpnlt_ps_mask(__m512 a,__m512 b)2290 __mmask16 test_mm512_cmpnlt_ps_mask(__m512 a, __m512 b) {
2291   // CHECK-LABEL: @test_mm512_cmpnlt_ps_mask
2292   // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
2293   return _mm512_cmpnlt_ps_mask(a, b);
2294 }
2295 
test_mm512_mask_cmpnlt_pd_mask(__mmask8 k,__m512d a,__m512d b)2296 __mmask8 test_mm512_mask_cmpnlt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2297   // CHECK-LABEL: @test_mm512_mask_cmpnlt_pd_mask
2298   // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2299   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2300   return _mm512_mask_cmpnlt_pd_mask(k, a, b);
2301 }
2302 
test_mm512_mask_cmpnlt_ps_mask(__mmask16 k,__m512 a,__m512 b)2303 __mmask16 test_mm512_mask_cmpnlt_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2304   // CHECK-LABEL: @test_mm512_mask_cmpnlt_ps_mask
2305   // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
2306   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2307   return _mm512_mask_cmpnlt_ps_mask(k, a, b);
2308 }
2309 
test_mm512_cmpord_pd_mask(__m512d a,__m512d b)2310 __mmask8 test_mm512_cmpord_pd_mask(__m512d a, __m512d b) {
2311   // CHECK-LABEL: @test_mm512_cmpord_pd_mask
2312   // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
2313   return _mm512_cmpord_pd_mask(a, b);
2314 }
2315 
test_mm512_cmpord_ps_mask(__m512 a,__m512 b)2316 __mmask16 test_mm512_cmpord_ps_mask(__m512 a, __m512 b) {
2317   // CHECK-LABEL: @test_mm512_cmpord_ps_mask
2318   // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
2319   return _mm512_cmpord_ps_mask(a, b);
2320 }
2321 
test_mm512_mask_cmpord_pd_mask(__mmask8 k,__m512d a,__m512d b)2322 __mmask8 test_mm512_mask_cmpord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2323   // CHECK-LABEL: @test_mm512_mask_cmpord_pd_mask
2324   // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2325   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2326   return _mm512_mask_cmpord_pd_mask(k, a, b);
2327 }
2328 
test_mm512_mask_cmpord_ps_mask(__mmask16 k,__m512 a,__m512 b)2329 __mmask16 test_mm512_mask_cmpord_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2330   // CHECK-LABEL: @test_mm512_mask_cmpord_ps_mask
2331   // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
2332   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2333   return _mm512_mask_cmpord_ps_mask(k, a, b);
2334 }
2335 
test_mm512_cmpunord_pd_mask(__m512d a,__m512d b)2336 __mmask8 test_mm512_cmpunord_pd_mask(__m512d a, __m512d b) {
2337   // CHECK-LABEL: @test_mm512_cmpunord_pd_mask
2338   // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
2339   return _mm512_cmpunord_pd_mask(a, b);
2340 }
2341 
test_mm512_cmpunord_ps_mask(__m512 a,__m512 b)2342 __mmask16 test_mm512_cmpunord_ps_mask(__m512 a, __m512 b) {
2343   // CHECK-LABEL: @test_mm512_cmpunord_ps_mask
2344   // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
2345   return _mm512_cmpunord_ps_mask(a, b);
2346 }
2347 
test_mm512_mask_cmpunord_pd_mask(__mmask8 k,__m512d a,__m512d b)2348 __mmask8 test_mm512_mask_cmpunord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2349   // CHECK-LABEL: @test_mm512_mask_cmpunord_pd_mask
2350   // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2351   // CHECK: and <8 x i1> [[CMP]], {{.*}}
2352   return _mm512_mask_cmpunord_pd_mask(k, a, b);
2353 }
2354 
test_mm512_mask_cmpunord_ps_mask(__mmask16 k,__m512 a,__m512 b)2355 __mmask16 test_mm512_mask_cmpunord_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2356   // CHECK-LABEL: @test_mm512_mask_cmpunord_ps_mask
2357   // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
2358   // CHECK: and <16 x i1> [[CMP]], {{.*}}
2359   return _mm512_mask_cmpunord_ps_mask(k, a, b);
2360 }
2361 
test_mm512_extractf64x4_pd(__m512d a)2362 __m256d test_mm512_extractf64x4_pd(__m512d a)
2363 {
2364   // CHECK-LABEL: @test_mm512_extractf64x4_pd
2365   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2366   return _mm512_extractf64x4_pd(a, 1);
2367 }
2368 
test_mm512_mask_extractf64x4_pd(__m256d __W,__mmask8 __U,__m512d __A)2369 __m256d test_mm512_mask_extractf64x4_pd(__m256d  __W,__mmask8  __U,__m512d __A){
2370   // CHECK-LABEL:@test_mm512_mask_extractf64x4_pd
2371   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2372   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2373   return _mm512_mask_extractf64x4_pd( __W, __U, __A, 1);
2374 }
2375 
test_mm512_maskz_extractf64x4_pd(__mmask8 __U,__m512d __A)2376 __m256d test_mm512_maskz_extractf64x4_pd(__mmask8  __U,__m512d __A){
2377   // CHECK-LABEL:@test_mm512_maskz_extractf64x4_pd
2378   // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2379   // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2380   return _mm512_maskz_extractf64x4_pd( __U, __A, 1);
2381 }
2382 
test_mm512_extractf32x4_ps(__m512 a)2383 __m128 test_mm512_extractf32x4_ps(__m512 a)
2384 {
2385   // CHECK-LABEL: @test_mm512_extractf32x4_ps
2386   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2387   return _mm512_extractf32x4_ps(a, 1);
2388 }
2389 
test_mm512_mask_extractf32x4_ps(__m128 __W,__mmask8 __U,__m512 __A)2390 __m128 test_mm512_mask_extractf32x4_ps(__m128 __W, __mmask8  __U,__m512 __A){
2391   // CHECK-LABEL:@test_mm512_mask_extractf32x4_ps
2392   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2393   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2394   return _mm512_mask_extractf32x4_ps( __W, __U, __A, 1);
2395 }
2396 
test_mm512_maskz_extractf32x4_ps(__mmask8 __U,__m512 __A)2397 __m128 test_mm512_maskz_extractf32x4_ps( __mmask8  __U,__m512 __A){
2398   // CHECK-LABEL:@test_mm512_maskz_extractf32x4_ps
2399   // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2400   // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2401  return _mm512_maskz_extractf32x4_ps(  __U, __A, 1);
2402 }
2403 
test_mm512_cmpeq_epu32_mask(__m512i __a,__m512i __b)2404 __mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2405   // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask
2406   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2407   return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b);
2408 }
2409 
test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2410 __mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2411   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask
2412   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2413   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2414   return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b);
2415 }
2416 
test_mm512_cmpeq_epu64_mask(__m512i __a,__m512i __b)2417 __mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2418   // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask
2419   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2420   return (__mmask8)_mm512_cmpeq_epu64_mask(__a, __b);
2421 }
2422 
test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2423 __mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2424   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask
2425   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2426   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2427   return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b);
2428 }
2429 
test_mm512_cmpge_epi32_mask(__m512i __a,__m512i __b)2430 __mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2431   // CHECK-LABEL: @test_mm512_cmpge_epi32_mask
2432   // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2433   return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b);
2434 }
2435 
test_mm512_mask_cmpge_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2436 __mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2437   // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask
2438   // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2439   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2440   return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b);
2441 }
2442 
test_mm512_cmpge_epi64_mask(__m512i __a,__m512i __b)2443 __mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2444   // CHECK-LABEL: @test_mm512_cmpge_epi64_mask
2445   // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2446   return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b);
2447 }
2448 
test_mm512_mask_cmpge_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2449 __mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2450   // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask
2451   // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2452   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2453   return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b);
2454 }
2455 
test_mm512_cmpge_epu32_mask(__m512i __a,__m512i __b)2456 __mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2457   // CHECK-LABEL: @test_mm512_cmpge_epu32_mask
2458   // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2459   return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b);
2460 }
2461 
test_mm512_mask_cmpge_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2462 __mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2463   // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask
2464   // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2465   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2466   return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b);
2467 }
2468 
test_mm512_cmpge_epu64_mask(__m512i __a,__m512i __b)2469 __mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2470   // CHECK-LABEL: @test_mm512_cmpge_epu64_mask
2471   // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2472   return (__mmask8)_mm512_cmpge_epu64_mask(__a, __b);
2473 }
2474 
test_mm512_mask_cmpge_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2475 __mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2476   // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask
2477   // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2478   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2479   return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b);
2480 }
2481 
test_mm512_cmpgt_epu32_mask(__m512i __a,__m512i __b)2482 __mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2483   // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask
2484   // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2485   return (__mmask16)_mm512_cmpgt_epu32_mask(__a, __b);
2486 }
2487 
test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2488 __mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2489   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask
2490   // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2491   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2492   return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b);
2493 }
2494 
test_mm512_cmpgt_epu64_mask(__m512i __a,__m512i __b)2495 __mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2496   // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask
2497   // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2498   return (__mmask8)_mm512_cmpgt_epu64_mask(__a, __b);
2499 }
2500 
test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2501 __mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2502   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask
2503   // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2504   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2505   return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b);
2506 }
2507 
test_mm512_cmple_epi32_mask(__m512i __a,__m512i __b)2508 __mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2509   // CHECK-LABEL: @test_mm512_cmple_epi32_mask
2510   // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2511   return (__mmask16)_mm512_cmple_epi32_mask(__a, __b);
2512 }
2513 
test_mm512_mask_cmple_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2514 __mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2515   // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask
2516   // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2517   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2518   return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b);
2519 }
2520 
test_mm512_cmple_epi64_mask(__m512i __a,__m512i __b)2521 __mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2522   // CHECK-LABEL: @test_mm512_cmple_epi64_mask
2523   // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2524   return (__mmask8)_mm512_cmple_epi64_mask(__a, __b);
2525 }
2526 
test_mm512_mask_cmple_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2527 __mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2528   // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask
2529   // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2530   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2531   return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b);
2532 }
2533 
test_mm512_cmple_epu32_mask(__m512i __a,__m512i __b)2534 __mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2535   // CHECK-LABEL: @test_mm512_cmple_epu32_mask
2536   // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2537   return (__mmask16)_mm512_cmple_epu32_mask(__a, __b);
2538 }
2539 
test_mm512_mask_cmple_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2540 __mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2541   // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask
2542   // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2543   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2544   return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b);
2545 }
2546 
test_mm512_cmple_epu64_mask(__m512i __a,__m512i __b)2547 __mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2548   // CHECK-LABEL: @test_mm512_cmple_epu64_mask
2549   // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2550   return (__mmask8)_mm512_cmple_epu64_mask(__a, __b);
2551 }
2552 
test_mm512_mask_cmple_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2553 __mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2554   // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask
2555   // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2556   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2557   return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b);
2558 }
2559 
test_mm512_cmplt_epi32_mask(__m512i __a,__m512i __b)2560 __mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2561   // CHECK-LABEL: @test_mm512_cmplt_epi32_mask
2562   // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2563   return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b);
2564 }
2565 
test_mm512_mask_cmplt_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2566 __mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2567   // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask
2568   // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2569   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2570   return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b);
2571 }
2572 
test_mm512_cmplt_epi64_mask(__m512i __a,__m512i __b)2573 __mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2574   // CHECK-LABEL: @test_mm512_cmplt_epi64_mask
2575   // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2576   return (__mmask8)_mm512_cmplt_epi64_mask(__a, __b);
2577 }
2578 
test_mm512_mask_cmplt_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2579 __mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2580   // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask
2581   // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2582   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2583   return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b);
2584 }
2585 
test_mm512_cmplt_epu32_mask(__m512i __a,__m512i __b)2586 __mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2587   // CHECK-LABEL: @test_mm512_cmplt_epu32_mask
2588   // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2589   return (__mmask16)_mm512_cmplt_epu32_mask(__a, __b);
2590 }
2591 
test_mm512_mask_cmplt_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2592 __mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2593   // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask
2594   // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2595   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2596   return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b);
2597 }
2598 
test_mm512_cmplt_epu64_mask(__m512i __a,__m512i __b)2599 __mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2600   // CHECK-LABEL: @test_mm512_cmplt_epu64_mask
2601   // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2602   return (__mmask8)_mm512_cmplt_epu64_mask(__a, __b);
2603 }
2604 
test_mm512_mask_cmplt_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2605 __mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2606   // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask
2607   // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2608   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2609   return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b);
2610 }
2611 
test_mm512_cmpneq_epi32_mask(__m512i __a,__m512i __b)2612 __mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2613   // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask
2614   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2615   return (__mmask16)_mm512_cmpneq_epi32_mask(__a, __b);
2616 }
2617 
test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2618 __mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2619   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask
2620   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2621   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2622   return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b);
2623 }
2624 
test_mm512_cmpneq_epi64_mask(__m512i __a,__m512i __b)2625 __mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
2626   // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask
2627   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2628   return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b);
2629 }
2630 
test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2631 __mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2632   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask
2633   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2634   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2635   return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b);
2636 }
2637 
test_mm512_cmpneq_epu32_mask(__m512i __a,__m512i __b)2638 __mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2639   // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask
2640   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2641   return (__mmask16)_mm512_cmpneq_epu32_mask(__a, __b);
2642 }
2643 
test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2644 __mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2645   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask
2646   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2647   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2648   return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b);
2649 }
2650 
test_mm512_cmpneq_epu64_mask(__m512i __a,__m512i __b)2651 __mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
2652   // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask
2653   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2654   return (__mmask8)_mm512_cmpneq_epu64_mask(__a, __b);
2655 }
2656 
test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2657 __mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2658   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask
2659   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2660   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2661   return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b);
2662 }
2663 
test_mm512_cmp_eq_epi32_mask(__m512i __a,__m512i __b)2664 __mmask16 test_mm512_cmp_eq_epi32_mask(__m512i __a, __m512i __b) {
2665   // CHECK-LABEL: @test_mm512_cmp_eq_epi32_mask
2666   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2667   return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);
2668 }
2669 
test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2670 __mmask16 test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2671   // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi32_mask
2672   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2673   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2674   return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_EQ);
2675 }
2676 
test_mm512_cmp_eq_epi64_mask(__m512i __a,__m512i __b)2677 __mmask8 test_mm512_cmp_eq_epi64_mask(__m512i __a, __m512i __b) {
2678   // CHECK-LABEL: @test_mm512_cmp_eq_epi64_mask
2679   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2680   return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, _MM_CMPINT_EQ);
2681 }
2682 
test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2683 __mmask8 test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2684   // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi64_mask
2685   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2686   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2687   return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);
2688 }
2689 
test_mm512_cmp_epu32_mask(__m512i __a,__m512i __b)2690 __mmask16 test_mm512_cmp_epu32_mask(__m512i __a, __m512i __b) {
2691   // CHECK-LABEL: @test_mm512_cmp_epu32_mask
2692   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2693   return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 0);
2694 }
2695 
test_mm512_mask_cmp_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2696 __mmask16 test_mm512_mask_cmp_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2697   // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask
2698   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2699   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2700   return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 0);
2701 }
2702 
test_mm512_cmp_epu64_mask(__m512i __a,__m512i __b)2703 __mmask8 test_mm512_cmp_epu64_mask(__m512i __a, __m512i __b) {
2704   // CHECK-LABEL: @test_mm512_cmp_epu64_mask
2705   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2706   return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 0);
2707 }
2708 
test_mm512_mask_cmp_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2709 __mmask8 test_mm512_mask_cmp_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2710   // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask
2711   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2712   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2713   return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 0);
2714 }
2715 
test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2716 __m512i test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2717   // CHECK-LABEL: @test_mm512_mask_and_epi32
2718   // CHECK: and <16 x i32>
2719   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2720   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2721   return _mm512_mask_and_epi32(__src, __k,__a, __b);
2722 }
2723 
test_mm512_maskz_and_epi32(__mmask16 __k,__m512i __a,__m512i __b)2724 __m512i test_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2725   // CHECK-LABEL: @test_mm512_maskz_and_epi32
2726   // CHECK: and <16 x i32>
2727   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2728   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2729   return _mm512_maskz_and_epi32(__k,__a, __b);
2730 }
2731 
test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2732 __m512i test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2733   // CHECK-LABEL: @test_mm512_mask_and_epi64
2734   // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2735   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2736   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2737   return _mm512_mask_and_epi64(__src, __k,__a, __b);
2738 }
2739 
test_mm512_maskz_and_epi64(__mmask8 __k,__m512i __a,__m512i __b)2740 __m512i test_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2741   // CHECK-LABEL: @test_mm512_maskz_and_epi64
2742   // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2743   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2744   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2745   return _mm512_maskz_and_epi64(__k,__a, __b);
2746 }
2747 
test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2748 __m512i test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2749   // CHECK-LABEL: @test_mm512_mask_or_epi32
2750   // CHECK: or <16 x i32>
2751   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2752   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2753   return _mm512_mask_or_epi32(__src, __k,__a, __b);
2754 }
2755 
test_mm512_maskz_or_epi32(__mmask16 __k,__m512i __a,__m512i __b)2756 __m512i test_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2757   // CHECK-LABEL: @test_mm512_maskz_or_epi32
2758   // CHECK: or <16 x i32>
2759   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2760   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2761   return _mm512_maskz_or_epi32(__k,__a, __b);
2762 }
2763 
test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2764 __m512i test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2765   // CHECK-LABEL: @test_mm512_mask_or_epi64
2766   // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2767   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2768   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2769   return _mm512_mask_or_epi64(__src, __k,__a, __b);
2770 }
2771 
test_mm512_maskz_or_epi64(__mmask8 __k,__m512i __a,__m512i __b)2772 __m512i test_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2773   // CHECK-LABEL: @test_mm512_maskz_or_epi64
2774   // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2775   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2776   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2777   return _mm512_maskz_or_epi64(__k,__a, __b);
2778 }
2779 
test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2780 __m512i test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2781   // CHECK-LABEL: @test_mm512_mask_xor_epi32
2782   // CHECK: xor <16 x i32>
2783   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2784   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2785   return _mm512_mask_xor_epi32(__src, __k,__a, __b);
2786 }
2787 
test_mm512_maskz_xor_epi32(__mmask16 __k,__m512i __a,__m512i __b)2788 __m512i test_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2789   // CHECK-LABEL: @test_mm512_maskz_xor_epi32
2790   // CHECK: xor <16 x i32>
2791   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2792   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2793   return _mm512_maskz_xor_epi32(__k,__a, __b);
2794 }
2795 
test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2796 __m512i test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2797   // CHECK-LABEL: @test_mm512_mask_xor_epi64
2798   // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2799   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2800   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2801   return _mm512_mask_xor_epi64(__src, __k,__a, __b);
2802 }
2803 
test_mm512_maskz_xor_epi64(__mmask8 __k,__m512i __a,__m512i __b)2804 __m512i test_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2805   // CHECK-LABEL: @test_mm512_maskz_xor_epi64
2806   // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2807   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2808   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2809   return _mm512_maskz_xor_epi64(__k,__a, __b);
2810 }
2811 
test_mm512_and_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2812 __m512i test_mm512_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2813   // CHECK-LABEL: @test_mm512_and_epi32
2814   // CHECK: and <16 x i32>
2815   return _mm512_and_epi32(__a, __b);
2816 }
2817 
test_mm512_and_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2818 __m512i test_mm512_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2819   // CHECK-LABEL: @test_mm512_and_epi64
2820   // CHECK: and <8 x i64>
2821   return _mm512_and_epi64(__a, __b);
2822 }
2823 
test_mm512_or_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2824 __m512i test_mm512_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2825   // CHECK-LABEL: @test_mm512_or_epi32
2826   // CHECK: or <16 x i32>
2827   return _mm512_or_epi32(__a, __b);
2828 }
2829 
test_mm512_or_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2830 __m512i test_mm512_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2831   // CHECK-LABEL: @test_mm512_or_epi64
2832   // CHECK: or <8 x i64>
2833   return _mm512_or_epi64(__a, __b);
2834 }
2835 
test_mm512_xor_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2836 __m512i test_mm512_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2837   // CHECK-LABEL: @test_mm512_xor_epi32
2838   // CHECK: xor <16 x i32>
2839   return _mm512_xor_epi32(__a, __b);
2840 }
2841 
test_mm512_xor_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2842 __m512i test_mm512_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2843   // CHECK-LABEL: @test_mm512_xor_epi64
2844   // CHECK: xor <8 x i64>
2845   return _mm512_xor_epi64(__a, __b);
2846 }
2847 
test_mm512_maskz_andnot_epi32(__mmask16 __k,__m512i __A,__m512i __B)2848 __m512i test_mm512_maskz_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B){
2849   // CHECK-LABEL: @test_mm512_maskz_andnot_epi32
2850   // 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>
2851   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2852   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2853   return _mm512_maskz_andnot_epi32(__k,__A,__B);
2854 }
2855 
test_mm512_mask_andnot_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2856 __m512i test_mm512_mask_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2857                                       __m512i __src) {
2858   // CHECK-LABEL: @test_mm512_mask_andnot_epi32
2859   // 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>
2860   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2861   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2862   return _mm512_mask_andnot_epi32(__src,__k,__A,__B);
2863 }
2864 
test_mm512_andnot_si512(__m512i __A,__m512i __B)2865 __m512i test_mm512_andnot_si512(__m512i __A, __m512i __B)
2866 {
2867   //CHECK-LABEL: @test_mm512_andnot_si512
2868   //CHECK: load {{.*}}%__A.addr.i, align 64
2869   //CHECK: %neg.i = xor{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2870   //CHECK: load {{.*}}%__B.addr.i, align 64
2871   //CHECK: and <8 x i64> %neg.i,{{.*}}
2872 
2873   return _mm512_andnot_si512(__A, __B);
2874 }
2875 
test_mm512_andnot_epi32(__m512i __A,__m512i __B)2876 __m512i test_mm512_andnot_epi32(__m512i __A, __m512i __B) {
2877   // CHECK-LABEL: @test_mm512_andnot_epi32
2878   // 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>
2879   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2880   return _mm512_andnot_epi32(__A,__B);
2881 }
2882 
test_mm512_maskz_andnot_epi64(__mmask8 __k,__m512i __A,__m512i __B)2883 __m512i test_mm512_maskz_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2884   // CHECK-LABEL: @test_mm512_maskz_andnot_epi64
2885   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2886   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2887   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2888   return _mm512_maskz_andnot_epi64(__k,__A,__B);
2889 }
2890 
test_mm512_mask_andnot_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2891 __m512i test_mm512_mask_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2892                                       __m512i __src) {
2893   //CHECK-LABEL: @test_mm512_mask_andnot_epi64
2894   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2895   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2896   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2897   return _mm512_mask_andnot_epi64(__src,__k,__A,__B);
2898 }
2899 
test_mm512_andnot_epi64(__m512i __A,__m512i __B)2900 __m512i test_mm512_andnot_epi64(__m512i __A, __m512i __B) {
2901   //CHECK-LABEL: @test_mm512_andnot_epi64
2902   // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2903   // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2904   return _mm512_andnot_epi64(__A,__B);
2905 }
2906 
test_mm512_maskz_sub_epi32(__mmask16 __k,__m512i __A,__m512i __B)2907 __m512i test_mm512_maskz_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
2908   //CHECK-LABEL: @test_mm512_maskz_sub_epi32
2909   //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2910   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2911   return _mm512_maskz_sub_epi32(__k,__A,__B);
2912 }
2913 
test_mm512_mask_sub_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2914 __m512i test_mm512_mask_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2915                                    __m512i __src) {
2916   //CHECK-LABEL: @test_mm512_mask_sub_epi32
2917   //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2918   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2919   return _mm512_mask_sub_epi32(__src,__k,__A,__B);
2920 }
2921 
test_mm512_sub_epi32(__m512i __A,__m512i __B)2922 __m512i test_mm512_sub_epi32(__m512i __A, __m512i __B) {
2923   //CHECK-LABEL: @test_mm512_sub_epi32
2924   //CHECK: sub <16 x i32>
2925   return _mm512_sub_epi32(__A,__B);
2926 }
2927 
test_mm512_maskz_sub_epi64(__mmask8 __k,__m512i __A,__m512i __B)2928 __m512i test_mm512_maskz_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2929   //CHECK-LABEL: @test_mm512_maskz_sub_epi64
2930   //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2931   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2932   return _mm512_maskz_sub_epi64(__k,__A,__B);
2933 }
2934 
test_mm512_mask_sub_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2935 __m512i test_mm512_mask_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2936                                    __m512i __src) {
2937   //CHECK-LABEL: @test_mm512_mask_sub_epi64
2938   //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2939   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2940   return _mm512_mask_sub_epi64(__src,__k,__A,__B);
2941 }
2942 
test_mm512_sub_epi64(__m512i __A,__m512i __B)2943 __m512i test_mm512_sub_epi64(__m512i __A, __m512i __B) {
2944   //CHECK-LABEL: @test_mm512_sub_epi64
2945   //CHECK: sub <8 x i64>
2946   return _mm512_sub_epi64(__A,__B);
2947 }
2948 
test_mm512_maskz_add_epi32(__mmask16 __k,__m512i __A,__m512i __B)2949 __m512i test_mm512_maskz_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
2950   //CHECK-LABEL: @test_mm512_maskz_add_epi32
2951   //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2952   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2953   return _mm512_maskz_add_epi32(__k,__A,__B);
2954 }
2955 
test_mm512_mask_add_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2956 __m512i test_mm512_mask_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2957                                    __m512i __src) {
2958   //CHECK-LABEL: @test_mm512_mask_add_epi32
2959   //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2960   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2961   return _mm512_mask_add_epi32(__src,__k,__A,__B);
2962 }
2963 
test_mm512_add_epi32(__m512i __A,__m512i __B)2964 __m512i test_mm512_add_epi32(__m512i __A, __m512i __B) {
2965   //CHECK-LABEL: @test_mm512_add_epi32
2966   //CHECK: add <16 x i32>
2967   return _mm512_add_epi32(__A,__B);
2968 }
2969 
test_mm512_maskz_add_epi64(__mmask8 __k,__m512i __A,__m512i __B)2970 __m512i test_mm512_maskz_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2971   //CHECK-LABEL: @test_mm512_maskz_add_epi64
2972   //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
2973   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2974   return _mm512_maskz_add_epi64(__k,__A,__B);
2975 }
2976 
test_mm512_mask_add_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2977 __m512i test_mm512_mask_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2978                                    __m512i __src) {
2979   //CHECK-LABEL: @test_mm512_mask_add_epi64
2980   //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
2981   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2982   return _mm512_mask_add_epi64(__src,__k,__A,__B);
2983 }
2984 
test_mm512_add_epi64(__m512i __A,__m512i __B)2985 __m512i test_mm512_add_epi64(__m512i __A, __m512i __B) {
2986   //CHECK-LABEL: @test_mm512_add_epi64
2987   //CHECK: add <8 x i64>
2988   return _mm512_add_epi64(__A,__B);
2989 }
2990 
test_mm512_mul_epi32(__m512i __A,__m512i __B)2991 __m512i test_mm512_mul_epi32(__m512i __A, __m512i __B) {
2992   //CHECK-LABEL: @test_mm512_mul_epi32
2993   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2994   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2995   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2996   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
2997   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
2998   return _mm512_mul_epi32(__A,__B);
2999 }
3000 
test_mm512_maskz_mul_epi32(__mmask8 __k,__m512i __A,__m512i __B)3001 __m512i test_mm512_maskz_mul_epi32 (__mmask8 __k,__m512i __A, __m512i __B) {
3002   //CHECK-LABEL: @test_mm512_maskz_mul_epi32
3003   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3004   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3005   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3006   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3007   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3008   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3009   return _mm512_maskz_mul_epi32(__k,__A,__B);
3010 }
3011 
test_mm512_mask_mul_epi32(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3012 __m512i test_mm512_mask_mul_epi32 (__mmask8 __k,__m512i __A, __m512i __B, __m512i __src) {
3013   //CHECK-LABEL: @test_mm512_mask_mul_epi32
3014   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3015   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3016   //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3017   //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3018   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3019   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3020   return _mm512_mask_mul_epi32(__src,__k,__A,__B);
3021 }
3022 
test_mm512_mul_epu32(__m512i __A,__m512i __B)3023 __m512i test_mm512_mul_epu32 (__m512i __A, __m512i __B) {
3024   //CHECK-LABEL: @test_mm512_mul_epu32
3025   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3026   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3027   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3028   return _mm512_mul_epu32(__A,__B);
3029 }
3030 
test_mm512_maskz_mul_epu32(__mmask8 __k,__m512i __A,__m512i __B)3031 __m512i test_mm512_maskz_mul_epu32 (__mmask8 __k,__m512i __A, __m512i __B) {
3032   //CHECK-LABEL: @test_mm512_maskz_mul_epu32
3033   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3034   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3035   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3036   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3037   return _mm512_maskz_mul_epu32(__k,__A,__B);
3038 }
3039 
test_mm512_mask_mul_epu32(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3040 __m512i test_mm512_mask_mul_epu32 (__mmask8 __k,__m512i __A, __m512i __B, __m512i __src) {
3041   //CHECK-LABEL: @test_mm512_mask_mul_epu32
3042   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3043   //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3044   //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3045   //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3046   return _mm512_mask_mul_epu32(__src,__k,__A,__B);
3047 }
3048 
test_mm512_maskz_mullo_epi32(__mmask16 __k,__m512i __A,__m512i __B)3049 __m512i test_mm512_maskz_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
3050   //CHECK-LABEL: @test_mm512_maskz_mullo_epi32
3051   //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3052   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3053   return _mm512_maskz_mullo_epi32(__k,__A,__B);
3054 }
3055 
test_mm512_mask_mullo_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)3056 __m512i test_mm512_mask_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B, __m512i __src) {
3057   //CHECK-LABEL: @test_mm512_mask_mullo_epi32
3058   //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3059   //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3060   return _mm512_mask_mullo_epi32(__src,__k,__A,__B);
3061 }
3062 
test_mm512_mullo_epi32(__m512i __A,__m512i __B)3063 __m512i test_mm512_mullo_epi32(__m512i __A, __m512i __B) {
3064   //CHECK-LABEL: @test_mm512_mullo_epi32
3065   //CHECK: mul <16 x i32>
3066   return _mm512_mullo_epi32(__A,__B);
3067 }
3068 
test_mm512_mullox_epi64(__m512i __A,__m512i __B)3069 __m512i test_mm512_mullox_epi64 (__m512i __A, __m512i __B) {
3070   // CHECK-LABEL: @test_mm512_mullox_epi64
3071   // CHECK: mul <8 x i64>
3072   return (__m512i) _mm512_mullox_epi64(__A, __B);
3073 }
3074 
test_mm512_mask_mullox_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)3075 __m512i test_mm512_mask_mullox_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
3076   // CHECK-LABEL: @test_mm512_mask_mullox_epi64
3077   // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3078   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3079   return (__m512i) _mm512_mask_mullox_epi64(__W, __U, __A, __B);
3080 }
3081 
test_mm512_add_round_pd(__m512d __A,__m512d __B)3082 __m512d test_mm512_add_round_pd(__m512d __A, __m512d __B) {
3083   // CHECK-LABEL: @test_mm512_add_round_pd
3084   // CHECK: @llvm.x86.avx512.add.pd.512
3085   return _mm512_add_round_pd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3086 }
test_mm512_mask_add_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3087 __m512d test_mm512_mask_add_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3088   // CHECK-LABEL: @test_mm512_mask_add_round_pd
3089   // CHECK: @llvm.x86.avx512.add.pd.512
3090   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3091   return _mm512_mask_add_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3092 }
test_mm512_maskz_add_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3093 __m512d test_mm512_maskz_add_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3094   // CHECK-LABEL: @test_mm512_maskz_add_round_pd
3095   // CHECK: @llvm.x86.avx512.add.pd.512
3096   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3097   return _mm512_maskz_add_round_pd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3098 }
test_mm512_mask_add_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3099 __m512d test_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3100   // CHECK-LABEL: @test_mm512_mask_add_pd
3101   // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3102   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3103   return _mm512_mask_add_pd(__W,__U,__A,__B);
3104 }
test_mm512_maskz_add_pd(__mmask8 __U,__m512d __A,__m512d __B)3105 __m512d test_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3106   // CHECK-LABEL: @test_mm512_maskz_add_pd
3107   // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3108   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3109   return _mm512_maskz_add_pd(__U,__A,__B);
3110 }
test_mm512_add_round_ps(__m512 __A,__m512 __B)3111 __m512 test_mm512_add_round_ps(__m512 __A, __m512 __B) {
3112   // CHECK-LABEL: @test_mm512_add_round_ps
3113   // CHECK: @llvm.x86.avx512.add.ps.512
3114   return _mm512_add_round_ps(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3115 }
test_mm512_mask_add_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3116 __m512 test_mm512_mask_add_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3117   // CHECK-LABEL: @test_mm512_mask_add_round_ps
3118   // CHECK: @llvm.x86.avx512.add.ps.512
3119   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3120   return _mm512_mask_add_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3121 }
test_mm512_maskz_add_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3122 __m512 test_mm512_maskz_add_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3123   // CHECK-LABEL: @test_mm512_maskz_add_round_ps
3124   // CHECK: @llvm.x86.avx512.add.ps.512
3125   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3126   return _mm512_maskz_add_round_ps(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3127 }
test_mm512_mask_add_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3128 __m512 test_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3129   // CHECK-LABEL: @test_mm512_mask_add_ps
3130   // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3131   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3132   return _mm512_mask_add_ps(__W,__U,__A,__B);
3133 }
test_mm512_maskz_add_ps(__mmask16 __U,__m512 __A,__m512 __B)3134 __m512 test_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3135   // CHECK-LABEL: @test_mm512_maskz_add_ps
3136   // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3137   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3138   return _mm512_maskz_add_ps(__U,__A,__B);
3139 }
test_mm_add_round_ss(__m128 __A,__m128 __B)3140 __m128 test_mm_add_round_ss(__m128 __A, __m128 __B) {
3141   // CHECK-LABEL: @test_mm_add_round_ss
3142   // CHECK: @llvm.x86.avx512.mask.add.ss.round
3143   return _mm_add_round_ss(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3144 }
test_mm_mask_add_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3145 __m128 test_mm_mask_add_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3146   // CHECK-LABEL: @test_mm_mask_add_round_ss
3147   // CHECK: @llvm.x86.avx512.mask.add.ss.round
3148   return _mm_mask_add_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3149 }
test_mm_maskz_add_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3150 __m128 test_mm_maskz_add_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3151   // CHECK-LABEL: @test_mm_maskz_add_round_ss
3152   // CHECK: @llvm.x86.avx512.mask.add.ss.round
3153   return _mm_maskz_add_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3154 }
test_mm_mask_add_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3155 __m128 test_mm_mask_add_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3156   // CHECK-LABEL: @test_mm_mask_add_ss
3157   // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3158   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3159   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3160   // CHECK: fadd float %{{.*}}, %{{.*}}
3161   // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3162   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3163   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3164   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3165   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3166   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3167   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3168   return _mm_mask_add_ss(__W,__U,__A,__B);
3169 }
test_mm_maskz_add_ss(__mmask8 __U,__m128 __A,__m128 __B)3170 __m128 test_mm_maskz_add_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3171   // CHECK-LABEL: @test_mm_maskz_add_ss
3172   // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3173   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3174   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3175   // CHECK: fadd float %{{.*}}, %{{.*}}
3176   // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3177   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3178   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3179   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3180   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3181   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3182   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3183   return _mm_maskz_add_ss(__U,__A,__B);
3184 }
test_mm_add_round_sd(__m128d __A,__m128d __B)3185 __m128d test_mm_add_round_sd(__m128d __A, __m128d __B) {
3186   // CHECK-LABEL: @test_mm_add_round_sd
3187   // CHECK: @llvm.x86.avx512.mask.add.sd.round
3188   return _mm_add_round_sd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3189 }
test_mm_mask_add_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3190 __m128d test_mm_mask_add_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3191   // CHECK-LABEL: @test_mm_mask_add_round_sd
3192   // CHECK: @llvm.x86.avx512.mask.add.sd.round
3193   return _mm_mask_add_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3194 }
test_mm_maskz_add_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3195 __m128d test_mm_maskz_add_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3196   // CHECK-LABEL: @test_mm_maskz_add_round_sd
3197   // CHECK: @llvm.x86.avx512.mask.add.sd.round
3198   return _mm_maskz_add_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3199 }
test_mm_mask_add_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3200 __m128d test_mm_mask_add_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3201   // CHECK-LABEL: @test_mm_mask_add_sd
3202   // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3203   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3204   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3205   // CHECK: fadd double %{{.*}}, %{{.*}}
3206   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3207   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3208   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3209   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3210   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3211   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3212   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3213   return _mm_mask_add_sd(__W,__U,__A,__B);
3214 }
test_mm_maskz_add_sd(__mmask8 __U,__m128d __A,__m128d __B)3215 __m128d test_mm_maskz_add_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3216   // CHECK-LABEL: @test_mm_maskz_add_sd
3217   // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3218   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3219   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3220   // CHECK: fadd double %{{.*}}, %{{.*}}
3221   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3222   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3223   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3224   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3225   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3226   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3227   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3228   return _mm_maskz_add_sd(__U,__A,__B);
3229 }
test_mm512_sub_round_pd(__m512d __A,__m512d __B)3230 __m512d test_mm512_sub_round_pd(__m512d __A, __m512d __B) {
3231   // CHECK-LABEL: @test_mm512_sub_round_pd
3232   // CHECK: @llvm.x86.avx512.sub.pd.512
3233   return _mm512_sub_round_pd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3234 }
test_mm512_mask_sub_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3235 __m512d test_mm512_mask_sub_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3236   // CHECK-LABEL: @test_mm512_mask_sub_round_pd
3237   // CHECK: @llvm.x86.avx512.sub.pd.512
3238   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3239   return _mm512_mask_sub_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3240 }
test_mm512_maskz_sub_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3241 __m512d test_mm512_maskz_sub_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3242   // CHECK-LABEL: @test_mm512_maskz_sub_round_pd
3243   // CHECK: @llvm.x86.avx512.sub.pd.512
3244   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3245   return _mm512_maskz_sub_round_pd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3246 }
test_mm512_mask_sub_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3247 __m512d test_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3248   // CHECK-LABEL: @test_mm512_mask_sub_pd
3249   // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3250   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3251   return _mm512_mask_sub_pd(__W,__U,__A,__B);
3252 }
test_mm512_maskz_sub_pd(__mmask8 __U,__m512d __A,__m512d __B)3253 __m512d test_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3254   // CHECK-LABEL: @test_mm512_maskz_sub_pd
3255   // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3256   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3257   return _mm512_maskz_sub_pd(__U,__A,__B);
3258 }
test_mm512_sub_round_ps(__m512 __A,__m512 __B)3259 __m512 test_mm512_sub_round_ps(__m512 __A, __m512 __B) {
3260   // CHECK-LABEL: @test_mm512_sub_round_ps
3261   // CHECK: @llvm.x86.avx512.sub.ps.512
3262   return _mm512_sub_round_ps(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3263 }
test_mm512_mask_sub_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3264 __m512 test_mm512_mask_sub_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3265   // CHECK-LABEL: @test_mm512_mask_sub_round_ps
3266   // CHECK: @llvm.x86.avx512.sub.ps.512
3267   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3268   return _mm512_mask_sub_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3269 }
test_mm512_maskz_sub_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3270 __m512 test_mm512_maskz_sub_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3271   // CHECK-LABEL: @test_mm512_maskz_sub_round_ps
3272   // CHECK: @llvm.x86.avx512.sub.ps.512
3273   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3274   return _mm512_maskz_sub_round_ps(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3275 }
test_mm512_mask_sub_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3276 __m512 test_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3277   // CHECK-LABEL: @test_mm512_mask_sub_ps
3278   // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3279   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3280   return _mm512_mask_sub_ps(__W,__U,__A,__B);
3281 }
test_mm512_maskz_sub_ps(__mmask16 __U,__m512 __A,__m512 __B)3282 __m512 test_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3283   // CHECK-LABEL: @test_mm512_maskz_sub_ps
3284   // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3285   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3286   return _mm512_maskz_sub_ps(__U,__A,__B);
3287 }
test_mm_sub_round_ss(__m128 __A,__m128 __B)3288 __m128 test_mm_sub_round_ss(__m128 __A, __m128 __B) {
3289   // CHECK-LABEL: @test_mm_sub_round_ss
3290   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3291   return _mm_sub_round_ss(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3292 }
test_mm_mask_sub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3293 __m128 test_mm_mask_sub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3294   // CHECK-LABEL: @test_mm_mask_sub_round_ss
3295   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3296   return _mm_mask_sub_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3297 }
test_mm_maskz_sub_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3298 __m128 test_mm_maskz_sub_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3299   // CHECK-LABEL: @test_mm_maskz_sub_round_ss
3300   // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3301   return _mm_maskz_sub_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3302 }
test_mm_mask_sub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3303 __m128 test_mm_mask_sub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3304   // CHECK-LABEL: @test_mm_mask_sub_ss
3305   // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3306   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3307   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3308   // CHECK: fsub float %{{.*}}, %{{.*}}
3309   // CHECK: insertelement <4 x float> {{.*}}, i32 0
3310   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3311   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3312   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3313   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3314   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3315   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3316   return _mm_mask_sub_ss(__W,__U,__A,__B);
3317 }
test_mm_maskz_sub_ss(__mmask8 __U,__m128 __A,__m128 __B)3318 __m128 test_mm_maskz_sub_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3319   // CHECK-LABEL: @test_mm_maskz_sub_ss
3320   // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3321   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3322   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3323   // CHECK: fsub float %{{.*}}, %{{.*}}
3324   // CHECK: insertelement <4 x float> {{.*}}, i32 0
3325   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3326   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3327   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3328   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3329   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3330   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3331   return _mm_maskz_sub_ss(__U,__A,__B);
3332 }
test_mm_sub_round_sd(__m128d __A,__m128d __B)3333 __m128d test_mm_sub_round_sd(__m128d __A, __m128d __B) {
3334   // CHECK-LABEL: @test_mm_sub_round_sd
3335   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3336   return _mm_sub_round_sd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3337 }
test_mm_mask_sub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3338 __m128d test_mm_mask_sub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3339   // CHECK-LABEL: @test_mm_mask_sub_round_sd
3340   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3341   return _mm_mask_sub_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3342 }
test_mm_maskz_sub_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3343 __m128d test_mm_maskz_sub_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3344   // CHECK-LABEL: @test_mm_maskz_sub_round_sd
3345   // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3346   return _mm_maskz_sub_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3347 }
test_mm_mask_sub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3348 __m128d test_mm_mask_sub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3349   // CHECK-LABEL: @test_mm_mask_sub_sd
3350   // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3351   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3352   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3353   // CHECK: fsub double %{{.*}}, %{{.*}}
3354   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3355   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3356   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3357   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3358   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3359   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3360   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3361   return _mm_mask_sub_sd(__W,__U,__A,__B);
3362 }
test_mm_maskz_sub_sd(__mmask8 __U,__m128d __A,__m128d __B)3363 __m128d test_mm_maskz_sub_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3364   // CHECK-LABEL: @test_mm_maskz_sub_sd
3365   // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3366   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3367   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3368   // CHECK: fsub double %{{.*}}, %{{.*}}
3369   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3370   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3371   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3372   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3373   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3374   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3375   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3376   return _mm_maskz_sub_sd(__U,__A,__B);
3377 }
test_mm512_mul_round_pd(__m512d __A,__m512d __B)3378 __m512d test_mm512_mul_round_pd(__m512d __A, __m512d __B) {
3379   // CHECK-LABEL: @test_mm512_mul_round_pd
3380   // CHECK: @llvm.x86.avx512.mul.pd.512
3381   return _mm512_mul_round_pd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3382 }
test_mm512_mask_mul_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3383 __m512d test_mm512_mask_mul_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3384   // CHECK-LABEL: @test_mm512_mask_mul_round_pd
3385   // CHECK: @llvm.x86.avx512.mul.pd.512
3386   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3387   return _mm512_mask_mul_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3388 }
test_mm512_maskz_mul_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3389 __m512d test_mm512_maskz_mul_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3390   // CHECK-LABEL: @test_mm512_maskz_mul_round_pd
3391   // CHECK: @llvm.x86.avx512.mul.pd.512
3392   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3393   return _mm512_maskz_mul_round_pd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3394 }
test_mm512_mask_mul_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3395 __m512d test_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3396   // CHECK-LABEL: @test_mm512_mask_mul_pd
3397   // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3398   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3399   return _mm512_mask_mul_pd(__W,__U,__A,__B);
3400 }
test_mm512_maskz_mul_pd(__mmask8 __U,__m512d __A,__m512d __B)3401 __m512d test_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3402   // CHECK-LABEL: @test_mm512_maskz_mul_pd
3403   // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3404   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3405   return _mm512_maskz_mul_pd(__U,__A,__B);
3406 }
test_mm512_mul_round_ps(__m512 __A,__m512 __B)3407 __m512 test_mm512_mul_round_ps(__m512 __A, __m512 __B) {
3408   // CHECK-LABEL: @test_mm512_mul_round_ps
3409   // CHECK: @llvm.x86.avx512.mul.ps.512
3410   return _mm512_mul_round_ps(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3411 }
test_mm512_mask_mul_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3412 __m512 test_mm512_mask_mul_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3413   // CHECK-LABEL: @test_mm512_mask_mul_round_ps
3414   // CHECK: @llvm.x86.avx512.mul.ps.512
3415   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3416   return _mm512_mask_mul_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3417 }
test_mm512_maskz_mul_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3418 __m512 test_mm512_maskz_mul_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3419   // CHECK-LABEL: @test_mm512_maskz_mul_round_ps
3420   // CHECK: @llvm.x86.avx512.mul.ps.512
3421   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3422   return _mm512_maskz_mul_round_ps(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3423 }
test_mm512_mask_mul_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3424 __m512 test_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3425   // CHECK-LABEL: @test_mm512_mask_mul_ps
3426   // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3427   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3428   return _mm512_mask_mul_ps(__W,__U,__A,__B);
3429 }
test_mm512_maskz_mul_ps(__mmask16 __U,__m512 __A,__m512 __B)3430 __m512 test_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3431   // CHECK-LABEL: @test_mm512_maskz_mul_ps
3432   // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3433   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3434   return _mm512_maskz_mul_ps(__U,__A,__B);
3435 }
test_mm_mul_round_ss(__m128 __A,__m128 __B)3436 __m128 test_mm_mul_round_ss(__m128 __A, __m128 __B) {
3437   // CHECK-LABEL: @test_mm_mul_round_ss
3438   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3439   return _mm_mul_round_ss(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3440 }
test_mm_mask_mul_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3441 __m128 test_mm_mask_mul_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3442   // CHECK-LABEL: @test_mm_mask_mul_round_ss
3443   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3444   return _mm_mask_mul_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3445 }
test_mm_maskz_mul_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3446 __m128 test_mm_maskz_mul_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3447   // CHECK-LABEL: @test_mm_maskz_mul_round_ss
3448   // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3449   return _mm_maskz_mul_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3450 }
test_mm_mask_mul_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3451 __m128 test_mm_mask_mul_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3452   // CHECK-LABEL: @test_mm_mask_mul_ss
3453   // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3454   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3455   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3456   // CHECK: fmul float %{{.*}}, %{{.*}}
3457   // CHECK: insertelement <4 x float> {{.*}}, i32 0
3458   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3459   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3460   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3461   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3462   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3463   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3464   return _mm_mask_mul_ss(__W,__U,__A,__B);
3465 }
test_mm_maskz_mul_ss(__mmask8 __U,__m128 __A,__m128 __B)3466 __m128 test_mm_maskz_mul_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3467   // CHECK-LABEL: @test_mm_maskz_mul_ss
3468   // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3469   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3470   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3471   // CHECK: fmul float %{{.*}}, %{{.*}}
3472   // CHECK: insertelement <4 x float> {{.*}}, i32 0
3473   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3474   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3475   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3476   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3477   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3478   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3479   return _mm_maskz_mul_ss(__U,__A,__B);
3480 }
test_mm_mul_round_sd(__m128d __A,__m128d __B)3481 __m128d test_mm_mul_round_sd(__m128d __A, __m128d __B) {
3482   // CHECK-LABEL: @test_mm_mul_round_sd
3483   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3484   return _mm_mul_round_sd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3485 }
test_mm_mask_mul_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3486 __m128d test_mm_mask_mul_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3487   // CHECK-LABEL: @test_mm_mask_mul_round_sd
3488   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3489   return _mm_mask_mul_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3490 }
test_mm_maskz_mul_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3491 __m128d test_mm_maskz_mul_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3492   // CHECK-LABEL: @test_mm_maskz_mul_round_sd
3493   // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3494   return _mm_maskz_mul_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3495 }
test_mm_mask_mul_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3496 __m128d test_mm_mask_mul_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3497   // CHECK-LABEL: @test_mm_mask_mul_sd
3498   // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3499   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3500   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3501   // CHECK: fmul double %{{.*}}, %{{.*}}
3502   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3503   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3504   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3505   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3506   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3507   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3508   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3509   return _mm_mask_mul_sd(__W,__U,__A,__B);
3510 }
test_mm_maskz_mul_sd(__mmask8 __U,__m128d __A,__m128d __B)3511 __m128d test_mm_maskz_mul_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3512   // CHECK-LABEL: @test_mm_maskz_mul_sd
3513   // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3514   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3515   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3516   // CHECK: fmul double %{{.*}}, %{{.*}}
3517   // CHECK: insertelement <2 x double> {{.*}}, i32 0
3518   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3519   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3520   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3521   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3522   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3523   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3524   return _mm_maskz_mul_sd(__U,__A,__B);
3525 }
test_mm512_div_round_pd(__m512d __A,__m512d __B)3526 __m512d test_mm512_div_round_pd(__m512d __A, __m512d __B) {
3527   // CHECK-LABEL: @test_mm512_div_round_pd
3528   // CHECK: @llvm.x86.avx512.div.pd.512
3529   return _mm512_div_round_pd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3530 }
test_mm512_mask_div_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3531 __m512d test_mm512_mask_div_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3532   // CHECK-LABEL: @test_mm512_mask_div_round_pd
3533   // CHECK: @llvm.x86.avx512.div.pd.512
3534   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3535   return _mm512_mask_div_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3536 }
test_mm512_maskz_div_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3537 __m512d test_mm512_maskz_div_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3538   // CHECK-LABEL: @test_mm512_maskz_div_round_pd
3539   // CHECK: @llvm.x86.avx512.div.pd.512
3540   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3541   return _mm512_maskz_div_round_pd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3542 }
test_mm512_div_pd(__m512d __a,__m512d __b)3543 __m512d test_mm512_div_pd(__m512d __a, __m512d __b) {
3544   // CHECK-LABEL: @test_mm512_div_pd
3545   // CHECK: fdiv <8 x double>
3546   return _mm512_div_pd(__a,__b);
3547 }
test_mm512_mask_div_pd(__m512d __w,__mmask8 __u,__m512d __a,__m512d __b)3548 __m512d test_mm512_mask_div_pd(__m512d __w, __mmask8 __u, __m512d __a, __m512d __b) {
3549   // CHECK-LABEL: @test_mm512_mask_div_pd
3550   // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3551   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3552   return _mm512_mask_div_pd(__w,__u,__a,__b);
3553 }
test_mm512_maskz_div_pd(__mmask8 __U,__m512d __A,__m512d __B)3554 __m512d test_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3555   // CHECK-LABEL: @test_mm512_maskz_div_pd
3556   // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3557   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3558   return _mm512_maskz_div_pd(__U,__A,__B);
3559 }
test_mm512_div_round_ps(__m512 __A,__m512 __B)3560 __m512 test_mm512_div_round_ps(__m512 __A, __m512 __B) {
3561   // CHECK-LABEL: @test_mm512_div_round_ps
3562   // CHECK: @llvm.x86.avx512.div.ps.512
3563   return _mm512_div_round_ps(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3564 }
test_mm512_mask_div_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3565 __m512 test_mm512_mask_div_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3566   // CHECK-LABEL: @test_mm512_mask_div_round_ps
3567   // CHECK: @llvm.x86.avx512.div.ps.512
3568   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3569   return _mm512_mask_div_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3570 }
test_mm512_maskz_div_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3571 __m512 test_mm512_maskz_div_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3572   // CHECK-LABEL: @test_mm512_maskz_div_round_ps
3573   // CHECK: @llvm.x86.avx512.div.ps.512
3574   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3575   return _mm512_maskz_div_round_ps(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3576 }
test_mm512_div_ps(__m512 __A,__m512 __B)3577 __m512 test_mm512_div_ps(__m512 __A, __m512 __B) {
3578   // CHECK-LABEL: @test_mm512_div_ps
3579   // CHECK: fdiv <16 x float>
3580   return _mm512_div_ps(__A,__B);
3581 }
test_mm512_mask_div_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3582 __m512 test_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3583   // CHECK-LABEL: @test_mm512_mask_div_ps
3584   // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3585   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3586   return _mm512_mask_div_ps(__W,__U,__A,__B);
3587 }
test_mm512_maskz_div_ps(__mmask16 __U,__m512 __A,__m512 __B)3588 __m512 test_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3589   // CHECK-LABEL: @test_mm512_maskz_div_ps
3590   // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3591   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3592   return _mm512_maskz_div_ps(__U,__A,__B);
3593 }
test_mm_div_round_ss(__m128 __A,__m128 __B)3594 __m128 test_mm_div_round_ss(__m128 __A, __m128 __B) {
3595   // CHECK-LABEL: @test_mm_div_round_ss
3596   // CHECK: @llvm.x86.avx512.mask.div.ss.round
3597   return _mm_div_round_ss(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3598 }
test_mm_mask_div_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3599 __m128 test_mm_mask_div_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3600   // CHECK-LABEL: @test_mm_mask_div_round_ss
3601   // CHECK: @llvm.x86.avx512.mask.div.ss.round
3602   return _mm_mask_div_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3603 }
test_mm_maskz_div_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3604 __m128 test_mm_maskz_div_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3605   // CHECK-LABEL: @test_mm_maskz_div_round_ss
3606   // CHECK: @llvm.x86.avx512.mask.div.ss.round
3607   return _mm_maskz_div_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3608 }
test_mm_mask_div_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3609 __m128 test_mm_mask_div_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3610   // CHECK-LABEL: @test_mm_mask_div_ss
3611   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3612   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3613   // CHECK: fdiv float %{{.*}}, %{{.*}}
3614   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3615   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3616   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3617   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3618   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3619   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3620   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3621   return _mm_mask_div_ss(__W,__U,__A,__B);
3622 }
test_mm_maskz_div_ss(__mmask8 __U,__m128 __A,__m128 __B)3623 __m128 test_mm_maskz_div_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3624   // CHECK-LABEL: @test_mm_maskz_div_ss
3625   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3626   // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3627   // CHECK: fdiv float %{{.*}}, %{{.*}}
3628   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3629   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3630   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3631   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3632   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3633   // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3634   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3635   return _mm_maskz_div_ss(__U,__A,__B);
3636 }
test_mm_div_round_sd(__m128d __A,__m128d __B)3637 __m128d test_mm_div_round_sd(__m128d __A, __m128d __B) {
3638   // CHECK-LABEL: @test_mm_div_round_sd
3639   // CHECK: @llvm.x86.avx512.mask.div.sd.round
3640   return _mm_div_round_sd(__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3641 }
test_mm_mask_div_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3642 __m128d test_mm_mask_div_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3643   // CHECK-LABEL: @test_mm_mask_div_round_sd
3644   // CHECK: @llvm.x86.avx512.mask.div.sd.round
3645   return _mm_mask_div_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3646 }
test_mm_maskz_div_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3647 __m128d test_mm_maskz_div_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3648   // CHECK-LABEL: @test_mm_maskz_div_round_sd
3649   // CHECK: @llvm.x86.avx512.mask.div.sd.round
3650   return _mm_maskz_div_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
3651 }
test_mm_mask_div_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3652 __m128d test_mm_mask_div_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3653   // CHECK-LABEL: @test_mm_mask_div_sd
3654   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3655   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3656   // CHECK: fdiv double %{{.*}}, %{{.*}}
3657   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3658   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3659   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3660   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3661   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3662   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3663   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3664   return _mm_mask_div_sd(__W,__U,__A,__B);
3665 }
test_mm_maskz_div_sd(__mmask8 __U,__m128d __A,__m128d __B)3666 __m128d test_mm_maskz_div_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3667   // CHECK-LABEL: @test_mm_maskz_div_sd
3668   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3669   // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3670   // CHECK: fdiv double %{{.*}}, %{{.*}}
3671   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3672   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3673   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3674   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3675   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3676   // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3677   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3678   return _mm_maskz_div_sd(__U,__A,__B);
3679 }
test_mm_max_round_ss(__m128 __A,__m128 __B)3680 __m128 test_mm_max_round_ss(__m128 __A, __m128 __B) {
3681   // CHECK-LABEL: @test_mm_max_round_ss
3682   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3683   return _mm_max_round_ss(__A,__B,0x08);
3684 }
test_mm_mask_max_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3685 __m128 test_mm_mask_max_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3686   // CHECK-LABEL: @test_mm_mask_max_round_ss
3687   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3688   return _mm_mask_max_round_ss(__W,__U,__A,__B,0x08);
3689 }
test_mm_maskz_max_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3690 __m128 test_mm_maskz_max_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3691   // CHECK-LABEL: @test_mm_maskz_max_round_ss
3692   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3693   return _mm_maskz_max_round_ss(__U,__A,__B,0x08);
3694 }
test_mm_mask_max_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3695 __m128 test_mm_mask_max_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3696   // CHECK-LABEL: @test_mm_mask_max_ss
3697   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3698   return _mm_mask_max_ss(__W,__U,__A,__B);
3699 }
test_mm_maskz_max_ss(__mmask8 __U,__m128 __A,__m128 __B)3700 __m128 test_mm_maskz_max_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3701   // CHECK-LABEL: @test_mm_maskz_max_ss
3702   // CHECK: @llvm.x86.avx512.mask.max.ss.round
3703   return _mm_maskz_max_ss(__U,__A,__B);
3704 }
test_mm_max_round_sd(__m128d __A,__m128d __B)3705 __m128d test_mm_max_round_sd(__m128d __A, __m128d __B) {
3706   // CHECK-LABEL: @test_mm_max_round_sd
3707   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3708   return _mm_max_round_sd(__A,__B,0x08);
3709 }
test_mm_mask_max_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3710 __m128d test_mm_mask_max_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3711   // CHECK-LABEL: @test_mm_mask_max_round_sd
3712   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3713   return _mm_mask_max_round_sd(__W,__U,__A,__B,0x08);
3714 }
test_mm_maskz_max_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3715 __m128d test_mm_maskz_max_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3716   // CHECK-LABEL: @test_mm_maskz_max_round_sd
3717   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3718   return _mm_maskz_max_round_sd(__U,__A,__B,0x08);
3719 }
test_mm_mask_max_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3720 __m128d test_mm_mask_max_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3721   // CHECK-LABEL: @test_mm_mask_max_sd
3722   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3723   return _mm_mask_max_sd(__W,__U,__A,__B);
3724 }
test_mm_maskz_max_sd(__mmask8 __U,__m128d __A,__m128d __B)3725 __m128d test_mm_maskz_max_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3726   // CHECK-LABEL: @test_mm_maskz_max_sd
3727   // CHECK: @llvm.x86.avx512.mask.max.sd.round
3728   return _mm_maskz_max_sd(__U,__A,__B);
3729 }
test_mm_min_round_ss(__m128 __A,__m128 __B)3730 __m128 test_mm_min_round_ss(__m128 __A, __m128 __B) {
3731   // CHECK-LABEL: @test_mm_min_round_ss
3732   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3733   return _mm_min_round_ss(__A,__B,0x08);
3734 }
test_mm_mask_min_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3735 __m128 test_mm_mask_min_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3736   // CHECK-LABEL: @test_mm_mask_min_round_ss
3737   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3738   return _mm_mask_min_round_ss(__W,__U,__A,__B,0x08);
3739 }
test_mm_maskz_min_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3740 __m128 test_mm_maskz_min_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3741   // CHECK-LABEL: @test_mm_maskz_min_round_ss
3742   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3743   return _mm_maskz_min_round_ss(__U,__A,__B,0x08);
3744 }
test_mm_mask_min_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3745 __m128 test_mm_mask_min_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3746   // CHECK-LABEL: @test_mm_mask_min_ss
3747   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3748   return _mm_mask_min_ss(__W,__U,__A,__B);
3749 }
test_mm_maskz_min_ss(__mmask8 __U,__m128 __A,__m128 __B)3750 __m128 test_mm_maskz_min_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3751   // CHECK-LABEL: @test_mm_maskz_min_ss
3752   // CHECK: @llvm.x86.avx512.mask.min.ss.round
3753   return _mm_maskz_min_ss(__U,__A,__B);
3754 }
test_mm_min_round_sd(__m128d __A,__m128d __B)3755 __m128d test_mm_min_round_sd(__m128d __A, __m128d __B) {
3756   // CHECK-LABEL: @test_mm_min_round_sd
3757   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3758   return _mm_min_round_sd(__A,__B,0x08);
3759 }
test_mm_mask_min_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3760 __m128d test_mm_mask_min_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3761   // CHECK-LABEL: @test_mm_mask_min_round_sd
3762   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3763   return _mm_mask_min_round_sd(__W,__U,__A,__B,0x08);
3764 }
test_mm_maskz_min_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3765 __m128d test_mm_maskz_min_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3766   // CHECK-LABEL: @test_mm_maskz_min_round_sd
3767   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3768   return _mm_maskz_min_round_sd(__U,__A,__B,0x08);
3769 }
test_mm_mask_min_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3770 __m128d test_mm_mask_min_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3771   // CHECK-LABEL: @test_mm_mask_min_sd
3772   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3773   return _mm_mask_min_sd(__W,__U,__A,__B);
3774 }
test_mm_maskz_min_sd(__mmask8 __U,__m128d __A,__m128d __B)3775 __m128d test_mm_maskz_min_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3776   // CHECK-LABEL: @test_mm_maskz_min_sd
3777   // CHECK: @llvm.x86.avx512.mask.min.sd.round
3778   return _mm_maskz_min_sd(__U,__A,__B);
3779 }
3780 
test_mm512_undefined()3781 __m512 test_mm512_undefined() {
3782   // CHECK-LABEL: @test_mm512_undefined
3783   // CHECK: ret <16 x float> zeroinitializer
3784   return _mm512_undefined();
3785 }
3786 
test_mm512_undefined_ps()3787 __m512 test_mm512_undefined_ps() {
3788   // CHECK-LABEL: @test_mm512_undefined_ps
3789   // CHECK: ret <16 x float> zeroinitializer
3790   return _mm512_undefined_ps();
3791 }
3792 
test_mm512_undefined_pd()3793 __m512d test_mm512_undefined_pd() {
3794   // CHECK-LABEL: @test_mm512_undefined_pd
3795   // CHECK: ret <8 x double> zeroinitializer
3796   return _mm512_undefined_pd();
3797 }
3798 
test_mm512_undefined_epi32()3799 __m512i test_mm512_undefined_epi32() {
3800   // CHECK-LABEL: @test_mm512_undefined_epi32
3801   // CHECK: ret <8 x i64> zeroinitializer
3802   return _mm512_undefined_epi32();
3803 }
3804 
test_mm512_cvtepi8_epi32(__m128i __A)3805 __m512i test_mm512_cvtepi8_epi32(__m128i __A) {
3806   // CHECK-LABEL: @test_mm512_cvtepi8_epi32
3807   // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3808   return _mm512_cvtepi8_epi32(__A);
3809 }
3810 
test_mm512_mask_cvtepi8_epi32(__m512i __W,__mmask16 __U,__m128i __A)3811 __m512i test_mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
3812   // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi32
3813   // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3814   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3815   return _mm512_mask_cvtepi8_epi32(__W, __U, __A);
3816 }
3817 
test_mm512_maskz_cvtepi8_epi32(__mmask16 __U,__m128i __A)3818 __m512i test_mm512_maskz_cvtepi8_epi32(__mmask16 __U, __m128i __A) {
3819   // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi32
3820   // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3821   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3822   return _mm512_maskz_cvtepi8_epi32(__U, __A);
3823 }
3824 
test_mm512_cvtepi8_epi64(__m128i __A)3825 __m512i test_mm512_cvtepi8_epi64(__m128i __A) {
3826   // CHECK-LABEL: @test_mm512_cvtepi8_epi64
3827   // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3828   return _mm512_cvtepi8_epi64(__A);
3829 }
3830 
test_mm512_mask_cvtepi8_epi64(__m512i __W,__mmask8 __U,__m128i __A)3831 __m512i test_mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3832   // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi64
3833   // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3834   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3835   return _mm512_mask_cvtepi8_epi64(__W, __U, __A);
3836 }
3837 
test_mm512_maskz_cvtepi8_epi64(__mmask8 __U,__m128i __A)3838 __m512i test_mm512_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
3839   // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi64
3840   // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3841   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3842   return _mm512_maskz_cvtepi8_epi64(__U, __A);
3843 }
3844 
test_mm512_cvtepi32_epi64(__m256i __X)3845 __m512i test_mm512_cvtepi32_epi64(__m256i __X) {
3846   // CHECK-LABEL: @test_mm512_cvtepi32_epi64
3847   // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3848   return _mm512_cvtepi32_epi64(__X);
3849 }
3850 
test_mm512_mask_cvtepi32_epi64(__m512i __W,__mmask8 __U,__m256i __X)3851 __m512i test_mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
3852   // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi64
3853   // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3854   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3855   return _mm512_mask_cvtepi32_epi64(__W, __U, __X);
3856 }
3857 
test_mm512_maskz_cvtepi32_epi64(__mmask8 __U,__m256i __X)3858 __m512i test_mm512_maskz_cvtepi32_epi64(__mmask8 __U, __m256i __X) {
3859   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi64
3860   // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3861   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3862   return _mm512_maskz_cvtepi32_epi64(__U, __X);
3863 }
3864 
test_mm512_cvtepi16_epi32(__m256i __A)3865 __m512i test_mm512_cvtepi16_epi32(__m256i __A) {
3866   // CHECK-LABEL: @test_mm512_cvtepi16_epi32
3867   // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3868   return _mm512_cvtepi16_epi32(__A);
3869 }
3870 
test_mm512_mask_cvtepi16_epi32(__m512i __W,__mmask16 __U,__m256i __A)3871 __m512i test_mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
3872   // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi32
3873   // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3874   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3875   return _mm512_mask_cvtepi16_epi32(__W, __U, __A);
3876 }
3877 
test_mm512_maskz_cvtepi16_epi32(__mmask16 __U,__m256i __A)3878 __m512i test_mm512_maskz_cvtepi16_epi32(__mmask16 __U, __m256i __A) {
3879   // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi32
3880   // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3881   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3882   return _mm512_maskz_cvtepi16_epi32(__U, __A);
3883 }
3884 
test_mm512_cvtepi16_epi64(__m128i __A)3885 __m512i test_mm512_cvtepi16_epi64(__m128i __A) {
3886   // CHECK-LABEL: @test_mm512_cvtepi16_epi64
3887   // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3888   return _mm512_cvtepi16_epi64(__A);
3889 }
3890 
test_mm512_mask_cvtepi16_epi64(__m512i __W,__mmask8 __U,__m128i __A)3891 __m512i test_mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3892   // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi64
3893   // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3894   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3895   return _mm512_mask_cvtepi16_epi64(__W, __U, __A);
3896 }
3897 
test_mm512_maskz_cvtepi16_epi64(__mmask8 __U,__m128i __A)3898 __m512i test_mm512_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
3899   // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi64
3900   // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3901   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3902   return _mm512_maskz_cvtepi16_epi64(__U, __A);
3903 }
3904 
test_mm512_cvtepu8_epi32(__m128i __A)3905 __m512i test_mm512_cvtepu8_epi32(__m128i __A) {
3906   // CHECK-LABEL: @test_mm512_cvtepu8_epi32
3907   // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3908   return _mm512_cvtepu8_epi32(__A);
3909 }
3910 
test_mm512_mask_cvtepu8_epi32(__m512i __W,__mmask16 __U,__m128i __A)3911 __m512i test_mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
3912   // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi32
3913   // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3914   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3915   return _mm512_mask_cvtepu8_epi32(__W, __U, __A);
3916 }
3917 
test_mm512_maskz_cvtepu8_epi32(__mmask16 __U,__m128i __A)3918 __m512i test_mm512_maskz_cvtepu8_epi32(__mmask16 __U, __m128i __A) {
3919   // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi32
3920   // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3921   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3922   return _mm512_maskz_cvtepu8_epi32(__U, __A);
3923 }
3924 
test_mm512_cvtepu8_epi64(__m128i __A)3925 __m512i test_mm512_cvtepu8_epi64(__m128i __A) {
3926   // CHECK-LABEL: @test_mm512_cvtepu8_epi64
3927   // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3928   return _mm512_cvtepu8_epi64(__A);
3929 }
3930 
test_mm512_mask_cvtepu8_epi64(__m512i __W,__mmask8 __U,__m128i __A)3931 __m512i test_mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3932   // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi64
3933   // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3934   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3935   return _mm512_mask_cvtepu8_epi64(__W, __U, __A);
3936 }
3937 
test_mm512_maskz_cvtepu8_epi64(__mmask8 __U,__m128i __A)3938 __m512i test_mm512_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
3939   // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi64
3940   // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3941   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3942   return _mm512_maskz_cvtepu8_epi64(__U, __A);
3943 }
3944 
test_mm512_cvtepu32_epi64(__m256i __X)3945 __m512i test_mm512_cvtepu32_epi64(__m256i __X) {
3946   // CHECK-LABEL: @test_mm512_cvtepu32_epi64
3947   // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3948   return _mm512_cvtepu32_epi64(__X);
3949 }
3950 
test_mm512_mask_cvtepu32_epi64(__m512i __W,__mmask8 __U,__m256i __X)3951 __m512i test_mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
3952   // CHECK-LABEL: @test_mm512_mask_cvtepu32_epi64
3953   // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3954   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3955   return _mm512_mask_cvtepu32_epi64(__W, __U, __X);
3956 }
3957 
test_mm512_maskz_cvtepu32_epi64(__mmask8 __U,__m256i __X)3958 __m512i test_mm512_maskz_cvtepu32_epi64(__mmask8 __U, __m256i __X) {
3959   // CHECK-LABEL: @test_mm512_maskz_cvtepu32_epi64
3960   // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3961   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3962   return _mm512_maskz_cvtepu32_epi64(__U, __X);
3963 }
3964 
test_mm512_cvtepu16_epi32(__m256i __A)3965 __m512i test_mm512_cvtepu16_epi32(__m256i __A) {
3966   // CHECK-LABEL: @test_mm512_cvtepu16_epi32
3967   // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3968   return _mm512_cvtepu16_epi32(__A);
3969 }
3970 
test_mm512_mask_cvtepu16_epi32(__m512i __W,__mmask16 __U,__m256i __A)3971 __m512i test_mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
3972   // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi32
3973   // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3974   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3975   return _mm512_mask_cvtepu16_epi32(__W, __U, __A);
3976 }
3977 
test_mm512_maskz_cvtepu16_epi32(__mmask16 __U,__m256i __A)3978 __m512i test_mm512_maskz_cvtepu16_epi32(__mmask16 __U, __m256i __A) {
3979   // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi32
3980   // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3981   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3982   return _mm512_maskz_cvtepu16_epi32(__U, __A);
3983 }
3984 
test_mm512_cvtepu16_epi64(__m128i __A)3985 __m512i test_mm512_cvtepu16_epi64(__m128i __A) {
3986   // CHECK-LABEL: @test_mm512_cvtepu16_epi64
3987   // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
3988   return _mm512_cvtepu16_epi64(__A);
3989 }
3990 
test_mm512_mask_cvtepu16_epi64(__m512i __W,__mmask8 __U,__m128i __A)3991 __m512i test_mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3992   // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi64
3993   // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
3994   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3995   return _mm512_mask_cvtepu16_epi64(__W, __U, __A);
3996 }
3997 
test_mm512_maskz_cvtepu16_epi64(__mmask8 __U,__m128i __A)3998 __m512i test_mm512_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
3999   // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi64
4000   // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
4001   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4002   return _mm512_maskz_cvtepu16_epi64(__U, __A);
4003 }
4004 
4005 
test_mm512_rol_epi32(__m512i __A)4006 __m512i test_mm512_rol_epi32(__m512i __A) {
4007   // CHECK-LABEL: @test_mm512_rol_epi32
4008   // CHECK: @llvm.fshl.v16i32
4009   return _mm512_rol_epi32(__A, 5);
4010 }
4011 
test_mm512_mask_rol_epi32(__m512i __W,__mmask16 __U,__m512i __A)4012 __m512i test_mm512_mask_rol_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4013   // CHECK-LABEL: @test_mm512_mask_rol_epi32
4014   // CHECK: @llvm.fshl.v16i32
4015   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4016   return _mm512_mask_rol_epi32(__W, __U, __A, 5);
4017 }
4018 
test_mm512_maskz_rol_epi32(__mmask16 __U,__m512i __A)4019 __m512i test_mm512_maskz_rol_epi32(__mmask16 __U, __m512i __A) {
4020   // CHECK-LABEL: @test_mm512_maskz_rol_epi32
4021   // CHECK: @llvm.fshl.v16i32
4022   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4023   return _mm512_maskz_rol_epi32(__U, __A, 5);
4024 }
4025 
test_mm512_rol_epi64(__m512i __A)4026 __m512i test_mm512_rol_epi64(__m512i __A) {
4027   // CHECK-LABEL: @test_mm512_rol_epi64
4028   // CHECK: @llvm.fshl.v8i64
4029   return _mm512_rol_epi64(__A, 5);
4030 }
4031 
test_mm512_mask_rol_epi64(__m512i __W,__mmask8 __U,__m512i __A)4032 __m512i test_mm512_mask_rol_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4033   // CHECK-LABEL: @test_mm512_mask_rol_epi64
4034   // CHECK: @llvm.fshl.v8i64
4035   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4036   return _mm512_mask_rol_epi64(__W, __U, __A, 5);
4037 }
4038 
test_mm512_maskz_rol_epi64(__mmask8 __U,__m512i __A)4039 __m512i test_mm512_maskz_rol_epi64(__mmask8 __U, __m512i __A) {
4040   // CHECK-LABEL: @test_mm512_maskz_rol_epi64
4041   // CHECK: @llvm.fshl.v8i64
4042   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4043   return _mm512_maskz_rol_epi64(__U, __A, 5);
4044 }
4045 
test_mm512_rolv_epi32(__m512i __A,__m512i __B)4046 __m512i test_mm512_rolv_epi32(__m512i __A, __m512i __B) {
4047   // CHECK-LABEL: @test_mm512_rolv_epi32
4048   // CHECK: @llvm.fshl.v16i32
4049   return _mm512_rolv_epi32(__A, __B);
4050 }
4051 
test_mm512_mask_rolv_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4052 __m512i test_mm512_mask_rolv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4053   // CHECK-LABEL: @test_mm512_mask_rolv_epi32
4054   // CHECK: @llvm.fshl.v16i32
4055   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4056   return _mm512_mask_rolv_epi32(__W, __U, __A, __B);
4057 }
4058 
test_mm512_maskz_rolv_epi32(__mmask16 __U,__m512i __A,__m512i __B)4059 __m512i test_mm512_maskz_rolv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
4060   // CHECK-LABEL: @test_mm512_maskz_rolv_epi32
4061   // CHECK: @llvm.fshl.v16i32
4062   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4063   return _mm512_maskz_rolv_epi32(__U, __A, __B);
4064 }
4065 
test_mm512_rolv_epi64(__m512i __A,__m512i __B)4066 __m512i test_mm512_rolv_epi64(__m512i __A, __m512i __B) {
4067   // CHECK-LABEL: @test_mm512_rolv_epi64
4068   // CHECK: @llvm.fshl.v8i64
4069   return _mm512_rolv_epi64(__A, __B);
4070 }
4071 
test_mm512_mask_rolv_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)4072 __m512i test_mm512_mask_rolv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
4073   // CHECK-LABEL: @test_mm512_mask_rolv_epi64
4074   // CHECK: @llvm.fshl.v8i64
4075   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4076   return _mm512_mask_rolv_epi64(__W, __U, __A, __B);
4077 }
4078 
test_mm512_maskz_rolv_epi64(__mmask8 __U,__m512i __A,__m512i __B)4079 __m512i test_mm512_maskz_rolv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
4080   // CHECK-LABEL: @test_mm512_maskz_rolv_epi64
4081   // CHECK: @llvm.fshl.v8i64
4082   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4083   return _mm512_maskz_rolv_epi64(__U, __A, __B);
4084 }
4085 
test_mm512_ror_epi32(__m512i __A)4086 __m512i test_mm512_ror_epi32(__m512i __A) {
4087   // CHECK-LABEL: @test_mm512_ror_epi32
4088   // CHECK: @llvm.fshr.v16i32
4089   return _mm512_ror_epi32(__A, 5);
4090 }
4091 
test_mm512_mask_ror_epi32(__m512i __W,__mmask16 __U,__m512i __A)4092 __m512i test_mm512_mask_ror_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4093   // CHECK-LABEL: @test_mm512_mask_ror_epi32
4094   // CHECK: @llvm.fshr.v16i32
4095   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4096   return _mm512_mask_ror_epi32(__W, __U, __A, 5);
4097 }
4098 
test_mm512_maskz_ror_epi32(__mmask16 __U,__m512i __A)4099 __m512i test_mm512_maskz_ror_epi32(__mmask16 __U, __m512i __A) {
4100   // CHECK-LABEL: @test_mm512_maskz_ror_epi32
4101   // CHECK: @llvm.fshr.v16i32
4102   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4103   return _mm512_maskz_ror_epi32(__U, __A, 5);
4104 }
4105 
test_mm512_ror_epi64(__m512i __A)4106 __m512i test_mm512_ror_epi64(__m512i __A) {
4107   // CHECK-LABEL: @test_mm512_ror_epi64
4108   // CHECK: @llvm.fshr.v8i64
4109   return _mm512_ror_epi64(__A, 5);
4110 }
4111 
test_mm512_mask_ror_epi64(__m512i __W,__mmask8 __U,__m512i __A)4112 __m512i test_mm512_mask_ror_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4113   // CHECK-LABEL: @test_mm512_mask_ror_epi64
4114   // CHECK: @llvm.fshr.v8i64
4115   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4116   return _mm512_mask_ror_epi64(__W, __U, __A, 5);
4117 }
4118 
test_mm512_maskz_ror_epi64(__mmask8 __U,__m512i __A)4119 __m512i test_mm512_maskz_ror_epi64(__mmask8 __U, __m512i __A) {
4120   // CHECK-LABEL: @test_mm512_maskz_ror_epi64
4121   // CHECK: @llvm.fshr.v8i64
4122   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4123   return _mm512_maskz_ror_epi64(__U, __A, 5);
4124 }
4125 
4126 
test_mm512_rorv_epi32(__m512i __A,__m512i __B)4127 __m512i test_mm512_rorv_epi32(__m512i __A, __m512i __B) {
4128   // CHECK-LABEL: @test_mm512_rorv_epi32
4129   // CHECK: @llvm.fshr.v16i32
4130   return _mm512_rorv_epi32(__A, __B);
4131 }
4132 
test_mm512_mask_rorv_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4133 __m512i test_mm512_mask_rorv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4134   // CHECK-LABEL: @test_mm512_mask_rorv_epi32
4135   // CHECK: @llvm.fshr.v16i32
4136   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4137   return _mm512_mask_rorv_epi32(__W, __U, __A, __B);
4138 }
4139 
test_mm512_maskz_rorv_epi32(__mmask16 __U,__m512i __A,__m512i __B)4140 __m512i test_mm512_maskz_rorv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
4141   // CHECK-LABEL: @test_mm512_maskz_rorv_epi32
4142   // CHECK: @llvm.fshr.v16i32
4143   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4144   return _mm512_maskz_rorv_epi32(__U, __A, __B);
4145 }
4146 
test_mm512_rorv_epi64(__m512i __A,__m512i __B)4147 __m512i test_mm512_rorv_epi64(__m512i __A, __m512i __B) {
4148   // CHECK-LABEL: @test_mm512_rorv_epi64
4149   // CHECK: @llvm.fshr.v8i64
4150   return _mm512_rorv_epi64(__A, __B);
4151 }
4152 
test_mm512_mask_rorv_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)4153 __m512i test_mm512_mask_rorv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
4154   // CHECK-LABEL: @test_mm512_mask_rorv_epi64
4155   // CHECK: @llvm.fshr.v8i64
4156   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4157   return _mm512_mask_rorv_epi64(__W, __U, __A, __B);
4158 }
4159 
test_mm512_maskz_rorv_epi64(__mmask8 __U,__m512i __A,__m512i __B)4160 __m512i test_mm512_maskz_rorv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
4161   // CHECK-LABEL: @test_mm512_maskz_rorv_epi64
4162   // CHECK: @llvm.fshr.v8i64
4163   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4164   return _mm512_maskz_rorv_epi64(__U, __A, __B);
4165 }
4166 
test_mm512_slli_epi32(__m512i __A)4167 __m512i test_mm512_slli_epi32(__m512i __A) {
4168   // CHECK-LABEL: @test_mm512_slli_epi32
4169   // CHECK: @llvm.x86.avx512.pslli.d.512
4170   return _mm512_slli_epi32(__A, 5);
4171 }
4172 
test_mm512_slli_epi32_2(__m512i __A,unsigned int __B)4173 __m512i test_mm512_slli_epi32_2(__m512i __A, unsigned int __B) {
4174   // CHECK-LABEL: @test_mm512_slli_epi32_2
4175   // CHECK: @llvm.x86.avx512.pslli.d.512
4176   return _mm512_slli_epi32(__A, __B);
4177 }
4178 
test_mm512_mask_slli_epi32(__m512i __W,__mmask16 __U,__m512i __A)4179 __m512i test_mm512_mask_slli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4180   // CHECK-LABEL: @test_mm512_mask_slli_epi32
4181   // CHECK: @llvm.x86.avx512.pslli.d.512
4182   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4183   return _mm512_mask_slli_epi32(__W, __U, __A, 5);
4184 }
4185 
test_mm512_mask_slli_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,unsigned int __B)4186 __m512i test_mm512_mask_slli_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, unsigned int __B) {
4187   // CHECK-LABEL: @test_mm512_mask_slli_epi32_2
4188   // CHECK: @llvm.x86.avx512.pslli.d.512
4189   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4190   return _mm512_mask_slli_epi32(__W, __U, __A, __B);
4191 }
4192 
test_mm512_maskz_slli_epi32(__mmask16 __U,__m512i __A)4193 __m512i test_mm512_maskz_slli_epi32(__mmask16 __U, __m512i __A) {
4194   // CHECK-LABEL: @test_mm512_maskz_slli_epi32
4195   // CHECK: @llvm.x86.avx512.pslli.d.512
4196   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4197   return _mm512_maskz_slli_epi32(__U, __A, 5);
4198 }
4199 
test_mm512_maskz_slli_epi32_2(__mmask16 __U,__m512i __A,unsigned int __B)4200 __m512i test_mm512_maskz_slli_epi32_2(__mmask16 __U, __m512i __A, unsigned int __B) {
4201   // CHECK-LABEL: @test_mm512_maskz_slli_epi32_2
4202   // CHECK: @llvm.x86.avx512.pslli.d.512
4203   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4204   return _mm512_maskz_slli_epi32(__U, __A, __B);
4205 }
4206 
test_mm512_slli_epi64(__m512i __A)4207 __m512i test_mm512_slli_epi64(__m512i __A) {
4208   // CHECK-LABEL: @test_mm512_slli_epi64
4209   // CHECK: @llvm.x86.avx512.pslli.q.512
4210   return _mm512_slli_epi64(__A, 5);
4211 }
4212 
test_mm512_slli_epi64_2(__m512i __A,unsigned int __B)4213 __m512i test_mm512_slli_epi64_2(__m512i __A, unsigned int __B) {
4214   // CHECK-LABEL: @test_mm512_slli_epi64_2
4215   // CHECK: @llvm.x86.avx512.pslli.q.512
4216   return _mm512_slli_epi64(__A, __B);
4217 }
4218 
test_mm512_mask_slli_epi64(__m512i __W,__mmask8 __U,__m512i __A)4219 __m512i test_mm512_mask_slli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4220   // CHECK-LABEL: @test_mm512_mask_slli_epi64
4221   // CHECK: @llvm.x86.avx512.pslli.q.512
4222   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4223   return _mm512_mask_slli_epi64(__W, __U, __A, 5);
4224 }
4225 
test_mm512_mask_slli_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,unsigned int __B)4226 __m512i test_mm512_mask_slli_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, unsigned int __B) {
4227   // CHECK-LABEL: @test_mm512_mask_slli_epi64_2
4228   // CHECK: @llvm.x86.avx512.pslli.q.512
4229   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4230   return _mm512_mask_slli_epi64(__W, __U, __A, __B);
4231 }
4232 
test_mm512_maskz_slli_epi64(__mmask8 __U,__m512i __A)4233 __m512i test_mm512_maskz_slli_epi64(__mmask8 __U, __m512i __A) {
4234   // CHECK-LABEL: @test_mm512_maskz_slli_epi64
4235   // CHECK: @llvm.x86.avx512.pslli.q.512
4236   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4237   return _mm512_maskz_slli_epi64(__U, __A, 5);
4238 }
4239 
test_mm512_maskz_slli_epi64_2(__mmask8 __U,__m512i __A,unsigned int __B)4240 __m512i test_mm512_maskz_slli_epi64_2(__mmask8 __U, __m512i __A, unsigned int __B) {
4241   // CHECK-LABEL: @test_mm512_maskz_slli_epi64_2
4242   // CHECK: @llvm.x86.avx512.pslli.q.512
4243   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4244   return _mm512_maskz_slli_epi64(__U, __A, __B);
4245 }
4246 
test_mm512_srli_epi32(__m512i __A)4247 __m512i test_mm512_srli_epi32(__m512i __A) {
4248   // CHECK-LABEL: @test_mm512_srli_epi32
4249   // CHECK: @llvm.x86.avx512.psrli.d.512
4250   return _mm512_srli_epi32(__A, 5);
4251 }
4252 
test_mm512_srli_epi32_2(__m512i __A,unsigned int __B)4253 __m512i test_mm512_srli_epi32_2(__m512i __A, unsigned int __B) {
4254   // CHECK-LABEL: @test_mm512_srli_epi32_2
4255   // CHECK: @llvm.x86.avx512.psrli.d.512
4256   return _mm512_srli_epi32(__A, __B);
4257 }
4258 
test_mm512_mask_srli_epi32(__m512i __W,__mmask16 __U,__m512i __A)4259 __m512i test_mm512_mask_srli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4260   // CHECK-LABEL: @test_mm512_mask_srli_epi32
4261   // CHECK: @llvm.x86.avx512.psrli.d.512
4262   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4263   return _mm512_mask_srli_epi32(__W, __U, __A, 5);
4264 }
4265 
test_mm512_mask_srli_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,unsigned int __B)4266 __m512i test_mm512_mask_srli_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, unsigned int __B) {
4267   // CHECK-LABEL: @test_mm512_mask_srli_epi32_2
4268   // CHECK: @llvm.x86.avx512.psrli.d.512
4269   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4270   return _mm512_mask_srli_epi32(__W, __U, __A, __B);
4271 }
4272 
test_mm512_maskz_srli_epi32(__mmask16 __U,__m512i __A)4273 __m512i test_mm512_maskz_srli_epi32(__mmask16 __U, __m512i __A) {
4274   // CHECK-LABEL: @test_mm512_maskz_srli_epi32
4275   // CHECK: @llvm.x86.avx512.psrli.d.512
4276   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4277   return _mm512_maskz_srli_epi32(__U, __A, 5);
4278 }
4279 
test_mm512_maskz_srli_epi32_2(__mmask16 __U,__m512i __A,unsigned int __B)4280 __m512i test_mm512_maskz_srli_epi32_2(__mmask16 __U, __m512i __A, unsigned int __B) {
4281   // CHECK-LABEL: @test_mm512_maskz_srli_epi32_2
4282   // CHECK: @llvm.x86.avx512.psrli.d.512
4283   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4284   return _mm512_maskz_srli_epi32(__U, __A, __B);
4285 }
4286 
test_mm512_srli_epi64(__m512i __A)4287 __m512i test_mm512_srli_epi64(__m512i __A) {
4288   // CHECK-LABEL: @test_mm512_srli_epi64
4289   // CHECK: @llvm.x86.avx512.psrli.q.512
4290   return _mm512_srli_epi64(__A, 5);
4291 }
4292 
test_mm512_srli_epi64_2(__m512i __A,unsigned int __B)4293 __m512i test_mm512_srli_epi64_2(__m512i __A, unsigned int __B) {
4294   // CHECK-LABEL: @test_mm512_srli_epi64_2
4295   // CHECK: @llvm.x86.avx512.psrli.q.512
4296   return _mm512_srli_epi64(__A, __B);
4297 }
4298 
test_mm512_mask_srli_epi64(__m512i __W,__mmask8 __U,__m512i __A)4299 __m512i test_mm512_mask_srli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4300   // CHECK-LABEL: @test_mm512_mask_srli_epi64
4301   // CHECK: @llvm.x86.avx512.psrli.q.512
4302   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4303   return _mm512_mask_srli_epi64(__W, __U, __A, 5);
4304 }
4305 
test_mm512_mask_srli_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,unsigned int __B)4306 __m512i test_mm512_mask_srli_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, unsigned int __B) {
4307   // CHECK-LABEL: @test_mm512_mask_srli_epi64_2
4308   // CHECK: @llvm.x86.avx512.psrli.q.512
4309   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4310   return _mm512_mask_srli_epi64(__W, __U, __A, __B);
4311 }
4312 
test_mm512_maskz_srli_epi64(__mmask8 __U,__m512i __A)4313 __m512i test_mm512_maskz_srli_epi64(__mmask8 __U, __m512i __A) {
4314   // CHECK-LABEL: @test_mm512_maskz_srli_epi64
4315   // CHECK: @llvm.x86.avx512.psrli.q.512
4316   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4317   return _mm512_maskz_srli_epi64(__U, __A, 5);
4318 }
4319 
test_mm512_maskz_srli_epi64_2(__mmask8 __U,__m512i __A,unsigned int __B)4320 __m512i test_mm512_maskz_srli_epi64_2(__mmask8 __U, __m512i __A, unsigned int __B) {
4321   // CHECK-LABEL: @test_mm512_maskz_srli_epi64_2
4322   // CHECK: @llvm.x86.avx512.psrli.q.512
4323   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4324   return _mm512_maskz_srli_epi64(__U, __A, __B);
4325 }
4326 
test_mm512_mask_load_epi32(__m512i __W,__mmask16 __U,void const * __P)4327 __m512i test_mm512_mask_load_epi32(__m512i __W, __mmask16 __U, void const *__P) {
4328   // CHECK-LABEL: @test_mm512_mask_load_epi32
4329   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4330   return _mm512_mask_load_epi32(__W, __U, __P);
4331 }
4332 
test_mm512_maskz_load_epi32(__mmask16 __U,void const * __P)4333 __m512i test_mm512_maskz_load_epi32(__mmask16 __U, void const *__P) {
4334   // CHECK-LABEL: @test_mm512_maskz_load_epi32
4335   // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4336   return _mm512_maskz_load_epi32(__U, __P);
4337 }
4338 
test_mm512_mask_mov_epi32(__m512i __W,__mmask16 __U,__m512i __A)4339 __m512i test_mm512_mask_mov_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4340   // CHECK-LABEL: @test_mm512_mask_mov_epi32
4341   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4342   return _mm512_mask_mov_epi32(__W, __U, __A);
4343 }
4344 
test_mm512_maskz_mov_epi32(__mmask16 __U,__m512i __A)4345 __m512i test_mm512_maskz_mov_epi32(__mmask16 __U, __m512i __A) {
4346   // CHECK-LABEL: @test_mm512_maskz_mov_epi32
4347   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4348   return _mm512_maskz_mov_epi32(__U, __A);
4349 }
4350 
test_mm512_mask_mov_epi64(__m512i __W,__mmask8 __U,__m512i __A)4351 __m512i test_mm512_mask_mov_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4352   // CHECK-LABEL: @test_mm512_mask_mov_epi64
4353   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4354   return _mm512_mask_mov_epi64(__W, __U, __A);
4355 }
4356 
test_mm512_maskz_mov_epi64(__mmask8 __U,__m512i __A)4357 __m512i test_mm512_maskz_mov_epi64(__mmask8 __U, __m512i __A) {
4358   // CHECK-LABEL: @test_mm512_maskz_mov_epi64
4359   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4360   return _mm512_maskz_mov_epi64(__U, __A);
4361 }
4362 
test_mm512_mask_load_epi64(__m512i __W,__mmask8 __U,void const * __P)4363 __m512i test_mm512_mask_load_epi64(__m512i __W, __mmask8 __U, void const *__P) {
4364   // CHECK-LABEL: @test_mm512_mask_load_epi64
4365   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4366   return _mm512_mask_load_epi64(__W, __U, __P);
4367 }
4368 
test_mm512_maskz_load_epi64(__mmask8 __U,void const * __P)4369 __m512i test_mm512_maskz_load_epi64(__mmask8 __U, void const *__P) {
4370   // CHECK-LABEL: @test_mm512_maskz_load_epi64
4371   // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4372   return _mm512_maskz_load_epi64(__U, __P);
4373 }
4374 
test_mm512_mask_store_epi32(void * __P,__mmask16 __U,__m512i __A)4375 void test_mm512_mask_store_epi32(void *__P, __mmask16 __U, __m512i __A) {
4376   // CHECK-LABEL: @test_mm512_mask_store_epi32
4377   // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
4378   return _mm512_mask_store_epi32(__P, __U, __A);
4379 }
4380 
test_mm512_mask_store_epi64(void * __P,__mmask8 __U,__m512i __A)4381 void test_mm512_mask_store_epi64(void *__P, __mmask8 __U, __m512i __A) {
4382   // CHECK-LABEL: @test_mm512_mask_store_epi64
4383   // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
4384   return _mm512_mask_store_epi64(__P, __U, __A);
4385 }
4386 
test_mm512_movedup_pd(__m512d __A)4387 __m512d test_mm512_movedup_pd(__m512d __A) {
4388   // CHECK-LABEL: @test_mm512_movedup_pd
4389   // 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>
4390   return _mm512_movedup_pd(__A);
4391 }
4392 
test_mm512_mask_movedup_pd(__m512d __W,__mmask8 __U,__m512d __A)4393 __m512d test_mm512_mask_movedup_pd(__m512d __W, __mmask8 __U, __m512d __A) {
4394   // CHECK-LABEL: @test_mm512_mask_movedup_pd
4395   // 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>
4396   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4397   return _mm512_mask_movedup_pd(__W, __U, __A);
4398 }
4399 
test_mm512_maskz_movedup_pd(__mmask8 __U,__m512d __A)4400 __m512d test_mm512_maskz_movedup_pd(__mmask8 __U, __m512d __A) {
4401   // CHECK-LABEL: @test_mm512_maskz_movedup_pd
4402   // 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>
4403   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4404   return _mm512_maskz_movedup_pd(__U, __A);
4405 }
4406 
test_mm_comi_round_sd(__m128d __A,__m128d __B)4407 int test_mm_comi_round_sd(__m128d __A, __m128d __B) {
4408   // CHECK-LABEL: @test_mm_comi_round_sd
4409   // CHECK: @llvm.x86.avx512.vcomi.sd
4410   return _mm_comi_round_sd(__A, __B, 5, _MM_FROUND_NO_EXC);
4411 }
4412 
test_mm_comi_round_ss(__m128 __A,__m128 __B)4413 int test_mm_comi_round_ss(__m128 __A, __m128 __B) {
4414   // CHECK-LABEL: @test_mm_comi_round_ss
4415   // CHECK: @llvm.x86.avx512.vcomi.ss
4416   return _mm_comi_round_ss(__A, __B, 5, _MM_FROUND_NO_EXC);
4417 }
4418 
test_mm512_fixupimm_round_pd(__m512d __A,__m512d __B,__m512i __C)4419 __m512d test_mm512_fixupimm_round_pd(__m512d __A, __m512d __B, __m512i __C) {
4420   // CHECK-LABEL: @test_mm512_fixupimm_round_pd
4421   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4422   return _mm512_fixupimm_round_pd(__A, __B, __C, 5, 8);
4423 }
4424 
test_mm512_mask_fixupimm_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512i __C)4425 __m512d test_mm512_mask_fixupimm_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
4426   // CHECK-LABEL: @test_mm512_mask_fixupimm_round_pd
4427   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4428   return _mm512_mask_fixupimm_round_pd(__A, __U, __B, __C, 5, 8);
4429 }
4430 
test_mm512_fixupimm_pd(__m512d __A,__m512d __B,__m512i __C)4431 __m512d test_mm512_fixupimm_pd(__m512d __A, __m512d __B, __m512i __C) {
4432   // CHECK-LABEL: @test_mm512_fixupimm_pd
4433   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4434   return _mm512_fixupimm_pd(__A, __B, __C, 5);
4435 }
4436 
test_mm512_mask_fixupimm_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512i __C)4437 __m512d test_mm512_mask_fixupimm_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
4438   // CHECK-LABEL: @test_mm512_mask_fixupimm_pd
4439   // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4440   return _mm512_mask_fixupimm_pd(__A, __U, __B, __C, 5);
4441 }
4442 
test_mm512_maskz_fixupimm_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512i __C)4443 __m512d test_mm512_maskz_fixupimm_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
4444   // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_pd
4445   // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4446   return _mm512_maskz_fixupimm_round_pd(__U, __A, __B, __C, 5, 8);
4447 }
4448 
test_mm512_maskz_fixupimm_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512i __C)4449 __m512d test_mm512_maskz_fixupimm_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
4450   // CHECK-LABEL: @test_mm512_maskz_fixupimm_pd
4451   // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4452   return _mm512_maskz_fixupimm_pd(__U, __A, __B, __C, 5);
4453 }
4454 
test_mm512_fixupimm_round_ps(__m512 __A,__m512 __B,__m512i __C)4455 __m512 test_mm512_fixupimm_round_ps(__m512 __A, __m512 __B, __m512i __C) {
4456   // CHECK-LABEL: @test_mm512_fixupimm_round_ps
4457   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4458   return _mm512_fixupimm_round_ps(__A, __B, __C, 5, 8);
4459 }
4460 
test_mm512_mask_fixupimm_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512i __C)4461 __m512 test_mm512_mask_fixupimm_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
4462   // CHECK-LABEL: @test_mm512_mask_fixupimm_round_ps
4463   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4464   return _mm512_mask_fixupimm_round_ps(__A, __U, __B, __C, 5, 8);
4465 }
4466 
test_mm512_fixupimm_ps(__m512 __A,__m512 __B,__m512i __C)4467 __m512 test_mm512_fixupimm_ps(__m512 __A, __m512 __B, __m512i __C) {
4468   // CHECK-LABEL: @test_mm512_fixupimm_ps
4469   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4470   return _mm512_fixupimm_ps(__A, __B, __C, 5);
4471 }
4472 
test_mm512_mask_fixupimm_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512i __C)4473 __m512 test_mm512_mask_fixupimm_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
4474   // CHECK-LABEL: @test_mm512_mask_fixupimm_ps
4475   // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4476   return _mm512_mask_fixupimm_ps(__A, __U, __B, __C, 5);
4477 }
4478 
test_mm512_maskz_fixupimm_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512i __C)4479 __m512 test_mm512_maskz_fixupimm_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
4480   // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_ps
4481   // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4482   return _mm512_maskz_fixupimm_round_ps(__U, __A, __B, __C, 5, 8);
4483 }
4484 
test_mm512_maskz_fixupimm_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512i __C)4485 __m512 test_mm512_maskz_fixupimm_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
4486   // CHECK-LABEL: @test_mm512_maskz_fixupimm_ps
4487   // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4488   return _mm512_maskz_fixupimm_ps(__U, __A, __B, __C, 5);
4489 }
4490 
test_mm_fixupimm_round_sd(__m128d __A,__m128d __B,__m128i __C)4491 __m128d test_mm_fixupimm_round_sd(__m128d __A, __m128d __B, __m128i __C) {
4492   // CHECK-LABEL: @test_mm_fixupimm_round_sd
4493   // CHECK: @llvm.x86.avx512.mask.fixupimm
4494   return _mm_fixupimm_round_sd(__A, __B, __C, 5, 8);
4495 }
4496 
test_mm_mask_fixupimm_round_sd(__m128d __A,__mmask8 __U,__m128d __B,__m128i __C)4497 __m128d test_mm_mask_fixupimm_round_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
4498   // CHECK-LABEL: @test_mm_mask_fixupimm_round_sd
4499   // CHECK: @llvm.x86.avx512.mask.fixupimm
4500   return _mm_mask_fixupimm_round_sd(__A, __U, __B, __C, 5, 8);
4501 }
4502 
test_mm_fixupimm_sd(__m128d __A,__m128d __B,__m128i __C)4503 __m128d test_mm_fixupimm_sd(__m128d __A, __m128d __B, __m128i __C) {
4504   // CHECK-LABEL: @test_mm_fixupimm_sd
4505   // CHECK: @llvm.x86.avx512.mask.fixupimm
4506   return _mm_fixupimm_sd(__A, __B, __C, 5);
4507 }
4508 
test_mm_mask_fixupimm_sd(__m128d __A,__mmask8 __U,__m128d __B,__m128i __C)4509 __m128d test_mm_mask_fixupimm_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
4510   // CHECK-LABEL: @test_mm_mask_fixupimm_sd
4511   // CHECK: @llvm.x86.avx512.mask.fixupimm
4512   return _mm_mask_fixupimm_sd(__A, __U, __B, __C, 5);
4513 }
4514 
test_mm_maskz_fixupimm_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128i __C)4515 __m128d test_mm_maskz_fixupimm_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
4516   // CHECK-LABEL: @test_mm_maskz_fixupimm_round_sd
4517   // CHECK: @llvm.x86.avx512.maskz.fixupimm
4518   return _mm_maskz_fixupimm_round_sd(__U, __A, __B, __C, 5, 8);
4519 }
4520 
test_mm_maskz_fixupimm_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128i __C)4521 __m128d test_mm_maskz_fixupimm_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
4522   // CHECK-LABEL: @test_mm_maskz_fixupimm_sd
4523   // CHECK: @llvm.x86.avx512.maskz.fixupimm
4524   return _mm_maskz_fixupimm_sd(__U, __A, __B, __C, 5);
4525 }
4526 
test_mm_fixupimm_round_ss(__m128 __A,__m128 __B,__m128i __C)4527 __m128 test_mm_fixupimm_round_ss(__m128 __A, __m128 __B, __m128i __C) {
4528   // CHECK-LABEL: @test_mm_fixupimm_round_ss
4529   // CHECK: @llvm.x86.avx512.mask.fixupimm
4530   return _mm_fixupimm_round_ss(__A, __B, __C, 5, 8);
4531 }
4532 
test_mm_mask_fixupimm_round_ss(__m128 __A,__mmask8 __U,__m128 __B,__m128i __C)4533 __m128 test_mm_mask_fixupimm_round_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
4534   // CHECK-LABEL: @test_mm_mask_fixupimm_round_ss
4535   // CHECK: @llvm.x86.avx512.mask.fixupimm
4536   return _mm_mask_fixupimm_round_ss(__A, __U, __B, __C, 5, 8);
4537 }
4538 
test_mm_fixupimm_ss(__m128 __A,__m128 __B,__m128i __C)4539 __m128 test_mm_fixupimm_ss(__m128 __A, __m128 __B, __m128i __C) {
4540   // CHECK-LABEL: @test_mm_fixupimm_ss
4541   // CHECK: @llvm.x86.avx512.mask.fixupimm
4542   return _mm_fixupimm_ss(__A, __B, __C, 5);
4543 }
4544 
test_mm_mask_fixupimm_ss(__m128 __A,__mmask8 __U,__m128 __B,__m128i __C)4545 __m128 test_mm_mask_fixupimm_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
4546   // CHECK-LABEL: @test_mm_mask_fixupimm_ss
4547   // CHECK: @llvm.x86.avx512.mask.fixupimm
4548   return _mm_mask_fixupimm_ss(__A, __U, __B, __C, 5);
4549 }
4550 
test_mm_maskz_fixupimm_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128i __C)4551 __m128 test_mm_maskz_fixupimm_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
4552   // CHECK-LABEL: @test_mm_maskz_fixupimm_round_ss
4553   // CHECK: @llvm.x86.avx512.maskz.fixupimm
4554   return _mm_maskz_fixupimm_round_ss(__U, __A, __B, __C, 5, 8);
4555 }
4556 
test_mm_maskz_fixupimm_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128i __C)4557 __m128 test_mm_maskz_fixupimm_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
4558   // CHECK-LABEL: @test_mm_maskz_fixupimm_ss
4559   // CHECK: @llvm.x86.avx512.maskz.fixupimm
4560   return _mm_maskz_fixupimm_ss(__U, __A, __B, __C, 5);
4561 }
4562 
test_mm_getexp_round_sd(__m128d __A,__m128d __B)4563 __m128d test_mm_getexp_round_sd(__m128d __A, __m128d __B) {
4564   // CHECK-LABEL: @test_mm_getexp_round_sd
4565   // CHECK: @llvm.x86.avx512.mask.getexp.sd
4566   return _mm_getexp_round_sd(__A, __B, 8);
4567 }
4568 
test_mm_getexp_sd(__m128d __A,__m128d __B)4569 __m128d test_mm_getexp_sd(__m128d __A, __m128d __B) {
4570   // CHECK-LABEL: @test_mm_getexp_sd
4571   // CHECK: @llvm.x86.avx512.mask.getexp.sd
4572   return _mm_getexp_sd(__A, __B);
4573 }
4574 
test_mm_getexp_round_ss(__m128 __A,__m128 __B)4575 __m128 test_mm_getexp_round_ss(__m128 __A, __m128 __B) {
4576   // CHECK-LABEL: @test_mm_getexp_round_ss
4577   // CHECK: @llvm.x86.avx512.mask.getexp.ss
4578   return _mm_getexp_round_ss(__A, __B, 8);
4579 }
4580 
test_mm_getexp_ss(__m128 __A,__m128 __B)4581 __m128 test_mm_getexp_ss(__m128 __A, __m128 __B) {
4582   // CHECK-LABEL: @test_mm_getexp_ss
4583   // CHECK: @llvm.x86.avx512.mask.getexp.ss
4584   return _mm_getexp_ss(__A, __B);
4585 }
4586 
test_mm_getmant_round_sd(__m128d __A,__m128d __B)4587 __m128d test_mm_getmant_round_sd(__m128d __A, __m128d __B) {
4588   // CHECK-LABEL: @test_mm_getmant_round_sd
4589   // CHECK: @llvm.x86.avx512.mask.getmant.sd
4590   return _mm_getmant_round_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8);
4591 }
4592 
test_mm_getmant_sd(__m128d __A,__m128d __B)4593 __m128d test_mm_getmant_sd(__m128d __A, __m128d __B) {
4594   // CHECK-LABEL: @test_mm_getmant_sd
4595   // CHECK: @llvm.x86.avx512.mask.getmant.sd
4596   return _mm_getmant_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src);
4597 }
4598 
test_mm_getmant_round_ss(__m128 __A,__m128 __B)4599 __m128 test_mm_getmant_round_ss(__m128 __A, __m128 __B) {
4600   // CHECK-LABEL: @test_mm_getmant_round_ss
4601   // CHECK: @llvm.x86.avx512.mask.getmant.ss
4602   return _mm_getmant_round_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8);
4603 }
4604 
test_mm_getmant_ss(__m128 __A,__m128 __B)4605 __m128 test_mm_getmant_ss(__m128 __A, __m128 __B) {
4606   // CHECK-LABEL: @test_mm_getmant_ss
4607   // CHECK: @llvm.x86.avx512.mask.getmant.ss
4608   return _mm_getmant_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src);
4609 }
4610 
test_mm512_kmov(__mmask16 __A)4611 __mmask16 test_mm512_kmov(__mmask16 __A) {
4612   // CHECK-LABEL: @test_mm512_kmov
4613   // CHECK: load i16, i16* %__A.addr.i, align 2
4614   return _mm512_kmov(__A);
4615 }
4616 
test_mm512_mask_unpackhi_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)4617 __m512d test_mm512_mask_unpackhi_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4618   // CHECK-LABEL: @test_mm512_mask_unpackhi_pd
4619   // 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>
4620   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4621   return _mm512_mask_unpackhi_pd(__W, __U, __A, __B);
4622 }
4623 #if __x86_64__
test_mm_cvt_roundsd_si64(__m128d __A)4624 long long test_mm_cvt_roundsd_si64(__m128d __A) {
4625   // CHECK-LABEL: @test_mm_cvt_roundsd_si64
4626   // CHECK: @llvm.x86.avx512.vcvtsd2si64
4627   return _mm_cvt_roundsd_si64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4628 }
4629 #endif
test_mm512_mask2_permutex2var_epi32(__m512i __A,__m512i __I,__mmask16 __U,__m512i __B)4630 __m512i test_mm512_mask2_permutex2var_epi32(__m512i __A, __m512i __I, __mmask16 __U, __m512i __B) {
4631   // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi32
4632   // CHECK: @llvm.x86.avx512.vpermi2var.d.512
4633   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4634   return _mm512_mask2_permutex2var_epi32(__A, __I, __U, __B);
4635 }
test_mm512_unpackhi_epi32(__m512i __A,__m512i __B)4636 __m512i test_mm512_unpackhi_epi32(__m512i __A, __m512i __B) {
4637   // CHECK-LABEL: @test_mm512_unpackhi_epi32
4638   // 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>
4639   return _mm512_unpackhi_epi32(__A, __B);
4640 }
4641 
test_mm512_maskz_unpackhi_pd(__mmask8 __U,__m512d __A,__m512d __B)4642 __m512d test_mm512_maskz_unpackhi_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4643   // CHECK-LABEL: @test_mm512_maskz_unpackhi_pd
4644   // 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>
4645   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4646   return _mm512_maskz_unpackhi_pd(__U, __A, __B);
4647 }
4648 #if __x86_64__
test_mm_cvt_roundsd_i64(__m128d __A)4649 long long test_mm_cvt_roundsd_i64(__m128d __A) {
4650   // CHECK-LABEL: @test_mm_cvt_roundsd_i64
4651   // CHECK: @llvm.x86.avx512.vcvtsd2si64
4652   return _mm_cvt_roundsd_i64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4653 }
4654 #endif
test_mm512_mask2_permutex2var_pd(__m512d __A,__m512i __I,__mmask8 __U,__m512d __B)4655 __m512d test_mm512_mask2_permutex2var_pd(__m512d __A, __m512i __I, __mmask8 __U, __m512d __B) {
4656   // CHECK-LABEL: @test_mm512_mask2_permutex2var_pd
4657   // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
4658   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4659   return _mm512_mask2_permutex2var_pd(__A, __I, __U, __B);
4660 }
test_mm512_mask_unpackhi_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4661 __m512i test_mm512_mask_unpackhi_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4662   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi32
4663   // 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>
4664   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4665   return _mm512_mask_unpackhi_epi32(__W, __U, __A, __B);
4666 }
4667 
test_mm512_mask_unpackhi_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)4668 __m512 test_mm512_mask_unpackhi_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4669   // CHECK-LABEL: @test_mm512_mask_unpackhi_ps
4670   // 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>
4671   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4672   return _mm512_mask_unpackhi_ps(__W, __U, __A, __B);
4673 }
4674 
test_mm512_maskz_unpackhi_ps(__mmask16 __U,__m512 __A,__m512 __B)4675 __m512 test_mm512_maskz_unpackhi_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4676   // CHECK-LABEL: @test_mm512_maskz_unpackhi_ps
4677   // 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>
4678   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4679   return _mm512_maskz_unpackhi_ps(__U, __A, __B);
4680 }
4681 
test_mm512_mask_unpacklo_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)4682 __m512d test_mm512_mask_unpacklo_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4683   // CHECK-LABEL: @test_mm512_mask_unpacklo_pd
4684   // 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>
4685   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4686   return _mm512_mask_unpacklo_pd(__W, __U, __A, __B);
4687 }
4688 
test_mm512_maskz_unpacklo_pd(__mmask8 __U,__m512d __A,__m512d __B)4689 __m512d test_mm512_maskz_unpacklo_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4690   // CHECK-LABEL: @test_mm512_maskz_unpacklo_pd
4691   // 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>
4692   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4693   return _mm512_maskz_unpacklo_pd(__U, __A, __B);
4694 }
4695 
test_mm512_mask_unpacklo_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)4696 __m512 test_mm512_mask_unpacklo_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4697   // CHECK-LABEL: @test_mm512_mask_unpacklo_ps
4698   // 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>
4699   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4700   return _mm512_mask_unpacklo_ps(__W, __U, __A, __B);
4701 }
4702 
test_mm512_maskz_unpacklo_ps(__mmask16 __U,__m512 __A,__m512 __B)4703 __m512 test_mm512_maskz_unpacklo_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4704   // CHECK-LABEL: @test_mm512_maskz_unpacklo_ps
4705   // 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>
4706   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4707   return _mm512_maskz_unpacklo_ps(__U, __A, __B);
4708 }
test_mm_cvt_roundsd_si32(__m128d __A)4709 int test_mm_cvt_roundsd_si32(__m128d __A) {
4710   // CHECK-LABEL: @test_mm_cvt_roundsd_si32
4711   // CHECK: @llvm.x86.avx512.vcvtsd2si32
4712   return _mm_cvt_roundsd_si32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4713 }
4714 
test_mm_cvt_roundsd_i32(__m128d __A)4715 int test_mm_cvt_roundsd_i32(__m128d __A) {
4716   // CHECK-LABEL: @test_mm_cvt_roundsd_i32
4717   // CHECK: @llvm.x86.avx512.vcvtsd2si32
4718   return _mm_cvt_roundsd_i32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4719 }
4720 
test_mm_cvt_roundsd_u32(__m128d __A)4721 unsigned test_mm_cvt_roundsd_u32(__m128d __A) {
4722   // CHECK-LABEL: @test_mm_cvt_roundsd_u32
4723   // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4724   return _mm_cvt_roundsd_u32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4725 }
4726 
test_mm_cvtsd_u32(__m128d __A)4727 unsigned test_mm_cvtsd_u32(__m128d __A) {
4728   // CHECK-LABEL: @test_mm_cvtsd_u32
4729   // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4730   return _mm_cvtsd_u32(__A);
4731 }
4732 
test_mm512_cvtsi512_si32(__m512i a)4733 int test_mm512_cvtsi512_si32(__m512i a) {
4734   // CHECK-LABEL: test_mm512_cvtsi512_si32
4735   // CHECK: %{{.*}} = extractelement <16 x i32> %{{.*}}, i32 0
4736   return _mm512_cvtsi512_si32(a);
4737 }
4738 
4739 #ifdef __x86_64__
test_mm_cvt_roundsd_u64(__m128d __A)4740 unsigned long long test_mm_cvt_roundsd_u64(__m128d __A) {
4741   // CHECK-LABEL: @test_mm_cvt_roundsd_u64
4742   // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4743   return _mm_cvt_roundsd_u64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4744 }
4745 
test_mm_cvtsd_u64(__m128d __A)4746 unsigned long long test_mm_cvtsd_u64(__m128d __A) {
4747   // CHECK-LABEL: @test_mm_cvtsd_u64
4748   // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4749   return _mm_cvtsd_u64(__A);
4750 }
4751 #endif
4752 
test_mm_cvt_roundss_si32(__m128 __A)4753 int test_mm_cvt_roundss_si32(__m128 __A) {
4754   // CHECK-LABEL: @test_mm_cvt_roundss_si32
4755   // CHECK: @llvm.x86.avx512.vcvtss2si32
4756   return _mm_cvt_roundss_si32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4757 }
4758 
test_mm_cvt_roundss_i32(__m128 __A)4759 int test_mm_cvt_roundss_i32(__m128 __A) {
4760   // CHECK-LABEL: @test_mm_cvt_roundss_i32
4761   // CHECK: @llvm.x86.avx512.vcvtss2si32
4762   return _mm_cvt_roundss_i32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4763 }
4764 
4765 #ifdef __x86_64__
test_mm_cvt_roundss_si64(__m128 __A)4766 long long test_mm_cvt_roundss_si64(__m128 __A) {
4767   // CHECK-LABEL: @test_mm_cvt_roundss_si64
4768   // CHECK: @llvm.x86.avx512.vcvtss2si64
4769   return _mm_cvt_roundss_si64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4770 }
4771 
test_mm_cvt_roundss_i64(__m128 __A)4772 long long test_mm_cvt_roundss_i64(__m128 __A) {
4773   // CHECK-LABEL: @test_mm_cvt_roundss_i64
4774   // CHECK: @llvm.x86.avx512.vcvtss2si64
4775   return _mm_cvt_roundss_i64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4776 }
4777 #endif
4778 
test_mm_cvt_roundss_u32(__m128 __A)4779 unsigned test_mm_cvt_roundss_u32(__m128 __A) {
4780   // CHECK-LABEL: @test_mm_cvt_roundss_u32
4781   // CHECK: @llvm.x86.avx512.vcvtss2usi32
4782   return _mm_cvt_roundss_u32(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4783 }
4784 
test_mm_cvtss_u32(__m128 __A)4785 unsigned test_mm_cvtss_u32(__m128 __A) {
4786   // CHECK-LABEL: @test_mm_cvtss_u32
4787   // CHECK: @llvm.x86.avx512.vcvtss2usi32
4788   return _mm_cvtss_u32(__A);
4789 }
4790 
4791 #ifdef __x86_64__
test_mm_cvt_roundss_u64(__m128 __A)4792 unsigned long long test_mm_cvt_roundss_u64(__m128 __A) {
4793   // CHECK-LABEL: @test_mm_cvt_roundss_u64
4794   // CHECK: @llvm.x86.avx512.vcvtss2usi64
4795   return _mm_cvt_roundss_u64(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4796 }
4797 
test_mm_cvtss_u64(__m128 __A)4798 unsigned long long test_mm_cvtss_u64(__m128 __A) {
4799   // CHECK-LABEL: @test_mm_cvtss_u64
4800   // CHECK: @llvm.x86.avx512.vcvtss2usi64
4801   return _mm_cvtss_u64(__A);
4802 }
4803 #endif
4804 
test_mm_cvtt_roundsd_i32(__m128d __A)4805 int test_mm_cvtt_roundsd_i32(__m128d __A) {
4806   // CHECK-LABEL: @test_mm_cvtt_roundsd_i32
4807   // CHECK: @llvm.x86.avx512.cvttsd2si
4808   return _mm_cvtt_roundsd_i32(__A, _MM_FROUND_NO_EXC);
4809 }
4810 
test_mm_cvtt_roundsd_si32(__m128d __A)4811 int test_mm_cvtt_roundsd_si32(__m128d __A) {
4812   // CHECK-LABEL: @test_mm_cvtt_roundsd_si32
4813   // CHECK: @llvm.x86.avx512.cvttsd2si
4814   return _mm_cvtt_roundsd_si32(__A, _MM_FROUND_NO_EXC);
4815 }
4816 
test_mm_cvttsd_i32(__m128d __A)4817 int test_mm_cvttsd_i32(__m128d __A) {
4818   // CHECK-LABEL: @test_mm_cvttsd_i32
4819   // CHECK: @llvm.x86.avx512.cvttsd2si
4820   return _mm_cvttsd_i32(__A);
4821 }
4822 
4823 #ifdef __x86_64__
test_mm_cvtt_roundsd_si64(__m128d __A)4824 long long test_mm_cvtt_roundsd_si64(__m128d __A) {
4825   // CHECK-LABEL: @test_mm_cvtt_roundsd_si64
4826   // CHECK: @llvm.x86.avx512.cvttsd2si64
4827   return _mm_cvtt_roundsd_si64(__A, _MM_FROUND_NO_EXC);
4828 }
4829 
test_mm_cvtt_roundsd_i64(__m128d __A)4830 long long test_mm_cvtt_roundsd_i64(__m128d __A) {
4831   // CHECK-LABEL: @test_mm_cvtt_roundsd_i64
4832   // CHECK: @llvm.x86.avx512.cvttsd2si64
4833   return _mm_cvtt_roundsd_i64(__A, _MM_FROUND_NO_EXC);
4834 }
4835 
test_mm_cvttsd_i64(__m128d __A)4836 long long test_mm_cvttsd_i64(__m128d __A) {
4837   // CHECK-LABEL: @test_mm_cvttsd_i64
4838   // CHECK: @llvm.x86.avx512.cvttsd2si64
4839   return _mm_cvttsd_i64(__A);
4840 }
4841 #endif
4842 
test_mm_cvtt_roundsd_u32(__m128d __A)4843 unsigned test_mm_cvtt_roundsd_u32(__m128d __A) {
4844   // CHECK-LABEL: @test_mm_cvtt_roundsd_u32
4845   // CHECK: @llvm.x86.avx512.cvttsd2usi
4846   return _mm_cvtt_roundsd_u32(__A, _MM_FROUND_NO_EXC);
4847 }
4848 
test_mm_cvttsd_u32(__m128d __A)4849 unsigned test_mm_cvttsd_u32(__m128d __A) {
4850   // CHECK-LABEL: @test_mm_cvttsd_u32
4851   // CHECK: @llvm.x86.avx512.cvttsd2usi
4852   return _mm_cvttsd_u32(__A);
4853 }
4854 
4855 #ifdef __x86_64__
test_mm_cvtt_roundsd_u64(__m128d __A)4856 unsigned long long test_mm_cvtt_roundsd_u64(__m128d __A) {
4857   // CHECK-LABEL: @test_mm_cvtt_roundsd_u64
4858   // CHECK: @llvm.x86.avx512.cvttsd2usi64
4859   return _mm_cvtt_roundsd_u64(__A, _MM_FROUND_NO_EXC);
4860 }
4861 
test_mm_cvttsd_u64(__m128d __A)4862 unsigned long long test_mm_cvttsd_u64(__m128d __A) {
4863   // CHECK-LABEL: @test_mm_cvttsd_u64
4864   // CHECK: @llvm.x86.avx512.cvttsd2usi64
4865   return _mm_cvttsd_u64(__A);
4866 }
4867 #endif
4868 
test_mm_cvtt_roundss_i32(__m128 __A)4869 int test_mm_cvtt_roundss_i32(__m128 __A) {
4870   // CHECK-LABEL: @test_mm_cvtt_roundss_i32
4871   // CHECK: @llvm.x86.avx512.cvttss2si
4872   return _mm_cvtt_roundss_i32(__A, _MM_FROUND_NO_EXC);
4873 }
4874 
test_mm_cvtt_roundss_si32(__m128 __A)4875 int test_mm_cvtt_roundss_si32(__m128 __A) {
4876   // CHECK-LABEL: @test_mm_cvtt_roundss_si32
4877   // CHECK: @llvm.x86.avx512.cvttss2si
4878   return _mm_cvtt_roundss_si32(__A, _MM_FROUND_NO_EXC);
4879 }
4880 
test_mm_cvttss_i32(__m128 __A)4881 int test_mm_cvttss_i32(__m128 __A) {
4882   // CHECK-LABEL: @test_mm_cvttss_i32
4883   // CHECK: @llvm.x86.avx512.cvttss2si
4884   return _mm_cvttss_i32(__A);
4885 }
4886 
4887 #ifdef __x86_64__
test_mm_cvtt_roundss_i64(__m128 __A)4888 float test_mm_cvtt_roundss_i64(__m128 __A) {
4889   // CHECK-LABEL: @test_mm_cvtt_roundss_i64
4890   // CHECK: @llvm.x86.avx512.cvttss2si64
4891   return _mm_cvtt_roundss_i64(__A, _MM_FROUND_NO_EXC);
4892 }
4893 
test_mm_cvtt_roundss_si64(__m128 __A)4894 long long test_mm_cvtt_roundss_si64(__m128 __A) {
4895   // CHECK-LABEL: @test_mm_cvtt_roundss_si64
4896   // CHECK: @llvm.x86.avx512.cvttss2si64
4897   return _mm_cvtt_roundss_si64(__A, _MM_FROUND_NO_EXC);
4898 }
4899 
test_mm_cvttss_i64(__m128 __A)4900 long long test_mm_cvttss_i64(__m128 __A) {
4901   // CHECK-LABEL: @test_mm_cvttss_i64
4902   // CHECK: @llvm.x86.avx512.cvttss2si64
4903   return _mm_cvttss_i64(__A);
4904 }
4905 #endif
4906 
test_mm_cvtt_roundss_u32(__m128 __A)4907 unsigned test_mm_cvtt_roundss_u32(__m128 __A) {
4908   // CHECK-LABEL: @test_mm_cvtt_roundss_u32
4909   // CHECK: @llvm.x86.avx512.cvttss2usi
4910   return _mm_cvtt_roundss_u32(__A, _MM_FROUND_NO_EXC);
4911 }
4912 
test_mm_cvttss_u32(__m128 __A)4913 unsigned test_mm_cvttss_u32(__m128 __A) {
4914   // CHECK-LABEL: @test_mm_cvttss_u32
4915   // CHECK: @llvm.x86.avx512.cvttss2usi
4916   return _mm_cvttss_u32(__A);
4917 }
4918 
4919 #ifdef __x86_64__
test_mm_cvtt_roundss_u64(__m128 __A)4920 unsigned long long test_mm_cvtt_roundss_u64(__m128 __A) {
4921   // CHECK-LABEL: @test_mm_cvtt_roundss_u64
4922   // CHECK: @llvm.x86.avx512.cvttss2usi64
4923   return _mm_cvtt_roundss_u64(__A, _MM_FROUND_NO_EXC);
4924 }
4925 
test_mm_cvttss_u64(__m128 __A)4926 unsigned long long test_mm_cvttss_u64(__m128 __A) {
4927   // CHECK-LABEL: @test_mm_cvttss_u64
4928   // CHECK: @llvm.x86.avx512.cvttss2usi64
4929   return _mm_cvttss_u64(__A);
4930 }
4931 #endif
4932 
test_mm512_cvtt_roundps_epu32(__m512 __A)4933 __m512i test_mm512_cvtt_roundps_epu32(__m512 __A)
4934 {
4935     // CHECK-LABEL: @test_mm512_cvtt_roundps_epu32
4936     // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4937     return _mm512_cvtt_roundps_epu32(__A, _MM_FROUND_NO_EXC);
4938 }
4939 
test_mm512_mask_cvtt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)4940 __m512i test_mm512_mask_cvtt_roundps_epu32(__m512i __W, __mmask16 __U, __m512 __A)
4941 {
4942     // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu32
4943     // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4944     return _mm512_mask_cvtt_roundps_epu32(__W, __U, __A, _MM_FROUND_NO_EXC);
4945 }
4946 
test_mm512_maskz_cvtt_roundps_epu32(__mmask16 __U,__m512 __A)4947 __m512i test_mm512_maskz_cvtt_roundps_epu32( __mmask16 __U, __m512 __A)
4948 {
4949     // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu32
4950     // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4951 
4952     return _mm512_maskz_cvtt_roundps_epu32(__U, __A, _MM_FROUND_NO_EXC);
4953 }
4954 
test_mm512_cvt_roundps_ph(__m512 __A)4955 __m256i test_mm512_cvt_roundps_ph(__m512  __A)
4956 {
4957     // CHECK-LABEL: @test_mm512_cvt_roundps_ph
4958     // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4959     return _mm512_cvt_roundps_ph(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4960 }
4961 
test_mm512_mask_cvt_roundps_ph(__m256i __W,__mmask16 __U,__m512 __A)4962 __m256i test_mm512_mask_cvt_roundps_ph(__m256i __W , __mmask16 __U, __m512  __A)
4963 {
4964     // CHECK-LABEL: @test_mm512_mask_cvt_roundps_ph
4965     // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4966     return _mm512_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4967 }
4968 
test_mm512_maskz_cvt_roundps_ph(__mmask16 __U,__m512 __A)4969 __m256i test_mm512_maskz_cvt_roundps_ph(__mmask16 __U, __m512  __A)
4970 {
4971     // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_ph
4972     // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4973     return _mm512_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
4974 }
4975 
test_mm512_cvt_roundph_ps(__m256i __A)4976 __m512 test_mm512_cvt_roundph_ps(__m256i __A)
4977 {
4978     // CHECK-LABEL: @test_mm512_cvt_roundph_ps
4979     // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512(
4980     return _mm512_cvt_roundph_ps(__A, _MM_FROUND_NO_EXC);
4981 }
4982 
test_mm512_mask_cvt_roundph_ps(__m512 __W,__mmask16 __U,__m256i __A)4983 __m512 test_mm512_mask_cvt_roundph_ps(__m512 __W, __mmask16 __U, __m256i __A)
4984 {
4985     // CHECK-LABEL: @test_mm512_mask_cvt_roundph_ps
4986     // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512(
4987     return _mm512_mask_cvt_roundph_ps(__W, __U, __A, _MM_FROUND_NO_EXC);
4988 }
4989 
test_mm512_maskz_cvt_roundph_ps(__mmask16 __U,__m256i __A)4990 __m512 test_mm512_maskz_cvt_roundph_ps(__mmask16 __U, __m256i __A)
4991 {
4992     // CHECK-LABEL: @test_mm512_maskz_cvt_roundph_ps
4993     // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512(
4994     return _mm512_maskz_cvt_roundph_ps(__U, __A, _MM_FROUND_NO_EXC);
4995 }
4996 
test_mm512_cvt_roundepi32_ps(__m512i __A)4997 __m512 test_mm512_cvt_roundepi32_ps( __m512i __A)
4998 {
4999   // CHECK-LABEL: @test_mm512_cvt_roundepi32_ps
5000   // CHECK: @llvm.x86.avx512.sitofp.round.v16f32.v16i32
5001   return _mm512_cvt_roundepi32_ps(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5002 }
5003 
test_mm512_mask_cvt_roundepi32_ps(__m512 __W,__mmask16 __U,__m512i __A)5004 __m512 test_mm512_mask_cvt_roundepi32_ps(__m512 __W, __mmask16 __U, __m512i __A)
5005 {
5006   // CHECK-LABEL: @test_mm512_mask_cvt_roundepi32_ps
5007   // CHECK: @llvm.x86.avx512.sitofp.round.v16f32.v16i32
5008   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5009   return _mm512_mask_cvt_roundepi32_ps(__W,__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5010 }
5011 
test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U,__m512i __A)5012 __m512 test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U, __m512i __A)
5013 {
5014   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi32_ps
5015   // CHECK: @llvm.x86.avx512.sitofp.round.v16f32.v16i32
5016   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5017   return _mm512_maskz_cvt_roundepi32_ps(__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5018 }
5019 
test_mm512_cvt_roundepu32_ps(__m512i __A)5020 __m512 test_mm512_cvt_roundepu32_ps(__m512i __A)
5021 {
5022   // CHECK-LABEL: @test_mm512_cvt_roundepu32_ps
5023   // CHECK: @llvm.x86.avx512.uitofp.round.v16f32.v16i32
5024   return _mm512_cvt_roundepu32_ps(__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5025 }
5026 
test_mm512_mask_cvt_roundepu32_ps(__m512 __W,__mmask16 __U,__m512i __A)5027 __m512 test_mm512_mask_cvt_roundepu32_ps(__m512 __W, __mmask16 __U,__m512i __A)
5028 {
5029   // CHECK-LABEL: @test_mm512_mask_cvt_roundepu32_ps
5030   // CHECK: @llvm.x86.avx512.uitofp.round.v16f32.v16i32
5031   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5032   return _mm512_mask_cvt_roundepu32_ps(__W,__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5033 }
5034 
test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A)5035 __m512 test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A)
5036 {
5037   // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu32_ps
5038   // CHECK: @llvm.x86.avx512.uitofp.round.v16f32.v16i32
5039   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5040   return _mm512_maskz_cvt_roundepu32_ps(__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5041 }
5042 
test_mm512_cvt_roundpd_ps(__m512d A)5043 __m256 test_mm512_cvt_roundpd_ps(__m512d A)
5044 {
5045   // CHECK-LABEL: @test_mm512_cvt_roundpd_ps
5046   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5047   return _mm512_cvt_roundpd_ps(A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
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,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
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,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
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,_MM_FROUND_NO_EXC);
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,_MM_FROUND_NO_EXC);
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,_MM_FROUND_NO_EXC);
5083 }
5084 
test_mm512_cvtt_roundps_epi32(__m512 A)5085 __m512i test_mm512_cvtt_roundps_epi32(__m512 A)
5086 {
5087   // CHECK-LABEL: @test_mm512_cvtt_roundps_epi32
5088   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5089   return _mm512_cvtt_roundps_epi32(A,_MM_FROUND_NO_EXC);
5090 }
5091 
test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U,__m512 A)5092 __m512i test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U, __m512 A)
5093 {
5094   // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi32
5095   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5096   return _mm512_mask_cvtt_roundps_epi32(W,U,A,_MM_FROUND_NO_EXC);
5097 }
5098 
test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U,__m512 A)5099 __m512i test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U, __m512 A)
5100 {
5101   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi32
5102   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5103   return _mm512_maskz_cvtt_roundps_epi32(U,A,_MM_FROUND_NO_EXC);
5104 }
5105 
test_mm512_cvt_roundps_epi32(__m512 __A)5106 __m512i test_mm512_cvt_roundps_epi32(__m512 __A)
5107 {
5108   // CHECK-LABEL: @test_mm512_cvt_roundps_epi32
5109   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5110   return _mm512_cvt_roundps_epi32(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5111 }
5112 
test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A)5113 __m512i test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A)
5114 {
5115   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi32
5116   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5117   return _mm512_mask_cvt_roundps_epi32(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5118 }
5119 
test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U,__m512 __A)5120 __m512i test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U, __m512 __A)
5121 {
5122   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi32
5123   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5124   return _mm512_maskz_cvt_roundps_epi32(__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5125 }
5126 
test_mm512_cvt_roundpd_epi32(__m512d A)5127 __m256i test_mm512_cvt_roundpd_epi32(__m512d A)
5128 {
5129   // CHECK-LABEL: @test_mm512_cvt_roundpd_epi32
5130   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5131   return _mm512_cvt_roundpd_epi32(A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5132 }
5133 
test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)5134 __m256i test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)
5135 {
5136   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi32
5137   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5138   return _mm512_mask_cvt_roundpd_epi32(W,U,A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5139 }
5140 
test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U,__m512d A)5141 __m256i test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U, __m512d A)
5142 {
5143   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi32
5144   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5145   return _mm512_maskz_cvt_roundpd_epi32(U,A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5146 }
5147 
test_mm512_cvt_roundps_epu32(__m512 __A)5148 __m512i test_mm512_cvt_roundps_epu32(__m512 __A)
5149 {
5150   // CHECK-LABEL: @test_mm512_cvt_roundps_epu32
5151   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5152   return _mm512_cvt_roundps_epu32(__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5153 }
5154 
test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)5155 __m512i test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)
5156 {
5157   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu32
5158   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5159   return _mm512_mask_cvt_roundps_epu32(__W,__U,__A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5160 }
5161 
test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A)5162 __m512i test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A)
5163 {
5164   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu32
5165   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5166   return _mm512_maskz_cvt_roundps_epu32(__U,__A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5167 }
5168 
test_mm512_cvt_roundpd_epu32(__m512d A)5169 __m256i test_mm512_cvt_roundpd_epu32(__m512d A)
5170 {
5171   // CHECK-LABEL: @test_mm512_cvt_roundpd_epu32
5172   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5173   return _mm512_cvt_roundpd_epu32(A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5174 }
5175 
test_mm512_mask_cvt_roundpd_epu32(__m256i W,__mmask8 U,__m512d A)5176 __m256i test_mm512_mask_cvt_roundpd_epu32(__m256i W, __mmask8 U, __m512d A)
5177 {
5178   // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu32
5179   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5180   return _mm512_mask_cvt_roundpd_epu32(W,U,A,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5181 }
5182 
test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U,__m512d A)5183 __m256i test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U, __m512d A)
5184 {
5185   // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu32
5186   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5187   return _mm512_maskz_cvt_roundpd_epu32(U, A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5188 }
5189 
test_mm512_mask2_permutex2var_ps(__m512 __A,__m512i __I,__mmask16 __U,__m512 __B)5190 __m512 test_mm512_mask2_permutex2var_ps(__m512 __A, __m512i __I, __mmask16 __U, __m512 __B) {
5191   // CHECK-LABEL: @test_mm512_mask2_permutex2var_ps
5192   // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5193   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5194   return _mm512_mask2_permutex2var_ps(__A, __I, __U, __B);
5195 }
5196 
test_mm512_mask2_permutex2var_epi64(__m512i __A,__m512i __I,__mmask8 __U,__m512i __B)5197 __m512i test_mm512_mask2_permutex2var_epi64(__m512i __A, __m512i __I, __mmask8 __U, __m512i __B) {
5198   // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi64
5199   // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5200   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5201   return _mm512_mask2_permutex2var_epi64(__A, __I, __U, __B);
5202 }
5203 
test_mm512_permute_pd(__m512d __X)5204 __m512d test_mm512_permute_pd(__m512d __X) {
5205   // CHECK-LABEL: @test_mm512_permute_pd
5206   // 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>
5207   return _mm512_permute_pd(__X, 2);
5208 }
5209 
test_mm512_mask_permute_pd(__m512d __W,__mmask8 __U,__m512d __X)5210 __m512d test_mm512_mask_permute_pd(__m512d __W, __mmask8 __U, __m512d __X) {
5211   // CHECK-LABEL: @test_mm512_mask_permute_pd
5212   // 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>
5213   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5214   return _mm512_mask_permute_pd(__W, __U, __X, 2);
5215 }
5216 
test_mm512_maskz_permute_pd(__mmask8 __U,__m512d __X)5217 __m512d test_mm512_maskz_permute_pd(__mmask8 __U, __m512d __X) {
5218   // CHECK-LABEL: @test_mm512_maskz_permute_pd
5219   // 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>
5220   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5221   return _mm512_maskz_permute_pd(__U, __X, 2);
5222 }
5223 
test_mm512_permute_ps(__m512 __X)5224 __m512 test_mm512_permute_ps(__m512 __X) {
5225   // CHECK-LABEL: @test_mm512_permute_ps
5226   // 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>
5227   return _mm512_permute_ps(__X, 2);
5228 }
5229 
test_mm512_mask_permute_ps(__m512 __W,__mmask16 __U,__m512 __X)5230 __m512 test_mm512_mask_permute_ps(__m512 __W, __mmask16 __U, __m512 __X) {
5231   // CHECK-LABEL: @test_mm512_mask_permute_ps
5232   // 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>
5233   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5234   return _mm512_mask_permute_ps(__W, __U, __X, 2);
5235 }
5236 
test_mm512_maskz_permute_ps(__mmask16 __U,__m512 __X)5237 __m512 test_mm512_maskz_permute_ps(__mmask16 __U, __m512 __X) {
5238   // CHECK-LABEL: @test_mm512_maskz_permute_ps
5239   // 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>
5240   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5241   return _mm512_maskz_permute_ps(__U, __X, 2);
5242 }
5243 
test_mm512_permutevar_pd(__m512d __A,__m512i __C)5244 __m512d test_mm512_permutevar_pd(__m512d __A, __m512i __C) {
5245   // CHECK-LABEL: @test_mm512_permutevar_pd
5246   // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5247   return _mm512_permutevar_pd(__A, __C);
5248 }
5249 
test_mm512_mask_permutevar_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512i __C)5250 __m512d test_mm512_mask_permutevar_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512i __C) {
5251   // CHECK-LABEL: @test_mm512_mask_permutevar_pd
5252   // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5253   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5254   return _mm512_mask_permutevar_pd(__W, __U, __A, __C);
5255 }
5256 
test_mm512_maskz_permutevar_pd(__mmask8 __U,__m512d __A,__m512i __C)5257 __m512d test_mm512_maskz_permutevar_pd(__mmask8 __U, __m512d __A, __m512i __C) {
5258   // CHECK-LABEL: @test_mm512_maskz_permutevar_pd
5259   // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5260   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5261   return _mm512_maskz_permutevar_pd(__U, __A, __C);
5262 }
5263 
test_mm512_permutevar_ps(__m512 __A,__m512i __C)5264 __m512 test_mm512_permutevar_ps(__m512 __A, __m512i __C) {
5265   // CHECK-LABEL: @test_mm512_permutevar_ps
5266   // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5267   return _mm512_permutevar_ps(__A, __C);
5268 }
5269 
test_mm512_mask_permutevar_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512i __C)5270 __m512 test_mm512_mask_permutevar_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512i __C) {
5271   // CHECK-LABEL: @test_mm512_mask_permutevar_ps
5272   // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5273   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5274   return _mm512_mask_permutevar_ps(__W, __U, __A, __C);
5275 }
5276 
test_mm512_maskz_permutevar_ps(__mmask16 __U,__m512 __A,__m512i __C)5277 __m512 test_mm512_maskz_permutevar_ps(__mmask16 __U, __m512 __A, __m512i __C) {
5278   // CHECK-LABEL: @test_mm512_maskz_permutevar_ps
5279   // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5280   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5281   return _mm512_maskz_permutevar_ps(__U, __A, __C);
5282 }
5283 
test_mm512_permutex2var_epi32(__m512i __A,__m512i __I,__m512i __B)5284 __m512i test_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B) {
5285   // CHECK-LABEL: @test_mm512_permutex2var_epi32
5286   // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5287   return _mm512_permutex2var_epi32(__A, __I, __B);
5288 }
5289 
test_mm512_maskz_permutex2var_epi32(__mmask16 __U,__m512i __A,__m512i __I,__m512i __B)5290 __m512i test_mm512_maskz_permutex2var_epi32(__mmask16 __U, __m512i __A, __m512i __I, __m512i __B) {
5291   // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi32
5292   // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5293   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5294   return _mm512_maskz_permutex2var_epi32(__U, __A, __I, __B);
5295 }
5296 
test_mm512_mask_permutex2var_epi32(__m512i __A,__mmask16 __U,__m512i __I,__m512i __B)5297 __m512i test_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U, __m512i __I, __m512i __B)
5298 {
5299   // CHECK-LABEL: @test_mm512_mask_permutex2var_epi32
5300   // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5301   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5302   return _mm512_mask_permutex2var_epi32 (__A,__U,__I,__B);
5303 }
5304 
test_mm512_permutex2var_pd(__m512d __A,__m512i __I,__m512d __B)5305 __m512d test_mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B)
5306 {
5307   // CHECK-LABEL: @test_mm512_permutex2var_pd
5308   // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5309   return _mm512_permutex2var_pd (__A, __I,__B);
5310 }
5311 
test_mm512_mask_permutex2var_pd(__m512d __A,__mmask8 __U,__m512i __I,__m512d __B)5312 __m512d test_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
5313 {
5314   // CHECK-LABEL: @test_mm512_mask_permutex2var_pd
5315   // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5316   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5317   return _mm512_mask_permutex2var_pd (__A,__U,__I,__B);
5318 }
5319 
test_mm512_maskz_permutex2var_pd(__mmask8 __U,__m512d __A,__m512i __I,__m512d __B)5320 __m512d test_mm512_maskz_permutex2var_pd(__mmask8 __U, __m512d __A, __m512i __I, __m512d __B) {
5321   // CHECK-LABEL: @test_mm512_maskz_permutex2var_pd
5322   // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5323   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5324   return _mm512_maskz_permutex2var_pd(__U, __A, __I, __B);
5325 }
5326 
test_mm512_permutex2var_ps(__m512 __A,__m512i __I,__m512 __B)5327 __m512 test_mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B)
5328 {
5329   // CHECK-LABEL: @test_mm512_permutex2var_ps
5330   // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5331   return _mm512_permutex2var_ps (__A, __I, __B);
5332 }
5333 
test_mm512_mask_permutex2var_ps(__m512 __A,__mmask16 __U,__m512i __I,__m512 __B)5334 __m512 test_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
5335 {
5336   // CHECK-LABEL: @test_mm512_mask_permutex2var_ps
5337   // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5338   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5339   return _mm512_mask_permutex2var_ps (__A,__U,__I,__B);
5340 }
5341 
test_mm512_maskz_permutex2var_ps(__mmask16 __U,__m512 __A,__m512i __I,__m512 __B)5342 __m512 test_mm512_maskz_permutex2var_ps(__mmask16 __U, __m512 __A, __m512i __I, __m512 __B) {
5343   // CHECK-LABEL: @test_mm512_maskz_permutex2var_ps
5344   // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5345   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5346   return _mm512_maskz_permutex2var_ps(__U, __A, __I, __B);
5347 }
5348 
test_mm512_permutex2var_epi64(__m512i __A,__m512i __I,__m512i __B)5349 __m512i test_mm512_permutex2var_epi64 (__m512i __A, __m512i __I, __m512i __B){
5350   // CHECK-LABEL: @test_mm512_permutex2var_epi64
5351   // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5352   return _mm512_permutex2var_epi64(__A, __I, __B);
5353 }
5354 
test_mm512_mask_permutex2var_epi64(__m512i __A,__mmask8 __U,__m512i __I,__m512i __B)5355 __m512i test_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I, __m512i __B){
5356   // CHECK-LABEL: @test_mm512_mask_permutex2var_epi64
5357   // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5358   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5359   return _mm512_mask_permutex2var_epi64(__A, __U, __I, __B);
5360 }
5361 
test_mm512_maskz_permutex2var_epi64(__mmask8 __U,__m512i __A,__m512i __I,__m512i __B)5362 __m512i test_mm512_maskz_permutex2var_epi64(__mmask8 __U, __m512i __A, __m512i __I, __m512i __B) {
5363   // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi64
5364   // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5365   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5366   return _mm512_maskz_permutex2var_epi64(__U, __A, __I, __B);
5367 }
test_mm512_testn_epi32_mask(__m512i __A,__m512i __B)5368 __mmask16 test_mm512_testn_epi32_mask(__m512i __A, __m512i __B) {
5369   // CHECK-LABEL: @test_mm512_testn_epi32_mask
5370   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5371   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5372   return _mm512_testn_epi32_mask(__A, __B);
5373 }
5374 
test_mm512_mask_testn_epi32_mask(__mmask16 __U,__m512i __A,__m512i __B)5375 __mmask16 test_mm512_mask_testn_epi32_mask(__mmask16 __U, __m512i __A, __m512i __B) {
5376   // CHECK-LABEL: @test_mm512_mask_testn_epi32_mask
5377   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5378   // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5379   // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
5380   return _mm512_mask_testn_epi32_mask(__U, __A, __B);
5381 }
5382 
test_mm512_testn_epi64_mask(__m512i __A,__m512i __B)5383 __mmask8 test_mm512_testn_epi64_mask(__m512i __A, __m512i __B) {
5384   // CHECK-LABEL: @test_mm512_testn_epi64_mask
5385   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5386   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5387   return _mm512_testn_epi64_mask(__A, __B);
5388 }
5389 
test_mm512_mask_testn_epi64_mask(__mmask8 __U,__m512i __A,__m512i __B)5390 __mmask8 test_mm512_mask_testn_epi64_mask(__mmask8 __U, __m512i __A, __m512i __B) {
5391   // CHECK-LABEL: @test_mm512_mask_testn_epi64_mask
5392   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5393   // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5394   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5395   return _mm512_mask_testn_epi64_mask(__U, __A, __B);
5396 }
5397 
test_mm512_mask_test_epi32_mask(__mmask16 __U,__m512i __A,__m512i __B)5398 __mmask16 test_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
5399 {
5400   // CHECK-LABEL: @test_mm512_mask_test_epi32_mask
5401   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5402   // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
5403   return _mm512_mask_test_epi32_mask (__U,__A,__B);
5404 }
5405 
test_mm512_mask_test_epi64_mask(__mmask8 __U,__m512i __A,__m512i __B)5406 __mmask8 test_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
5407 {
5408   // CHECK-LABEL: @test_mm512_mask_test_epi64_mask
5409   // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5410   // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
5411   // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5412   return _mm512_mask_test_epi64_mask (__U,__A,__B);
5413 }
5414 
test_mm512_maskz_unpackhi_epi32(__mmask16 __U,__m512i __A,__m512i __B)5415 __m512i test_mm512_maskz_unpackhi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
5416   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi32
5417   // 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>
5418   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5419   return _mm512_maskz_unpackhi_epi32(__U, __A, __B);
5420 }
5421 
test_mm512_unpackhi_epi64(__m512i __A,__m512i __B)5422 __m512i test_mm512_unpackhi_epi64(__m512i __A, __m512i __B) {
5423   // CHECK-LABEL: @test_mm512_unpackhi_epi64
5424   // 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>
5425   return _mm512_unpackhi_epi64(__A, __B);
5426 }
5427 
test_mm512_mask_unpackhi_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)5428 __m512i test_mm512_mask_unpackhi_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
5429   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi64
5430   // 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>
5431   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5432   return _mm512_mask_unpackhi_epi64(__W, __U, __A, __B);
5433 }
5434 
test_mm512_maskz_unpackhi_epi64(__mmask8 __U,__m512i __A,__m512i __B)5435 __m512i test_mm512_maskz_unpackhi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
5436   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi64
5437   // 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>
5438   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5439   return _mm512_maskz_unpackhi_epi64(__U, __A, __B);
5440 }
5441 
test_mm512_unpacklo_epi32(__m512i __A,__m512i __B)5442 __m512i test_mm512_unpacklo_epi32(__m512i __A, __m512i __B) {
5443   // CHECK-LABEL: @test_mm512_unpacklo_epi32
5444   // 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>
5445   return _mm512_unpacklo_epi32(__A, __B);
5446 }
5447 
test_mm512_mask_unpacklo_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)5448 __m512i test_mm512_mask_unpacklo_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
5449   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi32
5450   // 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>
5451   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5452   return _mm512_mask_unpacklo_epi32(__W, __U, __A, __B);
5453 }
5454 
test_mm512_maskz_unpacklo_epi32(__mmask16 __U,__m512i __A,__m512i __B)5455 __m512i test_mm512_maskz_unpacklo_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
5456   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi32
5457   // 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>
5458   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5459   return _mm512_maskz_unpacklo_epi32(__U, __A, __B);
5460 }
5461 
test_mm512_unpacklo_epi64(__m512i __A,__m512i __B)5462 __m512i test_mm512_unpacklo_epi64(__m512i __A, __m512i __B) {
5463   // CHECK-LABEL: @test_mm512_unpacklo_epi64
5464   // 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>
5465   return _mm512_unpacklo_epi64(__A, __B);
5466 }
5467 
test_mm512_mask_unpacklo_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)5468 __m512i test_mm512_mask_unpacklo_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
5469   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi64
5470   // 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>
5471   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5472   return _mm512_mask_unpacklo_epi64(__W, __U, __A, __B);
5473 }
5474 
test_mm512_maskz_unpacklo_epi64(__mmask8 __U,__m512i __A,__m512i __B)5475 __m512i test_mm512_maskz_unpacklo_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
5476   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi64
5477   // 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>
5478   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5479   return _mm512_maskz_unpacklo_epi64(__U, __A, __B);
5480 }
5481 
test_mm_roundscale_round_sd(__m128d __A,__m128d __B)5482 __m128d test_mm_roundscale_round_sd(__m128d __A, __m128d __B) {
5483   // CHECK-LABEL: @test_mm_roundscale_round_sd
5484   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5485   return _mm_roundscale_round_sd(__A, __B, 3, _MM_FROUND_NO_EXC);
5486 }
5487 
test_mm_roundscale_sd(__m128d __A,__m128d __B)5488 __m128d test_mm_roundscale_sd(__m128d __A, __m128d __B) {
5489   // CHECK-LABEL: @test_mm_roundscale_sd
5490   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5491   return _mm_roundscale_sd(__A, __B, 3);
5492 }
5493 
test_mm_mask_roundscale_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5494 __m128d test_mm_mask_roundscale_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5495   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5496     return _mm_mask_roundscale_sd(__W,__U,__A,__B,3);
5497 }
5498 
test_mm_mask_roundscale_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5499 __m128d test_mm_mask_roundscale_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5500   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5501     return _mm_mask_roundscale_round_sd(__W,__U,__A,__B,3,_MM_FROUND_NO_EXC);
5502 }
5503 
test_mm_maskz_roundscale_sd(__mmask8 __U,__m128d __A,__m128d __B)5504 __m128d test_mm_maskz_roundscale_sd(__mmask8 __U, __m128d __A, __m128d __B){
5505   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5506     return _mm_maskz_roundscale_sd(__U,__A,__B,3);
5507 }
5508 
test_mm_maskz_roundscale_round_sd(__mmask8 __U,__m128d __A,__m128d __B)5509 __m128d test_mm_maskz_roundscale_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5510   // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5511     return _mm_maskz_roundscale_round_sd(__U,__A,__B,3,_MM_FROUND_NO_EXC );
5512 }
5513 
test_mm_roundscale_round_ss(__m128 __A,__m128 __B)5514 __m128 test_mm_roundscale_round_ss(__m128 __A, __m128 __B) {
5515   // CHECK-LABEL: @test_mm_roundscale_round_ss
5516   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5517   return _mm_roundscale_round_ss(__A, __B, 3, _MM_FROUND_NO_EXC);
5518 }
5519 
test_mm_roundscale_ss(__m128 __A,__m128 __B)5520 __m128 test_mm_roundscale_ss(__m128 __A, __m128 __B) {
5521   // CHECK-LABEL: @test_mm_roundscale_ss
5522   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5523   return _mm_roundscale_ss(__A, __B, 3);
5524 }
5525 
test_mm_mask_roundscale_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5526 __m128 test_mm_mask_roundscale_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5527   // CHECK-LABEL: @test_mm_mask_roundscale_ss
5528   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5529     return _mm_mask_roundscale_ss(__W,__U,__A,__B,3);
5530 }
5531 
test_mm_maskz_roundscale_round_ss(__mmask8 __U,__m128 __A,__m128 __B)5532 __m128 test_mm_maskz_roundscale_round_ss( __mmask8 __U, __m128 __A, __m128 __B){
5533   // CHECK-LABEL: @test_mm_maskz_roundscale_round_ss
5534   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5535     return _mm_maskz_roundscale_round_ss(__U,__A,__B,3,_MM_FROUND_NO_EXC);
5536 }
5537 
test_mm_maskz_roundscale_ss(__mmask8 __U,__m128 __A,__m128 __B)5538 __m128 test_mm_maskz_roundscale_ss(__mmask8 __U, __m128 __A, __m128 __B){
5539   // CHECK-LABEL: @test_mm_maskz_roundscale_ss
5540   // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5541     return _mm_maskz_roundscale_ss(__U,__A,__B,3);
5542 }
5543 
test_mm512_scalef_round_pd(__m512d __A,__m512d __B)5544 __m512d test_mm512_scalef_round_pd(__m512d __A, __m512d __B) {
5545   // CHECK-LABEL: @test_mm512_scalef_round_pd
5546   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5547   return _mm512_scalef_round_pd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5548 }
5549 
test_mm512_mask_scalef_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)5550 __m512d test_mm512_mask_scalef_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
5551   // CHECK-LABEL: @test_mm512_mask_scalef_round_pd
5552   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5553   return _mm512_mask_scalef_round_pd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5554 }
5555 
test_mm512_maskz_scalef_round_pd(__mmask8 __U,__m512d __A,__m512d __B)5556 __m512d test_mm512_maskz_scalef_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
5557   // CHECK-LABEL: @test_mm512_maskz_scalef_round_pd
5558   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5559   return _mm512_maskz_scalef_round_pd(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5560 }
5561 
test_mm512_scalef_pd(__m512d __A,__m512d __B)5562 __m512d test_mm512_scalef_pd(__m512d __A, __m512d __B) {
5563   // CHECK-LABEL: @test_mm512_scalef_pd
5564   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5565   return _mm512_scalef_pd(__A, __B);
5566 }
5567 
test_mm512_mask_scalef_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)5568 __m512d test_mm512_mask_scalef_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
5569   // CHECK-LABEL: @test_mm512_mask_scalef_pd
5570   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5571   return _mm512_mask_scalef_pd(__W, __U, __A, __B);
5572 }
5573 
test_mm512_maskz_scalef_pd(__mmask8 __U,__m512d __A,__m512d __B)5574 __m512d test_mm512_maskz_scalef_pd(__mmask8 __U, __m512d __A, __m512d __B) {
5575   // CHECK-LABEL: @test_mm512_maskz_scalef_pd
5576   // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5577   return _mm512_maskz_scalef_pd(__U, __A, __B);
5578 }
5579 
test_mm512_scalef_round_ps(__m512 __A,__m512 __B)5580 __m512 test_mm512_scalef_round_ps(__m512 __A, __m512 __B) {
5581   // CHECK-LABEL: @test_mm512_scalef_round_ps
5582   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5583   return _mm512_scalef_round_ps(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5584 }
5585 
test_mm512_mask_scalef_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)5586 __m512 test_mm512_mask_scalef_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
5587   // CHECK-LABEL: @test_mm512_mask_scalef_round_ps
5588   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5589   return _mm512_mask_scalef_round_ps(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5590 }
5591 
test_mm512_maskz_scalef_round_ps(__mmask16 __U,__m512 __A,__m512 __B)5592 __m512 test_mm512_maskz_scalef_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
5593   // CHECK-LABEL: @test_mm512_maskz_scalef_round_ps
5594   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5595   return _mm512_maskz_scalef_round_ps(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5596 }
5597 
test_mm512_scalef_ps(__m512 __A,__m512 __B)5598 __m512 test_mm512_scalef_ps(__m512 __A, __m512 __B) {
5599   // CHECK-LABEL: @test_mm512_scalef_ps
5600   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5601   return _mm512_scalef_ps(__A, __B);
5602 }
5603 
test_mm512_mask_scalef_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)5604 __m512 test_mm512_mask_scalef_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
5605   // CHECK-LABEL: @test_mm512_mask_scalef_ps
5606   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5607   return _mm512_mask_scalef_ps(__W, __U, __A, __B);
5608 }
5609 
test_mm512_maskz_scalef_ps(__mmask16 __U,__m512 __A,__m512 __B)5610 __m512 test_mm512_maskz_scalef_ps(__mmask16 __U, __m512 __A, __m512 __B) {
5611   // CHECK-LABEL: @test_mm512_maskz_scalef_ps
5612   // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5613   return _mm512_maskz_scalef_ps(__U, __A, __B);
5614 }
5615 
test_mm_scalef_round_sd(__m128d __A,__m128d __B)5616 __m128d test_mm_scalef_round_sd(__m128d __A, __m128d __B) {
5617   // CHECK-LABEL: @test_mm_scalef_round_sd
5618   // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %2, i8 -1, i32 11)
5619   return _mm_scalef_round_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5620 }
5621 
test_mm_scalef_sd(__m128d __A,__m128d __B)5622 __m128d test_mm_scalef_sd(__m128d __A, __m128d __B) {
5623   // CHECK-LABEL: @test_mm_scalef_sd
5624   // CHECK: @llvm.x86.avx512.mask.scalef
5625   return _mm_scalef_sd(__A, __B);
5626 }
5627 
test_mm_mask_scalef_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5628 __m128d test_mm_mask_scalef_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5629   // CHECK-LABEL: @test_mm_mask_scalef_sd
5630   // CHECK: @llvm.x86.avx512.mask.scalef.sd
5631   return _mm_mask_scalef_sd(__W, __U, __A, __B);
5632 }
5633 
test_mm_mask_scalef_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5634 __m128d test_mm_mask_scalef_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5635   // CHECK-LABEL: @test_mm_mask_scalef_round_sd
5636   // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
5637     return _mm_mask_scalef_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5638 }
5639 
test_mm_maskz_scalef_sd(__mmask8 __U,__m128d __A,__m128d __B)5640 __m128d test_mm_maskz_scalef_sd(__mmask8 __U, __m128d __A, __m128d __B){
5641   // CHECK-LABEL: @test_mm_maskz_scalef_sd
5642   // CHECK: @llvm.x86.avx512.mask.scalef.sd
5643     return _mm_maskz_scalef_sd(__U, __A, __B);
5644 }
5645 
test_mm_maskz_scalef_round_sd(__mmask8 __U,__m128d __A,__m128d __B)5646 __m128d test_mm_maskz_scalef_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5647   // CHECK-LABEL: @test_mm_maskz_scalef_round_sd
5648   // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
5649     return _mm_maskz_scalef_round_sd(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5650 }
5651 
test_mm_scalef_round_ss(__m128 __A,__m128 __B)5652 __m128 test_mm_scalef_round_ss(__m128 __A, __m128 __B) {
5653   // CHECK-LABEL: @test_mm_scalef_round_ss
5654   // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 11)
5655   return _mm_scalef_round_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5656 }
5657 
test_mm_scalef_ss(__m128 __A,__m128 __B)5658 __m128 test_mm_scalef_ss(__m128 __A, __m128 __B) {
5659   // CHECK-LABEL: @test_mm_scalef_ss
5660   // CHECK: @llvm.x86.avx512.mask.scalef.ss
5661   return _mm_scalef_ss(__A, __B);
5662 }
5663 
test_mm_mask_scalef_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5664 __m128 test_mm_mask_scalef_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5665   // CHECK-LABEL: @test_mm_mask_scalef_ss
5666   // CHECK: @llvm.x86.avx512.mask.scalef.ss
5667     return _mm_mask_scalef_ss(__W, __U, __A, __B);
5668 }
5669 
test_mm_mask_scalef_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5670 __m128 test_mm_mask_scalef_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5671   // CHECK-LABEL: @test_mm_mask_scalef_round_ss
5672   // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 11)
5673     return _mm_mask_scalef_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5674 }
5675 
test_mm_maskz_scalef_ss(__mmask8 __U,__m128 __A,__m128 __B)5676 __m128 test_mm_maskz_scalef_ss(__mmask8 __U, __m128 __A, __m128 __B){
5677   // CHECK-LABEL: @test_mm_maskz_scalef_ss
5678   // CHECK: @llvm.x86.avx512.mask.scalef.ss
5679     return _mm_maskz_scalef_ss(__U, __A, __B);
5680 }
5681 
test_mm_maskz_scalef_round_ss(__mmask8 __U,__m128 __A,__m128 __B)5682 __m128 test_mm_maskz_scalef_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
5683   // CHECK-LABEL: @test_mm_maskz_scalef_round_ss
5684   // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 11)
5685     return _mm_maskz_scalef_round_ss(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
5686 }
5687 
test_mm512_srai_epi32(__m512i __A)5688 __m512i test_mm512_srai_epi32(__m512i __A) {
5689   // CHECK-LABEL: @test_mm512_srai_epi32
5690   // CHECK: @llvm.x86.avx512.psrai.d.512
5691   return _mm512_srai_epi32(__A, 5);
5692 }
5693 
test_mm512_srai_epi32_2(__m512i __A,unsigned int __B)5694 __m512i test_mm512_srai_epi32_2(__m512i __A, unsigned int __B) {
5695   // CHECK-LABEL: @test_mm512_srai_epi32_2
5696   // CHECK: @llvm.x86.avx512.psrai.d.512
5697   return _mm512_srai_epi32(__A, __B);
5698 }
5699 
test_mm512_mask_srai_epi32(__m512i __W,__mmask16 __U,__m512i __A)5700 __m512i test_mm512_mask_srai_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
5701   // CHECK-LABEL: @test_mm512_mask_srai_epi32
5702   // CHECK: @llvm.x86.avx512.psrai.d.512
5703   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5704   return _mm512_mask_srai_epi32(__W, __U, __A, 5);
5705 }
5706 
test_mm512_mask_srai_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,unsigned int __B)5707 __m512i test_mm512_mask_srai_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, unsigned int __B) {
5708   // CHECK-LABEL: @test_mm512_mask_srai_epi32_2
5709   // CHECK: @llvm.x86.avx512.psrai.d.512
5710   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5711   return _mm512_mask_srai_epi32(__W, __U, __A, __B);
5712 }
5713 
test_mm512_maskz_srai_epi32(__mmask16 __U,__m512i __A)5714 __m512i test_mm512_maskz_srai_epi32(__mmask16 __U, __m512i __A) {
5715   // CHECK-LABEL: @test_mm512_maskz_srai_epi32
5716   // CHECK: @llvm.x86.avx512.psrai.d.512
5717   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5718   return _mm512_maskz_srai_epi32(__U, __A, 5);
5719 }
5720 
test_mm512_maskz_srai_epi32_2(__mmask16 __U,__m512i __A,unsigned int __B)5721 __m512i test_mm512_maskz_srai_epi32_2(__mmask16 __U, __m512i __A, unsigned int __B) {
5722   // CHECK-LABEL: @test_mm512_maskz_srai_epi32_2
5723   // CHECK: @llvm.x86.avx512.psrai.d.512
5724   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5725   return _mm512_maskz_srai_epi32(__U, __A, __B);
5726 }
5727 
test_mm512_srai_epi64(__m512i __A)5728 __m512i test_mm512_srai_epi64(__m512i __A) {
5729   // CHECK-LABEL: @test_mm512_srai_epi64
5730   // CHECK: @llvm.x86.avx512.psrai.q.512
5731   return _mm512_srai_epi64(__A, 5);
5732 }
5733 
test_mm512_srai_epi64_2(__m512i __A,unsigned int __B)5734 __m512i test_mm512_srai_epi64_2(__m512i __A, unsigned int __B) {
5735   // CHECK-LABEL: @test_mm512_srai_epi64_2
5736   // CHECK: @llvm.x86.avx512.psrai.q.512
5737   return _mm512_srai_epi64(__A, __B);
5738 }
5739 
test_mm512_mask_srai_epi64(__m512i __W,__mmask8 __U,__m512i __A)5740 __m512i test_mm512_mask_srai_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
5741   // CHECK-LABEL: @test_mm512_mask_srai_epi64
5742   // CHECK: @llvm.x86.avx512.psrai.q.512
5743   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5744   return _mm512_mask_srai_epi64(__W, __U, __A, 5);
5745 }
5746 
test_mm512_mask_srai_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,unsigned int __B)5747 __m512i test_mm512_mask_srai_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, unsigned int __B) {
5748   // CHECK-LABEL: @test_mm512_mask_srai_epi64_2
5749   // CHECK: @llvm.x86.avx512.psrai.q.512
5750   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5751   return _mm512_mask_srai_epi64(__W, __U, __A, __B);
5752 }
5753 
test_mm512_maskz_srai_epi64(__mmask8 __U,__m512i __A)5754 __m512i test_mm512_maskz_srai_epi64(__mmask8 __U, __m512i __A) {
5755   // CHECK-LABEL: @test_mm512_maskz_srai_epi64
5756   // CHECK: @llvm.x86.avx512.psrai.q.512
5757   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5758   return _mm512_maskz_srai_epi64(__U, __A, 5);
5759 }
5760 
test_mm512_maskz_srai_epi64_2(__mmask8 __U,__m512i __A,unsigned int __B)5761 __m512i test_mm512_maskz_srai_epi64_2(__mmask8 __U, __m512i __A, unsigned int __B) {
5762   // CHECK-LABEL: @test_mm512_maskz_srai_epi64_2
5763   // CHECK: @llvm.x86.avx512.psrai.q.512
5764   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5765   return _mm512_maskz_srai_epi64(__U, __A, __B);
5766 }
5767 
test_mm512_sll_epi32(__m512i __A,__m128i __B)5768 __m512i test_mm512_sll_epi32(__m512i __A, __m128i __B) {
5769   // CHECK-LABEL: @test_mm512_sll_epi32
5770   // CHECK: @llvm.x86.avx512.psll.d.512
5771   return _mm512_sll_epi32(__A, __B);
5772 }
5773 
test_mm512_mask_sll_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5774 __m512i test_mm512_mask_sll_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5775   // CHECK-LABEL: @test_mm512_mask_sll_epi32
5776   // CHECK: @llvm.x86.avx512.psll.d.512
5777   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5778   return _mm512_mask_sll_epi32(__W, __U, __A, __B);
5779 }
5780 
test_mm512_maskz_sll_epi32(__mmask16 __U,__m512i __A,__m128i __B)5781 __m512i test_mm512_maskz_sll_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5782   // CHECK-LABEL: @test_mm512_maskz_sll_epi32
5783   // CHECK: @llvm.x86.avx512.psll.d.512
5784   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5785   return _mm512_maskz_sll_epi32(__U, __A, __B);
5786 }
5787 
test_mm512_sll_epi64(__m512i __A,__m128i __B)5788 __m512i test_mm512_sll_epi64(__m512i __A, __m128i __B) {
5789   // CHECK-LABEL: @test_mm512_sll_epi64
5790   // CHECK: @llvm.x86.avx512.psll.q.512
5791   return _mm512_sll_epi64(__A, __B);
5792 }
5793 
test_mm512_mask_sll_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5794 __m512i test_mm512_mask_sll_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5795   // CHECK-LABEL: @test_mm512_mask_sll_epi64
5796   // CHECK: @llvm.x86.avx512.psll.q.512
5797   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5798   return _mm512_mask_sll_epi64(__W, __U, __A, __B);
5799 }
5800 
test_mm512_maskz_sll_epi64(__mmask8 __U,__m512i __A,__m128i __B)5801 __m512i test_mm512_maskz_sll_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5802   // CHECK-LABEL: @test_mm512_maskz_sll_epi64
5803   // CHECK: @llvm.x86.avx512.psll.q.512
5804   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5805   return _mm512_maskz_sll_epi64(__U, __A, __B);
5806 }
5807 
test_mm512_sllv_epi32(__m512i __X,__m512i __Y)5808 __m512i test_mm512_sllv_epi32(__m512i __X, __m512i __Y) {
5809   // CHECK-LABEL: @test_mm512_sllv_epi32
5810   // CHECK: @llvm.x86.avx512.psllv.d.512
5811   return _mm512_sllv_epi32(__X, __Y);
5812 }
5813 
test_mm512_mask_sllv_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5814 __m512i test_mm512_mask_sllv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5815   // CHECK-LABEL: @test_mm512_mask_sllv_epi32
5816   // CHECK: @llvm.x86.avx512.psllv.d.512
5817   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5818   return _mm512_mask_sllv_epi32(__W, __U, __X, __Y);
5819 }
5820 
test_mm512_maskz_sllv_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5821 __m512i test_mm512_maskz_sllv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5822   // CHECK-LABEL: @test_mm512_maskz_sllv_epi32
5823   // CHECK: @llvm.x86.avx512.psllv.d.512
5824   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5825   return _mm512_maskz_sllv_epi32(__U, __X, __Y);
5826 }
5827 
test_mm512_sllv_epi64(__m512i __X,__m512i __Y)5828 __m512i test_mm512_sllv_epi64(__m512i __X, __m512i __Y) {
5829   // CHECK-LABEL: @test_mm512_sllv_epi64
5830   // CHECK: @llvm.x86.avx512.psllv.q.512
5831   return _mm512_sllv_epi64(__X, __Y);
5832 }
5833 
test_mm512_mask_sllv_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5834 __m512i test_mm512_mask_sllv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5835   // CHECK-LABEL: @test_mm512_mask_sllv_epi64
5836   // CHECK: @llvm.x86.avx512.psllv.q.512
5837   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5838   return _mm512_mask_sllv_epi64(__W, __U, __X, __Y);
5839 }
5840 
test_mm512_maskz_sllv_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5841 __m512i test_mm512_maskz_sllv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5842   // CHECK-LABEL: @test_mm512_maskz_sllv_epi64
5843   // CHECK: @llvm.x86.avx512.psllv.q.512
5844   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5845   return _mm512_maskz_sllv_epi64(__U, __X, __Y);
5846 }
5847 
test_mm512_sra_epi32(__m512i __A,__m128i __B)5848 __m512i test_mm512_sra_epi32(__m512i __A, __m128i __B) {
5849   // CHECK-LABEL: @test_mm512_sra_epi32
5850   // CHECK: @llvm.x86.avx512.psra.d.512
5851   return _mm512_sra_epi32(__A, __B);
5852 }
5853 
test_mm512_mask_sra_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5854 __m512i test_mm512_mask_sra_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5855   // CHECK-LABEL: @test_mm512_mask_sra_epi32
5856   // CHECK: @llvm.x86.avx512.psra.d.512
5857   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5858   return _mm512_mask_sra_epi32(__W, __U, __A, __B);
5859 }
5860 
test_mm512_maskz_sra_epi32(__mmask16 __U,__m512i __A,__m128i __B)5861 __m512i test_mm512_maskz_sra_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5862   // CHECK-LABEL: @test_mm512_maskz_sra_epi32
5863   // CHECK: @llvm.x86.avx512.psra.d.512
5864   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5865   return _mm512_maskz_sra_epi32(__U, __A, __B);
5866 }
5867 
test_mm512_sra_epi64(__m512i __A,__m128i __B)5868 __m512i test_mm512_sra_epi64(__m512i __A, __m128i __B) {
5869   // CHECK-LABEL: @test_mm512_sra_epi64
5870   // CHECK: @llvm.x86.avx512.psra.q.512
5871   return _mm512_sra_epi64(__A, __B);
5872 }
5873 
test_mm512_mask_sra_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5874 __m512i test_mm512_mask_sra_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5875   // CHECK-LABEL: @test_mm512_mask_sra_epi64
5876   // CHECK: @llvm.x86.avx512.psra.q.512
5877   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5878   return _mm512_mask_sra_epi64(__W, __U, __A, __B);
5879 }
5880 
test_mm512_maskz_sra_epi64(__mmask8 __U,__m512i __A,__m128i __B)5881 __m512i test_mm512_maskz_sra_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5882   // CHECK-LABEL: @test_mm512_maskz_sra_epi64
5883   // CHECK: @llvm.x86.avx512.psra.q.512
5884   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5885   return _mm512_maskz_sra_epi64(__U, __A, __B);
5886 }
5887 
test_mm512_srav_epi32(__m512i __X,__m512i __Y)5888 __m512i test_mm512_srav_epi32(__m512i __X, __m512i __Y) {
5889   // CHECK-LABEL: @test_mm512_srav_epi32
5890   // CHECK: @llvm.x86.avx512.psrav.d.512
5891   return _mm512_srav_epi32(__X, __Y);
5892 }
5893 
test_mm512_mask_srav_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5894 __m512i test_mm512_mask_srav_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5895   // CHECK-LABEL: @test_mm512_mask_srav_epi32
5896   // CHECK: @llvm.x86.avx512.psrav.d.512
5897   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5898   return _mm512_mask_srav_epi32(__W, __U, __X, __Y);
5899 }
5900 
test_mm512_maskz_srav_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5901 __m512i test_mm512_maskz_srav_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5902   // CHECK-LABEL: @test_mm512_maskz_srav_epi32
5903   // CHECK: @llvm.x86.avx512.psrav.d.512
5904   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5905   return _mm512_maskz_srav_epi32(__U, __X, __Y);
5906 }
5907 
test_mm512_srav_epi64(__m512i __X,__m512i __Y)5908 __m512i test_mm512_srav_epi64(__m512i __X, __m512i __Y) {
5909   // CHECK-LABEL: @test_mm512_srav_epi64
5910   // CHECK: @llvm.x86.avx512.psrav.q.512
5911   return _mm512_srav_epi64(__X, __Y);
5912 }
5913 
test_mm512_mask_srav_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5914 __m512i test_mm512_mask_srav_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5915   // CHECK-LABEL: @test_mm512_mask_srav_epi64
5916   // CHECK: @llvm.x86.avx512.psrav.q.512
5917   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5918   return _mm512_mask_srav_epi64(__W, __U, __X, __Y);
5919 }
5920 
test_mm512_maskz_srav_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5921 __m512i test_mm512_maskz_srav_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5922   // CHECK-LABEL: @test_mm512_maskz_srav_epi64
5923   // CHECK: @llvm.x86.avx512.psrav.q.512
5924   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5925   return _mm512_maskz_srav_epi64(__U, __X, __Y);
5926 }
5927 
test_mm512_srl_epi32(__m512i __A,__m128i __B)5928 __m512i test_mm512_srl_epi32(__m512i __A, __m128i __B) {
5929   // CHECK-LABEL: @test_mm512_srl_epi32
5930   // CHECK: @llvm.x86.avx512.psrl.d.512
5931   return _mm512_srl_epi32(__A, __B);
5932 }
5933 
test_mm512_mask_srl_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5934 __m512i test_mm512_mask_srl_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5935   // CHECK-LABEL: @test_mm512_mask_srl_epi32
5936   // CHECK: @llvm.x86.avx512.psrl.d.512
5937   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5938   return _mm512_mask_srl_epi32(__W, __U, __A, __B);
5939 }
5940 
test_mm512_maskz_srl_epi32(__mmask16 __U,__m512i __A,__m128i __B)5941 __m512i test_mm512_maskz_srl_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5942   // CHECK-LABEL: @test_mm512_maskz_srl_epi32
5943   // CHECK: @llvm.x86.avx512.psrl.d.512
5944   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5945   return _mm512_maskz_srl_epi32(__U, __A, __B);
5946 }
5947 
test_mm512_srl_epi64(__m512i __A,__m128i __B)5948 __m512i test_mm512_srl_epi64(__m512i __A, __m128i __B) {
5949   // CHECK-LABEL: @test_mm512_srl_epi64
5950   // CHECK: @llvm.x86.avx512.psrl.q.512
5951   return _mm512_srl_epi64(__A, __B);
5952 }
5953 
test_mm512_mask_srl_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5954 __m512i test_mm512_mask_srl_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5955   // CHECK-LABEL: @test_mm512_mask_srl_epi64
5956   // CHECK: @llvm.x86.avx512.psrl.q.512
5957   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5958   return _mm512_mask_srl_epi64(__W, __U, __A, __B);
5959 }
5960 
test_mm512_maskz_srl_epi64(__mmask8 __U,__m512i __A,__m128i __B)5961 __m512i test_mm512_maskz_srl_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5962   // CHECK-LABEL: @test_mm512_maskz_srl_epi64
5963   // CHECK: @llvm.x86.avx512.psrl.q.512
5964   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5965   return _mm512_maskz_srl_epi64(__U, __A, __B);
5966 }
5967 
test_mm512_srlv_epi32(__m512i __X,__m512i __Y)5968 __m512i test_mm512_srlv_epi32(__m512i __X, __m512i __Y) {
5969   // CHECK-LABEL: @test_mm512_srlv_epi32
5970   // CHECK: @llvm.x86.avx512.psrlv.d.512
5971   return _mm512_srlv_epi32(__X, __Y);
5972 }
5973 
test_mm512_mask_srlv_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5974 __m512i test_mm512_mask_srlv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5975   // CHECK-LABEL: @test_mm512_mask_srlv_epi32
5976   // CHECK: @llvm.x86.avx512.psrlv.d.512
5977   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5978   return _mm512_mask_srlv_epi32(__W, __U, __X, __Y);
5979 }
5980 
test_mm512_maskz_srlv_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5981 __m512i test_mm512_maskz_srlv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5982   // CHECK-LABEL: @test_mm512_maskz_srlv_epi32
5983   // CHECK: @llvm.x86.avx512.psrlv.d.512
5984   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5985   return _mm512_maskz_srlv_epi32(__U, __X, __Y);
5986 }
5987 
test_mm512_srlv_epi64(__m512i __X,__m512i __Y)5988 __m512i test_mm512_srlv_epi64(__m512i __X, __m512i __Y) {
5989   // CHECK-LABEL: @test_mm512_srlv_epi64
5990   // CHECK: @llvm.x86.avx512.psrlv.q.512
5991   return _mm512_srlv_epi64(__X, __Y);
5992 }
5993 
test_mm512_mask_srlv_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5994 __m512i test_mm512_mask_srlv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5995   // CHECK-LABEL: @test_mm512_mask_srlv_epi64
5996   // CHECK: @llvm.x86.avx512.psrlv.q.512
5997   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5998   return _mm512_mask_srlv_epi64(__W, __U, __X, __Y);
5999 }
6000 
test_mm512_maskz_srlv_epi64(__mmask8 __U,__m512i __X,__m512i __Y)6001 __m512i test_mm512_maskz_srlv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
6002   // CHECK-LABEL: @test_mm512_maskz_srlv_epi64
6003   // CHECK: @llvm.x86.avx512.psrlv.q.512
6004   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6005   return _mm512_maskz_srlv_epi64(__U, __X, __Y);
6006 }
6007 
test_mm512_ternarylogic_epi32(__m512i __A,__m512i __B,__m512i __C)6008 __m512i test_mm512_ternarylogic_epi32(__m512i __A, __m512i __B, __m512i __C) {
6009   // CHECK-LABEL: @test_mm512_ternarylogic_epi32
6010   // CHECK: @llvm.x86.avx512.pternlog.d.512
6011   return _mm512_ternarylogic_epi32(__A, __B, __C, 4);
6012 }
6013 
test_mm512_mask_ternarylogic_epi32(__m512i __A,__mmask16 __U,__m512i __B,__m512i __C)6014 __m512i test_mm512_mask_ternarylogic_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {
6015   // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi32
6016   // CHECK: @llvm.x86.avx512.pternlog.d.512
6017   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6018   return _mm512_mask_ternarylogic_epi32(__A, __U, __B, __C, 4);
6019 }
6020 
test_mm512_maskz_ternarylogic_epi32(__mmask16 __U,__m512i __A,__m512i __B,__m512i __C)6021 __m512i test_mm512_maskz_ternarylogic_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {
6022   // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi32
6023   // CHECK: @llvm.x86.avx512.pternlog.d.512
6024   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> zeroinitializer
6025   return _mm512_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4);
6026 }
6027 
test_mm512_ternarylogic_epi64(__m512i __A,__m512i __B,__m512i __C)6028 __m512i test_mm512_ternarylogic_epi64(__m512i __A, __m512i __B, __m512i __C) {
6029   // CHECK-LABEL: @test_mm512_ternarylogic_epi64
6030   // CHECK: @llvm.x86.avx512.pternlog.q.512
6031   return _mm512_ternarylogic_epi64(__A, __B, __C, 4);
6032 }
6033 
test_mm512_mask_ternarylogic_epi64(__m512i __A,__mmask8 __U,__m512i __B,__m512i __C)6034 __m512i test_mm512_mask_ternarylogic_epi64(__m512i __A, __mmask8 __U, __m512i __B, __m512i __C) {
6035   // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi64
6036   // CHECK: @llvm.x86.avx512.pternlog.q.512
6037   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6038   return _mm512_mask_ternarylogic_epi64(__A, __U, __B, __C, 4);
6039 }
6040 
test_mm512_maskz_ternarylogic_epi64(__mmask8 __U,__m512i __A,__m512i __B,__m512i __C)6041 __m512i test_mm512_maskz_ternarylogic_epi64(__mmask8 __U, __m512i __A, __m512i __B, __m512i __C) {
6042   // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi64
6043   // CHECK: @llvm.x86.avx512.pternlog.q.512
6044   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> zeroinitializer
6045   return _mm512_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4);
6046 }
6047 
test_mm512_shuffle_f32x4(__m512 __A,__m512 __B)6048 __m512 test_mm512_shuffle_f32x4(__m512 __A, __m512 __B) {
6049   // CHECK-LABEL: @test_mm512_shuffle_f32x4
6050   // 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>
6051   return _mm512_shuffle_f32x4(__A, __B, 4);
6052 }
6053 
test_mm512_mask_shuffle_f32x4(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)6054 __m512 test_mm512_mask_shuffle_f32x4(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
6055   // CHECK-LABEL: @test_mm512_mask_shuffle_f32x4
6056   // 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>
6057   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6058   return _mm512_mask_shuffle_f32x4(__W, __U, __A, __B, 4);
6059 }
6060 
test_mm512_maskz_shuffle_f32x4(__mmask16 __U,__m512 __A,__m512 __B)6061 __m512 test_mm512_maskz_shuffle_f32x4(__mmask16 __U, __m512 __A, __m512 __B) {
6062   // CHECK-LABEL: @test_mm512_maskz_shuffle_f32x4
6063   // 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>
6064   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6065   return _mm512_maskz_shuffle_f32x4(__U, __A, __B, 4);
6066 }
6067 
test_mm512_shuffle_f64x2(__m512d __A,__m512d __B)6068 __m512d test_mm512_shuffle_f64x2(__m512d __A, __m512d __B) {
6069   // CHECK-LABEL: @test_mm512_shuffle_f64x2
6070   // 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>
6071   return _mm512_shuffle_f64x2(__A, __B, 4);
6072 }
6073 
test_mm512_mask_shuffle_f64x2(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)6074 __m512d test_mm512_mask_shuffle_f64x2(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
6075   // CHECK-LABEL: @test_mm512_mask_shuffle_f64x2
6076   // 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>
6077   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6078   return _mm512_mask_shuffle_f64x2(__W, __U, __A, __B, 4);
6079 }
6080 
test_mm512_maskz_shuffle_f64x2(__mmask8 __U,__m512d __A,__m512d __B)6081 __m512d test_mm512_maskz_shuffle_f64x2(__mmask8 __U, __m512d __A, __m512d __B) {
6082   // CHECK-LABEL: @test_mm512_maskz_shuffle_f64x2
6083   // 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>
6084   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6085   return _mm512_maskz_shuffle_f64x2(__U, __A, __B, 4);
6086 }
6087 
test_mm512_shuffle_i32x4(__m512i __A,__m512i __B)6088 __m512i test_mm512_shuffle_i32x4(__m512i __A, __m512i __B) {
6089   // CHECK-LABEL: @test_mm512_shuffle_i32x4
6090   // 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>
6091   return _mm512_shuffle_i32x4(__A, __B, 4);
6092 }
6093 
test_mm512_mask_shuffle_i32x4(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)6094 __m512i test_mm512_mask_shuffle_i32x4(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
6095   // CHECK-LABEL: @test_mm512_mask_shuffle_i32x4
6096   // 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>
6097   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6098   return _mm512_mask_shuffle_i32x4(__W, __U, __A, __B, 4);
6099 }
6100 
test_mm512_maskz_shuffle_i32x4(__mmask16 __U,__m512i __A,__m512i __B)6101 __m512i test_mm512_maskz_shuffle_i32x4(__mmask16 __U, __m512i __A, __m512i __B) {
6102   // CHECK-LABEL: @test_mm512_maskz_shuffle_i32x4
6103   // 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>
6104   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6105   return _mm512_maskz_shuffle_i32x4(__U, __A, __B, 4);
6106 }
6107 
test_mm512_shuffle_i64x2(__m512i __A,__m512i __B)6108 __m512i test_mm512_shuffle_i64x2(__m512i __A, __m512i __B) {
6109   // CHECK-LABEL: @test_mm512_shuffle_i64x2
6110   // 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>
6111   return _mm512_shuffle_i64x2(__A, __B, 4);
6112 }
6113 
test_mm512_mask_shuffle_i64x2(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)6114 __m512i test_mm512_mask_shuffle_i64x2(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
6115   // CHECK-LABEL: @test_mm512_mask_shuffle_i64x2
6116   // 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>
6117   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6118   return _mm512_mask_shuffle_i64x2(__W, __U, __A, __B, 4);
6119 }
6120 
test_mm512_maskz_shuffle_i64x2(__mmask8 __U,__m512i __A,__m512i __B)6121 __m512i test_mm512_maskz_shuffle_i64x2(__mmask8 __U, __m512i __A, __m512i __B) {
6122   // CHECK-LABEL: @test_mm512_maskz_shuffle_i64x2
6123   // 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>
6124   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6125   return _mm512_maskz_shuffle_i64x2(__U, __A, __B, 4);
6126 }
6127 
test_mm512_shuffle_pd(__m512d __M,__m512d __V)6128 __m512d test_mm512_shuffle_pd(__m512d __M, __m512d __V) {
6129   // CHECK-LABEL: @test_mm512_shuffle_pd
6130   // 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>
6131   return _mm512_shuffle_pd(__M, __V, 4);
6132 }
6133 
test_mm512_mask_shuffle_pd(__m512d __W,__mmask8 __U,__m512d __M,__m512d __V)6134 __m512d test_mm512_mask_shuffle_pd(__m512d __W, __mmask8 __U, __m512d __M, __m512d __V) {
6135   // CHECK-LABEL: @test_mm512_mask_shuffle_pd
6136   // 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>
6137   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6138   return _mm512_mask_shuffle_pd(__W, __U, __M, __V, 4);
6139 }
6140 
test_mm512_maskz_shuffle_pd(__mmask8 __U,__m512d __M,__m512d __V)6141 __m512d test_mm512_maskz_shuffle_pd(__mmask8 __U, __m512d __M, __m512d __V) {
6142   // CHECK-LABEL: @test_mm512_maskz_shuffle_pd
6143   // 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>
6144   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6145   return _mm512_maskz_shuffle_pd(__U, __M, __V, 4);
6146 }
6147 
test_mm512_shuffle_ps(__m512 __M,__m512 __V)6148 __m512 test_mm512_shuffle_ps(__m512 __M, __m512 __V) {
6149   // CHECK-LABEL: @test_mm512_shuffle_ps
6150   // 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>
6151   return _mm512_shuffle_ps(__M, __V, 4);
6152 }
6153 
test_mm512_mask_shuffle_ps(__m512 __W,__mmask16 __U,__m512 __M,__m512 __V)6154 __m512 test_mm512_mask_shuffle_ps(__m512 __W, __mmask16 __U, __m512 __M, __m512 __V) {
6155   // CHECK-LABEL: @test_mm512_mask_shuffle_ps
6156   // 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>
6157   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6158   return _mm512_mask_shuffle_ps(__W, __U, __M, __V, 4);
6159 }
6160 
test_mm512_maskz_shuffle_ps(__mmask16 __U,__m512 __M,__m512 __V)6161 __m512 test_mm512_maskz_shuffle_ps(__mmask16 __U, __m512 __M, __m512 __V) {
6162   // CHECK-LABEL: @test_mm512_maskz_shuffle_ps
6163   // 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>
6164   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6165   return _mm512_maskz_shuffle_ps(__U, __M, __V, 4);
6166 }
6167 
test_mm_sqrt_round_sd(__m128d __A,__m128d __B)6168 __m128d test_mm_sqrt_round_sd(__m128d __A, __m128d __B) {
6169   // CHECK-LABEL: @test_mm_sqrt_round_sd
6170   // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 -1, i32 11)
6171   return _mm_sqrt_round_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6172 }
6173 
test_mm_mask_sqrt_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6174 __m128d test_mm_mask_sqrt_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6175   // CHECK-LABEL: @test_mm_mask_sqrt_sd
6176   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6177   // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6178   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6179   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6180   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6181   // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6182   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6183   return _mm_mask_sqrt_sd(__W,__U,__A,__B);
6184 }
6185 
test_mm_mask_sqrt_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6186 __m128d test_mm_mask_sqrt_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6187   // CHECK-LABEL: @test_mm_mask_sqrt_round_sd
6188   // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
6189   return _mm_mask_sqrt_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6190 }
6191 
test_mm_maskz_sqrt_sd(__mmask8 __U,__m128d __A,__m128d __B)6192 __m128d test_mm_maskz_sqrt_sd(__mmask8 __U, __m128d __A, __m128d __B){
6193   // CHECK-LABEL: @test_mm_maskz_sqrt_sd
6194   // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6195   // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6196   // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6197   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6198   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6199   // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6200   // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6201   return _mm_maskz_sqrt_sd(__U,__A,__B);
6202 }
6203 
test_mm_maskz_sqrt_round_sd(__mmask8 __U,__m128d __A,__m128d __B)6204 __m128d test_mm_maskz_sqrt_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
6205   // CHECK-LABEL: @test_mm_maskz_sqrt_round_sd
6206   // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 11)
6207   return _mm_maskz_sqrt_round_sd(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6208 }
6209 
test_mm_sqrt_round_ss(__m128 __A,__m128 __B)6210 __m128 test_mm_sqrt_round_ss(__m128 __A, __m128 __B) {
6211   // CHECK-LABEL: @test_mm_sqrt_round_ss
6212   // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 11)
6213   return _mm_sqrt_round_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6214 }
6215 
test_mm_mask_sqrt_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6216 __m128 test_mm_mask_sqrt_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
6217   // CHECK-LABEL: @test_mm_mask_sqrt_ss
6218   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6219   // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6220   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6221   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6222   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6223   // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6224   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6225   return _mm_mask_sqrt_ss(__W,__U,__A,__B);
6226 }
6227 
test_mm_mask_sqrt_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6228 __m128 test_mm_mask_sqrt_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
6229   // CHECK-LABEL: @test_mm_mask_sqrt_round_ss
6230   // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 11)
6231   return _mm_mask_sqrt_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6232 }
6233 
test_mm_maskz_sqrt_ss(__mmask8 __U,__m128 __A,__m128 __B)6234 __m128 test_mm_maskz_sqrt_ss(__mmask8 __U, __m128 __A, __m128 __B){
6235   // CHECK-LABEL: @test_mm_maskz_sqrt_ss
6236   // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6237   // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6238   // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6239   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6240   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6241   // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6242   // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6243   return _mm_maskz_sqrt_ss(__U,__A,__B);
6244 }
6245 
test_mm_maskz_sqrt_round_ss(__mmask8 __U,__m128 __A,__m128 __B)6246 __m128 test_mm_maskz_sqrt_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
6247   // CHECK-LABEL: @test_mm_maskz_sqrt_round_ss
6248   // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 11)
6249   return _mm_maskz_sqrt_round_ss(__U,__A,__B,_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
6250 }
6251 
test_mm512_broadcast_f32x4(float const * __A)6252 __m512 test_mm512_broadcast_f32x4(float const* __A) {
6253   // CHECK-LABEL: @test_mm512_broadcast_f32x4
6254   // 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>
6255   return _mm512_broadcast_f32x4(_mm_loadu_ps(__A));
6256 }
6257 
test_mm512_mask_broadcast_f32x4(__m512 __O,__mmask16 __M,float const * __A)6258 __m512 test_mm512_mask_broadcast_f32x4(__m512 __O, __mmask16 __M, float const* __A) {
6259   // CHECK-LABEL: @test_mm512_mask_broadcast_f32x4
6260   // 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>
6261   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6262   return _mm512_mask_broadcast_f32x4(__O, __M, _mm_loadu_ps(__A));
6263 }
6264 
test_mm512_maskz_broadcast_f32x4(__mmask16 __M,float const * __A)6265 __m512 test_mm512_maskz_broadcast_f32x4(__mmask16 __M, float const* __A) {
6266   // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x4
6267   // 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>
6268   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6269   return _mm512_maskz_broadcast_f32x4(__M, _mm_loadu_ps(__A));
6270 }
6271 
test_mm512_broadcast_f64x4(double const * __A)6272 __m512d test_mm512_broadcast_f64x4(double const* __A) {
6273   // CHECK-LABEL: @test_mm512_broadcast_f64x4
6274   // 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>
6275   return _mm512_broadcast_f64x4(_mm256_loadu_pd(__A));
6276 }
6277 
test_mm512_mask_broadcast_f64x4(__m512d __O,__mmask8 __M,double const * __A)6278 __m512d test_mm512_mask_broadcast_f64x4(__m512d __O, __mmask8 __M, double const* __A) {
6279   // CHECK-LABEL: @test_mm512_mask_broadcast_f64x4
6280   // 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>
6281   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6282   return _mm512_mask_broadcast_f64x4(__O, __M, _mm256_loadu_pd(__A));
6283 }
6284 
test_mm512_maskz_broadcast_f64x4(__mmask8 __M,double const * __A)6285 __m512d test_mm512_maskz_broadcast_f64x4(__mmask8 __M, double const* __A) {
6286   // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x4
6287   // 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>
6288   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6289   return _mm512_maskz_broadcast_f64x4(__M, _mm256_loadu_pd(__A));
6290 }
6291 
test_mm512_broadcast_i32x4(__m128i const * __A)6292 __m512i test_mm512_broadcast_i32x4(__m128i const* __A) {
6293   // CHECK-LABEL: @test_mm512_broadcast_i32x4
6294   // 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>
6295   return _mm512_broadcast_i32x4(_mm_loadu_si128(__A));
6296 }
6297 
test_mm512_mask_broadcast_i32x4(__m512i __O,__mmask16 __M,__m128i const * __A)6298 __m512i test_mm512_mask_broadcast_i32x4(__m512i __O, __mmask16 __M, __m128i const* __A) {
6299   // CHECK-LABEL: @test_mm512_mask_broadcast_i32x4
6300   // 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>
6301   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6302   return _mm512_mask_broadcast_i32x4(__O, __M, _mm_loadu_si128(__A));
6303 }
6304 
test_mm512_maskz_broadcast_i32x4(__mmask16 __M,__m128i const * __A)6305 __m512i test_mm512_maskz_broadcast_i32x4(__mmask16 __M, __m128i const* __A) {
6306   // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x4
6307   // 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>
6308   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6309   return _mm512_maskz_broadcast_i32x4(__M, _mm_loadu_si128(__A));
6310 }
6311 
test_mm512_broadcast_i64x4(__m256i const * __A)6312 __m512i test_mm512_broadcast_i64x4(__m256i const* __A) {
6313   // CHECK-LABEL: @test_mm512_broadcast_i64x4
6314   // 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>
6315   return _mm512_broadcast_i64x4(_mm256_loadu_si256(__A));
6316 }
6317 
test_mm512_mask_broadcast_i64x4(__m512i __O,__mmask8 __M,__m256i const * __A)6318 __m512i test_mm512_mask_broadcast_i64x4(__m512i __O, __mmask8 __M, __m256i const* __A) {
6319   // CHECK-LABEL: @test_mm512_mask_broadcast_i64x4
6320   // 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>
6321   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6322   return _mm512_mask_broadcast_i64x4(__O, __M, _mm256_loadu_si256(__A));
6323 }
6324 
test_mm512_maskz_broadcast_i64x4(__mmask8 __M,__m256i const * __A)6325 __m512i test_mm512_maskz_broadcast_i64x4(__mmask8 __M, __m256i const* __A) {
6326   // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x4
6327   // 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>
6328   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6329   return _mm512_maskz_broadcast_i64x4(__M, _mm256_loadu_si256(__A));
6330 }
6331 
test_mm512_broadcastsd_pd(__m128d __A)6332 __m512d test_mm512_broadcastsd_pd(__m128d __A) {
6333   // CHECK-LABEL: @test_mm512_broadcastsd_pd
6334   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6335   return _mm512_broadcastsd_pd(__A);
6336 }
6337 
test_mm512_mask_broadcastsd_pd(__m512d __O,__mmask8 __M,__m128d __A)6338 __m512d test_mm512_mask_broadcastsd_pd(__m512d __O, __mmask8 __M, __m128d __A) {
6339   // CHECK-LABEL: @test_mm512_mask_broadcastsd_pd
6340   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6341   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6342   return _mm512_mask_broadcastsd_pd(__O, __M, __A);
6343 }
6344 
test_mm512_maskz_broadcastsd_pd(__mmask8 __M,__m128d __A)6345 __m512d test_mm512_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {
6346   // CHECK-LABEL: @test_mm512_maskz_broadcastsd_pd
6347   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6348   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6349   return _mm512_maskz_broadcastsd_pd(__M, __A);
6350 }
6351 
test_mm512_broadcastss_ps(__m128 __A)6352 __m512 test_mm512_broadcastss_ps(__m128 __A) {
6353   // CHECK-LABEL: @test_mm512_broadcastss_ps
6354   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6355   return _mm512_broadcastss_ps(__A);
6356 }
6357 
test_mm512_mask_broadcastss_ps(__m512 __O,__mmask16 __M,__m128 __A)6358 __m512 test_mm512_mask_broadcastss_ps(__m512 __O, __mmask16 __M, __m128 __A) {
6359   // CHECK-LABEL: @test_mm512_mask_broadcastss_ps
6360   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6361   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6362   return _mm512_mask_broadcastss_ps(__O, __M, __A);
6363 }
6364 
test_mm512_maskz_broadcastss_ps(__mmask16 __M,__m128 __A)6365 __m512 test_mm512_maskz_broadcastss_ps(__mmask16 __M, __m128 __A) {
6366   // CHECK-LABEL: @test_mm512_maskz_broadcastss_ps
6367   // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6368   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6369   return _mm512_maskz_broadcastss_ps(__M, __A);
6370 }
6371 
test_mm512_broadcastd_epi32(__m128i __A)6372 __m512i test_mm512_broadcastd_epi32(__m128i __A) {
6373   // CHECK-LABEL: @test_mm512_broadcastd_epi32
6374   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6375   return _mm512_broadcastd_epi32(__A);
6376 }
6377 
test_mm512_mask_broadcastd_epi32(__m512i __O,__mmask16 __M,__m128i __A)6378 __m512i test_mm512_mask_broadcastd_epi32(__m512i __O, __mmask16 __M, __m128i __A) {
6379   // CHECK-LABEL: @test_mm512_mask_broadcastd_epi32
6380   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6381   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6382   return _mm512_mask_broadcastd_epi32(__O, __M, __A);
6383 }
6384 
test_mm512_maskz_broadcastd_epi32(__mmask16 __M,__m128i __A)6385 __m512i test_mm512_maskz_broadcastd_epi32(__mmask16 __M, __m128i __A) {
6386   // CHECK-LABEL: @test_mm512_maskz_broadcastd_epi32
6387   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6388   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6389   return _mm512_maskz_broadcastd_epi32(__M, __A);
6390 }
6391 
test_mm512_broadcastq_epi64(__m128i __A)6392 __m512i test_mm512_broadcastq_epi64(__m128i __A) {
6393   // CHECK-LABEL: @test_mm512_broadcastq_epi64
6394   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6395   return _mm512_broadcastq_epi64(__A);
6396 }
6397 
test_mm512_mask_broadcastq_epi64(__m512i __O,__mmask8 __M,__m128i __A)6398 __m512i test_mm512_mask_broadcastq_epi64(__m512i __O, __mmask8 __M, __m128i __A) {
6399   // CHECK-LABEL: @test_mm512_mask_broadcastq_epi64
6400   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6401   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6402   return _mm512_mask_broadcastq_epi64(__O, __M, __A);
6403 }
6404 
test_mm512_maskz_broadcastq_epi64(__mmask8 __M,__m128i __A)6405 __m512i test_mm512_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
6406   // CHECK-LABEL: @test_mm512_maskz_broadcastq_epi64
6407   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6408   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6409   return _mm512_maskz_broadcastq_epi64(__M, __A);
6410 }
6411 
test_mm512_cvtsepi32_epi8(__m512i __A)6412 __m128i test_mm512_cvtsepi32_epi8(__m512i __A) {
6413   // CHECK-LABEL: @test_mm512_cvtsepi32_epi8
6414   // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6415   return _mm512_cvtsepi32_epi8(__A);
6416 }
6417 
test_mm512_mask_cvtsepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6418 __m128i test_mm512_mask_cvtsepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6419   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi8
6420   // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6421   return _mm512_mask_cvtsepi32_epi8(__O, __M, __A);
6422 }
6423 
test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M,__m512i __A)6424 __m128i test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M, __m512i __A) {
6425   // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi8
6426   // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6427   return _mm512_maskz_cvtsepi32_epi8(__M, __A);
6428 }
6429 
test_mm512_mask_cvtsepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6430 void test_mm512_mask_cvtsepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6431   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi8
6432   // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.512
6433   return _mm512_mask_cvtsepi32_storeu_epi8(__P, __M, __A);
6434 }
6435 
test_mm512_cvtsepi32_epi16(__m512i __A)6436 __m256i test_mm512_cvtsepi32_epi16(__m512i __A) {
6437   // CHECK-LABEL: @test_mm512_cvtsepi32_epi16
6438   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6439   return _mm512_cvtsepi32_epi16(__A);
6440 }
6441 
test_mm512_mask_cvtsepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6442 __m256i test_mm512_mask_cvtsepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6443   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi16
6444   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6445   return _mm512_mask_cvtsepi32_epi16(__O, __M, __A);
6446 }
6447 
test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M,__m512i __A)6448 __m256i test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M, __m512i __A) {
6449   // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi16
6450   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6451   return _mm512_maskz_cvtsepi32_epi16(__M, __A);
6452 }
6453 
test_mm512_mask_cvtsepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6454 void test_mm512_mask_cvtsepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
6455   // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi16
6456   // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.512
6457   return _mm512_mask_cvtsepi32_storeu_epi16(__P, __M, __A);
6458 }
6459 
test_mm512_cvtsepi64_epi8(__m512i __A)6460 __m128i test_mm512_cvtsepi64_epi8(__m512i __A) {
6461   // CHECK-LABEL: @test_mm512_cvtsepi64_epi8
6462   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6463   return _mm512_cvtsepi64_epi8(__A);
6464 }
6465 
test_mm512_mask_cvtsepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6466 __m128i test_mm512_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6467   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi8
6468   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6469   return _mm512_mask_cvtsepi64_epi8(__O, __M, __A);
6470 }
6471 
test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M,__m512i __A)6472 __m128i test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M, __m512i __A) {
6473   // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi8
6474   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6475   return _mm512_maskz_cvtsepi64_epi8(__M, __A);
6476 }
6477 
test_mm512_mask_cvtsepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6478 void test_mm512_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6479   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi8
6480   // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.512
6481   return _mm512_mask_cvtsepi64_storeu_epi8(__P, __M, __A);
6482 }
6483 
test_mm512_cvtsepi64_epi32(__m512i __A)6484 __m256i test_mm512_cvtsepi64_epi32(__m512i __A) {
6485   // CHECK-LABEL: @test_mm512_cvtsepi64_epi32
6486   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6487   return _mm512_cvtsepi64_epi32(__A);
6488 }
6489 
test_mm512_mask_cvtsepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6490 __m256i test_mm512_mask_cvtsepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6491   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi32
6492   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6493   return _mm512_mask_cvtsepi64_epi32(__O, __M, __A);
6494 }
6495 
test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M,__m512i __A)6496 __m256i test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M, __m512i __A) {
6497   // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi32
6498   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6499   return _mm512_maskz_cvtsepi64_epi32(__M, __A);
6500 }
6501 
test_mm512_mask_cvtsepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6502 void test_mm512_mask_cvtsepi64_storeu_epi32(void *__P, __mmask8 __M, __m512i __A) {
6503   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi32
6504   // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.512
6505   return _mm512_mask_cvtsepi64_storeu_epi32(__P, __M, __A);
6506 }
6507 
test_mm512_cvtsepi64_epi16(__m512i __A)6508 __m128i test_mm512_cvtsepi64_epi16(__m512i __A) {
6509   // CHECK-LABEL: @test_mm512_cvtsepi64_epi16
6510   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6511   return _mm512_cvtsepi64_epi16(__A);
6512 }
6513 
test_mm512_mask_cvtsepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6514 __m128i test_mm512_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6515   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi16
6516   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6517   return _mm512_mask_cvtsepi64_epi16(__O, __M, __A);
6518 }
6519 
test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M,__m512i __A)6520 __m128i test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M, __m512i __A) {
6521   // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi16
6522   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6523   return _mm512_maskz_cvtsepi64_epi16(__M, __A);
6524 }
6525 
test_mm512_mask_cvtsepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6526 void test_mm512_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m512i __A) {
6527   // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi16
6528   // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.512
6529   return _mm512_mask_cvtsepi64_storeu_epi16(__P, __M, __A);
6530 }
6531 
test_mm512_cvtusepi32_epi8(__m512i __A)6532 __m128i test_mm512_cvtusepi32_epi8(__m512i __A) {
6533   // CHECK-LABEL: @test_mm512_cvtusepi32_epi8
6534   // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6535   return _mm512_cvtusepi32_epi8(__A);
6536 }
6537 
test_mm512_mask_cvtusepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6538 __m128i test_mm512_mask_cvtusepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6539   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi8
6540   // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6541   return _mm512_mask_cvtusepi32_epi8(__O, __M, __A);
6542 }
6543 
test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M,__m512i __A)6544 __m128i test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M, __m512i __A) {
6545   // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi8
6546   // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6547   return _mm512_maskz_cvtusepi32_epi8(__M, __A);
6548 }
6549 
test_mm512_mask_cvtusepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6550 void test_mm512_mask_cvtusepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6551   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi8
6552   // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.512
6553   return _mm512_mask_cvtusepi32_storeu_epi8(__P, __M, __A);
6554 }
6555 
test_mm512_cvtusepi32_epi16(__m512i __A)6556 __m256i test_mm512_cvtusepi32_epi16(__m512i __A) {
6557   // CHECK-LABEL: @test_mm512_cvtusepi32_epi16
6558   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6559   return _mm512_cvtusepi32_epi16(__A);
6560 }
6561 
test_mm512_mask_cvtusepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6562 __m256i test_mm512_mask_cvtusepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6563   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi16
6564   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6565   return _mm512_mask_cvtusepi32_epi16(__O, __M, __A);
6566 }
6567 
test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M,__m512i __A)6568 __m256i test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M, __m512i __A) {
6569   // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi16
6570   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6571   return _mm512_maskz_cvtusepi32_epi16(__M, __A);
6572 }
6573 
test_mm512_mask_cvtusepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6574 void test_mm512_mask_cvtusepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
6575   // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi16
6576   // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.512
6577   return _mm512_mask_cvtusepi32_storeu_epi16(__P, __M, __A);
6578 }
6579 
test_mm512_cvtusepi64_epi8(__m512i __A)6580 __m128i test_mm512_cvtusepi64_epi8(__m512i __A) {
6581   // CHECK-LABEL: @test_mm512_cvtusepi64_epi8
6582   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6583   return _mm512_cvtusepi64_epi8(__A);
6584 }
6585 
test_mm512_mask_cvtusepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6586 __m128i test_mm512_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6587   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi8
6588   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6589   return _mm512_mask_cvtusepi64_epi8(__O, __M, __A);
6590 }
6591 
test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M,__m512i __A)6592 __m128i test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M, __m512i __A) {
6593   // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi8
6594   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6595   return _mm512_maskz_cvtusepi64_epi8(__M, __A);
6596 }
6597 
test_mm512_mask_cvtusepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6598 void test_mm512_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6599   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi8
6600   // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.512
6601   return _mm512_mask_cvtusepi64_storeu_epi8(__P, __M, __A);
6602 }
6603 
test_mm512_cvtusepi64_epi32(__m512i __A)6604 __m256i test_mm512_cvtusepi64_epi32(__m512i __A) {
6605   // CHECK-LABEL: @test_mm512_cvtusepi64_epi32
6606   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6607   return _mm512_cvtusepi64_epi32(__A);
6608 }
6609 
test_mm512_mask_cvtusepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6610 __m256i test_mm512_mask_cvtusepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6611   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi32
6612   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6613   return _mm512_mask_cvtusepi64_epi32(__O, __M, __A);
6614 }
6615 
test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M,__m512i __A)6616 __m256i test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M, __m512i __A) {
6617   // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi32
6618   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6619   return _mm512_maskz_cvtusepi64_epi32(__M, __A);
6620 }
6621 
test_mm512_mask_cvtusepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6622 void test_mm512_mask_cvtusepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
6623   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi32
6624   // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.512
6625   return _mm512_mask_cvtusepi64_storeu_epi32(__P, __M, __A);
6626 }
6627 
test_mm512_cvtusepi64_epi16(__m512i __A)6628 __m128i test_mm512_cvtusepi64_epi16(__m512i __A) {
6629   // CHECK-LABEL: @test_mm512_cvtusepi64_epi16
6630   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6631   return _mm512_cvtusepi64_epi16(__A);
6632 }
6633 
test_mm512_mask_cvtusepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6634 __m128i test_mm512_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6635   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi16
6636   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6637   return _mm512_mask_cvtusepi64_epi16(__O, __M, __A);
6638 }
6639 
test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M,__m512i __A)6640 __m128i test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M, __m512i __A) {
6641   // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi16
6642   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6643   return _mm512_maskz_cvtusepi64_epi16(__M, __A);
6644 }
6645 
test_mm512_mask_cvtusepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6646 void test_mm512_mask_cvtusepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
6647   // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi16
6648   // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.512
6649   return _mm512_mask_cvtusepi64_storeu_epi16(__P, __M, __A);
6650 }
6651 
test_mm512_cvtepi32_epi8(__m512i __A)6652 __m128i test_mm512_cvtepi32_epi8(__m512i __A) {
6653   // CHECK-LABEL: @test_mm512_cvtepi32_epi8
6654   // CHECK: trunc <16 x i32> %{{.*}} to <16 x i8>
6655   return _mm512_cvtepi32_epi8(__A);
6656 }
6657 
test_mm512_mask_cvtepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6658 __m128i test_mm512_mask_cvtepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6659   // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi8
6660   // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6661   return _mm512_mask_cvtepi32_epi8(__O, __M, __A);
6662 }
6663 
test_mm512_maskz_cvtepi32_epi8(__mmask16 __M,__m512i __A)6664 __m128i test_mm512_maskz_cvtepi32_epi8(__mmask16 __M, __m512i __A) {
6665   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi8
6666   // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6667   return _mm512_maskz_cvtepi32_epi8(__M, __A);
6668 }
6669 
test_mm512_mask_cvtepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6670 void test_mm512_mask_cvtepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6671   // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi8
6672   // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.512
6673   return _mm512_mask_cvtepi32_storeu_epi8(__P, __M, __A);
6674 }
6675 
test_mm512_cvtepi32_epi16(__m512i __A)6676 __m256i test_mm512_cvtepi32_epi16(__m512i __A) {
6677   // CHECK-LABEL: @test_mm512_cvtepi32_epi16
6678   // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
6679   return _mm512_cvtepi32_epi16(__A);
6680 }
6681 
test_mm512_mask_cvtepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6682 __m256i test_mm512_mask_cvtepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6683   // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi16
6684   // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6685   return _mm512_mask_cvtepi32_epi16(__O, __M, __A);
6686 }
6687 
test_mm512_maskz_cvtepi32_epi16(__mmask16 __M,__m512i __A)6688 __m256i test_mm512_maskz_cvtepi32_epi16(__mmask16 __M, __m512i __A) {
6689   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi16
6690   // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6691   return _mm512_maskz_cvtepi32_epi16(__M, __A);
6692 }
6693 
test_mm512_mask_cvtepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6694 void test_mm512_mask_cvtepi32_storeu_epi16(void * __P, __mmask16 __M, __m512i __A) {
6695   // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi16
6696   // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.512
6697   return _mm512_mask_cvtepi32_storeu_epi16(__P, __M, __A);
6698 }
6699 
test_mm512_cvtepi64_epi8(__m512i __A)6700 __m128i test_mm512_cvtepi64_epi8(__m512i __A) {
6701   // CHECK-LABEL: @test_mm512_cvtepi64_epi8
6702   // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6703   return _mm512_cvtepi64_epi8(__A);
6704 }
6705 
test_mm512_mask_cvtepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6706 __m128i test_mm512_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6707   // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi8
6708   // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6709   return _mm512_mask_cvtepi64_epi8(__O, __M, __A);
6710 }
6711 
test_mm512_maskz_cvtepi64_epi8(__mmask8 __M,__m512i __A)6712 __m128i test_mm512_maskz_cvtepi64_epi8(__mmask8 __M, __m512i __A) {
6713   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi8
6714   // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6715   return _mm512_maskz_cvtepi64_epi8(__M, __A);
6716 }
6717 
test_mm512_mask_cvtepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6718 void test_mm512_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6719   // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi8
6720   // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.512
6721   return _mm512_mask_cvtepi64_storeu_epi8(__P, __M, __A);
6722 }
6723 
test_mm512_cvtepi64_epi32(__m512i __A)6724 __m256i test_mm512_cvtepi64_epi32(__m512i __A) {
6725   // CHECK-LABEL: @test_mm512_cvtepi64_epi32
6726   // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6727   return _mm512_cvtepi64_epi32(__A);
6728 }
6729 
test_mm512_mask_cvtepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6730 __m256i test_mm512_mask_cvtepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6731   // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi32
6732   // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6733   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6734   return _mm512_mask_cvtepi64_epi32(__O, __M, __A);
6735 }
6736 
test_mm512_maskz_cvtepi64_epi32(__mmask8 __M,__m512i __A)6737 __m256i test_mm512_maskz_cvtepi64_epi32(__mmask8 __M, __m512i __A) {
6738   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi32
6739   // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6740   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6741   return _mm512_maskz_cvtepi64_epi32(__M, __A);
6742 }
6743 
test_mm512_mask_cvtepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6744 void test_mm512_mask_cvtepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
6745   // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi32
6746   // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.512
6747   return _mm512_mask_cvtepi64_storeu_epi32(__P, __M, __A);
6748 }
6749 
test_mm512_cvtepi64_epi16(__m512i __A)6750 __m128i test_mm512_cvtepi64_epi16(__m512i __A) {
6751   // CHECK-LABEL: @test_mm512_cvtepi64_epi16
6752   // CHECK: trunc <8 x i64> %{{.*}} to <8 x i16>
6753   return _mm512_cvtepi64_epi16(__A);
6754 }
6755 
test_mm512_mask_cvtepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6756 __m128i test_mm512_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6757   // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi16
6758   // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6759   return _mm512_mask_cvtepi64_epi16(__O, __M, __A);
6760 }
6761 
test_mm512_maskz_cvtepi64_epi16(__mmask8 __M,__m512i __A)6762 __m128i test_mm512_maskz_cvtepi64_epi16(__mmask8 __M, __m512i __A) {
6763   // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi16
6764   // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6765   return _mm512_maskz_cvtepi64_epi16(__M, __A);
6766 }
6767 
test_mm512_mask_cvtepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6768 void test_mm512_mask_cvtepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
6769   // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi16
6770   // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.512
6771   return _mm512_mask_cvtepi64_storeu_epi16(__P, __M, __A);
6772 }
6773 
test_mm512_extracti32x4_epi32(__m512i __A)6774 __m128i test_mm512_extracti32x4_epi32(__m512i __A) {
6775   // CHECK-LABEL: @test_mm512_extracti32x4_epi32
6776   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6777   return _mm512_extracti32x4_epi32(__A, 3);
6778 }
6779 
test_mm512_mask_extracti32x4_epi32(__m128i __W,__mmask8 __U,__m512i __A)6780 __m128i test_mm512_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m512i __A) {
6781   // CHECK-LABEL: @test_mm512_mask_extracti32x4_epi32
6782   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6783   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6784   return _mm512_mask_extracti32x4_epi32(__W, __U, __A, 3);
6785 }
6786 
test_mm512_maskz_extracti32x4_epi32(__mmask8 __U,__m512i __A)6787 __m128i test_mm512_maskz_extracti32x4_epi32(__mmask8 __U, __m512i __A) {
6788   // CHECK-LABEL: @test_mm512_maskz_extracti32x4_epi32
6789   // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6790   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6791   return _mm512_maskz_extracti32x4_epi32(__U, __A, 3);
6792 }
6793 
test_mm512_extracti64x4_epi64(__m512i __A)6794 __m256i test_mm512_extracti64x4_epi64(__m512i __A) {
6795   // CHECK-LABEL: @test_mm512_extracti64x4_epi64
6796   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6797   return _mm512_extracti64x4_epi64(__A, 1);
6798 }
6799 
test_mm512_mask_extracti64x4_epi64(__m256i __W,__mmask8 __U,__m512i __A)6800 __m256i test_mm512_mask_extracti64x4_epi64(__m256i __W, __mmask8 __U, __m512i __A) {
6801   // CHECK-LABEL: @test_mm512_mask_extracti64x4_epi64
6802   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6803   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6804   return _mm512_mask_extracti64x4_epi64(__W, __U, __A, 1);
6805 }
6806 
test_mm512_maskz_extracti64x4_epi64(__mmask8 __U,__m512i __A)6807 __m256i test_mm512_maskz_extracti64x4_epi64(__mmask8 __U, __m512i __A) {
6808   // CHECK-LABEL: @test_mm512_maskz_extracti64x4_epi64
6809   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6810   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6811   return _mm512_maskz_extracti64x4_epi64(__U, __A, 1);
6812 }
6813 
test_mm512_insertf64x4(__m512d __A,__m256d __B)6814 __m512d test_mm512_insertf64x4(__m512d __A, __m256d __B) {
6815   // CHECK-LABEL: @test_mm512_insertf64x4
6816   // 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>
6817   return _mm512_insertf64x4(__A, __B, 1);
6818 }
6819 
test_mm512_mask_insertf64x4(__m512d __W,__mmask8 __U,__m512d __A,__m256d __B)6820 __m512d test_mm512_mask_insertf64x4(__m512d __W, __mmask8 __U, __m512d __A, __m256d __B) {
6821   // CHECK-LABEL: @test_mm512_mask_insertf64x4
6822   // 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>
6823   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6824   return _mm512_mask_insertf64x4(__W, __U, __A, __B, 1);
6825 }
6826 
test_mm512_maskz_insertf64x4(__mmask8 __U,__m512d __A,__m256d __B)6827 __m512d test_mm512_maskz_insertf64x4(__mmask8 __U, __m512d __A, __m256d __B) {
6828   // CHECK-LABEL: @test_mm512_maskz_insertf64x4
6829   // 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>
6830   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6831   return _mm512_maskz_insertf64x4(__U, __A, __B, 1);
6832 }
6833 
test_mm512_inserti64x4(__m512i __A,__m256i __B)6834 __m512i test_mm512_inserti64x4(__m512i __A, __m256i __B) {
6835   // CHECK-LABEL: @test_mm512_inserti64x4
6836   // 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>
6837   return _mm512_inserti64x4(__A, __B, 1);
6838 }
6839 
test_mm512_mask_inserti64x4(__m512i __W,__mmask8 __U,__m512i __A,__m256i __B)6840 __m512i test_mm512_mask_inserti64x4(__m512i __W, __mmask8 __U, __m512i __A, __m256i __B) {
6841   // CHECK-LABEL: @test_mm512_mask_inserti64x4
6842   // 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>
6843   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6844   return _mm512_mask_inserti64x4(__W, __U, __A, __B, 1);
6845 }
6846 
test_mm512_maskz_inserti64x4(__mmask8 __U,__m512i __A,__m256i __B)6847 __m512i test_mm512_maskz_inserti64x4(__mmask8 __U, __m512i __A, __m256i __B) {
6848   // CHECK-LABEL: @test_mm512_maskz_inserti64x4
6849   // 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>
6850   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6851   return _mm512_maskz_inserti64x4(__U, __A, __B, 1);
6852 }
6853 
test_mm512_insertf32x4(__m512 __A,__m128 __B)6854 __m512 test_mm512_insertf32x4(__m512 __A, __m128 __B) {
6855   // CHECK-LABEL: @test_mm512_insertf32x4
6856   // 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>
6857   return _mm512_insertf32x4(__A, __B, 1);
6858 }
6859 
test_mm512_mask_insertf32x4(__m512 __W,__mmask16 __U,__m512 __A,__m128 __B)6860 __m512 test_mm512_mask_insertf32x4(__m512 __W, __mmask16 __U, __m512 __A, __m128 __B) {
6861   // CHECK-LABEL: @test_mm512_mask_insertf32x4
6862   // 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>
6863   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6864   return _mm512_mask_insertf32x4(__W, __U, __A, __B, 1);
6865 }
6866 
test_mm512_maskz_insertf32x4(__mmask16 __U,__m512 __A,__m128 __B)6867 __m512 test_mm512_maskz_insertf32x4(__mmask16 __U, __m512 __A, __m128 __B) {
6868   // CHECK-LABEL: @test_mm512_maskz_insertf32x4
6869   // 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>
6870   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6871   return _mm512_maskz_insertf32x4(__U, __A, __B, 1);
6872 }
6873 
test_mm512_inserti32x4(__m512i __A,__m128i __B)6874 __m512i test_mm512_inserti32x4(__m512i __A, __m128i __B) {
6875   // CHECK-LABEL: @test_mm512_inserti32x4
6876   // 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>
6877   return _mm512_inserti32x4(__A, __B, 1);
6878 }
6879 
test_mm512_mask_inserti32x4(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)6880 __m512i test_mm512_mask_inserti32x4(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
6881   // CHECK-LABEL: @test_mm512_mask_inserti32x4
6882   // 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>
6883   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6884   return _mm512_mask_inserti32x4(__W, __U, __A, __B, 1);
6885 }
6886 
test_mm512_maskz_inserti32x4(__mmask16 __U,__m512i __A,__m128i __B)6887 __m512i test_mm512_maskz_inserti32x4(__mmask16 __U, __m512i __A, __m128i __B) {
6888   // CHECK-LABEL: @test_mm512_maskz_inserti32x4
6889   // 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>
6890   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6891   return _mm512_maskz_inserti32x4(__U, __A, __B, 1);
6892 }
6893 
test_mm512_getmant_round_pd(__m512d __A)6894 __m512d test_mm512_getmant_round_pd(__m512d __A) {
6895   // CHECK-LABEL: @test_mm512_getmant_round_pd
6896   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6897   return _mm512_getmant_round_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6898 }
6899 
test_mm512_mask_getmant_round_pd(__m512d __W,__mmask8 __U,__m512d __A)6900 __m512d test_mm512_mask_getmant_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6901   // CHECK-LABEL: @test_mm512_mask_getmant_round_pd
6902   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6903   return _mm512_mask_getmant_round_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6904 }
6905 
test_mm512_maskz_getmant_round_pd(__mmask8 __U,__m512d __A)6906 __m512d test_mm512_maskz_getmant_round_pd(__mmask8 __U, __m512d __A) {
6907   // CHECK-LABEL: @test_mm512_maskz_getmant_round_pd
6908   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6909   return _mm512_maskz_getmant_round_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6910 }
6911 
test_mm512_getmant_pd(__m512d __A)6912 __m512d test_mm512_getmant_pd(__m512d __A) {
6913   // CHECK-LABEL: @test_mm512_getmant_pd
6914   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6915   return _mm512_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6916 }
6917 
test_mm512_mask_getmant_pd(__m512d __W,__mmask8 __U,__m512d __A)6918 __m512d test_mm512_mask_getmant_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6919   // CHECK-LABEL: @test_mm512_mask_getmant_pd
6920   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6921   return _mm512_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6922 }
6923 
test_mm512_maskz_getmant_pd(__mmask8 __U,__m512d __A)6924 __m512d test_mm512_maskz_getmant_pd(__mmask8 __U, __m512d __A) {
6925   // CHECK-LABEL: @test_mm512_maskz_getmant_pd
6926   // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6927   return _mm512_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6928 }
6929 
test_mm512_getmant_round_ps(__m512 __A)6930 __m512 test_mm512_getmant_round_ps(__m512 __A) {
6931   // CHECK-LABEL: @test_mm512_getmant_round_ps
6932   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6933   return _mm512_getmant_round_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6934 }
6935 
test_mm512_mask_getmant_round_ps(__m512 __W,__mmask16 __U,__m512 __A)6936 __m512 test_mm512_mask_getmant_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6937   // CHECK-LABEL: @test_mm512_mask_getmant_round_ps
6938   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6939   return _mm512_mask_getmant_round_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6940 }
6941 
test_mm512_maskz_getmant_round_ps(__mmask16 __U,__m512 __A)6942 __m512 test_mm512_maskz_getmant_round_ps(__mmask16 __U, __m512 __A) {
6943   // CHECK-LABEL: @test_mm512_maskz_getmant_round_ps
6944   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6945   return _mm512_maskz_getmant_round_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
6946 }
6947 
test_mm512_getmant_ps(__m512 __A)6948 __m512 test_mm512_getmant_ps(__m512 __A) {
6949   // CHECK-LABEL: @test_mm512_getmant_ps
6950   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6951   return _mm512_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6952 }
6953 
test_mm512_mask_getmant_ps(__m512 __W,__mmask16 __U,__m512 __A)6954 __m512 test_mm512_mask_getmant_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6955   // CHECK-LABEL: @test_mm512_mask_getmant_ps
6956   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6957   return _mm512_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6958 }
6959 
test_mm512_maskz_getmant_ps(__mmask16 __U,__m512 __A)6960 __m512 test_mm512_maskz_getmant_ps(__mmask16 __U, __m512 __A) {
6961   // CHECK-LABEL: @test_mm512_maskz_getmant_ps
6962   // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6963   return _mm512_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6964 }
6965 
test_mm512_getexp_round_pd(__m512d __A)6966 __m512d test_mm512_getexp_round_pd(__m512d __A) {
6967   // CHECK-LABEL: @test_mm512_getexp_round_pd
6968   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6969   return _mm512_getexp_round_pd(__A, _MM_FROUND_NO_EXC);
6970 }
6971 
test_mm512_mask_getexp_round_pd(__m512d __W,__mmask8 __U,__m512d __A)6972 __m512d test_mm512_mask_getexp_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6973   // CHECK-LABEL: @test_mm512_mask_getexp_round_pd
6974   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6975   return _mm512_mask_getexp_round_pd(__W, __U, __A, _MM_FROUND_NO_EXC);
6976 }
6977 
test_mm512_maskz_getexp_round_pd(__mmask8 __U,__m512d __A)6978 __m512d test_mm512_maskz_getexp_round_pd(__mmask8 __U, __m512d __A) {
6979   // CHECK-LABEL: @test_mm512_maskz_getexp_round_pd
6980   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6981   return _mm512_maskz_getexp_round_pd(__U, __A, _MM_FROUND_NO_EXC);
6982 }
6983 
test_mm512_getexp_pd(__m512d __A)6984 __m512d test_mm512_getexp_pd(__m512d __A) {
6985   // CHECK-LABEL: @test_mm512_getexp_pd
6986   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6987   return _mm512_getexp_pd(__A);
6988 }
6989 
test_mm512_mask_getexp_pd(__m512d __W,__mmask8 __U,__m512d __A)6990 __m512d test_mm512_mask_getexp_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6991   // CHECK-LABEL: @test_mm512_mask_getexp_pd
6992   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6993   return _mm512_mask_getexp_pd(__W, __U, __A);
6994 }
6995 
test_mm512_maskz_getexp_pd(__mmask8 __U,__m512d __A)6996 __m512d test_mm512_maskz_getexp_pd(__mmask8 __U, __m512d __A) {
6997   // CHECK-LABEL: @test_mm512_maskz_getexp_pd
6998   // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6999   return _mm512_maskz_getexp_pd(__U, __A);
7000 }
7001 
test_mm512_getexp_round_ps(__m512 __A)7002 __m512 test_mm512_getexp_round_ps(__m512 __A) {
7003   // CHECK-LABEL: @test_mm512_getexp_round_ps
7004   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7005   return _mm512_getexp_round_ps(__A, _MM_FROUND_NO_EXC);
7006 }
7007 
test_mm512_mask_getexp_round_ps(__m512 __W,__mmask16 __U,__m512 __A)7008 __m512 test_mm512_mask_getexp_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
7009   // CHECK-LABEL: @test_mm512_mask_getexp_round_ps
7010   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7011   return _mm512_mask_getexp_round_ps(__W, __U, __A, _MM_FROUND_NO_EXC);
7012 }
7013 
test_mm512_maskz_getexp_round_ps(__mmask16 __U,__m512 __A)7014 __m512 test_mm512_maskz_getexp_round_ps(__mmask16 __U, __m512 __A) {
7015   // CHECK-LABEL: @test_mm512_maskz_getexp_round_ps
7016   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7017   return _mm512_maskz_getexp_round_ps(__U, __A, _MM_FROUND_NO_EXC);
7018 }
7019 
test_mm512_getexp_ps(__m512 __A)7020 __m512 test_mm512_getexp_ps(__m512 __A) {
7021   // CHECK-LABEL: @test_mm512_getexp_ps
7022   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7023   return _mm512_getexp_ps(__A);
7024 }
7025 
test_mm512_mask_getexp_ps(__m512 __W,__mmask16 __U,__m512 __A)7026 __m512 test_mm512_mask_getexp_ps(__m512 __W, __mmask16 __U, __m512 __A) {
7027   // CHECK-LABEL: @test_mm512_mask_getexp_ps
7028   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7029   return _mm512_mask_getexp_ps(__W, __U, __A);
7030 }
7031 
test_mm512_maskz_getexp_ps(__mmask16 __U,__m512 __A)7032 __m512 test_mm512_maskz_getexp_ps(__mmask16 __U, __m512 __A) {
7033   // CHECK-LABEL: @test_mm512_maskz_getexp_ps
7034   // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7035   return _mm512_maskz_getexp_ps(__U, __A);
7036 }
7037 
test_mm512_i64gather_ps(__m512i __index,void const * __addr)7038 __m256 test_mm512_i64gather_ps(__m512i __index, void const *__addr) {
7039   // CHECK-LABEL: @test_mm512_i64gather_ps
7040   // CHECK: @llvm.x86.avx512.mask.gather.qps.512
7041   return _mm512_i64gather_ps(__index, __addr, 2);
7042 }
7043 
test_mm512_mask_i64gather_ps(__m256 __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7044 __m256 test_mm512_mask_i64gather_ps(__m256 __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7045   // CHECK-LABEL: @test_mm512_mask_i64gather_ps
7046   // CHECK: @llvm.x86.avx512.mask.gather.qps.512
7047   return _mm512_mask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
7048 }
7049 
test_mm512_i64gather_epi32(__m512i __index,void const * __addr)7050 __m256i test_mm512_i64gather_epi32(__m512i __index, void const *__addr) {
7051   // CHECK-LABEL: @test_mm512_i64gather_epi32
7052   // CHECK: @llvm.x86.avx512.mask.gather.qpi.512
7053   return _mm512_i64gather_epi32(__index, __addr, 2);
7054 }
7055 
test_mm512_mask_i64gather_epi32(__m256i __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7056 __m256i test_mm512_mask_i64gather_epi32(__m256i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7057   // CHECK-LABEL: @test_mm512_mask_i64gather_epi32
7058   // CHECK: @llvm.x86.avx512.mask.gather.qpi.512
7059   return _mm512_mask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
7060 }
7061 
test_mm512_i64gather_pd(__m512i __index,void const * __addr)7062 __m512d test_mm512_i64gather_pd(__m512i __index, void const *__addr) {
7063   // CHECK-LABEL: @test_mm512_i64gather_pd
7064   // CHECK: @llvm.x86.avx512.mask.gather.qpd.512
7065   return _mm512_i64gather_pd(__index, __addr, 2);
7066 }
7067 
test_mm512_mask_i64gather_pd(__m512d __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7068 __m512d test_mm512_mask_i64gather_pd(__m512d __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7069   // CHECK-LABEL: @test_mm512_mask_i64gather_pd
7070   // CHECK: @llvm.x86.avx512.mask.gather.qpd.512
7071   return _mm512_mask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
7072 }
7073 
test_mm512_i64gather_epi64(__m512i __index,void const * __addr)7074 __m512i test_mm512_i64gather_epi64(__m512i __index, void const *__addr) {
7075   // CHECK-LABEL: @test_mm512_i64gather_epi64
7076   // CHECK: @llvm.x86.avx512.mask.gather.qpq.512
7077   return _mm512_i64gather_epi64(__index, __addr, 2);
7078 }
7079 
test_mm512_mask_i64gather_epi64(__m512i __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7080 __m512i test_mm512_mask_i64gather_epi64(__m512i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7081   // CHECK-LABEL: @test_mm512_mask_i64gather_epi64
7082   // CHECK: @llvm.x86.avx512.mask.gather.qpq.512
7083   return _mm512_mask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
7084 }
7085 
test_mm512_i32gather_ps(__m512i __index,void const * __addr)7086 __m512 test_mm512_i32gather_ps(__m512i __index, void const *__addr) {
7087   // CHECK-LABEL: @test_mm512_i32gather_ps
7088   // CHECK: @llvm.x86.avx512.mask.gather.dps.512
7089   return _mm512_i32gather_ps(__index, __addr, 2);
7090 }
7091 
test_mm512_mask_i32gather_ps(__m512 v1_old,__mmask16 __mask,__m512i __index,void const * __addr)7092 __m512 test_mm512_mask_i32gather_ps(__m512 v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
7093   // CHECK-LABEL: @test_mm512_mask_i32gather_ps
7094   // CHECK: @llvm.x86.avx512.mask.gather.dps.512
7095   return _mm512_mask_i32gather_ps(v1_old, __mask, __index, __addr, 2);
7096 }
7097 
test_mm512_i32gather_epi32(__m512i __index,void const * __addr)7098 __m512i test_mm512_i32gather_epi32(__m512i __index, void const *__addr) {
7099   // CHECK-LABEL: @test_mm512_i32gather_epi32
7100   // CHECK: @llvm.x86.avx512.mask.gather.dpi.512
7101   return _mm512_i32gather_epi32(__index, __addr, 2);
7102 }
7103 
test_mm512_mask_i32gather_epi32(__m512i __v1_old,__mmask16 __mask,__m512i __index,void const * __addr)7104 __m512i test_mm512_mask_i32gather_epi32(__m512i __v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
7105   // CHECK-LABEL: @test_mm512_mask_i32gather_epi32
7106   // CHECK: @llvm.x86.avx512.mask.gather.dpi.512
7107   return _mm512_mask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
7108 }
7109 
test_mm512_i32gather_pd(__m256i __index,void const * __addr)7110 __m512d test_mm512_i32gather_pd(__m256i __index, void const *__addr) {
7111   // CHECK-LABEL: @test_mm512_i32gather_pd
7112   // CHECK: @llvm.x86.avx512.mask.gather.dpd.512
7113   return _mm512_i32gather_pd(__index, __addr, 2);
7114 }
7115 
test_mm512_mask_i32gather_pd(__m512d __v1_old,__mmask8 __mask,__m256i __index,void const * __addr)7116 __m512d test_mm512_mask_i32gather_pd(__m512d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
7117   // CHECK-LABEL: @test_mm512_mask_i32gather_pd
7118   // CHECK: @llvm.x86.avx512.mask.gather.dpd.512
7119   return _mm512_mask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
7120 }
7121 
test_mm512_i32gather_epi64(__m256i __index,void const * __addr)7122 __m512i test_mm512_i32gather_epi64(__m256i __index, void const *__addr) {
7123   // CHECK-LABEL: @test_mm512_i32gather_epi64
7124   // CHECK: @llvm.x86.avx512.mask.gather.dpq.512
7125   return _mm512_i32gather_epi64(__index, __addr, 2);
7126 }
7127 
test_mm512_mask_i32gather_epi64(__m512i __v1_old,__mmask8 __mask,__m256i __index,void const * __addr)7128 __m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
7129   // CHECK-LABEL: @test_mm512_mask_i32gather_epi64
7130   // CHECK: @llvm.x86.avx512.mask.gather.dpq.512
7131   return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
7132 }
7133 
test_mm512_i64scatter_ps(void * __addr,__m512i __index,__m256 __v1)7134 void test_mm512_i64scatter_ps(void *__addr, __m512i __index, __m256 __v1) {
7135   // CHECK-LABEL: @test_mm512_i64scatter_ps
7136   // CHECK: @llvm.x86.avx512.mask.scatter.qps.512
7137   return _mm512_i64scatter_ps(__addr, __index, __v1, 2);
7138 }
7139 
test_mm512_mask_i64scatter_ps(void * __addr,__mmask8 __mask,__m512i __index,__m256 __v1)7140 void test_mm512_mask_i64scatter_ps(void *__addr, __mmask8 __mask, __m512i __index, __m256 __v1) {
7141   // CHECK-LABEL: @test_mm512_mask_i64scatter_ps
7142   // CHECK: @llvm.x86.avx512.mask.scatter.qps.512
7143   return _mm512_mask_i64scatter_ps(__addr, __mask, __index, __v1, 2);
7144 }
7145 
test_mm512_i64scatter_epi32(void * __addr,__m512i __index,__m256i __v1)7146 void test_mm512_i64scatter_epi32(void *__addr, __m512i __index, __m256i __v1) {
7147   // CHECK-LABEL: @test_mm512_i64scatter_epi32
7148   // CHECK: @llvm.x86.avx512.mask.scatter.qpi.512
7149   return _mm512_i64scatter_epi32(__addr, __index, __v1, 2);
7150 }
7151 
test_mm512_mask_i64scatter_epi32(void * __addr,__mmask8 __mask,__m512i __index,__m256i __v1)7152 void test_mm512_mask_i64scatter_epi32(void *__addr, __mmask8 __mask, __m512i __index, __m256i __v1) {
7153   // CHECK-LABEL: @test_mm512_mask_i64scatter_epi32
7154   // CHECK: @llvm.x86.avx512.mask.scatter.qpi.512
7155   return _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, 2);
7156 }
7157 
test_mm512_i64scatter_pd(void * __addr,__m512i __index,__m512d __v1)7158 void test_mm512_i64scatter_pd(void *__addr, __m512i __index, __m512d __v1) {
7159   // CHECK-LABEL: @test_mm512_i64scatter_pd
7160   // CHECK: @llvm.x86.avx512.mask.scatter.qpd.512
7161   return _mm512_i64scatter_pd(__addr, __index, __v1, 2);
7162 }
7163 
test_mm512_mask_i64scatter_pd(void * __addr,__mmask8 __mask,__m512i __index,__m512d __v1)7164 void test_mm512_mask_i64scatter_pd(void *__addr, __mmask8 __mask, __m512i __index, __m512d __v1) {
7165   // CHECK-LABEL: @test_mm512_mask_i64scatter_pd
7166   // CHECK: @llvm.x86.avx512.mask.scatter.qpd.512
7167   return _mm512_mask_i64scatter_pd(__addr, __mask, __index, __v1, 2);
7168 }
7169 
test_mm512_i64scatter_epi64(void * __addr,__m512i __index,__m512i __v1)7170 void test_mm512_i64scatter_epi64(void *__addr, __m512i __index, __m512i __v1) {
7171   // CHECK-LABEL: @test_mm512_i64scatter_epi64
7172   // CHECK: @llvm.x86.avx512.mask.scatter.qpq.512
7173   return _mm512_i64scatter_epi64(__addr, __index, __v1, 2);
7174 }
7175 
test_mm512_mask_i64scatter_epi64(void * __addr,__mmask8 __mask,__m512i __index,__m512i __v1)7176 void test_mm512_mask_i64scatter_epi64(void *__addr, __mmask8 __mask, __m512i __index, __m512i __v1) {
7177   // CHECK-LABEL: @test_mm512_mask_i64scatter_epi64
7178   // CHECK: @llvm.x86.avx512.mask.scatter.qpq.512
7179   return _mm512_mask_i64scatter_epi64(__addr, __mask, __index, __v1, 2);
7180 }
7181 
test_mm512_i32scatter_ps(void * __addr,__m512i __index,__m512 __v1)7182 void test_mm512_i32scatter_ps(void *__addr, __m512i __index, __m512 __v1) {
7183   // CHECK-LABEL: @test_mm512_i32scatter_ps
7184   // CHECK: @llvm.x86.avx512.mask.scatter.dps.512
7185   return _mm512_i32scatter_ps(__addr, __index, __v1, 2);
7186 }
7187 
test_mm512_mask_i32scatter_ps(void * __addr,__mmask16 __mask,__m512i __index,__m512 __v1)7188 void test_mm512_mask_i32scatter_ps(void *__addr, __mmask16 __mask, __m512i __index, __m512 __v1) {
7189   // CHECK-LABEL: @test_mm512_mask_i32scatter_ps
7190   // CHECK: @llvm.x86.avx512.mask.scatter.dps.512
7191   return _mm512_mask_i32scatter_ps(__addr, __mask, __index, __v1, 2);
7192 }
7193 
test_mm512_i32scatter_epi32(void * __addr,__m512i __index,__m512i __v1)7194 void test_mm512_i32scatter_epi32(void *__addr, __m512i __index, __m512i __v1) {
7195   // CHECK-LABEL: @test_mm512_i32scatter_epi32
7196   // CHECK: @llvm.x86.avx512.mask.scatter.dpi.512
7197   return _mm512_i32scatter_epi32(__addr, __index, __v1, 2);
7198 }
7199 
test_mm512_mask_i32scatter_epi32(void * __addr,__mmask16 __mask,__m512i __index,__m512i __v1)7200 void test_mm512_mask_i32scatter_epi32(void *__addr, __mmask16 __mask, __m512i __index, __m512i __v1) {
7201   // CHECK-LABEL: @test_mm512_mask_i32scatter_epi32
7202   // CHECK: @llvm.x86.avx512.mask.scatter.dpi.512
7203   return _mm512_mask_i32scatter_epi32(__addr, __mask, __index, __v1, 2);
7204 }
7205 
test_mm512_i32scatter_pd(void * __addr,__m256i __index,__m512d __v1)7206 void test_mm512_i32scatter_pd(void *__addr, __m256i __index, __m512d __v1) {
7207   // CHECK-LABEL: @test_mm512_i32scatter_pd
7208   // CHECK: @llvm.x86.avx512.mask.scatter.dpd.512
7209   return _mm512_i32scatter_pd(__addr, __index, __v1, 2);
7210 }
7211 
test_mm512_mask_i32scatter_pd(void * __addr,__mmask8 __mask,__m256i __index,__m512d __v1)7212 void test_mm512_mask_i32scatter_pd(void *__addr, __mmask8 __mask, __m256i __index, __m512d __v1) {
7213   // CHECK-LABEL: @test_mm512_mask_i32scatter_pd
7214   // CHECK: @llvm.x86.avx512.mask.scatter.dpd.512
7215   return _mm512_mask_i32scatter_pd(__addr, __mask, __index, __v1, 2);
7216 }
7217 
test_mm512_i32scatter_epi64(void * __addr,__m256i __index,__m512i __v1)7218 void test_mm512_i32scatter_epi64(void *__addr, __m256i __index, __m512i __v1) {
7219   // CHECK-LABEL: @test_mm512_i32scatter_epi64
7220   // CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
7221   return _mm512_i32scatter_epi64(__addr, __index, __v1, 2);
7222 }
7223 
test_mm512_mask_i32scatter_epi64(void * __addr,__mmask8 __mask,__m256i __index,__m512i __v1)7224 void test_mm512_mask_i32scatter_epi64(void *__addr, __mmask8 __mask, __m256i __index, __m512i __v1) {
7225   // CHECK-LABEL: @test_mm512_mask_i32scatter_epi64
7226   // CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
7227   return _mm512_mask_i32scatter_epi64(__addr, __mask, __index, __v1, 2);
7228 }
7229 
test_mm_mask_rsqrt14_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7230 __m128d test_mm_mask_rsqrt14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7231   // CHECK-LABEL: @test_mm_mask_rsqrt14_sd
7232   // CHECK: @llvm.x86.avx512.rsqrt14.sd
7233   return _mm_mask_rsqrt14_sd(__W, __U, __A, __B);
7234 }
7235 
test_mm_maskz_rsqrt14_sd(__mmask8 __U,__m128d __A,__m128d __B)7236 __m128d test_mm_maskz_rsqrt14_sd(__mmask8 __U, __m128d __A, __m128d __B){
7237   // CHECK-LABEL: @test_mm_maskz_rsqrt14_sd
7238   // CHECK: @llvm.x86.avx512.rsqrt14.sd
7239   return _mm_maskz_rsqrt14_sd(__U, __A, __B);
7240 }
7241 
test_mm_mask_rsqrt14_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7242 __m128 test_mm_mask_rsqrt14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7243   // CHECK-LABEL: @test_mm_mask_rsqrt14_ss
7244   // CHECK: @llvm.x86.avx512.rsqrt14.ss
7245   return _mm_mask_rsqrt14_ss(__W, __U, __A, __B);
7246 }
7247 
test_mm_maskz_rsqrt14_ss(__mmask8 __U,__m128 __A,__m128 __B)7248 __m128 test_mm_maskz_rsqrt14_ss(__mmask8 __U, __m128 __A, __m128 __B){
7249   // CHECK-LABEL: @test_mm_maskz_rsqrt14_ss
7250   // CHECK: @llvm.x86.avx512.rsqrt14.ss
7251   return _mm_maskz_rsqrt14_ss(__U, __A, __B);
7252 }
7253 
test_mm512_mask_rcp14_pd(__m512d __W,__mmask8 __U,__m512d __A)7254 __m512d test_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
7255 {
7256   // CHECK-LABEL: @test_mm512_mask_rcp14_pd
7257   // CHECK: @llvm.x86.avx512.rcp14.pd.512
7258   return _mm512_mask_rcp14_pd (__W,__U,__A);
7259 }
7260 
test_mm512_maskz_rcp14_pd(__mmask8 __U,__m512d __A)7261 __m512d test_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
7262 {
7263   // CHECK-LABEL: @test_mm512_maskz_rcp14_pd
7264   // CHECK: @llvm.x86.avx512.rcp14.pd.512
7265   return _mm512_maskz_rcp14_pd (__U,__A);
7266 }
7267 
test_mm512_mask_rcp14_ps(__m512 __W,__mmask16 __U,__m512 __A)7268 __m512 test_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
7269 {
7270   // CHECK-LABEL: @test_mm512_mask_rcp14_ps
7271   // CHECK: @llvm.x86.avx512.rcp14.ps.512
7272   return _mm512_mask_rcp14_ps (__W,__U,__A);
7273 }
7274 
test_mm512_maskz_rcp14_ps(__mmask16 __U,__m512 __A)7275 __m512 test_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
7276 {
7277   // CHECK-LABEL: @test_mm512_maskz_rcp14_ps
7278   // CHECK: @llvm.x86.avx512.rcp14.ps.512
7279   return _mm512_maskz_rcp14_ps (__U,__A);
7280 }
7281 
test_mm_mask_rcp14_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7282 __m128d test_mm_mask_rcp14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7283   // CHECK-LABEL: @test_mm_mask_rcp14_sd
7284   // CHECK: @llvm.x86.avx512.rcp14.sd
7285   return _mm_mask_rcp14_sd(__W, __U, __A, __B);
7286 }
7287 
test_mm_maskz_rcp14_sd(__mmask8 __U,__m128d __A,__m128d __B)7288 __m128d test_mm_maskz_rcp14_sd(__mmask8 __U, __m128d __A, __m128d __B){
7289   // CHECK-LABEL: @test_mm_maskz_rcp14_sd
7290   // CHECK: @llvm.x86.avx512.rcp14.sd
7291   return _mm_maskz_rcp14_sd(__U, __A, __B);
7292 }
7293 
test_mm_mask_rcp14_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7294 __m128 test_mm_mask_rcp14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7295   // CHECK-LABEL: @test_mm_mask_rcp14_ss
7296   // CHECK: @llvm.x86.avx512.rcp14.ss
7297   return _mm_mask_rcp14_ss(__W, __U, __A, __B);
7298 }
7299 
test_mm_maskz_rcp14_ss(__mmask8 __U,__m128 __A,__m128 __B)7300 __m128 test_mm_maskz_rcp14_ss(__mmask8 __U, __m128 __A, __m128 __B){
7301   // CHECK-LABEL: @test_mm_maskz_rcp14_ss
7302   // CHECK: @llvm.x86.avx512.rcp14.ss
7303   return _mm_maskz_rcp14_ss(__U, __A, __B);
7304 }
7305 
test_mm_mask_getexp_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7306 __m128d test_mm_mask_getexp_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7307   // CHECK-LABEL: @test_mm_mask_getexp_sd
7308   // CHECK: @llvm.x86.avx512.mask.getexp.sd
7309   return _mm_mask_getexp_sd(__W, __U, __A, __B);
7310 }
7311 
test_mm_mask_getexp_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7312 __m128d test_mm_mask_getexp_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7313   // CHECK-LABEL: @test_mm_mask_getexp_round_sd
7314   // CHECK: @llvm.x86.avx512.mask.getexp.sd
7315   return _mm_mask_getexp_round_sd(__W, __U, __A, __B, _MM_FROUND_NO_EXC);
7316 }
7317 
test_mm_maskz_getexp_sd(__mmask8 __U,__m128d __A,__m128d __B)7318 __m128d test_mm_maskz_getexp_sd(__mmask8 __U, __m128d __A, __m128d __B){
7319   // CHECK-LABEL: @test_mm_maskz_getexp_sd
7320   // CHECK: @llvm.x86.avx512.mask.getexp.sd
7321   return _mm_maskz_getexp_sd(__U, __A, __B);
7322 }
7323 
test_mm_maskz_getexp_round_sd(__mmask8 __U,__m128d __A,__m128d __B)7324 __m128d test_mm_maskz_getexp_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
7325   // CHECK-LABEL: @test_mm_maskz_getexp_round_sd
7326   // CHECK: @llvm.x86.avx512.mask.getexp.sd
7327   return _mm_maskz_getexp_round_sd(__U, __A, __B, _MM_FROUND_NO_EXC);
7328 }
7329 
test_mm_mask_getexp_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7330 __m128 test_mm_mask_getexp_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7331   // CHECK-LABEL: @test_mm_mask_getexp_ss
7332   // CHECK: @llvm.x86.avx512.mask.getexp.ss
7333   return _mm_mask_getexp_ss(__W, __U, __A, __B);
7334 }
7335 
test_mm_mask_getexp_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7336 __m128 test_mm_mask_getexp_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7337   // CHECK-LABEL: @test_mm_mask_getexp_round_ss
7338   // CHECK: @llvm.x86.avx512.mask.getexp.ss
7339   return _mm_mask_getexp_round_ss(__W, __U, __A, __B, _MM_FROUND_NO_EXC);
7340 }
7341 
test_mm_maskz_getexp_ss(__mmask8 __U,__m128 __A,__m128 __B)7342 __m128 test_mm_maskz_getexp_ss(__mmask8 __U, __m128 __A, __m128 __B){
7343   // CHECK-LABEL: @test_mm_maskz_getexp_ss
7344   // CHECK: @llvm.x86.avx512.mask.getexp.ss
7345   return _mm_maskz_getexp_ss(__U, __A, __B);
7346 }
7347 
test_mm_maskz_getexp_round_ss(__mmask8 __U,__m128 __A,__m128 __B)7348 __m128 test_mm_maskz_getexp_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
7349   // CHECK-LABEL: @test_mm_maskz_getexp_round_ss
7350   // CHECK: @llvm.x86.avx512.mask.getexp.ss
7351   return _mm_maskz_getexp_round_ss(__U, __A, __B, _MM_FROUND_NO_EXC);
7352 }
7353 
test_mm_mask_getmant_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7354 __m128d test_mm_mask_getmant_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7355   // CHECK-LABEL: @test_mm_mask_getmant_sd
7356   // CHECK: @llvm.x86.avx512.mask.getmant.sd
7357   return _mm_mask_getmant_sd(__W, __U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
7358 }
7359 
test_mm_mask_getmant_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7360 __m128d test_mm_mask_getmant_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7361   // CHECK-LABEL: @test_mm_mask_getmant_round_sd
7362   // CHECK: @llvm.x86.avx512.mask.getmant.sd
7363   return _mm_mask_getmant_round_sd(__W, __U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
7364 }
7365 
test_mm_maskz_getmant_sd(__mmask8 __U,__m128d __A,__m128d __B)7366 __m128d test_mm_maskz_getmant_sd(__mmask8 __U, __m128d __A, __m128d __B){
7367   // CHECK-LABEL: @test_mm_maskz_getmant_sd
7368   // CHECK: @llvm.x86.avx512.mask.getmant.sd
7369   return _mm_maskz_getmant_sd(__U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
7370 }
7371 
test_mm_maskz_getmant_round_sd(__mmask8 __U,__m128d __A,__m128d __B)7372 __m128d test_mm_maskz_getmant_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
7373   // CHECK-LABEL: @test_mm_maskz_getmant_round_sd
7374   // CHECK: @llvm.x86.avx512.mask.getmant.sd
7375   return _mm_maskz_getmant_round_sd(__U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
7376 }
7377 
test_mm_mask_getmant_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7378 __m128 test_mm_mask_getmant_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7379   // CHECK-LABEL: @test_mm_mask_getmant_ss
7380   // CHECK: @llvm.x86.avx512.mask.getmant.ss
7381   return _mm_mask_getmant_ss(__W, __U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
7382 }
7383 
test_mm_mask_getmant_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7384 __m128 test_mm_mask_getmant_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7385   // CHECK-LABEL: @test_mm_mask_getmant_round_ss
7386   // CHECK: @llvm.x86.avx512.mask.getmant.ss
7387   return _mm_mask_getmant_round_ss(__W, __U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
7388 }
7389 
test_mm_maskz_getmant_ss(__mmask8 __U,__m128 __A,__m128 __B)7390 __m128 test_mm_maskz_getmant_ss(__mmask8 __U, __m128 __A, __m128 __B){
7391   // CHECK-LABEL: @test_mm_maskz_getmant_ss
7392   // CHECK: @llvm.x86.avx512.mask.getmant.ss
7393   return _mm_maskz_getmant_ss(__U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
7394 }
7395 
test_mm_maskz_getmant_round_ss(__mmask8 __U,__m128 __A,__m128 __B)7396 __m128 test_mm_maskz_getmant_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
7397   // CHECK-LABEL: @test_mm_maskz_getmant_round_ss
7398   // CHECK: @llvm.x86.avx512.mask.getmant.ss
7399   return _mm_maskz_getmant_round_ss(__U, __A, __B, _MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_NO_EXC);
7400 }
7401 
test_mm_mask_fmadd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7402 __m128 test_mm_mask_fmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7403   // CHECK-LABEL: @test_mm_mask_fmadd_ss
7404   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7405   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7406   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7407   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7408   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7409   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7410   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7411   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7412   return _mm_mask_fmadd_ss(__W, __U, __A, __B);
7413 }
7414 
test_mm_fmadd_round_ss(__m128 __A,__m128 __B,__m128 __C)7415 __m128 test_mm_fmadd_round_ss(__m128 __A, __m128 __B, __m128 __C){
7416   // CHECK-LABEL: @test_mm_fmadd_round_ss
7417   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7418   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7419   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7420   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7421   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7422   return _mm_fmadd_round_ss(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7423 }
7424 
test_mm_mask_fmadd_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7425 __m128 test_mm_mask_fmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7426   // CHECK-LABEL: @test_mm_mask_fmadd_round_ss
7427   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7428   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7429   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7430   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7431   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7432   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7433   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7434   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7435   return _mm_mask_fmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7436 }
7437 
test_mm_maskz_fmadd_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7438 __m128 test_mm_maskz_fmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7439   // CHECK-LABEL: @test_mm_maskz_fmadd_ss
7440   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7441   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7442   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7443   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7444   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7445   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7446   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7447   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7448   return _mm_maskz_fmadd_ss(__U, __A, __B, __C);
7449 }
7450 
test_mm_maskz_fmadd_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7451 __m128 test_mm_maskz_fmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7452   // CHECK-LABEL: @test_mm_maskz_fmadd_round_ss
7453   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7454   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7455   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7456   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7457   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7458   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7459   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7460   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7461   return _mm_maskz_fmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7462 }
7463 
test_mm_mask3_fmadd_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7464 __m128 test_mm_mask3_fmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7465   // CHECK-LABEL: @test_mm_mask3_fmadd_ss
7466   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7467   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7468   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7469   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7470   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7471   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7472   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7473   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7474   return _mm_mask3_fmadd_ss(__W, __X, __Y, __U);
7475 }
7476 
test_mm_mask3_fmadd_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7477 __m128 test_mm_mask3_fmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7478   // CHECK-LABEL: @test_mm_mask3_fmadd_round_ss
7479   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7480   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7481   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7482   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7483   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7484   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7485   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7486   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7487   return _mm_mask3_fmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7488 }
7489 
test_mm_mask_fmsub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7490 __m128 test_mm_mask_fmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7491   // CHECK-LABEL: @test_mm_mask_fmsub_ss
7492   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7493   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7494   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7495   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7496   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7497   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7498   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7499   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7500   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7501   return _mm_mask_fmsub_ss(__W, __U, __A, __B);
7502 }
7503 
test_mm_fmsub_round_ss(__m128 __A,__m128 __B,__m128 __C)7504 __m128 test_mm_fmsub_round_ss(__m128 __A, __m128 __B, __m128 __C){
7505   // CHECK-LABEL: @test_mm_fmsub_round_ss
7506   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7507   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7508   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7509   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7510   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7511   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7512   return _mm_fmsub_round_ss(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7513 }
7514 
test_mm_mask_fmsub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7515 __m128 test_mm_mask_fmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7516   // CHECK-LABEL: @test_mm_mask_fmsub_round_ss
7517   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7518   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7519   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7520   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7521   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7522   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7523   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7524   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7525   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7526   return _mm_mask_fmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7527 }
7528 
test_mm_maskz_fmsub_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7529 __m128 test_mm_maskz_fmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7530   // CHECK-LABEL: @test_mm_maskz_fmsub_ss
7531   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7532   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7533   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7534   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7535   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7536   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7537   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7538   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7539   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7540   return _mm_maskz_fmsub_ss(__U, __A, __B, __C);
7541 }
7542 
test_mm_maskz_fmsub_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7543 __m128 test_mm_maskz_fmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7544   // CHECK-LABEL: @test_mm_maskz_fmsub_round_ss
7545   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7546   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7547   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7548   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7549   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7550   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7551   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7552   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7553   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7554   return _mm_maskz_fmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7555 }
7556 
test_mm_mask3_fmsub_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7557 __m128 test_mm_mask3_fmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7558   // CHECK-LABEL: @test_mm_mask3_fmsub_ss
7559   // CHECK: [[NEG:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7560   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7561   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7562   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7563   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7564   // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7565   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7566   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7567   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7568   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7569   return _mm_mask3_fmsub_ss(__W, __X, __Y, __U);
7570 }
7571 
test_mm_mask3_fmsub_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7572 __m128 test_mm_mask3_fmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7573   // CHECK-LABEL: @test_mm_mask3_fmsub_round_ss
7574   // CHECK: [[NEG:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7575   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7576   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7577   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7578   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7579   // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7580   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7581   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7582   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7583   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7584   return _mm_mask3_fmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7585 }
7586 
test_mm_mask_fnmadd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7587 __m128 test_mm_mask_fnmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7588   // CHECK-LABEL: @test_mm_mask_fnmadd_ss
7589   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7590   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7591   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7592   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7593   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7594   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7595   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7596   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7597   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7598   return _mm_mask_fnmadd_ss(__W, __U, __A, __B);
7599 }
7600 
test_mm_fnmadd_round_ss(__m128 __A,__m128 __B,__m128 __C)7601 __m128 test_mm_fnmadd_round_ss(__m128 __A, __m128 __B, __m128 __C){
7602   // CHECK-LABEL: @test_mm_fnmadd_round_ss
7603   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7604   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7605   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7606   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7607   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7608   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7609   return _mm_fnmadd_round_ss(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7610 }
7611 
test_mm_mask_fnmadd_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7612 __m128 test_mm_mask_fnmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7613   // CHECK-LABEL: @test_mm_mask_fnmadd_round_ss
7614   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7615   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7616   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7617   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7618   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7619   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7620   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7621   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7622   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7623   return _mm_mask_fnmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7624 }
7625 
test_mm_maskz_fnmadd_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7626 __m128 test_mm_maskz_fnmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7627   // CHECK-LABEL: @test_mm_maskz_fnmadd_ss
7628   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7629   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7630   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7631   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7632   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7633   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7634   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7635   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7636   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7637   return _mm_maskz_fnmadd_ss(__U, __A, __B, __C);
7638 }
7639 
test_mm_maskz_fnmadd_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7640 __m128 test_mm_maskz_fnmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7641   // CHECK-LABEL: @test_mm_maskz_fnmadd_round_ss
7642   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7643   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7644   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7645   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7646   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7647   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7648   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7649   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7650   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7651   return _mm_maskz_fnmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7652 }
7653 
test_mm_mask3_fnmadd_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7654 __m128 test_mm_mask3_fnmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7655   // CHECK-LABEL: @test_mm_mask3_fnmadd_ss
7656   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7657   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7658   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7659   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7660   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7661   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7662   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7663   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7664   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7665   return _mm_mask3_fnmadd_ss(__W, __X, __Y, __U);
7666 }
7667 
test_mm_mask3_fnmadd_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7668 __m128 test_mm_mask3_fnmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7669   // CHECK-LABEL: @test_mm_mask3_fnmadd_round_ss
7670   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7671   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7672   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7673   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7674   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7675   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7676   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7677   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7678   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7679   return _mm_mask3_fnmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7680 }
7681 
test_mm_mask_fnmsub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7682 __m128 test_mm_mask_fnmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7683   // CHECK-LABEL: @test_mm_mask_fnmsub_ss
7684   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7685   // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7686   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7687   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7688   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7689   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7690   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7691   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7692   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7693   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7694   return _mm_mask_fnmsub_ss(__W, __U, __A, __B);
7695 }
7696 
test_mm_fnmsub_round_ss(__m128 __A,__m128 __B,__m128 __C)7697 __m128 test_mm_fnmsub_round_ss(__m128 __A, __m128 __B, __m128 __C){
7698   // CHECK-LABEL: @test_mm_fnmsub_round_ss
7699   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7700   // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7701   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7702   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7703   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7704   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7705   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7706   return _mm_fnmsub_round_ss(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7707 }
7708 
test_mm_mask_fnmsub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7709 __m128 test_mm_mask_fnmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7710   // CHECK-LABEL: @test_mm_mask_fnmsub_round_ss
7711   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7712   // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7713   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7714   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7715   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7716   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7717   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7718   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7719   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7720   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7721   return _mm_mask_fnmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7722 }
7723 
test_mm_maskz_fnmsub_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7724 __m128 test_mm_maskz_fnmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7725   // CHECK-LABEL: @test_mm_maskz_fnmsub_ss
7726   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7727   // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7728   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7729   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7730   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7731   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7732   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7733   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7734   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7735   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7736   return _mm_maskz_fnmsub_ss(__U, __A, __B, __C);
7737 }
7738 
test_mm_maskz_fnmsub_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7739 __m128 test_mm_maskz_fnmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7740   // CHECK-LABEL: @test_mm_maskz_fnmsub_round_ss
7741   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7742   // CHECK: [[NEG2:%.+]] = fneg <4 x float> %{{.*}}
7743   // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7744   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7745   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7746   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7747   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7748   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7749   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7750   // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7751   return _mm_maskz_fnmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7752 }
7753 
test_mm_mask3_fnmsub_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7754 __m128 test_mm_mask3_fnmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7755   // CHECK-LABEL: @test_mm_mask3_fnmsub_ss
7756   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7757   // CHECK: [[NEG2:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7758   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7759   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7760   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7761   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7762   // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7763   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7764   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7765   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7766   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7767   return _mm_mask3_fnmsub_ss(__W, __X, __Y, __U);
7768 }
7769 
test_mm_mask3_fnmsub_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7770 __m128 test_mm_mask3_fnmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7771   // CHECK-LABEL: @test_mm_mask3_fnmsub_round_ss
7772   // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}
7773   // CHECK: [[NEG2:%.+]] = fneg <4 x float> [[ORIGC:%.+]]
7774   // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7775   // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7776   // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7777   // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 11)
7778   // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7779   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7780   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7781   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7782   // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7783   return _mm_mask3_fnmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7784 }
7785 
test_mm_mask_fmadd_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7786 __m128d test_mm_mask_fmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7787   // CHECK-LABEL: @test_mm_mask_fmadd_sd
7788   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7789   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7790   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7791   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7792   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7793   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7794   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7795   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7796   return _mm_mask_fmadd_sd(__W, __U, __A, __B);
7797 }
7798 
test_mm_fmadd_round_sd(__m128d __A,__m128d __B,__m128d __C)7799 __m128d test_mm_fmadd_round_sd(__m128d __A, __m128d __B, __m128d __C){
7800   // CHECK-LABEL: @test_mm_fmadd_round_sd
7801   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7802   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7803   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7804   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7805   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7806   return _mm_fmadd_round_sd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7807 }
7808 
test_mm_mask_fmadd_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7809 __m128d test_mm_mask_fmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7810   // CHECK-LABEL: @test_mm_mask_fmadd_round_sd
7811   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7812   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7813   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7814   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7815   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7816   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7817   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7818   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7819   return _mm_mask_fmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7820 }
7821 
test_mm_maskz_fmadd_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7822 __m128d test_mm_maskz_fmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7823   // CHECK-LABEL: @test_mm_maskz_fmadd_sd
7824   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7825   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7826   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7827   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7828   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7829   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7830   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7831   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7832   return _mm_maskz_fmadd_sd(__U, __A, __B, __C);
7833 }
7834 
test_mm_maskz_fmadd_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7835 __m128d test_mm_maskz_fmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7836   // CHECK-LABEL: @test_mm_maskz_fmadd_round_sd
7837   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7838   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7839   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7840   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7841   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7842   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7843   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7844   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7845   return _mm_maskz_fmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7846 }
7847 
test_mm_mask3_fmadd_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7848 __m128d test_mm_mask3_fmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7849   // CHECK-LABEL: @test_mm_mask3_fmadd_sd
7850   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7851   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7852   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7853   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7854   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7855   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7856   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7857   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7858   return _mm_mask3_fmadd_sd(__W, __X, __Y, __U);
7859 }
7860 
test_mm_mask3_fmadd_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7861 __m128d test_mm_mask3_fmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7862   // CHECK-LABEL: @test_mm_mask3_fmadd_round_sd
7863   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7864   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7865   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7866   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7867   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7868   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7869   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7870   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7871   return _mm_mask3_fmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7872 }
7873 
test_mm_mask_fmsub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7874 __m128d test_mm_mask_fmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7875   // CHECK-LABEL: @test_mm_mask_fmsub_sd
7876   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7877   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7878   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7879   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7880   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7881   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7882   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7883   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7884   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7885   return _mm_mask_fmsub_sd(__W, __U, __A, __B);
7886 }
7887 
test_mm_fmsub_round_sd(__m128d __A,__m128d __B,__m128d __C)7888 __m128d test_mm_fmsub_round_sd(__m128d __A, __m128d __B, __m128d __C){
7889   // CHECK-LABEL: @test_mm_fmsub_round_sd
7890   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7891   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7892   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7893   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7894   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7895   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7896   return _mm_fmsub_round_sd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7897 }
7898 
test_mm_mask_fmsub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7899 __m128d test_mm_mask_fmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7900   // CHECK-LABEL: @test_mm_mask_fmsub_round_sd
7901   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7902   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7903   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7904   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7905   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7906   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7907   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7908   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7909   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7910   return _mm_mask_fmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7911 }
7912 
test_mm_maskz_fmsub_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7913 __m128d test_mm_maskz_fmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7914   // CHECK-LABEL: @test_mm_maskz_fmsub_sd
7915   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7916   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7917   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7918   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7919   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7920   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7921   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7922   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7923   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7924   return _mm_maskz_fmsub_sd(__U, __A, __B, __C);
7925 }
7926 
test_mm_maskz_fmsub_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7927 __m128d test_mm_maskz_fmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7928   // CHECK-LABEL: @test_mm_maskz_fmsub_round_sd
7929   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7930   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7931   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7932   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7933   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7934   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7935   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7936   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7937   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7938   return _mm_maskz_fmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7939 }
7940 
test_mm_mask3_fmsub_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7941 __m128d test_mm_mask3_fmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7942   // CHECK-LABEL: @test_mm_mask3_fmsub_sd
7943   // CHECK: [[NEG:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
7944   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7945   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7946   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7947   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7948   // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
7949   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7950   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7951   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
7952   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7953   return _mm_mask3_fmsub_sd(__W, __X, __Y, __U);
7954 }
7955 
test_mm_mask3_fmsub_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7956 __m128d test_mm_mask3_fmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7957   // CHECK-LABEL: @test_mm_mask3_fmsub_round_sd
7958   // CHECK: [[NEG:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
7959   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7960   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7961   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7962   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7963   // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
7964   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7965   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7966   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
7967   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7968   return _mm_mask3_fmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7969 }
7970 
test_mm_mask_fnmadd_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7971 __m128d test_mm_mask_fnmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7972   // CHECK-LABEL: @test_mm_mask_fnmadd_sd
7973   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7974   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7975   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7976   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7977   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7978   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7979   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7980   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7981   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7982   return _mm_mask_fnmadd_sd(__W, __U, __A, __B);
7983 }
7984 
test_mm_fnmadd_round_sd(__m128d __A,__m128d __B,__m128d __C)7985 __m128d test_mm_fnmadd_round_sd(__m128d __A, __m128d __B, __m128d __C){
7986   // CHECK-LABEL: @test_mm_fnmadd_round_sd
7987   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7988   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7989   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7990   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7991   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
7992   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7993   return _mm_fnmadd_round_sd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
7994 }
7995 
test_mm_mask_fnmadd_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7996 __m128d test_mm_mask_fnmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7997   // CHECK-LABEL: @test_mm_mask_fnmadd_round_sd
7998   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
7999   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
8000   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8001   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8002   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8003   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8004   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8005   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8006   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8007   return _mm_mask_fnmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8008 }
8009 
test_mm_maskz_fnmadd_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8010 __m128d test_mm_maskz_fnmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8011   // CHECK-LABEL: @test_mm_maskz_fnmadd_sd
8012   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8013   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
8014   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8015   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8016   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8017   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8018   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8019   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8020   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8021   return _mm_maskz_fnmadd_sd(__U, __A, __B, __C);
8022 }
8023 
test_mm_maskz_fnmadd_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8024 __m128d test_mm_maskz_fnmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8025   // CHECK-LABEL: @test_mm_maskz_fnmadd_round_sd
8026   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8027   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
8028   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8029   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8030   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8031   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8032   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8033   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8034   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8035   return _mm_maskz_fnmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8036 }
8037 
test_mm_mask3_fnmadd_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8038 __m128d test_mm_mask3_fnmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8039   // CHECK-LABEL: @test_mm_mask3_fnmadd_sd
8040   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8041   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8042   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8043   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
8044   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8045   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8046   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8047   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
8048   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8049   return _mm_mask3_fnmadd_sd(__W, __X, __Y, __U);
8050 }
8051 
test_mm_mask3_fnmadd_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8052 __m128d test_mm_mask3_fnmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8053   // CHECK-LABEL: @test_mm_mask3_fnmadd_round_sd
8054   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8055   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8056   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8057   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
8058   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8059   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8060   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8061   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
8062   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8063   return _mm_mask3_fnmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8064 }
8065 
test_mm_mask_fnmsub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)8066 __m128d test_mm_mask_fnmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
8067   // CHECK-LABEL: @test_mm_mask_fnmsub_sd
8068   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8069   // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8070   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8071   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8072   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8073   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8074   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8075   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8076   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8077   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8078   return _mm_mask_fnmsub_sd(__W, __U, __A, __B);
8079 }
8080 
test_mm_fnmsub_round_sd(__m128d __A,__m128d __B,__m128d __C)8081 __m128d test_mm_fnmsub_round_sd(__m128d __A, __m128d __B, __m128d __C){
8082   // CHECK-LABEL: @test_mm_fnmsub_round_sd
8083   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8084   // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8085   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8086   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8087   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8088   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8089   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
8090   return _mm_fnmsub_round_sd(__A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8091 }
8092 
test_mm_mask_fnmsub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)8093 __m128d test_mm_mask_fnmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
8094   // CHECK-LABEL: @test_mm_mask_fnmsub_round_sd
8095   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8096   // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8097   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8098   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8099   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8100   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8101   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8102   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8103   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8104   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8105   return _mm_mask_fnmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8106 }
8107 
test_mm_maskz_fnmsub_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8108 __m128d test_mm_maskz_fnmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8109   // CHECK-LABEL: @test_mm_maskz_fnmsub_sd
8110   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8111   // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8112   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8113   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8114   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8115   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8116   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8117   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8118   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8119   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8120   return _mm_maskz_fnmsub_sd(__U, __A, __B, __C);
8121 }
8122 
test_mm_maskz_fnmsub_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8123 __m128d test_mm_maskz_fnmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8124   // CHECK-LABEL: @test_mm_maskz_fnmsub_round_sd
8125   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8126   // CHECK: [[NEG2:%.+]] = fneg <2 x double> %{{.*}}
8127   // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8128   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8129   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8130   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8131   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8132   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8133   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8134   // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8135   return _mm_maskz_fnmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8136 }
8137 
test_mm_mask3_fnmsub_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8138 __m128d test_mm_mask3_fnmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8139   // CHECK-LABEL: @test_mm_mask3_fnmsub_sd
8140   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8141   // CHECK: [[NEG2:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
8142   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8143   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8144   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8145   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8146   // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8147   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8148   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8149   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8150   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8151   return _mm_mask3_fnmsub_sd(__W, __X, __Y, __U);
8152 }
8153 
test_mm_mask3_fnmsub_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8154 __m128d test_mm_mask3_fnmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8155   // CHECK-LABEL: @test_mm_mask3_fnmsub_round_sd
8156   // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}
8157   // CHECK: [[NEG2:%.+]] = fneg <2 x double> [[ORIGC:%.+]]
8158   // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8159   // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8160   // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8161   // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 11)
8162   // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8163   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8164   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8165   // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8166   // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8167   return _mm_mask3_fnmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
8168 }
8169 
test_mm512_permutex_pd(__m512d __X)8170 __m512d test_mm512_permutex_pd(__m512d __X) {
8171   // CHECK-LABEL: @test_mm512_permutex_pd
8172   // 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>
8173   return _mm512_permutex_pd(__X, 0);
8174 }
8175 
test_mm512_mask_permutex_pd(__m512d __W,__mmask8 __U,__m512d __X)8176 __m512d test_mm512_mask_permutex_pd(__m512d __W, __mmask8 __U, __m512d __X) {
8177   // CHECK-LABEL: @test_mm512_mask_permutex_pd
8178   // 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>
8179   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8180   return _mm512_mask_permutex_pd(__W, __U, __X, 0);
8181 }
8182 
test_mm512_maskz_permutex_pd(__mmask8 __U,__m512d __X)8183 __m512d test_mm512_maskz_permutex_pd(__mmask8 __U, __m512d __X) {
8184   // CHECK-LABEL: @test_mm512_maskz_permutex_pd
8185   // 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>
8186   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8187   return _mm512_maskz_permutex_pd(__U, __X, 0);
8188 }
8189 
test_mm512_permutex_epi64(__m512i __X)8190 __m512i test_mm512_permutex_epi64(__m512i __X) {
8191   // CHECK-LABEL: @test_mm512_permutex_epi64
8192   // 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>
8193   return _mm512_permutex_epi64(__X, 0);
8194 }
8195 
test_mm512_mask_permutex_epi64(__m512i __W,__mmask8 __M,__m512i __X)8196 __m512i test_mm512_mask_permutex_epi64(__m512i __W, __mmask8 __M, __m512i __X) {
8197   // CHECK-LABEL: @test_mm512_mask_permutex_epi64
8198   // 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>
8199   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8200   return _mm512_mask_permutex_epi64(__W, __M, __X, 0);
8201 }
8202 
test_mm512_maskz_permutex_epi64(__mmask8 __M,__m512i __X)8203 __m512i test_mm512_maskz_permutex_epi64(__mmask8 __M, __m512i __X) {
8204   // CHECK-LABEL: @test_mm512_maskz_permutex_epi64
8205   // 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>
8206   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8207   return _mm512_maskz_permutex_epi64(__M, __X, 0);
8208 }
8209 
test_mm512_permutexvar_pd(__m512i __X,__m512d __Y)8210 __m512d test_mm512_permutexvar_pd(__m512i __X, __m512d __Y) {
8211   // CHECK-LABEL: @test_mm512_permutexvar_pd
8212   // CHECK: @llvm.x86.avx512.permvar.df.512
8213   return _mm512_permutexvar_pd(__X, __Y);
8214 }
8215 
test_mm512_mask_permutexvar_pd(__m512d __W,__mmask8 __U,__m512i __X,__m512d __Y)8216 __m512d test_mm512_mask_permutexvar_pd(__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y) {
8217   // CHECK-LABEL: @test_mm512_mask_permutexvar_pd
8218   // CHECK: @llvm.x86.avx512.permvar.df.512
8219   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8220   return _mm512_mask_permutexvar_pd(__W, __U, __X, __Y);
8221 }
8222 
test_mm512_maskz_permutexvar_pd(__mmask8 __U,__m512i __X,__m512d __Y)8223 __m512d test_mm512_maskz_permutexvar_pd(__mmask8 __U, __m512i __X, __m512d __Y) {
8224   // CHECK-LABEL: @test_mm512_maskz_permutexvar_pd
8225   // CHECK: @llvm.x86.avx512.permvar.df.512
8226   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8227   return _mm512_maskz_permutexvar_pd(__U, __X, __Y);
8228 }
8229 
test_mm512_maskz_permutexvar_epi64(__mmask8 __M,__m512i __X,__m512i __Y)8230 __m512i test_mm512_maskz_permutexvar_epi64(__mmask8 __M, __m512i __X, __m512i __Y) {
8231   // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi64
8232   // CHECK: @llvm.x86.avx512.permvar.di.512
8233   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8234   return _mm512_maskz_permutexvar_epi64(__M, __X, __Y);
8235 }
8236 
test_mm512_permutexvar_epi64(__m512i __X,__m512i __Y)8237 __m512i test_mm512_permutexvar_epi64(__m512i __X, __m512i __Y) {
8238   // CHECK-LABEL: @test_mm512_permutexvar_epi64
8239   // CHECK: @llvm.x86.avx512.permvar.di.512
8240   return _mm512_permutexvar_epi64(__X, __Y);
8241 }
8242 
test_mm512_mask_permutexvar_epi64(__m512i __W,__mmask8 __M,__m512i __X,__m512i __Y)8243 __m512i test_mm512_mask_permutexvar_epi64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
8244   // CHECK-LABEL: @test_mm512_mask_permutexvar_epi64
8245   // CHECK: @llvm.x86.avx512.permvar.di.512
8246   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8247   return _mm512_mask_permutexvar_epi64(__W, __M, __X, __Y);
8248 }
8249 
test_mm512_permutexvar_ps(__m512i __X,__m512 __Y)8250 __m512 test_mm512_permutexvar_ps(__m512i __X, __m512 __Y) {
8251   // CHECK-LABEL: @test_mm512_permutexvar_ps
8252   // CHECK: @llvm.x86.avx512.permvar.sf.512
8253   return _mm512_permutexvar_ps(__X, __Y);
8254 }
8255 
test_mm512_mask_permutexvar_ps(__m512 __W,__mmask16 __U,__m512i __X,__m512 __Y)8256 __m512 test_mm512_mask_permutexvar_ps(__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y) {
8257   // CHECK-LABEL: @test_mm512_mask_permutexvar_ps
8258   // CHECK: @llvm.x86.avx512.permvar.sf.512
8259   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8260   return _mm512_mask_permutexvar_ps(__W, __U, __X, __Y);
8261 }
8262 
test_mm512_maskz_permutexvar_ps(__mmask16 __U,__m512i __X,__m512 __Y)8263 __m512 test_mm512_maskz_permutexvar_ps(__mmask16 __U, __m512i __X, __m512 __Y) {
8264   // CHECK-LABEL: @test_mm512_maskz_permutexvar_ps
8265   // CHECK: @llvm.x86.avx512.permvar.sf.512
8266   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8267   return _mm512_maskz_permutexvar_ps(__U, __X, __Y);
8268 }
8269 
test_mm512_maskz_permutexvar_epi32(__mmask16 __M,__m512i __X,__m512i __Y)8270 __m512i test_mm512_maskz_permutexvar_epi32(__mmask16 __M, __m512i __X, __m512i __Y) {
8271   // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi32
8272   // CHECK: @llvm.x86.avx512.permvar.si.512
8273   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8274   return _mm512_maskz_permutexvar_epi32(__M, __X, __Y);
8275 }
8276 
test_mm512_permutexvar_epi32(__m512i __X,__m512i __Y)8277 __m512i test_mm512_permutexvar_epi32(__m512i __X, __m512i __Y) {
8278   // CHECK-LABEL: @test_mm512_permutexvar_epi32
8279   // CHECK: @llvm.x86.avx512.permvar.si.512
8280   return _mm512_permutexvar_epi32(__X, __Y);
8281 }
8282 
test_mm512_mask_permutexvar_epi32(__m512i __W,__mmask16 __M,__m512i __X,__m512i __Y)8283 __m512i test_mm512_mask_permutexvar_epi32(__m512i __W, __mmask16 __M, __m512i __X, __m512i __Y) {
8284   // CHECK-LABEL: @test_mm512_mask_permutexvar_epi32
8285   // CHECK: @llvm.x86.avx512.permvar.si.512
8286   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8287   return _mm512_mask_permutexvar_epi32(__W, __M, __X, __Y);
8288 }
8289 
test_mm512_kand(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8290 __mmask16 test_mm512_kand(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8291   // CHECK-LABEL: @test_mm512_kand
8292   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8293   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8294   // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8295   // CHECK: bitcast <16 x i1> [[RES]] to i16
8296   return _mm512_mask_cmpneq_epu32_mask(_mm512_kand(_mm512_cmpneq_epu32_mask(__A, __B),
8297                                                    _mm512_cmpneq_epu32_mask(__C, __D)),
8298                                                    __E, __F);
8299 }
8300 
test_mm512_kandn(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8301 __mmask16 test_mm512_kandn(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8302   // CHECK-LABEL: @test_mm512_kandn
8303   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8304   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8305   // 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>
8306   // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8307   // CHECK: bitcast <16 x i1> [[RES]] to i16
8308   return _mm512_mask_cmpneq_epu32_mask(_mm512_kandn(_mm512_cmpneq_epu32_mask(__A, __B),
8309                                                     _mm512_cmpneq_epu32_mask(__C, __D)),
8310                                                     __E, __F);
8311 }
8312 
test_mm512_kor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8313 __mmask16 test_mm512_kor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8314   // CHECK-LABEL: @test_mm512_kor
8315   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8316   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8317   // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8318   // CHECK: bitcast <16 x i1> [[RES]] to i16
8319   return _mm512_mask_cmpneq_epu32_mask(_mm512_kor(_mm512_cmpneq_epu32_mask(__A, __B),
8320                                                   _mm512_cmpneq_epu32_mask(__C, __D)),
8321                                                   __E, __F);
8322 }
8323 
test_mm512_kortestc(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8324 int test_mm512_kortestc(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8325   // CHECK-LABEL: @test_mm512_kortestc
8326   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8327   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8328   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8329   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8330   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8331   // CHECK: zext i1 [[CMP]] to i32
8332   return _mm512_kortestc(_mm512_cmpneq_epu32_mask(__A, __B),
8333                          _mm512_cmpneq_epu32_mask(__C, __D));
8334 }
8335 
test_mm512_kortestz(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8336 int test_mm512_kortestz(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8337   // CHECK-LABEL: @test_mm512_kortestz
8338   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8339   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8340   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8341   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8342   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8343   // CHECK: zext i1 [[CMP]] to i32
8344   return _mm512_kortestz(_mm512_cmpneq_epu32_mask(__A, __B),
8345                          _mm512_cmpneq_epu32_mask(__C, __D));
8346 }
8347 
test_kortestz_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8348 unsigned char test_kortestz_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8349   // CHECK-LABEL: @test_kortestz_mask16_u8
8350   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8351   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8352   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8353   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8354   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8355   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8356   // CHECK: trunc i32 [[ZEXT]] to i8
8357   return _kortestz_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8358                              _mm512_cmpneq_epu32_mask(__C, __D));
8359 }
8360 
test_kortestc_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8361 unsigned char test_kortestc_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8362   // CHECK-LABEL: @test_kortestc_mask16_u8
8363   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8364   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8365   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8366   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8367   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8368   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8369   // CHECK: trunc i32 [[ZEXT]] to i8
8370   return _kortestc_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8371                              _mm512_cmpneq_epu32_mask(__C, __D));
8372 }
8373 
test_kortest_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)8374 unsigned char test_kortest_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
8375   // CHECK-LABEL: @test_kortest_mask16_u8
8376   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8377   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8378   // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8379   // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8380   // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8381   // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8382   // CHECK: trunc i32 [[ZEXT]] to i8
8383   // CHECK: [[LHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8384   // CHECK: [[RHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8385   // CHECK: [[OR2:%.*]] = or <16 x i1> [[LHS2]], [[RHS2]]
8386   // CHECK: [[CAST2:%.*]] = bitcast <16 x i1> [[OR2]] to i16
8387   // CHECK: [[CMP2:%.*]] = icmp eq i16 [[CAST2]], 0
8388   // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
8389   // CHECK: trunc i32 [[ZEXT2]] to i8
8390   return _kortest_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8391                             _mm512_cmpneq_epu32_mask(__C, __D), CF);
8392 }
8393 
test_mm512_kunpackb(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8394 __mmask16 test_mm512_kunpackb(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8395   // CHECK-LABEL: @test_mm512_kunpackb
8396   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8397   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8398   // 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>
8399   // 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>
8400   // 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>
8401   // CHECK: bitcast <16 x i1> [[CONCAT]] to i16
8402   return _mm512_mask_cmpneq_epu32_mask(_mm512_kunpackb(_mm512_cmpneq_epu32_mask(__A, __B),
8403                                                        _mm512_cmpneq_epu32_mask(__C, __D)),
8404                                                        __E, __F);
8405 }
8406 
test_mm512_kxnor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8407 __mmask16 test_mm512_kxnor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8408   // CHECK-LABEL: @test_mm512_kxnor
8409   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8410   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8411   // 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>
8412   // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8413   // CHECK: bitcast <16 x i1> [[RES]] to i16
8414   return _mm512_mask_cmpneq_epu32_mask(_mm512_kxnor(_mm512_cmpneq_epu32_mask(__A, __B),
8415                                                     _mm512_cmpneq_epu32_mask(__C, __D)),
8416                                                     __E, __F);
8417 }
8418 
test_mm512_kxor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8419 __mmask16 test_mm512_kxor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8420   // CHECK-LABEL: @test_mm512_kxor
8421   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8422   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8423   // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8424   // CHECK: bitcast <16 x i1> [[RES]] to i16
8425   return _mm512_mask_cmpneq_epu32_mask(_mm512_kxor(_mm512_cmpneq_epu32_mask(__A, __B),
8426                                                    _mm512_cmpneq_epu32_mask(__C, __D)),
8427                                                    __E, __F);
8428 }
8429 
test_knot_mask16(__mmask16 a)8430 __mmask16 test_knot_mask16(__mmask16 a) {
8431   // CHECK-LABEL: @test_knot_mask16
8432   // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8433   // 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>
8434   // CHECK: bitcast <16 x i1> [[NOT]] to i16
8435   return _knot_mask16(a);
8436 }
8437 
test_kand_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8438 __mmask16 test_kand_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8439   // CHECK-LABEL: @test_kand_mask16
8440   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8441   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8442   // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8443   // CHECK: bitcast <16 x i1> [[RES]] to i16
8444   return _mm512_mask_cmpneq_epu32_mask(_kand_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8445                                                     _mm512_cmpneq_epu32_mask(__C, __D)),
8446                                                     __E, __F);
8447 }
8448 
test_kandn_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8449 __mmask16 test_kandn_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8450   // CHECK-LABEL: @test_kandn_mask16
8451   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8452   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8453   // 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>
8454   // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8455   // CHECK: bitcast <16 x i1> [[RES]] to i16
8456   return _mm512_mask_cmpneq_epu32_mask(_kandn_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8457                                                      _mm512_cmpneq_epu32_mask(__C, __D)),
8458                                                      __E, __F);
8459 }
8460 
test_kor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8461 __mmask16 test_kor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8462   // CHECK-LABEL: @test_kor_mask16
8463   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8464   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8465   // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8466   // CHECK: bitcast <16 x i1> [[RES]] to i16
8467   return _mm512_mask_cmpneq_epu32_mask(_kor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8468                                                    _mm512_cmpneq_epu32_mask(__C, __D)),
8469                                                    __E, __F);
8470 }
8471 
test_kxnor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8472 __mmask16 test_kxnor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8473   // CHECK-LABEL: @test_kxnor_mask16
8474   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8475   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8476   // 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>
8477   // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8478   // CHECK: bitcast <16 x i1> [[RES]] to i16
8479   return _mm512_mask_cmpneq_epu32_mask(_kxnor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8480                                                      _mm512_cmpneq_epu32_mask(__C, __D)),
8481                                                      __E, __F);
8482 }
8483 
test_kxor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8484 __mmask16 test_kxor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8485   // CHECK-LABEL: @test_kxor_mask16
8486   // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8487   // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8488   // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8489   // CHECK: bitcast <16 x i1> [[RES]] to i16
8490   return _mm512_mask_cmpneq_epu32_mask(_kxor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8491                                                     _mm512_cmpneq_epu32_mask(__C, __D)),
8492                                                     __E, __F);
8493 }
8494 
test_kshiftli_mask16(__m512i A,__m512i B,__m512i C,__m512i D)8495 __mmask16 test_kshiftli_mask16(__m512i A, __m512i B, __m512i C, __m512i D) {
8496   // CHECK-LABEL: @test_kshiftli_mask16
8497   // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8498   // 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>
8499   // CHECK: bitcast <16 x i1> [[RES]] to i16
8500   return _mm512_mask_cmpneq_epu32_mask(_kshiftli_mask16(_mm512_cmpneq_epu32_mask(A, B), 1), C, D);
8501 }
8502 
test_kshiftri_mask16(__m512i A,__m512i B,__m512i C,__m512i D)8503 __mmask16 test_kshiftri_mask16(__m512i A, __m512i B, __m512i C, __m512i D) {
8504   // CHECK-LABEL: @test_kshiftri_mask16
8505   // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8506   // 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>
8507   // CHECK: bitcast <16 x i1> [[RES]] to i16
8508   return _mm512_mask_cmpneq_epu32_mask(_kshiftri_mask16(_mm512_cmpneq_epu32_mask(A, B), 1), C, D);
8509 }
8510 
test_cvtmask16_u32(__m512i A,__m512i B)8511 unsigned int test_cvtmask16_u32(__m512i A, __m512i B) {
8512   // CHECK-LABEL: @test_cvtmask16_u32
8513   // CHECK: bitcast <16 x i1> %{{.*}} to i16
8514   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8515   // CHECK: zext i16 %{{.*}} to i32
8516   return _cvtmask16_u32(_mm512_cmpneq_epu32_mask(A, B));
8517 }
8518 
test_cvtu32_mask16(__m512i A,__m512i B,unsigned int C)8519 __mmask16 test_cvtu32_mask16(__m512i A, __m512i B, unsigned int C) {
8520   // CHECK-LABEL: @test_cvtu32_mask16
8521   // CHECK: trunc i32 %{{.*}} to i16
8522   // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8523   return _mm512_mask_cmpneq_epu32_mask(_cvtu32_mask16(C), A, B);
8524 }
8525 
test_load_mask16(__mmask16 * A,__m512i B,__m512i C)8526 __mmask16 test_load_mask16(__mmask16 *A, __m512i B, __m512i C) {
8527   // CHECK-LABEL: @test_load_mask16
8528   // CHECK: [[LOAD:%.*]] = load i16, i16* %{{.*}}
8529   // CHECK: bitcast i16 [[LOAD]] to <16 x i1>
8530   return _mm512_mask_cmpneq_epu32_mask(_load_mask16(A), B, C);
8531 }
8532 
test_store_mask16(__mmask16 * A,__m512i B,__m512i C)8533 void test_store_mask16(__mmask16 *A, __m512i B, __m512i C) {
8534   // CHECK-LABEL: @test_store_mask16
8535   // CHECK: bitcast <16 x i1> %{{.*}} to i16
8536   // CHECK: store i16 %{{.*}}, i16* %{{.*}}
8537   _store_mask16(A, _mm512_cmpneq_epu32_mask(B, C));
8538 }
8539 
test_mm512_stream_si512(__m512i * __P,__m512i __A)8540 void test_mm512_stream_si512(__m512i * __P, __m512i __A) {
8541   // CHECK-LABEL: @test_mm512_stream_si512
8542   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 64, !nontemporal
8543   _mm512_stream_si512(__P, __A);
8544 }
8545 
test_mm512_stream_si512_2(void * __P,__m512i __A)8546 void test_mm512_stream_si512_2(void * __P, __m512i __A) {
8547   // CHECK-LABEL: @test_mm512_stream_si512
8548   // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 64, !nontemporal
8549   _mm512_stream_si512(__P, __A);
8550 }
8551 
test_mm512_stream_load_si512(void * __P)8552 __m512i test_mm512_stream_load_si512(void *__P) {
8553   // CHECK-LABEL: @test_mm512_stream_load_si512
8554   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal
8555   return _mm512_stream_load_si512(__P);
8556 }
8557 
test_mm512_stream_load_si512_const(void const * __P)8558 __m512i test_mm512_stream_load_si512_const(void const *__P) {
8559   // CHECK-LABEL: @test_mm512_stream_load_si512_const
8560   // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal
8561   return _mm512_stream_load_si512(__P);
8562 }
8563 
test_mm512_stream_pd(double * __P,__m512d __A)8564 void test_mm512_stream_pd(double *__P, __m512d __A) {
8565   // CHECK-LABEL: @test_mm512_stream_pd
8566   // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 64, !nontemporal
8567   return _mm512_stream_pd(__P, __A);
8568 }
8569 
test_mm512_stream_pd_2(void * __P,__m512d __A)8570 void test_mm512_stream_pd_2(void *__P, __m512d __A) {
8571   // CHECK-LABEL: @test_mm512_stream_pd
8572   // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 64, !nontemporal
8573   return _mm512_stream_pd(__P, __A);
8574 }
8575 
test_mm512_stream_ps(float * __P,__m512 __A)8576 void test_mm512_stream_ps(float *__P, __m512 __A) {
8577   // CHECK-LABEL: @test_mm512_stream_ps
8578   // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal
8579   _mm512_stream_ps(__P, __A);
8580 }
8581 
test_mm512_stream_ps_2(void * __P,__m512 __A)8582 void test_mm512_stream_ps_2(void *__P, __m512 __A) {
8583   // CHECK-LABEL: @test_mm512_stream_ps
8584   // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal
8585   _mm512_stream_ps(__P, __A);
8586 }
test_mm512_mask_compress_pd(__m512d __W,__mmask8 __U,__m512d __A)8587 __m512d test_mm512_mask_compress_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8588   // CHECK-LABEL: @test_mm512_mask_compress_pd
8589   // CHECK: @llvm.x86.avx512.mask.compress
8590   return _mm512_mask_compress_pd(__W, __U, __A);
8591 }
8592 
test_mm512_maskz_compress_pd(__mmask8 __U,__m512d __A)8593 __m512d test_mm512_maskz_compress_pd(__mmask8 __U, __m512d __A) {
8594   // CHECK-LABEL: @test_mm512_maskz_compress_pd
8595   // CHECK: @llvm.x86.avx512.mask.compress
8596   return _mm512_maskz_compress_pd(__U, __A);
8597 }
8598 
test_mm512_mask_compress_epi64(__m512i __W,__mmask8 __U,__m512i __A)8599 __m512i test_mm512_mask_compress_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
8600   // CHECK-LABEL: @test_mm512_mask_compress_epi64
8601   // CHECK: @llvm.x86.avx512.mask.compress
8602   return _mm512_mask_compress_epi64(__W, __U, __A);
8603 }
8604 
test_mm512_maskz_compress_epi64(__mmask8 __U,__m512i __A)8605 __m512i test_mm512_maskz_compress_epi64(__mmask8 __U, __m512i __A) {
8606   // CHECK-LABEL: @test_mm512_maskz_compress_epi64
8607   // CHECK: @llvm.x86.avx512.mask.compress
8608   return _mm512_maskz_compress_epi64(__U, __A);
8609 }
8610 
test_mm512_mask_compress_ps(__m512 __W,__mmask16 __U,__m512 __A)8611 __m512 test_mm512_mask_compress_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8612   // CHECK-LABEL: @test_mm512_mask_compress_ps
8613   // CHECK: @llvm.x86.avx512.mask.compress
8614   return _mm512_mask_compress_ps(__W, __U, __A);
8615 }
8616 
test_mm512_maskz_compress_ps(__mmask16 __U,__m512 __A)8617 __m512 test_mm512_maskz_compress_ps(__mmask16 __U, __m512 __A) {
8618   // CHECK-LABEL: @test_mm512_maskz_compress_ps
8619   // CHECK: @llvm.x86.avx512.mask.compress
8620   return _mm512_maskz_compress_ps(__U, __A);
8621 }
8622 
test_mm512_mask_compress_epi32(__m512i __W,__mmask16 __U,__m512i __A)8623 __m512i test_mm512_mask_compress_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8624   // CHECK-LABEL: @test_mm512_mask_compress_epi32
8625   // CHECK: @llvm.x86.avx512.mask.compress
8626   return _mm512_mask_compress_epi32(__W, __U, __A);
8627 }
8628 
test_mm512_maskz_compress_epi32(__mmask16 __U,__m512i __A)8629 __m512i test_mm512_maskz_compress_epi32(__mmask16 __U, __m512i __A) {
8630   // CHECK-LABEL: @test_mm512_maskz_compress_epi32
8631   // CHECK: @llvm.x86.avx512.mask.compress
8632   return _mm512_maskz_compress_epi32(__U, __A);
8633 }
8634 
test_mm_cmp_round_ss_mask(__m128 __X,__m128 __Y)8635 __mmask8 test_mm_cmp_round_ss_mask(__m128 __X, __m128 __Y) {
8636   // CHECK-LABEL: @test_mm_cmp_round_ss_mask
8637   // CHECK: @llvm.x86.avx512.mask.cmp
8638   return _mm_cmp_round_ss_mask(__X, __Y, _CMP_NLT_US, _MM_FROUND_NO_EXC);
8639 }
8640 
test_mm_mask_cmp_round_ss_mask(__mmask8 __M,__m128 __X,__m128 __Y)8641 __mmask8 test_mm_mask_cmp_round_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
8642   // CHECK-LABEL: @test_mm_mask_cmp_round_ss_mask
8643   // CHECK: @llvm.x86.avx512.mask.cmp
8644   return _mm_mask_cmp_round_ss_mask(__M, __X, __Y, _CMP_NLT_US, _MM_FROUND_NO_EXC);
8645 }
8646 
test_mm_cmp_ss_mask(__m128 __X,__m128 __Y)8647 __mmask8 test_mm_cmp_ss_mask(__m128 __X, __m128 __Y) {
8648   // CHECK-LABEL: @test_mm_cmp_ss_mask
8649   // CHECK: @llvm.x86.avx512.mask.cmp
8650   return _mm_cmp_ss_mask(__X, __Y, _CMP_NLT_US);
8651 }
8652 
test_mm_mask_cmp_ss_mask(__mmask8 __M,__m128 __X,__m128 __Y)8653 __mmask8 test_mm_mask_cmp_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
8654   // CHECK-LABEL: @test_mm_mask_cmp_ss_mask
8655   // CHECK: @llvm.x86.avx512.mask.cmp
8656   return _mm_mask_cmp_ss_mask(__M, __X, __Y, _CMP_NLT_US);
8657 }
8658 
test_mm_cmp_round_sd_mask(__m128d __X,__m128d __Y)8659 __mmask8 test_mm_cmp_round_sd_mask(__m128d __X, __m128d __Y) {
8660   // CHECK-LABEL: @test_mm_cmp_round_sd_mask
8661   // CHECK: @llvm.x86.avx512.mask.cmp
8662   return _mm_cmp_round_sd_mask(__X, __Y, _CMP_NLT_US, _MM_FROUND_NO_EXC);
8663 }
8664 
test_mm_mask_cmp_round_sd_mask(__mmask8 __M,__m128d __X,__m128d __Y)8665 __mmask8 test_mm_mask_cmp_round_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
8666   // CHECK-LABEL: @test_mm_mask_cmp_round_sd_mask
8667   // CHECK: @llvm.x86.avx512.mask.cmp
8668   return _mm_mask_cmp_round_sd_mask(__M, __X, __Y, _CMP_NLT_US, _MM_FROUND_NO_EXC);
8669 }
8670 
test_mm_cmp_sd_mask(__m128d __X,__m128d __Y)8671 __mmask8 test_mm_cmp_sd_mask(__m128d __X, __m128d __Y) {
8672   // CHECK-LABEL: @test_mm_cmp_sd_mask
8673   // CHECK: @llvm.x86.avx512.mask.cmp
8674   return _mm_cmp_sd_mask(__X, __Y, _CMP_NLT_US);
8675 }
8676 
test_mm_mask_cmp_sd_mask(__mmask8 __M,__m128d __X,__m128d __Y)8677 __mmask8 test_mm_mask_cmp_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
8678   // CHECK-LABEL: @test_mm_mask_cmp_sd_mask
8679   // CHECK: @llvm.x86.avx512.mask.cmp
8680   return _mm_mask_cmp_sd_mask(__M, __X, __Y, _CMP_NLT_US);
8681 }
8682 
test_mm512_movehdup_ps(__m512 __A)8683 __m512 test_mm512_movehdup_ps(__m512 __A) {
8684   // CHECK-LABEL: @test_mm512_movehdup_ps
8685   // 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>
8686   return _mm512_movehdup_ps(__A);
8687 }
8688 
test_mm512_mask_movehdup_ps(__m512 __W,__mmask16 __U,__m512 __A)8689 __m512 test_mm512_mask_movehdup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8690   // CHECK-LABEL: @test_mm512_mask_movehdup_ps
8691   // 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>
8692   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8693   return _mm512_mask_movehdup_ps(__W, __U, __A);
8694 }
8695 
test_mm512_maskz_movehdup_ps(__mmask16 __U,__m512 __A)8696 __m512 test_mm512_maskz_movehdup_ps(__mmask16 __U, __m512 __A) {
8697   // CHECK-LABEL: @test_mm512_maskz_movehdup_ps
8698   // 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>
8699   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8700   return _mm512_maskz_movehdup_ps(__U, __A);
8701 }
8702 
test_mm512_moveldup_ps(__m512 __A)8703 __m512 test_mm512_moveldup_ps(__m512 __A) {
8704   // CHECK-LABEL: @test_mm512_moveldup_ps
8705   // 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>
8706   return _mm512_moveldup_ps(__A);
8707 }
8708 
test_mm512_mask_moveldup_ps(__m512 __W,__mmask16 __U,__m512 __A)8709 __m512 test_mm512_mask_moveldup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8710   // CHECK-LABEL: @test_mm512_mask_moveldup_ps
8711   // 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>
8712   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8713   return _mm512_mask_moveldup_ps(__W, __U, __A);
8714 }
8715 
test_mm512_maskz_moveldup_ps(__mmask16 __U,__m512 __A)8716 __m512 test_mm512_maskz_moveldup_ps(__mmask16 __U, __m512 __A) {
8717   // CHECK-LABEL: @test_mm512_maskz_moveldup_ps
8718   // 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>
8719   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8720   return _mm512_maskz_moveldup_ps(__U, __A);
8721 }
8722 
test_mm512_shuffle_epi32(__m512i __A)8723 __m512i test_mm512_shuffle_epi32(__m512i __A) {
8724   // CHECK-LABEL: @test_mm512_shuffle_epi32
8725   // 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>
8726   return _mm512_shuffle_epi32(__A, 1);
8727 }
8728 
test_mm512_mask_shuffle_epi32(__m512i __W,__mmask16 __U,__m512i __A)8729 __m512i test_mm512_mask_shuffle_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8730   // CHECK-LABEL: @test_mm512_mask_shuffle_epi32
8731   // 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>
8732   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8733   return _mm512_mask_shuffle_epi32(__W, __U, __A, 1);
8734 }
8735 
test_mm512_maskz_shuffle_epi32(__mmask16 __U,__m512i __A)8736 __m512i test_mm512_maskz_shuffle_epi32(__mmask16 __U, __m512i __A) {
8737   // CHECK-LABEL: @test_mm512_maskz_shuffle_epi32
8738   // 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>
8739   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8740   return _mm512_maskz_shuffle_epi32(__U, __A, 1);
8741 }
8742 
test_mm512_mask_expand_pd(__m512d __W,__mmask8 __U,__m512d __A)8743 __m512d test_mm512_mask_expand_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8744   // CHECK-LABEL: @test_mm512_mask_expand_pd
8745   // CHECK: @llvm.x86.avx512.mask.expand
8746   return _mm512_mask_expand_pd(__W, __U, __A);
8747 }
8748 
test_mm512_maskz_expand_pd(__mmask8 __U,__m512d __A)8749 __m512d test_mm512_maskz_expand_pd(__mmask8 __U, __m512d __A) {
8750   // CHECK-LABEL: @test_mm512_maskz_expand_pd
8751   // CHECK: @llvm.x86.avx512.mask.expand
8752   return _mm512_maskz_expand_pd(__U, __A);
8753 }
8754 
test_mm512_mask_expand_epi64(__m512i __W,__mmask8 __U,__m512i __A)8755 __m512i test_mm512_mask_expand_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
8756   // CHECK-LABEL: @test_mm512_mask_expand_epi64
8757   // CHECK: @llvm.x86.avx512.mask.expand
8758   return _mm512_mask_expand_epi64(__W, __U, __A);
8759 }
8760 
test_mm512_maskz_expand_epi64(__mmask8 __U,__m512i __A)8761 __m512i test_mm512_maskz_expand_epi64(__mmask8 __U, __m512i __A) {
8762   // CHECK-LABEL: @test_mm512_maskz_expand_epi64
8763   // CHECK: @llvm.x86.avx512.mask.expand
8764   return _mm512_maskz_expand_epi64(__U, __A);
8765 }
test_mm512_mask_expandloadu_epi64(__m512i __W,__mmask8 __U,void const * __P)8766 __m512i test_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P) {
8767   // CHECK-LABEL: @test_mm512_mask_expandloadu_epi64
8768   // CHECK: @llvm.masked.expandload.v8i64(i64* %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8769   return _mm512_mask_expandloadu_epi64(__W, __U, __P);
8770 }
8771 
test_mm512_maskz_expandloadu_epi64(__mmask8 __U,void const * __P)8772 __m512i test_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
8773   // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi64
8774   // CHECK: @llvm.masked.expandload.v8i64(i64* %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8775   return _mm512_maskz_expandloadu_epi64(__U, __P);
8776 }
8777 
test_mm512_mask_expandloadu_pd(__m512d __W,__mmask8 __U,void const * __P)8778 __m512d test_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P) {
8779   // CHECK-LABEL: @test_mm512_mask_expandloadu_pd
8780   // CHECK: @llvm.masked.expandload.v8f64(double* %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8781   return _mm512_mask_expandloadu_pd(__W, __U, __P);
8782 }
8783 
test_mm512_maskz_expandloadu_pd(__mmask8 __U,void const * __P)8784 __m512d test_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
8785   // CHECK-LABEL: @test_mm512_maskz_expandloadu_pd
8786   // CHECK: @llvm.masked.expandload.v8f64(double* %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8787   return _mm512_maskz_expandloadu_pd(__U, __P);
8788 }
8789 
test_mm512_mask_expandloadu_epi32(__m512i __W,__mmask16 __U,void const * __P)8790 __m512i test_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P) {
8791   // CHECK-LABEL: @test_mm512_mask_expandloadu_epi32
8792   // CHECK: @llvm.masked.expandload.v16i32(i32* %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8793   return _mm512_mask_expandloadu_epi32(__W, __U, __P);
8794 }
8795 
test_mm512_maskz_expandloadu_epi32(__mmask16 __U,void const * __P)8796 __m512i test_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P) {
8797   // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi32
8798   // CHECK: @llvm.masked.expandload.v16i32(i32* %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8799   return _mm512_maskz_expandloadu_epi32(__U, __P);
8800 }
8801 
test_mm512_mask_expandloadu_ps(__m512 __W,__mmask16 __U,void const * __P)8802 __m512 test_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P) {
8803   // CHECK-LABEL: @test_mm512_mask_expandloadu_ps
8804   // CHECK: @llvm.masked.expandload.v16f32(float* %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8805   return _mm512_mask_expandloadu_ps(__W, __U, __P);
8806 }
8807 
test_mm512_maskz_expandloadu_ps(__mmask16 __U,void const * __P)8808 __m512 test_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P) {
8809   // CHECK-LABEL: @test_mm512_maskz_expandloadu_ps
8810   // CHECK: @llvm.masked.expandload.v16f32(float* %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8811   return _mm512_maskz_expandloadu_ps(__U, __P);
8812 }
8813 
test_mm512_mask_expand_ps(__m512 __W,__mmask16 __U,__m512 __A)8814 __m512 test_mm512_mask_expand_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8815   // CHECK-LABEL: @test_mm512_mask_expand_ps
8816   // CHECK: @llvm.x86.avx512.mask.expand
8817   return _mm512_mask_expand_ps(__W, __U, __A);
8818 }
8819 
test_mm512_maskz_expand_ps(__mmask16 __U,__m512 __A)8820 __m512 test_mm512_maskz_expand_ps(__mmask16 __U, __m512 __A) {
8821   // CHECK-LABEL: @test_mm512_maskz_expand_ps
8822   // CHECK: @llvm.x86.avx512.mask.expand
8823   return _mm512_maskz_expand_ps(__U, __A);
8824 }
8825 
test_mm512_mask_expand_epi32(__m512i __W,__mmask16 __U,__m512i __A)8826 __m512i test_mm512_mask_expand_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8827   // CHECK-LABEL: @test_mm512_mask_expand_epi32
8828   // CHECK: @llvm.x86.avx512.mask.expand
8829   return _mm512_mask_expand_epi32(__W, __U, __A);
8830 }
8831 
test_mm512_maskz_expand_epi32(__mmask16 __U,__m512i __A)8832 __m512i test_mm512_maskz_expand_epi32(__mmask16 __U, __m512i __A) {
8833   // CHECK-LABEL: @test_mm512_maskz_expand_epi32
8834   // CHECK: @llvm.x86.avx512.mask.expand
8835   return _mm512_maskz_expand_epi32(__U, __A);
8836 }
test_mm512_cvt_roundps_pd(__m256 __A)8837 __m512d test_mm512_cvt_roundps_pd(__m256 __A) {
8838   // CHECK-LABEL: @test_mm512_cvt_roundps_pd
8839   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8840   return _mm512_cvt_roundps_pd(__A, _MM_FROUND_NO_EXC);
8841 }
8842 
test_mm512_mask_cvt_roundps_pd(__m512d __W,__mmask8 __U,__m256 __A)8843 __m512d test_mm512_mask_cvt_roundps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
8844   // CHECK-LABEL: @test_mm512_mask_cvt_roundps_pd
8845   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8846   return _mm512_mask_cvt_roundps_pd(__W, __U, __A, _MM_FROUND_NO_EXC);
8847 }
8848 
test_mm512_maskz_cvt_roundps_pd(__mmask8 __U,__m256 __A)8849 __m512d test_mm512_maskz_cvt_roundps_pd(__mmask8 __U, __m256 __A) {
8850   // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_pd
8851   // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8852   return _mm512_maskz_cvt_roundps_pd(__U, __A, _MM_FROUND_NO_EXC);
8853 }
8854 
test_mm512_cvtps_pd(__m256 __A)8855 __m512d test_mm512_cvtps_pd(__m256 __A) {
8856   // CHECK-LABEL: @test_mm512_cvtps_pd
8857   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8858   return _mm512_cvtps_pd(__A);
8859 }
8860 
test_mm512_cvtpslo_pd(__m512 __A)8861 __m512d test_mm512_cvtpslo_pd(__m512 __A) {
8862   // CHECK-LABEL: @test_mm512_cvtpslo_pd
8863   // 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>
8864   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8865   return _mm512_cvtpslo_pd(__A);
8866 }
8867 
test_mm512_mask_cvtps_pd(__m512d __W,__mmask8 __U,__m256 __A)8868 __m512d test_mm512_mask_cvtps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
8869   // CHECK-LABEL: @test_mm512_mask_cvtps_pd
8870   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8871   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8872   return _mm512_mask_cvtps_pd(__W, __U, __A);
8873 }
8874 
test_mm512_mask_cvtpslo_pd(__m512d __W,__mmask8 __U,__m512 __A)8875 __m512d test_mm512_mask_cvtpslo_pd(__m512d __W, __mmask8 __U, __m512 __A) {
8876   // CHECK-LABEL: @test_mm512_mask_cvtpslo_pd
8877   // 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>
8878   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8879   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8880   return _mm512_mask_cvtpslo_pd(__W, __U, __A);
8881 }
8882 
test_mm512_maskz_cvtps_pd(__mmask8 __U,__m256 __A)8883 __m512d test_mm512_maskz_cvtps_pd(__mmask8 __U, __m256 __A) {
8884   // CHECK-LABEL: @test_mm512_maskz_cvtps_pd
8885   // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8886   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8887   return _mm512_maskz_cvtps_pd(__U, __A);
8888 }
test_mm512_mask_mov_pd(__m512d __W,__mmask8 __U,__m512d __A)8889 __m512d test_mm512_mask_mov_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8890   // CHECK-LABEL: @test_mm512_mask_mov_pd
8891   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8892   return _mm512_mask_mov_pd(__W, __U, __A);
8893 }
8894 
test_mm512_maskz_mov_pd(__mmask8 __U,__m512d __A)8895 __m512d test_mm512_maskz_mov_pd(__mmask8 __U, __m512d __A) {
8896   // CHECK-LABEL: @test_mm512_maskz_mov_pd
8897   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8898   return _mm512_maskz_mov_pd(__U, __A);
8899 }
8900 
test_mm512_mask_mov_ps(__m512 __W,__mmask16 __U,__m512 __A)8901 __m512 test_mm512_mask_mov_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8902   // CHECK-LABEL: @test_mm512_mask_mov_ps
8903   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8904   return _mm512_mask_mov_ps(__W, __U, __A);
8905 }
8906 
test_mm512_maskz_mov_ps(__mmask16 __U,__m512 __A)8907 __m512 test_mm512_maskz_mov_ps(__mmask16 __U, __m512 __A) {
8908   // CHECK-LABEL: @test_mm512_maskz_mov_ps
8909   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8910   return _mm512_maskz_mov_ps(__U, __A);
8911 }
8912 
test_mm512_mask_compressstoreu_pd(void * __P,__mmask8 __U,__m512d __A)8913 void test_mm512_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m512d __A) {
8914   // CHECK-LABEL: @test_mm512_mask_compressstoreu_pd
8915   // CHECK: @llvm.masked.compressstore.v8f64(<8 x double> %{{.*}}, double* %{{.*}}, <8 x i1> %{{.*}})
8916   return _mm512_mask_compressstoreu_pd(__P, __U, __A);
8917 }
8918 
test_mm512_mask_compressstoreu_epi64(void * __P,__mmask8 __U,__m512i __A)8919 void test_mm512_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m512i __A) {
8920   // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi64
8921   // CHECK: @llvm.masked.compressstore.v8i64(<8 x i64> %{{.*}}, i64* %{{.*}}, <8 x i1> %{{.*}})
8922   return _mm512_mask_compressstoreu_epi64(__P, __U, __A);
8923 }
8924 
test_mm512_mask_compressstoreu_ps(void * __P,__mmask16 __U,__m512 __A)8925 void test_mm512_mask_compressstoreu_ps(void *__P, __mmask16 __U, __m512 __A) {
8926   // CHECK-LABEL: @test_mm512_mask_compressstoreu_ps
8927   // CHECK: @llvm.masked.compressstore.v16f32(<16 x float> %{{.*}}, float* %{{.*}}, <16 x i1> %{{.*}})
8928   return _mm512_mask_compressstoreu_ps(__P, __U, __A);
8929 }
8930 
test_mm512_mask_compressstoreu_epi32(void * __P,__mmask16 __U,__m512i __A)8931 void test_mm512_mask_compressstoreu_epi32(void *__P, __mmask16 __U, __m512i __A) {
8932   // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi32
8933   // CHECK: @llvm.masked.compressstore.v16i32(<16 x i32> %{{.*}}, i32* %{{.*}}, <16 x i1> %{{.*}})
8934   return _mm512_mask_compressstoreu_epi32(__P, __U, __A);
8935 }
8936 
test_mm512_cvtt_roundpd_epu32(__m512d __A)8937 __m256i test_mm512_cvtt_roundpd_epu32(__m512d __A) {
8938   // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu32
8939   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8940   return _mm512_cvtt_roundpd_epu32(__A, _MM_FROUND_NO_EXC);
8941 }
8942 
test_mm512_mask_cvtt_roundpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)8943 __m256i test_mm512_mask_cvtt_roundpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
8944   // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu32
8945   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8946   return _mm512_mask_cvtt_roundpd_epu32(__W, __U, __A, _MM_FROUND_NO_EXC);
8947 }
8948 
test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U,__m512d __A)8949 __m256i test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U, __m512d __A) {
8950   // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu32
8951   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8952   return _mm512_maskz_cvtt_roundpd_epu32(__U, __A, _MM_FROUND_NO_EXC);
8953 }
8954 
test_mm512_cvttpd_epu32(__m512d __A)8955 __m256i test_mm512_cvttpd_epu32(__m512d __A) {
8956   // CHECK-LABEL: @test_mm512_cvttpd_epu32
8957   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8958   return _mm512_cvttpd_epu32(__A);
8959 }
8960 
test_mm512_mask_cvttpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)8961 __m256i test_mm512_mask_cvttpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
8962   // CHECK-LABEL: @test_mm512_mask_cvttpd_epu32
8963   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8964   return _mm512_mask_cvttpd_epu32(__W, __U, __A);
8965 }
8966 
test_mm512_maskz_cvttpd_epu32(__mmask8 __U,__m512d __A)8967 __m256i test_mm512_maskz_cvttpd_epu32(__mmask8 __U, __m512d __A) {
8968   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu32
8969   // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8970   return _mm512_maskz_cvttpd_epu32(__U, __A);
8971 }
8972 
test_mm512_castpd_ps(__m512d __A)8973 __m512 test_mm512_castpd_ps (__m512d __A)
8974 {
8975   // CHECK-LABEL: @test_mm512_castpd_ps
8976   // CHECK: bitcast <8 x double> %{{.}} to <16 x float>
8977   return _mm512_castpd_ps (__A);
8978 }
8979 
test_mm512_castps_pd(__m512 __A)8980 __m512d test_mm512_castps_pd (__m512 __A)
8981 {
8982   // CHECK-LABEL: @test_mm512_castps_pd
8983   // CHECK: bitcast <16 x float> %{{.}} to <8 x double>
8984   return _mm512_castps_pd (__A);
8985 }
8986 
test_mm512_castpd_si512(__m512d __A)8987 __m512i test_mm512_castpd_si512 (__m512d __A)
8988 {
8989   // CHECK-LABEL: @test_mm512_castpd_si512
8990   // CHECK: bitcast <8 x double> %{{.}} to <8 x i64>
8991   return _mm512_castpd_si512 (__A);
8992 }
8993 
test_mm512_castps128_ps512(__m128 __A)8994 __m512 test_mm512_castps128_ps512(__m128 __A) {
8995   // CHECK-LABEL: @test_mm512_castps128_ps512
8996   // 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>
8997   return _mm512_castps128_ps512(__A);
8998 }
8999 
test_mm512_castpd128_pd512(__m128d __A)9000 __m512d test_mm512_castpd128_pd512(__m128d __A) {
9001   // CHECK-LABEL: @test_mm512_castpd128_pd512
9002   // 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>
9003   return _mm512_castpd128_pd512(__A);
9004 }
9005 
test_mm512_set1_epi8(char d)9006 __m512i test_mm512_set1_epi8(char d)
9007 {
9008   // CHECK-LABEL: @test_mm512_set1_epi8
9009   // CHECK: insertelement <64 x i8> {{.*}}, i32 0
9010   // CHECK: insertelement <64 x i8> {{.*}}, i32 1
9011   // CHECK: insertelement <64 x i8> {{.*}}, i32 2
9012   // CHECK: insertelement <64 x i8> {{.*}}, i32 3
9013   // CHECK: insertelement <64 x i8> {{.*}}, i32 4
9014   // CHECK: insertelement <64 x i8> {{.*}}, i32 5
9015   // CHECK: insertelement <64 x i8> {{.*}}, i32 6
9016   // CHECK: insertelement <64 x i8> {{.*}}, i32 7
9017   // CHECK: insertelement <64 x i8> {{.*}}, i32 63
9018   return _mm512_set1_epi8(d);
9019 }
9020 
test_mm512_set1_epi16(short d)9021 __m512i test_mm512_set1_epi16(short d)
9022 {
9023   // CHECK-LABEL: @test_mm512_set1_epi16
9024   // CHECK: insertelement <32 x i16> {{.*}}, i32 0
9025   // CHECK: insertelement <32 x i16> {{.*}}, i32 1
9026   // CHECK: insertelement <32 x i16> {{.*}}, i32 2
9027   // CHECK: insertelement <32 x i16> {{.*}}, i32 3
9028   // CHECK: insertelement <32 x i16> {{.*}}, i32 4
9029   // CHECK: insertelement <32 x i16> {{.*}}, i32 5
9030   // CHECK: insertelement <32 x i16> {{.*}}, i32 6
9031   // CHECK: insertelement <32 x i16> {{.*}}, i32 7
9032   // CHECK: insertelement <32 x i16> {{.*}}, i32 31
9033   return _mm512_set1_epi16(d);
9034 }
9035 
test_mm512_set4_epi32(int __A,int __B,int __C,int __D)9036 __m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
9037 {
9038   // CHECK-LABEL: @test_mm512_set4_epi32
9039   // CHECK: insertelement <16 x i32> {{.*}}, i32 15
9040   return _mm512_set4_epi32 (__A,__B,__C,__D);
9041 }
9042 
test_mm512_set4_epi64(long long __A,long long __B,long long __C,long long __D)9043 __m512i test_mm512_set4_epi64 (long long __A, long long __B, long long __C, long long __D)
9044 {
9045   // CHECK-LABEL: @test_mm512_set4_epi64
9046   // CHECK: insertelement <8 x i64> {{.*}}, i32 7
9047   return _mm512_set4_epi64 (__A,__B,__C,__D);
9048 }
9049 
test_mm512_set4_pd(double __A,double __B,double __C,double __D)9050 __m512d test_mm512_set4_pd (double __A, double __B, double __C, double __D)
9051 {
9052   // CHECK-LABEL: @test_mm512_set4_pd
9053   // CHECK: insertelement <8 x double> {{.*}}, i32 7
9054   return _mm512_set4_pd (__A,__B,__C,__D);
9055 }
9056 
test_mm512_set4_ps(float __A,float __B,float __C,float __D)9057 __m512 test_mm512_set4_ps (float __A, float __B, float __C, float __D)
9058 {
9059   // CHECK-LABEL: @test_mm512_set4_ps
9060   // CHECK: insertelement <16 x float> {{.*}}, i32 15
9061   return _mm512_set4_ps (__A,__B,__C,__D);
9062 }
9063 
test_mm512_setr4_epi32(int e0,int e1,int e2,int e3)9064 __m512i test_mm512_setr4_epi32(int e0, int e1, int e2, int e3)
9065 {
9066   // CHECK-LABEL: @test_mm512_setr4_epi32
9067   // CHECK: insertelement <16 x i32> {{.*}}, i32 15
9068   return _mm512_setr4_epi32(e0, e1, e2, e3);
9069 }
9070 
test_mm512_setr4_epi64(long long e0,long long e1,long long e2,long long e3)9071  __m512i test_mm512_setr4_epi64(long long e0, long long e1, long long e2, long long e3)
9072 {
9073   // CHECK-LABEL: @test_mm512_setr4_epi64
9074   // CHECK: insertelement <8 x i64> {{.*}}, i32 7
9075   return _mm512_setr4_epi64(e0, e1, e2, e3);
9076 }
9077 
test_mm512_setr4_pd(double e0,double e1,double e2,double e3)9078 __m512d test_mm512_setr4_pd(double e0, double e1, double e2, double e3)
9079 {
9080   // CHECK-LABEL: @test_mm512_setr4_pd
9081   // CHECK: insertelement <8 x double> {{.*}}, i32 7
9082   return _mm512_setr4_pd(e0,e1,e2,e3);
9083 }
9084 
test_mm512_setr4_ps(float e0,float e1,float e2,float e3)9085  __m512 test_mm512_setr4_ps(float e0, float e1, float e2, float e3)
9086 {
9087   // CHECK-LABEL: @test_mm512_setr4_ps
9088   // CHECK: insertelement <16 x float> {{.*}}, i32 15
9089   return _mm512_setr4_ps(e0,e1,e2,e3);
9090 }
9091 
test_mm512_castpd256_pd512(__m256d a)9092 __m512d test_mm512_castpd256_pd512(__m256d a)
9093 {
9094   // CHECK-LABEL: @test_mm512_castpd256_pd512
9095   // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
9096   return _mm512_castpd256_pd512(a);
9097 }
9098 
test_mm512_castpd512_pd256(__m512d __A)9099 __m256d test_mm512_castpd512_pd256 (__m512d __A)
9100 {
9101   // CHECK-LABEL: @test_mm512_castpd512_pd256
9102   // CHECK: shufflevector <8 x double> %{{.}}, <8 x double> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9103   return _mm512_castpd512_pd256 (__A);
9104 }
9105 
test_mm512_castps512_ps256(__m512 __A)9106 __m256 test_mm512_castps512_ps256 (__m512 __A)
9107 {
9108   // CHECK-LABEL: @test_mm512_castps512_ps256
9109   // 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>
9110   return _mm512_castps512_ps256 (__A);
9111 }
9112 
test_mm512_castps_si512(__m512 __A)9113 __m512i test_mm512_castps_si512 (__m512 __A)
9114 {
9115   // CHECK-LABEL: @test_mm512_castps_si512
9116   // CHECK: bitcast <16 x float> %{{.}} to <8 x i64>
9117   return _mm512_castps_si512 (__A);
9118 }
test_mm512_castsi128_si512(__m128i __A)9119 __m512i test_mm512_castsi128_si512(__m128i __A) {
9120   // CHECK-LABEL: @test_mm512_castsi128_si512
9121   // 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>
9122   return _mm512_castsi128_si512(__A);
9123 }
9124 
test_mm512_castsi256_si512(__m256i __A)9125 __m512i test_mm512_castsi256_si512(__m256i __A) {
9126   // CHECK-LABEL: @test_mm512_castsi256_si512
9127   // 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>
9128   return _mm512_castsi256_si512(__A);
9129 }
9130 
test_mm512_castsi512_ps(__m512i __A)9131 __m512 test_mm512_castsi512_ps (__m512i __A)
9132 {
9133   // CHECK-LABEL: @test_mm512_castsi512_ps
9134   // CHECK: bitcast <8 x i64> %{{.}} to <16 x float>
9135   return _mm512_castsi512_ps (__A);
9136 }
9137 
test_mm512_castsi512_pd(__m512i __A)9138 __m512d test_mm512_castsi512_pd (__m512i __A)
9139 {
9140   // CHECK-LABEL: @test_mm512_castsi512_pd
9141   // CHECK: bitcast <8 x i64> %{{.}} to <8 x double>
9142   return _mm512_castsi512_pd (__A);
9143 }
9144 
test_mm512_castsi512_si128(__m512i __A)9145 __m128i test_mm512_castsi512_si128 (__m512i __A)
9146 {
9147   // CHECK-LABEL: @test_mm512_castsi512_si128
9148   // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <2 x i32> <i32 0, i32 1>
9149   return _mm512_castsi512_si128 (__A);
9150 }
9151 
test_mm512_castsi512_si256(__m512i __A)9152 __m256i test_mm512_castsi512_si256 (__m512i __A)
9153 {
9154   // CHECK-LABEL: @test_mm512_castsi512_si256
9155   // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9156   return _mm512_castsi512_si256 (__A);
9157 }
9158 
test_mm_cvt_roundsd_ss(__m128 __A,__m128d __B)9159 __m128 test_mm_cvt_roundsd_ss(__m128 __A, __m128d __B) {
9160   // CHECK-LABEL: @test_mm_cvt_roundsd_ss
9161   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9162   return _mm_cvt_roundsd_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9163 }
9164 
test_mm_mask_cvt_roundsd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128d __B)9165 __m128 test_mm_mask_cvt_roundsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
9166   // CHECK-LABEL: @test_mm_mask_cvt_roundsd_ss
9167   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9168   return _mm_mask_cvt_roundsd_ss(__W, __U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9169 }
9170 
test_mm_maskz_cvt_roundsd_ss(__mmask8 __U,__m128 __A,__m128d __B)9171 __m128 test_mm_maskz_cvt_roundsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
9172   // CHECK-LABEL: @test_mm_maskz_cvt_roundsd_ss
9173   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9174   return _mm_maskz_cvt_roundsd_ss(__U, __A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9175 }
9176 
9177 #ifdef __x86_64__
test_mm_cvt_roundi64_sd(__m128d __A,long long __B)9178 __m128d test_mm_cvt_roundi64_sd(__m128d __A, long long __B) {
9179   // CHECK-LABEL: @test_mm_cvt_roundi64_sd
9180   // CHECK: @llvm.x86.avx512.cvtsi2sd64
9181   return _mm_cvt_roundi64_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9182 }
9183 
test_mm_cvt_roundsi64_sd(__m128d __A,long long __B)9184 __m128d test_mm_cvt_roundsi64_sd(__m128d __A, long long __B) {
9185   // CHECK-LABEL: @test_mm_cvt_roundsi64_sd
9186   // CHECK: @llvm.x86.avx512.cvtsi2sd64
9187   return _mm_cvt_roundsi64_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9188 }
9189 #endif
9190 
test_mm_cvt_roundsi32_ss(__m128 __A,int __B)9191 __m128 test_mm_cvt_roundsi32_ss(__m128 __A, int __B) {
9192   // CHECK-LABEL: @test_mm_cvt_roundsi32_ss
9193   // CHECK: @llvm.x86.avx512.cvtsi2ss32
9194   return _mm_cvt_roundsi32_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9195 }
9196 
test_mm_cvt_roundi32_ss(__m128 __A,int __B)9197 __m128 test_mm_cvt_roundi32_ss(__m128 __A, int __B) {
9198   // CHECK-LABEL: @test_mm_cvt_roundi32_ss
9199   // CHECK: @llvm.x86.avx512.cvtsi2ss32
9200   return _mm_cvt_roundi32_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9201 }
9202 
9203 #ifdef __x86_64__
test_mm_cvt_roundsi64_ss(__m128 __A,long long __B)9204 __m128 test_mm_cvt_roundsi64_ss(__m128 __A, long long __B) {
9205   // CHECK-LABEL: @test_mm_cvt_roundsi64_ss
9206   // CHECK: @llvm.x86.avx512.cvtsi2ss64
9207   return _mm_cvt_roundsi64_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9208 }
9209 
test_mm_cvt_roundi64_ss(__m128 __A,long long __B)9210 __m128 test_mm_cvt_roundi64_ss(__m128 __A, long long __B) {
9211   // CHECK-LABEL: @test_mm_cvt_roundi64_ss
9212   // CHECK: @llvm.x86.avx512.cvtsi2ss64
9213   return _mm_cvt_roundi64_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9214 }
9215 #endif
9216 
test_mm_cvt_roundss_sd(__m128d __A,__m128 __B)9217 __m128d test_mm_cvt_roundss_sd(__m128d __A, __m128 __B) {
9218   // CHECK-LABEL: @test_mm_cvt_roundss_sd
9219   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9220   return _mm_cvt_roundss_sd(__A, __B, _MM_FROUND_NO_EXC);
9221 }
9222 
test_mm_mask_cvt_roundss_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128 __B)9223 __m128d test_mm_mask_cvt_roundss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
9224   // CHECK-LABEL: @test_mm_mask_cvt_roundss_sd
9225   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9226   return _mm_mask_cvt_roundss_sd(__W, __U, __A, __B, _MM_FROUND_NO_EXC);
9227 }
9228 
test_mm_maskz_cvt_roundss_sd(__mmask8 __U,__m128d __A,__m128 __B)9229 __m128d test_mm_maskz_cvt_roundss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
9230   // CHECK-LABEL: @test_mm_maskz_cvt_roundss_sd
9231   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9232   return _mm_maskz_cvt_roundss_sd( __U, __A, __B, _MM_FROUND_NO_EXC);
9233 }
9234 
test_mm_cvtu32_sd(__m128d __A,unsigned __B)9235 __m128d test_mm_cvtu32_sd(__m128d __A, unsigned __B) {
9236   // CHECK-LABEL: @test_mm_cvtu32_sd
9237   // CHECK: uitofp i32 %{{.*}} to double
9238   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9239   return _mm_cvtu32_sd(__A, __B);
9240 }
9241 
9242 #ifdef __x86_64__
test_mm_cvt_roundu64_sd(__m128d __A,unsigned long long __B)9243 __m128d test_mm_cvt_roundu64_sd(__m128d __A, unsigned long long __B) {
9244   // CHECK-LABEL: @test_mm_cvt_roundu64_sd
9245   // CHECK: @llvm.x86.avx512.cvtusi642sd
9246   return _mm_cvt_roundu64_sd(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9247 }
9248 
test_mm_cvtu64_sd(__m128d __A,unsigned long long __B)9249 __m128d test_mm_cvtu64_sd(__m128d __A, unsigned long long __B) {
9250   // CHECK-LABEL: @test_mm_cvtu64_sd
9251   // CHECK: uitofp i64 %{{.*}} to double
9252   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9253   return _mm_cvtu64_sd(__A, __B);
9254 }
9255 #endif
9256 
test_mm_cvt_roundu32_ss(__m128 __A,unsigned __B)9257 __m128 test_mm_cvt_roundu32_ss(__m128 __A, unsigned __B) {
9258   // CHECK-LABEL: @test_mm_cvt_roundu32_ss
9259   // CHECK: @llvm.x86.avx512.cvtusi2ss
9260   return _mm_cvt_roundu32_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9261 }
9262 
test_mm_cvtu32_ss(__m128 __A,unsigned __B)9263 __m128 test_mm_cvtu32_ss(__m128 __A, unsigned __B) {
9264   // CHECK-LABEL: @test_mm_cvtu32_ss
9265   // CHECK: uitofp i32 %{{.*}} to float
9266   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9267   return _mm_cvtu32_ss(__A, __B);
9268 }
9269 
9270 #ifdef __x86_64__
test_mm_cvt_roundu64_ss(__m128 __A,unsigned long long __B)9271 __m128 test_mm_cvt_roundu64_ss(__m128 __A, unsigned long long __B) {
9272   // CHECK-LABEL: @test_mm_cvt_roundu64_ss
9273   // CHECK: @llvm.x86.avx512.cvtusi642ss
9274     return _mm_cvt_roundu64_ss(__A, __B, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
9275 }
9276 
test_mm_cvtu64_ss(__m128 __A,unsigned long long __B)9277 __m128 test_mm_cvtu64_ss(__m128 __A, unsigned long long __B) {
9278   // CHECK-LABEL: @test_mm_cvtu64_ss
9279   // CHECK: uitofp i64 %{{.*}} to float
9280   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9281   return _mm_cvtu64_ss(__A, __B);
9282 }
9283 #endif
9284 
test_mm512_mask_cvttps_epu32(__m512i __W,__mmask16 __U,__m512 __A)9285 __m512i test_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
9286 {
9287   // CHECK-LABEL: @test_mm512_mask_cvttps_epu32
9288   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9289   return _mm512_mask_cvttps_epu32 (__W,__U,__A);
9290 }
9291 
test_mm512_maskz_cvttps_epu32(__mmask16 __U,__m512 __A)9292 __m512i test_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
9293 {
9294   // CHECK-LABEL: @test_mm512_maskz_cvttps_epu32
9295   // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9296   return _mm512_maskz_cvttps_epu32 (__U,__A);
9297 }
9298 
test_mm512_cvtepu32_ps(__m512i __A)9299 __m512 test_mm512_cvtepu32_ps (__m512i __A)
9300 {
9301   // CHECK-LABEL: @test_mm512_cvtepu32_ps
9302   // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9303   return _mm512_cvtepu32_ps (__A);
9304 }
9305 
test_mm512_mask_cvtepu32_ps(__m512 __W,__mmask16 __U,__m512i __A)9306 __m512 test_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
9307 {
9308   // CHECK-LABEL: @test_mm512_mask_cvtepu32_ps
9309   // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9310   // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9311   return _mm512_mask_cvtepu32_ps (__W,__U,__A);
9312 }
9313 
test_mm512_maskz_cvtepu32_ps(__mmask16 __U,__m512i __A)9314 __m512 test_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
9315 {
9316   // CHECK-LABEL: @test_mm512_maskz_cvtepu32_ps
9317   // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9318   // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9319   return _mm512_maskz_cvtepu32_ps (__U,__A);
9320 }
9321 
test_mm512_cvtepi32_pd(__m256i __A)9322 __m512d test_mm512_cvtepi32_pd (__m256i __A)
9323 {
9324   // CHECK-LABEL: @test_mm512_cvtepi32_pd
9325   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9326   return _mm512_cvtepi32_pd (__A);
9327 }
9328 
test_mm512_mask_cvtepi32_pd(__m512d __W,__mmask8 __U,__m256i __A)9329 __m512d test_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
9330 {
9331   // CHECK-LABEL: @test_mm512_mask_cvtepi32_pd
9332   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9333   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9334   return _mm512_mask_cvtepi32_pd (__W,__U,__A);
9335 }
9336 
test_mm512_maskz_cvtepi32_pd(__mmask8 __U,__m256i __A)9337 __m512d test_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
9338 {
9339   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_pd
9340   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9341   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9342   return _mm512_maskz_cvtepi32_pd (__U,__A);
9343 }
9344 
test_mm512_cvtepi32lo_pd(__m512i __A)9345 __m512d test_mm512_cvtepi32lo_pd (__m512i __A)
9346 {
9347   // CHECK-LABEL: @test_mm512_cvtepi32lo_pd
9348   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9349   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9350   return _mm512_cvtepi32lo_pd (__A);
9351 }
9352 
test_mm512_mask_cvtepi32lo_pd(__m512d __W,__mmask8 __U,__m512i __A)9353 __m512d test_mm512_mask_cvtepi32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
9354 {
9355   // CHECK-LABEL: @test_mm512_mask_cvtepi32lo_pd
9356   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9357   // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9358   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9359   return _mm512_mask_cvtepi32lo_pd (__W, __U, __A);
9360 }
9361 
test_mm512_cvtepi32_ps(__m512i __A)9362 __m512 test_mm512_cvtepi32_ps (__m512i __A)
9363 {
9364   // CHECK-LABEL: @test_mm512_cvtepi32_ps
9365   // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9366   return _mm512_cvtepi32_ps (__A);
9367 }
9368 
test_mm512_mask_cvtepi32_ps(__m512 __W,__mmask16 __U,__m512i __A)9369 __m512 test_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
9370 {
9371   // CHECK-LABEL: @test_mm512_mask_cvtepi32_ps
9372   // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9373   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9374   return _mm512_mask_cvtepi32_ps (__W,__U,__A);
9375 }
9376 
test_mm512_maskz_cvtepi32_ps(__mmask16 __U,__m512i __A)9377 __m512 test_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
9378 {
9379   // CHECK-LABEL: @test_mm512_maskz_cvtepi32_ps
9380   // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9381   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9382   return _mm512_maskz_cvtepi32_ps (__U,__A);
9383 }
9384 
test_mm512_cvtepu32_pd(__m256i __A)9385 __m512d test_mm512_cvtepu32_pd(__m256i __A)
9386 {
9387   // CHECK-LABEL: @test_mm512_cvtepu32_pd
9388   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9389   return _mm512_cvtepu32_pd(__A);
9390 }
9391 
test_mm512_mask_cvtepu32_pd(__m512d __W,__mmask8 __U,__m256i __A)9392 __m512d test_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
9393 {
9394   // CHECK-LABEL: @test_mm512_mask_cvtepu32_pd
9395   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9396   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9397   return _mm512_mask_cvtepu32_pd (__W,__U,__A);
9398 }
9399 
test_mm512_maskz_cvtepu32_pd(__mmask8 __U,__m256i __A)9400 __m512d test_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
9401 {
9402   // CHECK-LABEL: @test_mm512_maskz_cvtepu32_pd
9403   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9404   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9405   return _mm512_maskz_cvtepu32_pd (__U,__A);
9406 }
9407 
test_mm512_cvtepu32lo_pd(__m512i __A)9408 __m512d test_mm512_cvtepu32lo_pd (__m512i __A)
9409 {
9410   // CHECK-LABEL: @test_mm512_cvtepu32lo_pd
9411   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9412   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9413   return _mm512_cvtepu32lo_pd (__A);
9414 }
9415 
test_mm512_mask_cvtepu32lo_pd(__m512d __W,__mmask8 __U,__m512i __A)9416 __m512d test_mm512_mask_cvtepu32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
9417 {
9418   // CHECK-LABEL: @test_mm512_mask_cvtepu32lo_pd
9419   // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9420   // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9421   // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9422   return _mm512_mask_cvtepu32lo_pd (__W, __U, __A);
9423 }
9424 
test_mm512_cvtpd_ps(__m512d __A)9425 __m256 test_mm512_cvtpd_ps (__m512d __A)
9426 {
9427   // CHECK-LABEL: @test_mm512_cvtpd_ps
9428   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9429   return _mm512_cvtpd_ps (__A);
9430 }
9431 
test_mm512_mask_cvtpd_ps(__m256 __W,__mmask8 __U,__m512d __A)9432 __m256 test_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
9433 {
9434   // CHECK-LABEL: @test_mm512_mask_cvtpd_ps
9435   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9436   return _mm512_mask_cvtpd_ps (__W,__U,__A);
9437 }
9438 
test_mm512_cvtpd_pslo(__m512d __A)9439 __m512 test_mm512_cvtpd_pslo(__m512d __A)
9440 {
9441   // CHECK-LABEL: @test_mm512_cvtpd_pslo
9442   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9443   // CHECK: zeroinitializer
9444   // 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>
9445   return _mm512_cvtpd_pslo(__A);
9446 }
9447 
test_mm512_mask_cvtpd_pslo(__m512 __W,__mmask8 __U,__m512d __A)9448 __m512 test_mm512_mask_cvtpd_pslo(__m512 __W, __mmask8 __U, __m512d __A) {
9449   // CHECK-LABEL: @test_mm512_mask_cvtpd_pslo
9450   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9451   // CHECK: zeroinitializer
9452   // 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>
9453   return _mm512_mask_cvtpd_pslo(__W, __U, __A);
9454 }
9455 
test_mm512_maskz_cvtpd_ps(__mmask8 __U,__m512d __A)9456 __m256 test_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
9457 {
9458   // CHECK-LABEL: @test_mm512_maskz_cvtpd_ps
9459   // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9460   return _mm512_maskz_cvtpd_ps (__U,__A);
9461 }
9462 
test_mm512_cvtph_ps(__m256i __A)9463 __m512 test_mm512_cvtph_ps (__m256i __A)
9464 {
9465   // CHECK-LABEL: @test_mm512_cvtph_ps
9466   // CHECK: bitcast <4 x i64> %{{.*}} to <16 x i16>
9467   // CHECK: bitcast <16 x i16> %{{.*}} to <16 x half>
9468   // CHECK: fpext <16 x half> %{{.*}} to <16 x float>
9469   return _mm512_cvtph_ps (__A);
9470 }
9471 
test_mm512_mask_cvtph_ps(__m512 __W,__mmask16 __U,__m256i __A)9472 __m512 test_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
9473 {
9474   // CHECK-LABEL: @test_mm512_mask_cvtph_ps
9475   // CHECK: bitcast <4 x i64> %{{.*}} to <16 x i16>
9476   // CHECK: bitcast <16 x i16> %{{.*}} to <16 x half>
9477   // CHECK: fpext <16 x half> %{{.*}} to <16 x float>
9478   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9479   return _mm512_mask_cvtph_ps (__W,__U,__A);
9480 }
9481 
test_mm512_maskz_cvtph_ps(__mmask16 __U,__m256i __A)9482 __m512 test_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
9483 {
9484   // CHECK-LABEL: @test_mm512_maskz_cvtph_ps
9485   // CHECK: bitcast <4 x i64> %{{.*}} to <16 x i16>
9486   // CHECK: bitcast <16 x i16> %{{.*}} to <16 x half>
9487   // CHECK: fpext <16 x half> %{{.*}} to <16 x float>
9488   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9489   return _mm512_maskz_cvtph_ps (__U,__A);
9490 }
9491 
test_mm512_mask_cvttpd_epi32(__m256i __W,__mmask8 __U,__m512d __A)9492 __m256i test_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
9493 {
9494   // CHECK-LABEL: @test_mm512_mask_cvttpd_epi32
9495   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9496   return _mm512_mask_cvttpd_epi32 (__W,__U,__A);
9497 }
9498 
test_mm512_maskz_cvttpd_epi32(__mmask8 __U,__m512d __A)9499 __m256i test_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
9500 {
9501   // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi32
9502   // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9503   return _mm512_maskz_cvttpd_epi32 (__U,__A);
9504 }
9505 
test_mm512_mask_cvttps_epi32(__m512i __W,__mmask16 __U,__m512 __A)9506 __m512i test_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
9507 {
9508   // CHECK-LABEL: @test_mm512_mask_cvttps_epi32
9509   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9510   return _mm512_mask_cvttps_epi32 (__W,__U,__A);
9511 }
9512 
test_mm512_maskz_cvttps_epi32(__mmask16 __U,__m512 __A)9513 __m512i test_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
9514 {
9515   // CHECK-LABEL: @test_mm512_maskz_cvttps_epi32
9516   // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9517   return _mm512_maskz_cvttps_epi32 (__U,__A);
9518 }
9519 
test_mm512_cvtps_epi32(__m512 __A)9520 __m512i test_mm512_cvtps_epi32 (__m512 __A)
9521 {
9522   // CHECK-LABEL: @test_mm512_cvtps_epi32
9523   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9524   return _mm512_cvtps_epi32 (__A);
9525 }
9526 
test_mm512_mask_cvtps_epi32(__m512i __W,__mmask16 __U,__m512 __A)9527 __m512i test_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
9528 {
9529   // CHECK-LABEL: @test_mm512_mask_cvtps_epi32
9530   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9531   return _mm512_mask_cvtps_epi32 (__W,__U,__A);
9532 }
9533 
test_mm512_maskz_cvtps_epi32(__mmask16 __U,__m512 __A)9534 __m512i test_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
9535 {
9536   // CHECK-LABEL: @test_mm512_maskz_cvtps_epi32
9537   // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9538   return _mm512_maskz_cvtps_epi32 (__U,__A);
9539 }
9540 
test_mm512_cvtpd_epi32(__m512d __A)9541 __m256i test_mm512_cvtpd_epi32 (__m512d __A)
9542 {
9543   // CHECK-LABEL: @test_mm512_cvtpd_epi32
9544   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9545   return _mm512_cvtpd_epi32 (__A);
9546 }
9547 
test_mm512_mask_cvtpd_epi32(__m256i __W,__mmask8 __U,__m512d __A)9548 __m256i test_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
9549 {
9550   // CHECK-LABEL: @test_mm512_mask_cvtpd_epi32
9551   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9552   return _mm512_mask_cvtpd_epi32 (__W,__U,__A);
9553 }
9554 
test_mm512_maskz_cvtpd_epi32(__mmask8 __U,__m512d __A)9555 __m256i test_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
9556 {
9557   // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi32
9558   // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9559   return _mm512_maskz_cvtpd_epi32 (__U,__A);
9560 }
9561 
test_mm512_cvtpd_epu32(__m512d __A)9562 __m256i test_mm512_cvtpd_epu32 (__m512d __A)
9563 {
9564   // CHECK-LABEL: @test_mm512_cvtpd_epu32
9565   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9566   return _mm512_cvtpd_epu32 (__A);
9567 }
9568 
test_mm512_mask_cvtpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)9569 __m256i test_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
9570 {
9571   // CHECK-LABEL: @test_mm512_mask_cvtpd_epu32
9572   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9573   return _mm512_mask_cvtpd_epu32 (__W,__U,__A);
9574 }
9575 
test_mm512_maskz_cvtpd_epu32(__mmask8 __U,__m512d __A)9576 __m256i test_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
9577 {
9578   // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu32
9579   // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9580   return _mm512_maskz_cvtpd_epu32 (__U,__A);
9581 }
9582 
test_mm512_mask_cvtps_ph(__m256i src,__mmask16 k,__m512 a)9583 __m256i test_mm512_mask_cvtps_ph(__m256i src, __mmask16 k, __m512 a)
9584 {
9585   // CHECK-LABEL: @test_mm512_mask_cvtps_ph
9586   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9587   return _mm512_mask_cvtps_ph(src, k, a,_MM_FROUND_TO_ZERO);
9588 }
9589 
test_mm512_maskz_cvtps_ph(__mmask16 k,__m512 a)9590 __m256i test_mm512_maskz_cvtps_ph (__mmask16 k, __m512 a)
9591 {
9592   // CHECK-LABEL: @test_mm512_maskz_cvtps_ph
9593   // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9594   return _mm512_maskz_cvtps_ph( k, a,_MM_FROUND_TO_ZERO);
9595 }
9596 
test_mm512_cvtps_epu32(__m512 __A)9597 __m512i test_mm512_cvtps_epu32 ( __m512 __A)
9598 {
9599   // CHECK-LABEL: @test_mm512_cvtps_epu32
9600   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9601   return _mm512_cvtps_epu32(__A);
9602 }
9603 
test_mm512_mask_cvtps_epu32(__m512i __W,__mmask16 __U,__m512 __A)9604 __m512i test_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
9605 {
9606   // CHECK-LABEL: @test_mm512_mask_cvtps_epu32
9607   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9608   return _mm512_mask_cvtps_epu32( __W, __U, __A);
9609 }
test_mm512_maskz_cvtps_epu32(__mmask16 __U,__m512 __A)9610 __m512i test_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A)
9611 {
9612   // CHECK-LABEL: @test_mm512_maskz_cvtps_epu32
9613   // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9614   return _mm512_maskz_cvtps_epu32( __U, __A);
9615 }
9616 
test_mm512_cvtsd_f64(__m512d A)9617 double test_mm512_cvtsd_f64(__m512d A) {
9618   // CHECK-LABEL: test_mm512_cvtsd_f64
9619   // CHECK: extractelement <8 x double> %{{.*}}, i32 0
9620   return _mm512_cvtsd_f64(A);
9621 }
9622 
test_mm512_cvtss_f32(__m512 A)9623 float test_mm512_cvtss_f32(__m512 A) {
9624   // CHECK-LABEL: test_mm512_cvtss_f32
9625   // CHECK: extractelement <16 x float> %{{.*}}, i32 0
9626   return _mm512_cvtss_f32(A);
9627 }
9628 
test_mm512_mask_max_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9629 __m512d test_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
9630 {
9631   // CHECK-LABEL: @test_mm512_mask_max_pd
9632   // CHECK: @llvm.x86.avx512.max.pd.512
9633   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9634   return _mm512_mask_max_pd (__W,__U,__A,__B);
9635 }
9636 
test_mm512_maskz_max_pd(__mmask8 __U,__m512d __A,__m512d __B)9637 __m512d test_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
9638 {
9639   // CHECK-LABEL: @test_mm512_maskz_max_pd
9640   // CHECK: @llvm.x86.avx512.max.pd.512
9641   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9642   return _mm512_maskz_max_pd (__U,__A,__B);
9643 }
9644 
test_mm512_mask_max_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9645 __m512 test_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
9646 {
9647   // CHECK-LABEL: @test_mm512_mask_max_ps
9648   // CHECK: @llvm.x86.avx512.max.ps.512
9649   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9650   return _mm512_mask_max_ps (__W,__U,__A,__B);
9651 }
9652 
test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9653 __m512d test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
9654 {
9655   // CHECK-LABEL: @test_mm512_mask_max_round_pd
9656   // CHECK: @llvm.x86.avx512.max.pd.512
9657   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9658   return _mm512_mask_max_round_pd(__W,__U,__A,__B,_MM_FROUND_NO_EXC);
9659 }
9660 
test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B)9661 __m512d test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
9662 {
9663   // CHECK-LABEL: @test_mm512_maskz_max_round_pd
9664   // CHECK: @llvm.x86.avx512.max.pd.512
9665   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9666   return _mm512_maskz_max_round_pd(__U,__A,__B,_MM_FROUND_NO_EXC);
9667 }
9668 
test_mm512_max_round_pd(__m512d __A,__m512d __B)9669 __m512d test_mm512_max_round_pd(__m512d __A,__m512d __B)
9670 {
9671   // CHECK-LABEL: @test_mm512_max_round_pd
9672   // CHECK: @llvm.x86.avx512.max.pd.512
9673   return _mm512_max_round_pd(__A,__B,_MM_FROUND_NO_EXC);
9674 }
9675 
test_mm512_maskz_max_ps(__mmask16 __U,__m512 __A,__m512 __B)9676 __m512 test_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
9677 {
9678   // CHECK-LABEL: @test_mm512_maskz_max_ps
9679   // CHECK: @llvm.x86.avx512.max.ps.512
9680   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9681   return _mm512_maskz_max_ps (__U,__A,__B);
9682 }
9683 
test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9684 __m512 test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
9685 {
9686   // CHECK-LABEL: @test_mm512_mask_max_round_ps
9687   // CHECK: @llvm.x86.avx512.max.ps.512
9688   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9689   return _mm512_mask_max_round_ps(__W,__U,__A,__B,_MM_FROUND_NO_EXC);
9690 }
9691 
test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B)9692 __m512 test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
9693 {
9694   // CHECK-LABEL: @test_mm512_maskz_max_round_ps
9695   // CHECK: @llvm.x86.avx512.max.ps.512
9696   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9697   return _mm512_maskz_max_round_ps(__U,__A,__B,_MM_FROUND_NO_EXC);
9698 }
9699 
test_mm512_max_round_ps(__m512 __A,__m512 __B)9700 __m512 test_mm512_max_round_ps(__m512 __A,__m512 __B)
9701 {
9702   // CHECK-LABEL: @test_mm512_max_round_ps
9703   // CHECK: @llvm.x86.avx512.max.ps.512
9704   return _mm512_max_round_ps(__A,__B,_MM_FROUND_NO_EXC);
9705 }
9706 
test_mm512_mask_min_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9707 __m512d test_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
9708 {
9709   // CHECK-LABEL: @test_mm512_mask_min_pd
9710   // CHECK: @llvm.x86.avx512.min.pd.512
9711   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9712   return _mm512_mask_min_pd (__W,__U,__A,__B);
9713 }
9714 
test_mm512_maskz_min_pd(__mmask8 __U,__m512d __A,__m512d __B)9715 __m512d test_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
9716 {
9717   // CHECK-LABEL: @test_mm512_maskz_min_pd
9718   // CHECK: @llvm.x86.avx512.min.pd.512
9719   return _mm512_maskz_min_pd (__U,__A,__B);
9720 }
9721 
test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9722 __m512d test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
9723 {
9724   // CHECK-LABEL: @test_mm512_mask_min_round_pd
9725   // CHECK: @llvm.x86.avx512.min.pd.512
9726   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9727   return _mm512_mask_min_round_pd(__W,__U,__A,__B,_MM_FROUND_NO_EXC);
9728 }
9729 
test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B)9730 __m512d test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
9731 {
9732   // CHECK-LABEL: @test_mm512_maskz_min_round_pd
9733   // CHECK: @llvm.x86.avx512.min.pd.512
9734   // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9735   return _mm512_maskz_min_round_pd(__U,__A,__B,_MM_FROUND_NO_EXC);
9736 }
9737 
test_mm512_min_round_pd(__m512d __A,__m512d __B)9738 __m512d test_mm512_min_round_pd( __m512d __A,__m512d __B)
9739 {
9740   // CHECK-LABEL: @test_mm512_min_round_pd
9741   // CHECK: @llvm.x86.avx512.min.pd.512
9742   return _mm512_min_round_pd(__A,__B,_MM_FROUND_NO_EXC);
9743 }
9744 
test_mm512_mask_min_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9745 __m512 test_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
9746 {
9747   // CHECK-LABEL: @test_mm512_mask_min_ps
9748   // CHECK: @llvm.x86.avx512.min.ps.512
9749   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9750   return _mm512_mask_min_ps (__W,__U,__A,__B);
9751 }
9752 
test_mm512_maskz_min_ps(__mmask16 __U,__m512 __A,__m512 __B)9753 __m512 test_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
9754 {
9755   // CHECK-LABEL: @test_mm512_maskz_min_ps
9756   // CHECK: @llvm.x86.avx512.min.ps.512
9757   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9758   return _mm512_maskz_min_ps (__U,__A,__B);
9759 }
9760 
test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9761 __m512 test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
9762 {
9763   // CHECK-LABEL: @test_mm512_mask_min_round_ps
9764   // CHECK: @llvm.x86.avx512.min.ps.512
9765   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9766   return _mm512_mask_min_round_ps(__W,__U,__A,__B,_MM_FROUND_NO_EXC);
9767 }
9768 
test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B)9769 __m512 test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
9770 {
9771   // CHECK-LABEL: @test_mm512_maskz_min_round_ps
9772   // CHECK: @llvm.x86.avx512.min.ps.512
9773   // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9774   return _mm512_maskz_min_round_ps(__U,__A,__B,_MM_FROUND_NO_EXC);
9775 }
9776 
test_mm512_min_round_ps(__m512 __A,__m512 __B)9777 __m512 test_mm512_min_round_ps(__m512 __A,__m512 __B)
9778 {
9779   // CHECK-LABEL: @test_mm512_min_round_ps
9780   // CHECK: @llvm.x86.avx512.min.ps.512
9781   return _mm512_min_round_ps(__A,__B,_MM_FROUND_NO_EXC);
9782 }
9783 
test_mm512_mask_floor_ps(__m512 __W,__mmask16 __U,__m512 __A)9784 __m512 test_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
9785 {
9786   // CHECK-LABEL: @test_mm512_mask_floor_ps
9787   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9788   return _mm512_mask_floor_ps (__W,__U,__A);
9789 }
9790 
test_mm512_mask_floor_pd(__m512d __W,__mmask8 __U,__m512d __A)9791 __m512d test_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
9792 {
9793   // CHECK-LABEL: @test_mm512_mask_floor_pd
9794   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9795   return _mm512_mask_floor_pd (__W,__U,__A);
9796 }
9797 
test_mm512_mask_ceil_ps(__m512 __W,__mmask16 __U,__m512 __A)9798 __m512 test_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
9799 {
9800   // CHECK-LABEL: @test_mm512_mask_ceil_ps
9801   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9802   return _mm512_mask_ceil_ps (__W,__U,__A);
9803 }
9804 
test_mm512_mask_ceil_pd(__m512d __W,__mmask8 __U,__m512d __A)9805 __m512d test_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
9806 {
9807   // CHECK-LABEL: @test_mm512_mask_ceil_pd
9808   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9809   return _mm512_mask_ceil_pd (__W,__U,__A);
9810 }
9811 
test_mm512_mask_roundscale_ps(__m512 __W,__mmask16 __U,__m512 __A)9812 __m512 test_mm512_mask_roundscale_ps(__m512 __W, __mmask16 __U, __m512 __A)
9813 {
9814   // CHECK-LABEL: @test_mm512_mask_roundscale_ps
9815   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9816   return _mm512_mask_roundscale_ps(__W,__U,__A, 1);
9817 }
9818 
test_mm512_maskz_roundscale_ps(__mmask16 __U,__m512 __A)9819 __m512 test_mm512_maskz_roundscale_ps(__mmask16 __U, __m512 __A)
9820 {
9821   // CHECK-LABEL: @test_mm512_maskz_roundscale_ps
9822   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9823   return _mm512_maskz_roundscale_ps(__U,__A, 1);
9824 }
9825 
test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C)9826 __m512 test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C)
9827 {
9828   // CHECK-LABEL: @test_mm512_mask_roundscale_round_ps
9829   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9830   return _mm512_mask_roundscale_round_ps(__A,__U,__C,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9831 }
9832 
test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U)9833 __m512 test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U)
9834 {
9835   // CHECK-LABEL: @test_mm512_maskz_roundscale_round_ps
9836   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9837   return _mm512_maskz_roundscale_round_ps(__U,__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9838 }
9839 
test_mm512_roundscale_round_ps(__m512 __A)9840 __m512 test_mm512_roundscale_round_ps(__m512 __A)
9841 {
9842   // CHECK-LABEL: @test_mm512_roundscale_round_ps
9843   // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9844   return _mm512_roundscale_round_ps(__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9845 }
9846 
test_mm512_mask_roundscale_pd(__m512d __W,__mmask8 __U,__m512d __A)9847 __m512d test_mm512_mask_roundscale_pd(__m512d __W, __mmask8 __U, __m512d __A)
9848 {
9849   // CHECK-LABEL: @test_mm512_mask_roundscale_pd
9850   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9851   return _mm512_mask_roundscale_pd(__W,__U,__A, 1);
9852 }
9853 
test_mm512_maskz_roundscale_pd(__mmask8 __U,__m512d __A)9854 __m512d test_mm512_maskz_roundscale_pd(__mmask8 __U, __m512d __A)
9855 {
9856   // CHECK-LABEL: @test_mm512_maskz_roundscale_pd
9857   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9858   return _mm512_maskz_roundscale_pd(__U,__A, 1);
9859 }
9860 
test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C)9861 __m512d test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C)
9862 {
9863   // CHECK-LABEL: @test_mm512_mask_roundscale_round_pd
9864   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9865   return _mm512_mask_roundscale_round_pd(__A,__U,__C,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9866 }
9867 
test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U)9868 __m512d test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U)
9869 {
9870   // CHECK-LABEL: @test_mm512_maskz_roundscale_round_pd
9871   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9872   return _mm512_maskz_roundscale_round_pd(__U,__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9873 }
9874 
test_mm512_roundscale_round_pd(__m512d __A)9875 __m512d test_mm512_roundscale_round_pd(__m512d __A)
9876 {
9877   // CHECK-LABEL: @test_mm512_roundscale_round_pd
9878   // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9879   return _mm512_roundscale_round_pd(__A,_MM_FROUND_TO_ZERO,_MM_FROUND_NO_EXC);
9880 }
9881 
test_mm512_max_epi32(__m512i __A,__m512i __B)9882 __m512i test_mm512_max_epi32 (__m512i __A, __m512i __B)
9883 {
9884   // CHECK-LABEL: @test_mm512_max_epi32
9885   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9886   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9887   return _mm512_max_epi32 (__A,__B);
9888 }
9889 
test_mm512_mask_max_epi32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9890 __m512i test_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9891 {
9892   // CHECK-LABEL: @test_mm512_mask_max_epi32
9893   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9894   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9895   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9896   return _mm512_mask_max_epi32 (__W,__M,__A,__B);
9897 }
9898 
test_mm512_maskz_max_epi32(__mmask16 __M,__m512i __A,__m512i __B)9899 __m512i test_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
9900 {
9901   // CHECK-LABEL: @test_mm512_maskz_max_epi32
9902   // CHECK:       [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9903   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9904   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9905   return _mm512_maskz_max_epi32 (__M,__A,__B);
9906 }
9907 
test_mm512_max_epi64(__m512i __A,__m512i __B)9908 __m512i test_mm512_max_epi64 (__m512i __A, __m512i __B)
9909 {
9910   // CHECK-LABEL: @test_mm512_max_epi64
9911   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9912   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9913   return _mm512_max_epi64 (__A,__B);
9914 }
9915 
test_mm512_mask_max_epi64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9916 __m512i test_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9917 {
9918   // CHECK-LABEL: @test_mm512_mask_max_epi64
9919   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9920   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9921   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9922   return _mm512_mask_max_epi64 (__W,__M,__A,__B);
9923 }
9924 
test_mm512_maskz_max_epi64(__mmask8 __M,__m512i __A,__m512i __B)9925 __m512i test_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
9926 {
9927   // CHECK-LABEL: @test_mm512_maskz_max_epi64
9928   // CHECK:       [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9929   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9930   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9931   return _mm512_maskz_max_epi64 (__M,__A,__B);
9932 }
9933 
test_mm512_max_epu64(__m512i __A,__m512i __B)9934 __m512i test_mm512_max_epu64 (__m512i __A, __m512i __B)
9935 {
9936   // CHECK-LABEL: @test_mm512_max_epu64
9937   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9938   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9939   return _mm512_max_epu64 (__A,__B);
9940 }
9941 
test_mm512_mask_max_epu64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9942 __m512i test_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9943 {
9944   // CHECK-LABEL: @test_mm512_mask_max_epu64
9945   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9946   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9947   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9948   return _mm512_mask_max_epu64 (__W,__M,__A,__B);
9949 }
9950 
test_mm512_maskz_max_epu64(__mmask8 __M,__m512i __A,__m512i __B)9951 __m512i test_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
9952 {
9953   // CHECK-LABEL: @test_mm512_maskz_max_epu64
9954   // CHECK:       [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9955   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9956   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9957   return _mm512_maskz_max_epu64 (__M,__A,__B);
9958 }
9959 
test_mm512_max_epu32(__m512i __A,__m512i __B)9960 __m512i test_mm512_max_epu32 (__m512i __A, __m512i __B)
9961 {
9962   // CHECK-LABEL: @test_mm512_max_epu32
9963   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9964   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9965   return _mm512_max_epu32 (__A,__B);
9966 }
9967 
test_mm512_mask_max_epu32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9968 __m512i test_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9969 {
9970   // CHECK-LABEL: @test_mm512_mask_max_epu32
9971   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9972   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9973   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9974   return _mm512_mask_max_epu32 (__W,__M,__A,__B);
9975 }
9976 
test_mm512_maskz_max_epu32(__mmask16 __M,__m512i __A,__m512i __B)9977 __m512i test_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
9978 {
9979   // CHECK-LABEL: @test_mm512_maskz_max_epu32
9980   // CHECK:       [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9981   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9982   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9983   return _mm512_maskz_max_epu32 (__M,__A,__B);
9984 }
9985 
test_mm512_min_epi32(__m512i __A,__m512i __B)9986 __m512i test_mm512_min_epi32 (__m512i __A, __m512i __B)
9987 {
9988   // CHECK-LABEL: @test_mm512_min_epi32
9989   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9990   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9991   return _mm512_min_epi32 (__A,__B);
9992 }
9993 
test_mm512_mask_min_epi32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9994 __m512i test_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9995 {
9996   // CHECK-LABEL: @test_mm512_mask_min_epi32
9997   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9998   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9999   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10000   return _mm512_mask_min_epi32 (__W,__M,__A,__B);
10001 }
10002 
test_mm512_maskz_min_epi32(__mmask16 __M,__m512i __A,__m512i __B)10003 __m512i test_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
10004 {
10005   // CHECK-LABEL: @test_mm512_maskz_min_epi32
10006   // CHECK:       [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
10007   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
10008   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10009   return _mm512_maskz_min_epi32 (__M,__A,__B);
10010 }
10011 
test_mm512_min_epu32(__m512i __A,__m512i __B)10012 __m512i test_mm512_min_epu32 (__m512i __A, __m512i __B)
10013 {
10014   // CHECK-LABEL: @test_mm512_min_epu32
10015   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
10016   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
10017   return _mm512_min_epu32 (__A,__B);
10018 }
10019 
test_mm512_mask_min_epu32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)10020 __m512i test_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
10021 {
10022   // CHECK-LABEL: @test_mm512_mask_min_epu32
10023   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
10024   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
10025   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10026   return _mm512_mask_min_epu32 (__W,__M,__A,__B);
10027 }
10028 
test_mm512_maskz_min_epu32(__mmask16 __M,__m512i __A,__m512i __B)10029 __m512i test_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
10030 {
10031   // CHECK-LABEL: @test_mm512_maskz_min_epu32
10032   // CHECK:       [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
10033   // CHECK-NEXT:  [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
10034   // CHECK:       select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
10035   return _mm512_maskz_min_epu32 (__M,__A,__B);
10036 }
10037 
test_mm512_min_epi64(__m512i __A,__m512i __B)10038 __m512i test_mm512_min_epi64 (__m512i __A, __m512i __B)
10039 {
10040   // CHECK-LABEL: @test_mm512_min_epi64
10041   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
10042   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10043   return _mm512_min_epi64 (__A,__B);
10044 }
10045 
test_mm512_mask_min_epi64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)10046 __m512i test_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10047 {
10048   // CHECK-LABEL: @test_mm512_mask_min_epi64
10049   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
10050   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10051   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10052   return _mm512_mask_min_epi64 (__W,__M,__A,__B);
10053 }
10054 
test_mm512_maskz_min_epi64(__mmask8 __M,__m512i __A,__m512i __B)10055 __m512i test_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
10056 {
10057   // CHECK-LABEL: @test_mm512_maskz_min_epi64
10058   // CHECK:       [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
10059   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10060   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10061   return _mm512_maskz_min_epi64 (__M,__A,__B);
10062 }
10063 
test_mm512_min_epu64(__m512i __A,__m512i __B)10064 __m512i test_mm512_min_epu64 (__m512i __A, __m512i __B)
10065 {
10066   // CHECK-LABEL: @test_mm512_min_epu64
10067   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10068   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10069   return _mm512_min_epu64 (__A,__B);
10070 }
10071 
test_mm512_mask_min_epu64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)10072 __m512i test_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10073 {
10074   // CHECK-LABEL: @test_mm512_mask_min_epu64
10075   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10076   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10077   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10078   return _mm512_mask_min_epu64 (__W,__M,__A,__B);
10079 }
10080 
test_mm512_maskz_min_epu64(__mmask8 __M,__m512i __A,__m512i __B)10081 __m512i test_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
10082 {
10083   // CHECK-LABEL: @test_mm512_maskz_min_epu64
10084   // CHECK:       [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10085   // CHECK-NEXT:  [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10086   // CHECK:       select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10087   return _mm512_maskz_min_epu64 (__M,__A,__B);
10088 }
10089 
test_mm512_mask_set1_epi32(__m512i __O,__mmask16 __M,int __A)10090 __m512i test_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
10091 {
10092   // CHECK-LABEL: @test_mm512_mask_set1_epi32
10093   // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10094   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10095   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10096   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10097   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10098   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10099   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10100   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10101   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10102   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10103   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10104   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10105   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10106   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10107   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10108   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10109   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10110   return _mm512_mask_set1_epi32 ( __O, __M, __A);
10111 }
10112 
test_mm512_maskz_set1_epi32(__mmask16 __M,int __A)10113 __m512i test_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
10114 {
10115   // CHECK-LABEL: @test_mm512_maskz_set1_epi32
10116   // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10117   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10118   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10119   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10120   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10121   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10122   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10123   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10124   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10125   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10126   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10127   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10128   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10129   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10130   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10131   // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10132   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10133     return _mm512_maskz_set1_epi32(__M, __A);
10134 }
10135 
10136 
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)10137 __m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59,
10138     char e58, char e57, char e56, char e55, char e54, char e53, char e52,
10139     char e51, char e50, char e49, char e48, char e47, char e46, char e45,
10140     char e44, char e43, char e42, char e41, char e40, char e39, char e38,
10141     char e37, char e36, char e35, char e34, char e33, char e32, char e31,
10142     char e30, char e29, char e28, char e27, char e26, char e25, char e24,
10143     char e23, char e22, char e21, char e20, char e19, char e18, char e17,
10144     char e16, char e15, char e14, char e13, char e12, char e11, char e10,
10145     char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2,
10146     char e1, char e0) {
10147 
10148   //CHECK-LABEL: @test_mm512_set_epi8
10149   //CHECK: load i8, i8* %{{.*}}, align 1
10150   //CHECK: load i8, i8* %{{.*}}, align 1
10151   //CHECK: load i8, i8* %{{.*}}, align 1
10152   //CHECK: load i8, i8* %{{.*}}, align 1
10153   //CHECK: load i8, i8* %{{.*}}, align 1
10154   //CHECK: load i8, i8* %{{.*}}, align 1
10155   //CHECK: load i8, i8* %{{.*}}, align 1
10156   //CHECK: load i8, i8* %{{.*}}, align 1
10157   //CHECK: load i8, i8* %{{.*}}, align 1
10158   //CHECK: load i8, i8* %{{.*}}, align 1
10159   //CHECK: load i8, i8* %{{.*}}, align 1
10160   //CHECK: load i8, i8* %{{.*}}, align 1
10161   //CHECK: load i8, i8* %{{.*}}, align 1
10162   //CHECK: load i8, i8* %{{.*}}, align 1
10163   //CHECK: load i8, i8* %{{.*}}, align 1
10164   //CHECK: load i8, i8* %{{.*}}, align 1
10165   //CHECK: load i8, i8* %{{.*}}, align 1
10166   //CHECK: load i8, i8* %{{.*}}, align 1
10167   //CHECK: load i8, i8* %{{.*}}, align 1
10168   //CHECK: load i8, i8* %{{.*}}, align 1
10169   //CHECK: load i8, i8* %{{.*}}, align 1
10170   //CHECK: load i8, i8* %{{.*}}, align 1
10171   //CHECK: load i8, i8* %{{.*}}, align 1
10172   //CHECK: load i8, i8* %{{.*}}, align 1
10173   //CHECK: load i8, i8* %{{.*}}, align 1
10174   //CHECK: load i8, i8* %{{.*}}, align 1
10175   //CHECK: load i8, i8* %{{.*}}, align 1
10176   //CHECK: load i8, i8* %{{.*}}, align 1
10177   //CHECK: load i8, i8* %{{.*}}, align 1
10178   //CHECK: load i8, i8* %{{.*}}, align 1
10179   //CHECK: load i8, i8* %{{.*}}, align 1
10180   //CHECK: load i8, i8* %{{.*}}, align 1
10181   //CHECK: load i8, i8* %{{.*}}, align 1
10182   //CHECK: load i8, i8* %{{.*}}, align 1
10183   //CHECK: load i8, i8* %{{.*}}, align 1
10184   //CHECK: load i8, i8* %{{.*}}, align 1
10185   //CHECK: load i8, i8* %{{.*}}, align 1
10186   //CHECK: load i8, i8* %{{.*}}, align 1
10187   //CHECK: load i8, i8* %{{.*}}, align 1
10188   //CHECK: load i8, i8* %{{.*}}, align 1
10189   //CHECK: load i8, i8* %{{.*}}, align 1
10190   //CHECK: load i8, i8* %{{.*}}, align 1
10191   //CHECK: load i8, i8* %{{.*}}, align 1
10192   //CHECK: load i8, i8* %{{.*}}, align 1
10193   //CHECK: load i8, i8* %{{.*}}, align 1
10194   //CHECK: load i8, i8* %{{.*}}, align 1
10195   //CHECK: load i8, i8* %{{.*}}, align 1
10196   //CHECK: load i8, i8* %{{.*}}, align 1
10197   //CHECK: load i8, i8* %{{.*}}, align 1
10198   //CHECK: load i8, i8* %{{.*}}, align 1
10199   //CHECK: load i8, i8* %{{.*}}, align 1
10200   //CHECK: load i8, i8* %{{.*}}, align 1
10201   //CHECK: load i8, i8* %{{.*}}, align 1
10202   //CHECK: load i8, i8* %{{.*}}, align 1
10203   //CHECK: load i8, i8* %{{.*}}, align 1
10204   //CHECK: load i8, i8* %{{.*}}, align 1
10205   //CHECK: load i8, i8* %{{.*}}, align 1
10206   //CHECK: load i8, i8* %{{.*}}, align 1
10207   //CHECK: load i8, i8* %{{.*}}, align 1
10208   //CHECK: load i8, i8* %{{.*}}, align 1
10209   //CHECK: load i8, i8* %{{.*}}, align 1
10210   //CHECK: load i8, i8* %{{.*}}, align 1
10211   //CHECK: load i8, i8* %{{.*}}, align 1
10212   //CHECK: load i8, i8* %{{.*}}, align 1
10213   return _mm512_set_epi8(e63, e62, e61, e60, e59, e58, e57, e56, e55, e54,
10214       e53, e52, e51, e50, e49, e48,e47, e46, e45, e44, e43, e42, e41, e40,
10215       e39, e38, e37, e36, e35, e34, e33, e32,e31, e30, e29, e28, e27, e26,
10216       e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12,
10217       e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0);
10218 }
10219 
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)10220 __m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28,
10221     short e27, short e26, short e25, short e24, short e23, short e22,
10222     short e21, short e20, short e19, short e18, short e17,
10223     short e16, short e15, short e14, short e13, short e12,
10224     short e11, short e10, short e9, short e8, short e7,
10225     short e6, short e5, short e4, short e3, short e2, short e1, short e0) {
10226   //CHECK-LABEL: @test_mm512_set_epi16
10227   //CHECK: insertelement{{.*}}i32 0
10228   //CHECK: insertelement{{.*}}i32 1
10229   //CHECK: insertelement{{.*}}i32 2
10230   //CHECK: insertelement{{.*}}i32 3
10231   //CHECK: insertelement{{.*}}i32 4
10232   //CHECK: insertelement{{.*}}i32 5
10233   //CHECK: insertelement{{.*}}i32 6
10234   //CHECK: insertelement{{.*}}i32 7
10235   //CHECK: insertelement{{.*}}i32 8
10236   //CHECK: insertelement{{.*}}i32 9
10237   //CHECK: insertelement{{.*}}i32 10
10238   //CHECK: insertelement{{.*}}i32 11
10239   //CHECK: insertelement{{.*}}i32 12
10240   //CHECK: insertelement{{.*}}i32 13
10241   //CHECK: insertelement{{.*}}i32 14
10242   //CHECK: insertelement{{.*}}i32 15
10243   //CHECK: insertelement{{.*}}i32 16
10244   //CHECK: insertelement{{.*}}i32 17
10245   //CHECK: insertelement{{.*}}i32 18
10246   //CHECK: insertelement{{.*}}i32 19
10247   //CHECK: insertelement{{.*}}i32 20
10248   //CHECK: insertelement{{.*}}i32 21
10249   //CHECK: insertelement{{.*}}i32 22
10250   //CHECK: insertelement{{.*}}i32 23
10251   //CHECK: insertelement{{.*}}i32 24
10252   //CHECK: insertelement{{.*}}i32 25
10253   //CHECK: insertelement{{.*}}i32 26
10254   //CHECK: insertelement{{.*}}i32 27
10255   //CHECK: insertelement{{.*}}i32 28
10256   //CHECK: insertelement{{.*}}i32 29
10257   //CHECK: insertelement{{.*}}i32 30
10258   //CHECK: insertelement{{.*}}i32 31
10259   return _mm512_set_epi16(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22,
10260       e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7,
10261       e6, e5, e4, e3, e2, e1, e0);
10262 
10263 }
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)10264 __m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D,
10265                int __E, int __F, int __G, int __H,
10266                int __I, int __J, int __K, int __L,
10267                int __M, int __N, int __O, int __P)
10268 {
10269  //CHECK-LABEL: @test_mm512_set_epi32
10270  //CHECK: insertelement{{.*}}i32 0
10271  //CHECK: insertelement{{.*}}i32 1
10272  //CHECK: insertelement{{.*}}i32 2
10273  //CHECK: insertelement{{.*}}i32 3
10274  //CHECK: insertelement{{.*}}i32 4
10275  //CHECK: insertelement{{.*}}i32 5
10276  //CHECK: insertelement{{.*}}i32 6
10277  //CHECK: insertelement{{.*}}i32 7
10278  //CHECK: insertelement{{.*}}i32 8
10279  //CHECK: insertelement{{.*}}i32 9
10280  //CHECK: insertelement{{.*}}i32 10
10281  //CHECK: insertelement{{.*}}i32 11
10282  //CHECK: insertelement{{.*}}i32 12
10283  //CHECK: insertelement{{.*}}i32 13
10284  //CHECK: insertelement{{.*}}i32 14
10285  //CHECK: insertelement{{.*}}i32 15
10286  return _mm512_set_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
10287               __I, __J, __K, __L,__M, __N, __O, __P);
10288 }
10289 
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)10290 __m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D,
10291                int __E, int __F, int __G, int __H,
10292                int __I, int __J, int __K, int __L,
10293                int __M, int __N, int __O, int __P)
10294 {
10295  //CHECK-LABEL: @test_mm512_setr_epi32
10296  //CHECK: load{{.*}}%{{.*}}, align 4
10297  //CHECK: load{{.*}}%{{.*}}, align 4
10298  //CHECK: load{{.*}}%{{.*}}, align 4
10299  //CHECK: load{{.*}}%{{.*}}, align 4
10300  //CHECK: load{{.*}}%{{.*}}, align 4
10301  //CHECK: load{{.*}}%{{.*}}, align 4
10302  //CHECK: load{{.*}}%{{.*}}, align 4
10303  //CHECK: load{{.*}}%{{.*}}, align 4
10304  //CHECK: load{{.*}}%{{.*}}, align 4
10305  //CHECK: load{{.*}}%{{.*}}, align 4
10306  //CHECK: load{{.*}}%{{.*}}, align 4
10307  //CHECK: load{{.*}}%{{.*}}, align 4
10308  //CHECK: load{{.*}}%{{.*}}, align 4
10309  //CHECK: load{{.*}}%{{.*}}, align 4
10310  //CHECK: load{{.*}}%{{.*}}, align 4
10311  //CHECK: load{{.*}}%{{.*}}, align 4
10312  //CHECK: insertelement{{.*}}i32 0
10313  //CHECK: insertelement{{.*}}i32 1
10314  //CHECK: insertelement{{.*}}i32 2
10315  //CHECK: insertelement{{.*}}i32 3
10316  //CHECK: insertelement{{.*}}i32 4
10317  //CHECK: insertelement{{.*}}i32 5
10318  //CHECK: insertelement{{.*}}i32 6
10319  //CHECK: insertelement{{.*}}i32 7
10320  //CHECK: insertelement{{.*}}i32 8
10321  //CHECK: insertelement{{.*}}i32 9
10322  //CHECK: insertelement{{.*}}i32 10
10323  //CHECK: insertelement{{.*}}i32 11
10324  //CHECK: insertelement{{.*}}i32 12
10325  //CHECK: insertelement{{.*}}i32 13
10326  //CHECK: insertelement{{.*}}i32 14
10327  //CHECK: insertelement{{.*}}i32 15
10328  return _mm512_setr_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
10329               __I, __J, __K, __L,__M, __N, __O, __P);
10330 }
10331 
test_mm512_mask_set1_epi64(__m512i __O,__mmask8 __M,long long __A)10332 __m512i test_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
10333 {
10334   // CHECK-LABEL: @test_mm512_mask_set1_epi64
10335   // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10336   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10337   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10338   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10339   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10340   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10341   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10342   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10343   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10344   return _mm512_mask_set1_epi64 (__O, __M, __A);
10345 }
10346 
test_mm512_maskz_set1_epi64(__mmask8 __M,long long __A)10347 __m512i test_mm512_maskz_set1_epi64 (__mmask8 __M, long long __A)
10348 {
10349   // CHECK-LABEL: @test_mm512_maskz_set1_epi64
10350   // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10351   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10352   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10353   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10354   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10355   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10356   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10357   // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10358   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10359   return _mm512_maskz_set1_epi64 (__M, __A);
10360 }
10361 
10362 
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)10363 __m512i test_mm512_set_epi64 (long long __A, long long __B, long long __C,
10364                               long long __D, long long __E, long long __F,
10365                               long long __G, long long __H)
10366 {
10367     //CHECK-LABEL: @test_mm512_set_epi64
10368     //CHECK: insertelement{{.*}}i32 0
10369     //CHECK: insertelement{{.*}}i32 1
10370     //CHECK: insertelement{{.*}}i32 2
10371     //CHECK: insertelement{{.*}}i32 3
10372     //CHECK: insertelement{{.*}}i32 4
10373     //CHECK: insertelement{{.*}}i32 5
10374     //CHECK: insertelement{{.*}}i32 6
10375     //CHECK: insertelement{{.*}}i32 7
10376   return _mm512_set_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
10377 }
10378 
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)10379 __m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C,
10380                               long long __D, long long __E, long long __F,
10381                               long long __G, long long __H)
10382 {
10383     //CHECK-LABEL: @test_mm512_setr_epi64
10384     //CHECK: load{{.*}}%{{.*}}, align 8
10385     //CHECK: load{{.*}}%{{.*}}, align 8
10386     //CHECK: load{{.*}}%{{.*}}, align 8
10387     //CHECK: load{{.*}}%{{.*}}, align 8
10388     //CHECK: load{{.*}}%{{.*}}, align 8
10389     //CHECK: load{{.*}}%{{.*}}, align 8
10390     //CHECK: load{{.*}}%{{.*}}, align 8
10391     //CHECK: load{{.*}}%{{.*}}, align 8
10392     //CHECK: insertelement{{.*}}i32 0
10393     //CHECK: insertelement{{.*}}i32 1
10394     //CHECK: insertelement{{.*}}i32 2
10395     //CHECK: insertelement{{.*}}i32 3
10396     //CHECK: insertelement{{.*}}i32 4
10397     //CHECK: insertelement{{.*}}i32 5
10398     //CHECK: insertelement{{.*}}i32 6
10399     //CHECK: insertelement{{.*}}i32 7
10400   return _mm512_setr_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
10401 }
10402 
test_mm512_set_pd(double __A,double __B,double __C,double __D,double __E,double __F,double __G,double __H)10403 __m512d test_mm512_set_pd (double __A, double __B, double __C, double __D,
10404                            double __E, double __F, double __G, double __H)
10405 {
10406     //CHECK-LABEL: @test_mm512_set_pd
10407     //CHECK: insertelement{{.*}}i32 0
10408     //CHECK: insertelement{{.*}}i32 1
10409     //CHECK: insertelement{{.*}}i32 2
10410     //CHECK: insertelement{{.*}}i32 3
10411     //CHECK: insertelement{{.*}}i32 4
10412     //CHECK: insertelement{{.*}}i32 5
10413     //CHECK: insertelement{{.*}}i32 6
10414     //CHECK: insertelement{{.*}}i32 7
10415   return _mm512_set_pd( __A, __B, __C, __D, __E, __F, __G, __H);
10416 }
10417 
test_mm512_setr_pd(double __A,double __B,double __C,double __D,double __E,double __F,double __G,double __H)10418 __m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D,
10419                            double __E, double __F, double __G, double __H)
10420 {
10421     //CHECK-LABEL: @test_mm512_setr_pd
10422     //CHECK: load{{.*}}%{{.*}}, align 8
10423     //CHECK: load{{.*}}%{{.*}}, align 8
10424     //CHECK: load{{.*}}%{{.*}}, align 8
10425     //CHECK: load{{.*}}%{{.*}}, align 8
10426     //CHECK: load{{.*}}%{{.*}}, align 8
10427     //CHECK: load{{.*}}%{{.*}}, align 8
10428     //CHECK: load{{.*}}%{{.*}}, align 8
10429     //CHECK: load{{.*}}%{{.*}}, align 8
10430     //CHECK: insertelement{{.*}}i32 0
10431     //CHECK: insertelement{{.*}}i32 1
10432     //CHECK: insertelement{{.*}}i32 2
10433     //CHECK: insertelement{{.*}}i32 3
10434     //CHECK: insertelement{{.*}}i32 4
10435     //CHECK: insertelement{{.*}}i32 5
10436     //CHECK: insertelement{{.*}}i32 6
10437     //CHECK: insertelement{{.*}}i32 7
10438   return _mm512_setr_pd( __A, __B, __C, __D, __E, __F, __G, __H);
10439 }
10440 
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)10441 __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D,
10442                           float __E, float __F, float __G, float __H,
10443                           float __I, float __J, float __K, float __L,
10444                           float __M, float __N, float __O, float __P)
10445 {
10446     //CHECK-LABEL: @test_mm512_set_ps
10447     //CHECK: insertelement{{.*}}i32 0
10448     //CHECK: insertelement{{.*}}i32 1
10449     //CHECK: insertelement{{.*}}i32 2
10450     //CHECK: insertelement{{.*}}i32 3
10451     //CHECK: insertelement{{.*}}i32 4
10452     //CHECK: insertelement{{.*}}i32 5
10453     //CHECK: insertelement{{.*}}i32 6
10454     //CHECK: insertelement{{.*}}i32 7
10455     //CHECK: insertelement{{.*}}i32 8
10456     //CHECK: insertelement{{.*}}i32 9
10457     //CHECK: insertelement{{.*}}i32 10
10458     //CHECK: insertelement{{.*}}i32 11
10459     //CHECK: insertelement{{.*}}i32 12
10460     //CHECK: insertelement{{.*}}i32 13
10461     //CHECK: insertelement{{.*}}i32 14
10462     //CHECK: insertelement{{.*}}i32 15
10463     return _mm512_set_ps( __A, __B, __C, __D, __E, __F, __G, __H,
10464                           __I, __J, __K, __L, __M, __N, __O, __P);
10465 }
10466 
test_mm512_mask_abs_epi64(__m512i __W,__mmask8 __U,__m512i __A)10467 __m512i test_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
10468 {
10469   // CHECK-LABEL: @test_mm512_mask_abs_epi64
10470   // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]]
10471   // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer
10472   // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]]
10473   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}}
10474   return _mm512_mask_abs_epi64 (__W,__U,__A);
10475 }
10476 
test_mm512_maskz_abs_epi64(__mmask8 __U,__m512i __A)10477 __m512i test_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
10478 {
10479   // CHECK-LABEL: @test_mm512_maskz_abs_epi64
10480   // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]]
10481   // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer
10482   // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]]
10483   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}}
10484   return _mm512_maskz_abs_epi64 (__U,__A);
10485 }
10486 
test_mm512_mask_abs_epi32(__m512i __W,__mmask16 __U,__m512i __A)10487 __m512i test_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
10488 {
10489   // CHECK-LABEL: @test_mm512_mask_abs_epi32
10490   // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]]
10491   // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer
10492   // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]]
10493   // CHECK: [[TMP:%.*]] = bitcast <16 x i32> [[SEL]] to <8 x i64>
10494   // CHECK: [[SEL:%.*]] = bitcast <8 x i64> [[TMP]] to <16 x i32>
10495   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}}
10496   return _mm512_mask_abs_epi32 (__W,__U,__A);
10497 }
10498 
test_mm512_maskz_abs_epi32(__mmask16 __U,__m512i __A)10499 __m512i test_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
10500 {
10501   // CHECK-LABEL: @test_mm512_maskz_abs_epi32
10502   // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]]
10503   // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer
10504   // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]]
10505   // CHECK: [[TMP:%.*]] = bitcast <16 x i32> [[SEL]] to <8 x i64>
10506   // CHECK: [[SEL:%.*]] = bitcast <8 x i64> [[TMP]] to <16 x i32>
10507   // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}}
10508   return _mm512_maskz_abs_epi32 (__U,__A);
10509 }
10510 
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)10511 __m512 test_mm512_setr_ps (float __A, float __B, float __C, float __D,
10512                           float __E, float __F, float __G, float __H,
10513                           float __I, float __J, float __K, float __L,
10514                           float __M, float __N, float __O, float __P)
10515 {
10516     //CHECK-LABEL: @test_mm512_setr_ps
10517     //CHECK: load{{.*}}%{{.*}}, align 4
10518     //CHECK: load{{.*}}%{{.*}}, align 4
10519     //CHECK: load{{.*}}%{{.*}}, align 4
10520     //CHECK: load{{.*}}%{{.*}}, align 4
10521     //CHECK: load{{.*}}%{{.*}}, align 4
10522     //CHECK: load{{.*}}%{{.*}}, align 4
10523     //CHECK: load{{.*}}%{{.*}}, align 4
10524     //CHECK: load{{.*}}%{{.*}}, align 4
10525     //CHECK: load{{.*}}%{{.*}}, align 4
10526     //CHECK: load{{.*}}%{{.*}}, align 4
10527     //CHECK: load{{.*}}%{{.*}}, align 4
10528     //CHECK: load{{.*}}%{{.*}}, align 4
10529     //CHECK: load{{.*}}%{{.*}}, align 4
10530     //CHECK: load{{.*}}%{{.*}}, align 4
10531     //CHECK: load{{.*}}%{{.*}}, align 4
10532     //CHECK: load{{.*}}%{{.*}}, align 4
10533     //CHECK: insertelement{{.*}}i32 0
10534     //CHECK: insertelement{{.*}}i32 1
10535     //CHECK: insertelement{{.*}}i32 2
10536     //CHECK: insertelement{{.*}}i32 3
10537     //CHECK: insertelement{{.*}}i32 4
10538     //CHECK: insertelement{{.*}}i32 5
10539     //CHECK: insertelement{{.*}}i32 6
10540     //CHECK: insertelement{{.*}}i32 7
10541     //CHECK: insertelement{{.*}}i32 8
10542     //CHECK: insertelement{{.*}}i32 9
10543     //CHECK: insertelement{{.*}}i32 10
10544     //CHECK: insertelement{{.*}}i32 11
10545     //CHECK: insertelement{{.*}}i32 12
10546     //CHECK: insertelement{{.*}}i32 13
10547     //CHECK: insertelement{{.*}}i32 14
10548     //CHECK: insertelement{{.*}}i32 15
10549     return _mm512_setr_ps( __A, __B, __C, __D, __E, __F, __G, __H,
10550                           __I, __J, __K, __L, __M, __N, __O, __P);
10551 }
10552 
test_mm_cvtss_i32(__m128 A)10553 int test_mm_cvtss_i32(__m128 A) {
10554   // CHECK-LABEL: test_mm_cvtss_i32
10555   // CHECK: call i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}})
10556   return _mm_cvtss_i32(A);
10557 }
10558 
10559 #ifdef __x86_64__
test_mm_cvtss_i64(__m128 A)10560 long long test_mm_cvtss_i64(__m128 A) {
10561   // CHECK-LABEL: test_mm_cvtss_i64
10562   // CHECK: call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %{{.*}})
10563   return _mm_cvtss_i64(A);
10564 }
10565 #endif
10566 
test_mm_cvti32_sd(__m128d A,int B)10567 __m128d test_mm_cvti32_sd(__m128d A, int B) {
10568   // CHECK-LABEL: test_mm_cvti32_sd
10569   // CHECK: sitofp i32 %{{.*}} to double
10570   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10571   return _mm_cvti32_sd(A, B);
10572 }
10573 
10574 #ifdef __x86_64__
test_mm_cvti64_sd(__m128d A,long long B)10575 __m128d test_mm_cvti64_sd(__m128d A, long long B) {
10576   // CHECK-LABEL: test_mm_cvti64_sd
10577   // CHECK: sitofp i64 %{{.*}} to double
10578   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10579   return _mm_cvti64_sd(A, B);
10580 }
10581 #endif
10582 
test_mm_cvti32_ss(__m128 A,int B)10583 __m128 test_mm_cvti32_ss(__m128 A, int B) {
10584   // CHECK-LABEL: test_mm_cvti32_ss
10585   // CHECK: sitofp i32 %{{.*}} to float
10586   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10587   return _mm_cvti32_ss(A, B);
10588 }
10589 
10590 #ifdef __x86_64__
test_mm_cvti64_ss(__m128 A,long long B)10591 __m128 test_mm_cvti64_ss(__m128 A, long long B) {
10592   // CHECK-LABEL: test_mm_cvti64_ss
10593   // CHECK: sitofp i64 %{{.*}} to float
10594   // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10595   return _mm_cvti64_ss(A, B);
10596 }
10597 #endif
10598 
test_mm_cvtsd_i32(__m128d A)10599 int test_mm_cvtsd_i32(__m128d A) {
10600   // CHECK-LABEL: test_mm_cvtsd_i32
10601   // CHECK: call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %{{.*}})
10602   return _mm_cvtsd_i32(A);
10603 }
10604 
10605 #ifdef __x86_64__
test_mm_cvtsd_i64(__m128d A)10606 long long test_mm_cvtsd_i64(__m128d A) {
10607   // CHECK-LABEL: test_mm_cvtsd_i64
10608   // CHECK: call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %{{.*}})
10609   return _mm_cvtsd_i64(A);
10610 }
10611 #endif
10612 
test_mm_mask_cvtss_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128 __B)10613 __m128d test_mm_mask_cvtss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
10614   // CHECK-LABEL: @test_mm_mask_cvtss_sd
10615   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10616   return _mm_mask_cvtss_sd(__W, __U, __A, __B);
10617 }
10618 
test_mm_maskz_cvtss_sd(__mmask8 __U,__m128d __A,__m128 __B)10619 __m128d test_mm_maskz_cvtss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
10620   // CHECK-LABEL: @test_mm_maskz_cvtss_sd
10621   // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10622   return _mm_maskz_cvtss_sd( __U, __A, __B);
10623 }
10624 
test_mm_mask_cvtsd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128d __B)10625 __m128 test_mm_mask_cvtsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
10626   // CHECK-LABEL: @test_mm_mask_cvtsd_ss
10627   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10628   return _mm_mask_cvtsd_ss(__W, __U, __A, __B);
10629 }
10630 
test_mm_maskz_cvtsd_ss(__mmask8 __U,__m128 __A,__m128d __B)10631 __m128 test_mm_maskz_cvtsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
10632   // CHECK-LABEL: @test_mm_maskz_cvtsd_ss
10633   // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10634   return _mm_maskz_cvtsd_ss(__U, __A, __B);
10635 }
10636 
10637 
test_mm512_setzero_epi32()10638 __m512i test_mm512_setzero_epi32()
10639 {
10640   // CHECK-LABEL: @test_mm512_setzero_epi32
10641   // CHECK: zeroinitializer
10642   return _mm512_setzero_epi32();
10643 }
10644 
test_mm512_setzero()10645 __m512 test_mm512_setzero()
10646 {
10647   // CHECK-LABEL: @test_mm512_setzero
10648   // CHECK: zeroinitializer
10649   return _mm512_setzero();
10650 }
10651 
test_mm512_setzero_si512()10652 __m512i test_mm512_setzero_si512()
10653 {
10654   // CHECK-LABEL: @test_mm512_setzero_si512
10655   // CHECK: zeroinitializer
10656   return _mm512_setzero_si512();
10657 }
10658 
test_mm512_setzero_ps()10659 __m512 test_mm512_setzero_ps()
10660 {
10661   // CHECK-LABEL: @test_mm512_setzero_ps
10662   // CHECK: zeroinitializer
10663   return _mm512_setzero_ps();
10664 }
10665 
test_mm512_setzero_pd()10666 __m512d test_mm512_setzero_pd()
10667 {
10668   // CHECK-LABEL: @test_mm512_setzero_pd
10669   // CHECK: zeroinitializer
10670   return _mm512_setzero_pd();
10671 }
10672 
test_mm512_int2mask(int __a)10673 __mmask16 test_mm512_int2mask(int __a)
10674 {
10675   // CHECK-LABEL: test_mm512_int2mask
10676   // CHECK: trunc i32 %{{.*}} to i16
10677   return _mm512_int2mask(__a);
10678 }
10679 
test_mm512_mask2int(__mmask16 __a)10680 int test_mm512_mask2int(__mmask16 __a)
10681 {
10682   // CHECK-LABEL: test_mm512_mask2int
10683   // CHECK: zext i16 %{{.*}} to i32
10684   return _mm512_mask2int(__a);
10685 }
10686 
test_mm_mask_move_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)10687 __m128 test_mm_mask_move_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
10688 {
10689   // CHECK-LABEL: @test_mm_mask_move_ss
10690   // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10691   // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10692   // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10693   // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10694   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10695   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10696   // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10697   // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10698   return _mm_mask_move_ss ( __W,  __U,  __A,  __B);
10699 }
10700 
test_mm_maskz_move_ss(__mmask8 __U,__m128 __A,__m128 __B)10701 __m128 test_mm_maskz_move_ss (__mmask8 __U, __m128 __A, __m128 __B)
10702 {
10703   // CHECK-LABEL: @test_mm_maskz_move_ss
10704   // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10705   // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10706   // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10707   // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10708   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10709   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10710   // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10711   // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10712   return _mm_maskz_move_ss (__U, __A, __B);
10713 }
10714 
test_mm_mask_move_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)10715 __m128d test_mm_mask_move_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
10716 {
10717   // CHECK-LABEL: @test_mm_mask_move_sd
10718   // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10719   // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10720   // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10721   // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10722   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10723   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10724   // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, double [[A]], double [[B]]
10725   // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10726   return _mm_mask_move_sd ( __W,  __U,  __A,  __B);
10727 }
10728 
test_mm_maskz_move_sd(__mmask8 __U,__m128d __A,__m128d __B)10729 __m128d test_mm_maskz_move_sd (__mmask8 __U, __m128d __A, __m128d __B)
10730 {
10731   // CHECK-LABEL: @test_mm_maskz_move_sd
10732   // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10733   // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10734   // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10735   // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10736   // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10737   // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10738   // CHECK-NEXT: [[SEL:%.*]] = select i1 %13, double [[A]], double [[B]]
10739   // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10740   return _mm_maskz_move_sd (__U, __A, __B);
10741 }
10742 
test_mm_mask_store_ss(float * __P,__mmask8 __U,__m128 __A)10743 void test_mm_mask_store_ss(float * __P, __mmask8 __U, __m128 __A)
10744 {
10745   // CHECK-LABEL: @test_mm_mask_store_ss
10746   // CHECK: call void @llvm.masked.store.v4f32.p0v4f32(<4 x float> %{{.*}}, <4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}})
10747   _mm_mask_store_ss(__P, __U, __A);
10748 }
10749 
test_mm_mask_store_sd(double * __P,__mmask8 __U,__m128d __A)10750 void test_mm_mask_store_sd(double * __P, __mmask8 __U, __m128d __A)
10751 {
10752   // CHECK-LABEL: @test_mm_mask_store_sd
10753   // CHECK: call void @llvm.masked.store.v2f64.p0v2f64(<2 x double> %{{.*}}, <2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}})
10754   _mm_mask_store_sd(__P, __U, __A);
10755 }
10756 
test_mm_mask_load_ss(__m128 __A,__mmask8 __U,const float * __W)10757 __m128 test_mm_mask_load_ss(__m128 __A, __mmask8 __U, const float* __W)
10758 {
10759   // CHECK-LABEL: @test_mm_mask_load_ss
10760   // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
10761   return _mm_mask_load_ss(__A, __U, __W);
10762 }
10763 
test_mm_maskz_load_ss(__mmask8 __U,const float * __W)10764 __m128 test_mm_maskz_load_ss (__mmask8 __U, const float * __W)
10765 {
10766   // CHECK-LABEL: @test_mm_maskz_load_ss
10767   // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0v4f32(<4 x float>* %{{.*}}, i32 1, <4 x i1> %{{.*}}, <4 x float> %{{.*}})
10768   return _mm_maskz_load_ss (__U, __W);
10769 }
10770 
test_mm_mask_load_sd(__m128d __A,__mmask8 __U,const double * __W)10771 __m128d test_mm_mask_load_sd (__m128d __A, __mmask8 __U, const double * __W)
10772 {
10773   // CHECK-LABEL: @test_mm_mask_load_sd
10774   // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
10775   return _mm_mask_load_sd (__A, __U, __W);
10776 }
10777 
test_mm_maskz_load_sd(__mmask8 __U,const double * __W)10778 __m128d test_mm_maskz_load_sd (__mmask8 __U, const double * __W)
10779 {
10780   // CHECK-LABEL: @test_mm_maskz_load_sd
10781   // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0v2f64(<2 x double>* %{{.*}}, i32 1, <2 x i1> %{{.*}}, <2 x double> %{{.*}})
10782   return _mm_maskz_load_sd (__U, __W);
10783 }
10784 
test_mm512_abs_pd(__m512d a)10785 __m512d test_mm512_abs_pd(__m512d a){
10786   // CHECK-LABEL: @test_mm512_abs_pd
10787   // CHECK: and <8 x i64>
10788   return _mm512_abs_pd(a);
10789 }
10790 
test_mm512_mask_abs_pd(__m512d __W,__mmask8 __U,__m512d __A)10791 __m512d test_mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512d __A){
10792   // CHECK-LABEL: @test_mm512_mask_abs_pd
10793   // CHECK: %[[AND_RES:.*]] = and <8 x i64>
10794   // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
10795   // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
10796   return _mm512_mask_abs_pd (__W,__U,__A);
10797 }
10798 
test_mm512_abs_ps(__m512 a)10799 __m512 test_mm512_abs_ps(__m512 a){
10800   // CHECK-LABEL: @test_mm512_abs_ps
10801   // CHECK: and <16 x i32>
10802   return _mm512_abs_ps(a);
10803 }
10804 
test_mm512_mask_abs_ps(__m512 __W,__mmask16 __U,__m512 __A)10805 __m512 test_mm512_mask_abs_ps(__m512 __W, __mmask16 __U, __m512 __A){
10806   // CHECK-LABEL: @test_mm512_mask_abs_ps
10807   // CHECK: and <16 x i32>
10808   // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
10809   // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10810   return _mm512_mask_abs_ps( __W, __U, __A);
10811 }
10812 
test_mm512_zextpd128_pd512(__m128d A)10813 __m512d test_mm512_zextpd128_pd512(__m128d A) {
10814   // CHECK-LABEL: test_mm512_zextpd128_pd512
10815   // CHECK: store <2 x double> zeroinitializer
10816   // 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>
10817   return _mm512_zextpd128_pd512(A);
10818 }
10819 
test_mm512_zextpd256_pd512(__m256d A)10820 __m512d test_mm512_zextpd256_pd512(__m256d A) {
10821   // CHECK-LABEL: test_mm512_zextpd256_pd512
10822   // CHECK: store <4 x double> zeroinitializer
10823   // 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>
10824   return _mm512_zextpd256_pd512(A);
10825 }
10826 
test_mm512_zextps128_ps512(__m128 A)10827 __m512 test_mm512_zextps128_ps512(__m128 A) {
10828   // CHECK-LABEL: test_mm512_zextps128_ps512
10829   // CHECK: store <4 x float> zeroinitializer
10830   // 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>
10831   return _mm512_zextps128_ps512(A);
10832 }
10833 
test_mm512_zextps256_ps512(__m256 A)10834 __m512 test_mm512_zextps256_ps512(__m256 A) {
10835   // CHECK-LABEL: test_mm512_zextps256_ps512
10836   // CHECK: store <8 x float> zeroinitializer
10837   // 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>
10838   return _mm512_zextps256_ps512(A);
10839 }
10840 
test_mm512_zextsi128_si512(__m128i A)10841 __m512i test_mm512_zextsi128_si512(__m128i A) {
10842   // CHECK-LABEL: test_mm512_zextsi128_si512
10843   // CHECK: store <2 x i64> zeroinitializer
10844   // 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>
10845   return _mm512_zextsi128_si512(A);
10846 }
10847 
test_mm512_zextsi256_si512(__m256i A)10848 __m512i test_mm512_zextsi256_si512(__m256i A) {
10849   // CHECK-LABEL: test_mm512_zextsi256_si512
10850   // CHECK: store <4 x i64> zeroinitializer
10851   // 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>
10852   return _mm512_zextsi256_si512(A);
10853 }
10854