1 // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3 #include <immintrin.h>
4
test_mm512_sqrt_pd(__m512d a)5 __m512d test_mm512_sqrt_pd(__m512d a)
6 {
7 // CHECK-LABEL: @test_mm512_sqrt_pd
8 // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
9 return _mm512_sqrt_pd(a);
10 }
11
test_mm512_mask_sqrt_pd(__m512d __W,__mmask8 __U,__m512d __A)12 __m512d test_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
13 {
14 // CHECK-LABEL: @test_mm512_mask_sqrt_pd
15 // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
16 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
17 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
18 return _mm512_mask_sqrt_pd (__W,__U,__A);
19 }
20
test_mm512_maskz_sqrt_pd(__mmask8 __U,__m512d __A)21 __m512d test_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
22 {
23 // CHECK-LABEL: @test_mm512_maskz_sqrt_pd
24 // CHECK: call <8 x double> @llvm.sqrt.v8f64(<8 x double> %{{.*}})
25 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
26 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
27 return _mm512_maskz_sqrt_pd (__U,__A);
28 }
29
test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A)30 __m512d test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A)
31 {
32 // CHECK-LABEL: @test_mm512_mask_sqrt_round_pd
33 // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 8)
34 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
35 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
36 return _mm512_mask_sqrt_round_pd(__W,__U,__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
37 }
38
test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A)39 __m512d test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A)
40 {
41 // CHECK-LABEL: @test_mm512_maskz_sqrt_round_pd
42 // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 8)
43 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
44 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> {{.*}}
45 return _mm512_maskz_sqrt_round_pd(__U,__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
46 }
47
test_mm512_sqrt_round_pd(__m512d __A)48 __m512d test_mm512_sqrt_round_pd(__m512d __A)
49 {
50 // CHECK-LABEL: @test_mm512_sqrt_round_pd
51 // CHECK: call <8 x double> @llvm.x86.avx512.sqrt.pd.512(<8 x double> %{{.*}}, i32 8)
52 return _mm512_sqrt_round_pd(__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
53 }
54
test_mm512_sqrt_ps(__m512 a)55 __m512 test_mm512_sqrt_ps(__m512 a)
56 {
57 // CHECK-LABEL: @test_mm512_sqrt_ps
58 // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
59 return _mm512_sqrt_ps(a);
60 }
61
test_mm512_mask_sqrt_ps(__m512 __W,__mmask16 __U,__m512 __A)62 __m512 test_mm512_mask_sqrt_ps(__m512 __W, __mmask16 __U, __m512 __A)
63 {
64 // CHECK-LABEL: @test_mm512_mask_sqrt_ps
65 // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
66 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
67 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
68 return _mm512_mask_sqrt_ps( __W, __U, __A);
69 }
70
test_mm512_maskz_sqrt_ps(__mmask16 __U,__m512 __A)71 __m512 test_mm512_maskz_sqrt_ps( __mmask16 __U, __m512 __A)
72 {
73 // CHECK-LABEL: @test_mm512_maskz_sqrt_ps
74 // CHECK: call <16 x float> @llvm.sqrt.v16f32(<16 x float> %{{.*}})
75 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
76 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
77 return _mm512_maskz_sqrt_ps(__U ,__A);
78 }
79
test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A)80 __m512 test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A)
81 {
82 // CHECK-LABEL: @test_mm512_mask_sqrt_round_ps
83 // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 8)
84 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
85 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
86 return _mm512_mask_sqrt_round_ps(__W,__U,__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
87 }
88
test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A)89 __m512 test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A)
90 {
91 // CHECK-LABEL: @test_mm512_maskz_sqrt_round_ps
92 // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 8)
93 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
94 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> {{.*}}
95 return _mm512_maskz_sqrt_round_ps(__U,__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
96 }
97
test_mm512_sqrt_round_ps(__m512 __A)98 __m512 test_mm512_sqrt_round_ps(__m512 __A)
99 {
100 // CHECK-LABEL: @test_mm512_sqrt_round_ps
101 // CHECK: call <16 x float> @llvm.x86.avx512.sqrt.ps.512(<16 x float> %{{.*}}, i32 8)
102 return _mm512_sqrt_round_ps(__A,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
103 }
104
test_mm512_rsqrt14_pd(__m512d a)105 __m512d test_mm512_rsqrt14_pd(__m512d a)
106 {
107 // CHECK-LABEL: @test_mm512_rsqrt14_pd
108 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
109 return _mm512_rsqrt14_pd(a);
110 }
111
test_mm512_mask_rsqrt14_pd(__m512d __W,__mmask8 __U,__m512d __A)112 __m512d test_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
113 {
114 // CHECK-LABEL: @test_mm512_mask_rsqrt14_pd
115 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
116 return _mm512_mask_rsqrt14_pd (__W,__U,__A);
117 }
118
test_mm512_maskz_rsqrt14_pd(__mmask8 __U,__m512d __A)119 __m512d test_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
120 {
121 // CHECK-LABEL: @test_mm512_maskz_rsqrt14_pd
122 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512
123 return _mm512_maskz_rsqrt14_pd (__U,__A);
124 }
125
test_mm512_rsqrt14_ps(__m512 a)126 __m512 test_mm512_rsqrt14_ps(__m512 a)
127 {
128 // CHECK-LABEL: @test_mm512_rsqrt14_ps
129 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
130 return _mm512_rsqrt14_ps(a);
131 }
132
test_mm512_mask_rsqrt14_ps(__m512 __W,__mmask16 __U,__m512 __A)133 __m512 test_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
134 {
135 // CHECK-LABEL: @test_mm512_mask_rsqrt14_ps
136 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
137 return _mm512_mask_rsqrt14_ps (__W,__U,__A);
138 }
139
test_mm512_maskz_rsqrt14_ps(__mmask16 __U,__m512 __A)140 __m512 test_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
141 {
142 // CHECK-LABEL: @test_mm512_maskz_rsqrt14_ps
143 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512
144 return _mm512_maskz_rsqrt14_ps (__U,__A);
145 }
146
test_mm512_add_ps(__m512 a,__m512 b)147 __m512 test_mm512_add_ps(__m512 a, __m512 b)
148 {
149 // CHECK-LABEL: @test_mm512_add_ps
150 // CHECK: fadd <16 x float>
151 return _mm512_add_ps(a, b);
152 }
153
test_mm512_add_pd(__m512d a,__m512d b)154 __m512d test_mm512_add_pd(__m512d a, __m512d b)
155 {
156 // CHECK-LABEL: @test_mm512_add_pd
157 // CHECK: fadd <8 x double>
158 return _mm512_add_pd(a, b);
159 }
160
test_mm512_mul_ps(__m512 a,__m512 b)161 __m512 test_mm512_mul_ps(__m512 a, __m512 b)
162 {
163 // CHECK-LABEL: @test_mm512_mul_ps
164 // CHECK: fmul <16 x float>
165 return _mm512_mul_ps(a, b);
166 }
167
test_mm512_mul_pd(__m512d a,__m512d b)168 __m512d test_mm512_mul_pd(__m512d a, __m512d b)
169 {
170 // CHECK-LABEL: @test_mm512_mul_pd
171 // CHECK: fmul <8 x double>
172 return _mm512_mul_pd(a, b);
173 }
174
test_mm512_storeu_si512(void * __P,__m512i __A)175 void test_mm512_storeu_si512 (void *__P, __m512i __A)
176 {
177 // CHECK-LABEL: @test_mm512_storeu_si512
178 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
179 // CHECK-NEXT: ret void
180 _mm512_storeu_si512 ( __P,__A);
181 }
182
test_mm512_storeu_ps(void * p,__m512 a)183 void test_mm512_storeu_ps(void *p, __m512 a)
184 {
185 // CHECK-LABEL: @test_mm512_storeu_ps
186 // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 1{{$}}
187 // CHECK-NEXT: ret void
188 _mm512_storeu_ps(p, a);
189 }
190
test_mm512_storeu_pd(void * p,__m512d a)191 void test_mm512_storeu_pd(void *p, __m512d a)
192 {
193 // CHECK-LABEL: @test_mm512_storeu_pd
194 // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 1{{$}}
195 // CHECK-NEXT: ret void
196 _mm512_storeu_pd(p, a);
197 }
198
test_mm512_mask_store_ps(void * p,__m512 a,__mmask16 m)199 void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m)
200 {
201 // CHECK-LABEL: @test_mm512_mask_store_ps
202 // CHECK: @llvm.masked.store.v16f32.p0v16f32(<16 x float> %{{.*}}, <16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
203 _mm512_mask_store_ps(p, m, a);
204 }
205
test_mm512_store_si512(void * __P,__m512i __A)206 void test_mm512_store_si512 (void *__P, __m512i __A)
207 {
208 // CHECK-LABEL: @test_mm512_store_si512
209 // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
210 // CHECK: [[SI512_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
211 // CHECK: bitcast i8* [[SI512_3]] to <8 x i64>*
212 // CHECK: store <8 x i64>
213 _mm512_store_si512 ( __P,__A);
214 }
215
test_mm512_store_epi32(void * __P,__m512i __A)216 void test_mm512_store_epi32 (void *__P, __m512i __A)
217 {
218 // CHECK-LABEL: @test_mm512_store_epi32
219 // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
220 // CHECK: [[Si32_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
221 // CHECK: bitcast i8* [[Si32_3]] to <8 x i64>*
222 // CHECK: store <8 x i64>
223 _mm512_store_epi32 ( __P,__A);
224 }
225
test_mm512_store_epi64(void * __P,__m512i __A)226 void test_mm512_store_epi64 (void *__P, __m512i __A)
227 {
228 // CHECK-LABEL: @test_mm512_store_epi64
229 // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64
230 // CHECK: [[SI64_3:%.+]] = load i8*, i8** %__P.addr.i, align 8
231 // CHECK: bitcast i8* [[SI64_3]] to <8 x i64>*
232 // CHECK: store <8 x i64>
233 _mm512_store_epi64 ( __P,__A);
234 }
235
test_mm512_store_ps(void * p,__m512 a)236 void test_mm512_store_ps(void *p, __m512 a)
237 {
238 // CHECK-LABEL: @test_mm512_store_ps
239 // CHECK: store <16 x float>
240 _mm512_store_ps(p, a);
241 }
242
test_mm512_store_pd(void * p,__m512d a)243 void test_mm512_store_pd(void *p, __m512d a)
244 {
245 // CHECK-LABEL: @test_mm512_store_pd
246 // CHECK: store <8 x double>
247 _mm512_store_pd(p, a);
248 }
249
test_mm512_mask_store_pd(void * p,__m512d a,__mmask8 m)250 void test_mm512_mask_store_pd(void *p, __m512d a, __mmask8 m)
251 {
252 // CHECK-LABEL: @test_mm512_mask_store_pd
253 // CHECK: @llvm.masked.store.v8f64.p0v8f64(<8 x double> %{{.*}}, <8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
254 _mm512_mask_store_pd(p, m, a);
255 }
256
test_mm512_storeu_epi32(void * __P,__m512i __A)257 void test_mm512_storeu_epi32(void *__P, __m512i __A) {
258 // CHECK-LABEL: @test_mm512_storeu_epi32
259 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
260 return _mm512_storeu_epi32(__P, __A);
261 }
262
test_mm512_mask_storeu_epi32(void * __P,__mmask16 __U,__m512i __A)263 void test_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A) {
264 // CHECK-LABEL: @test_mm512_mask_storeu_epi32
265 // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}})
266 return _mm512_mask_storeu_epi32(__P, __U, __A);
267 }
268
test_mm512_storeu_epi64(void * __P,__m512i __A)269 void test_mm512_storeu_epi64(void *__P, __m512i __A) {
270 // CHECK-LABEL: @test_mm512_storeu_epi64
271 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 1{{$}}
272 return _mm512_storeu_epi64(__P, __A);
273 }
274
test_mm512_mask_storeu_epi64(void * __P,__mmask8 __U,__m512i __A)275 void test_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A) {
276 // CHECK-LABEL: @test_mm512_mask_storeu_epi64
277 // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}})
278 return _mm512_mask_storeu_epi64(__P, __U, __A);
279 }
280
test_mm512_loadu_si512(void * __P)281 __m512i test_mm512_loadu_si512 (void *__P)
282 {
283 // CHECK-LABEL: @test_mm512_loadu_si512
284 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
285 return _mm512_loadu_si512 ( __P);
286 }
287
test_mm512_loadu_epi32(void * __P)288 __m512i test_mm512_loadu_epi32 (void *__P)
289 {
290 // CHECK-LABEL: @test_mm512_loadu_epi32
291 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
292 return _mm512_loadu_epi32 (__P);
293 }
294
test_mm512_mask_loadu_epi32(__m512i __W,__mmask16 __U,void * __P)295 __m512i test_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void *__P)
296 {
297 // CHECK-LABEL: @test_mm512_mask_loadu_epi32
298 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
299 return _mm512_mask_loadu_epi32 (__W,__U, __P);
300 }
301
test_mm512_maskz_loadu_epi32(__mmask16 __U,void * __P)302 __m512i test_mm512_maskz_loadu_epi32 (__mmask16 __U, void *__P)
303 {
304 // CHECK-LABEL: @test_mm512_maskz_loadu_epi32
305 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
306 return _mm512_maskz_loadu_epi32 (__U, __P);
307 }
308
test_mm512_loadu_epi64(void * __P)309 __m512i test_mm512_loadu_epi64 (void *__P)
310 {
311 // CHECK-LABEL: @test_mm512_loadu_epi64
312 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 1{{$}}
313 return _mm512_loadu_epi64 (__P);
314 }
315
test_mm512_mask_loadu_epi64(__m512i __W,__mmask8 __U,void * __P)316 __m512i test_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void *__P)
317 {
318 // CHECK-LABEL: @test_mm512_mask_loadu_epi64
319 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
320 return _mm512_mask_loadu_epi64 (__W,__U, __P);
321 }
322
test_mm512_maskz_loadu_epi64(__mmask16 __U,void * __P)323 __m512i test_mm512_maskz_loadu_epi64 (__mmask16 __U, void *__P)
324 {
325 // CHECK-LABEL: @test_mm512_maskz_loadu_epi64
326 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
327 return _mm512_maskz_loadu_epi64 (__U, __P);
328 }
329
test_mm512_loadu_ps(void * p)330 __m512 test_mm512_loadu_ps(void *p)
331 {
332 // CHECK-LABEL: @test_mm512_loadu_ps
333 // CHECK: load <16 x float>, <16 x float>* {{.*}}, align 1{{$}}
334 return _mm512_loadu_ps(p);
335 }
336
test_mm512_mask_loadu_ps(__m512 __W,__mmask16 __U,void * __P)337 __m512 test_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void *__P)
338 {
339 // CHECK-LABEL: @test_mm512_mask_loadu_ps
340 // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
341 return _mm512_mask_loadu_ps (__W,__U, __P);
342 }
343
test_mm512_loadu_pd(void * p)344 __m512d test_mm512_loadu_pd(void *p)
345 {
346 // CHECK-LABEL: @test_mm512_loadu_pd
347 // CHECK: load <8 x double>, <8 x double>* {{.*}}, align 1{{$}}
348 return _mm512_loadu_pd(p);
349 }
350
test_mm512_mask_loadu_pd(__m512d __W,__mmask8 __U,void * __P)351 __m512d test_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void *__P)
352 {
353 // CHECK-LABEL: @test_mm512_mask_loadu_pd
354 // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
355 return _mm512_mask_loadu_pd (__W,__U, __P);
356 }
357
test_mm512_load_si512(void * __P)358 __m512i test_mm512_load_si512 (void *__P)
359 {
360 // CHECK-LABEL: @test_mm512_load_si512
361 // CHECK: [[LI512_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
362 // CHECK: [[LI512_2:%.+]] = bitcast i8* [[LI512_1]] to <8 x i64>*
363 // CHECK: load <8 x i64>, <8 x i64>* [[LI512_2]], align 64
364 return _mm512_load_si512 ( __P);
365 }
366
test_mm512_load_epi32(void * __P)367 __m512i test_mm512_load_epi32 (void *__P)
368 {
369 // CHECK-LABEL: @test_mm512_load_epi32
370 // CHECK: [[LI32_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
371 // CHECK: [[LI32_2:%.+]] = bitcast i8* [[LI32_1]] to <8 x i64>*
372 // CHECK: load <8 x i64>, <8 x i64>* [[LI32_2]], align 64
373 return _mm512_load_epi32 ( __P);
374 }
375
test_mm512_load_epi64(void * __P)376 __m512i test_mm512_load_epi64 (void *__P)
377 {
378 // CHECK-LABEL: @test_mm512_load_epi64
379 // CHECK: [[LI64_1:%.+]] = load i8*, i8** %__P.addr.i, align 8
380 // CHECK: [[LI64_2:%.+]] = bitcast i8* [[LI64_1]] to <8 x i64>*
381 // CHECK: load <8 x i64>, <8 x i64>* [[LI64_2]], align 64
382 return _mm512_load_epi64 ( __P);
383 }
384
test_mm512_load_ps(void * p)385 __m512 test_mm512_load_ps(void *p)
386 {
387 // CHECK-LABEL: @test_mm512_load_ps
388 // CHECK: load <16 x float>, <16 x float>* %{{.*}}, align 64
389 return _mm512_load_ps(p);
390 }
391
test_mm512_mask_load_ps(__m512 __W,__mmask16 __U,void * __P)392 __m512 test_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void *__P)
393 {
394 // CHECK-LABEL: @test_mm512_mask_load_ps
395 // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
396 return _mm512_mask_load_ps (__W,__U, __P);
397 }
398
test_mm512_maskz_load_ps(__mmask16 __U,void * __P)399 __m512 test_mm512_maskz_load_ps(__mmask16 __U, void *__P)
400 {
401 // CHECK-LABEL: @test_mm512_maskz_load_ps
402 // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
403 return _mm512_maskz_load_ps(__U, __P);
404 }
405
test_mm512_load_pd(void * p)406 __m512d test_mm512_load_pd(void *p)
407 {
408 // CHECK-LABEL: @test_mm512_load_pd
409 // CHECK: load <8 x double>, <8 x double>* %{{.*}}, align 64
410 return _mm512_load_pd(p);
411 }
412
test_mm512_mask_load_pd(__m512d __W,__mmask8 __U,void * __P)413 __m512d test_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void *__P)
414 {
415 // CHECK-LABEL: @test_mm512_mask_load_pd
416 // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
417 return _mm512_mask_load_pd (__W,__U, __P);
418 }
419
test_mm512_maskz_load_pd(__mmask8 __U,void * __P)420 __m512d test_mm512_maskz_load_pd(__mmask8 __U, void *__P)
421 {
422 // CHECK-LABEL: @test_mm512_maskz_load_pd
423 // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
424 return _mm512_maskz_load_pd(__U, __P);
425 }
426
test_mm512_set1_pd(double d)427 __m512d test_mm512_set1_pd(double d)
428 {
429 // CHECK-LABEL: @test_mm512_set1_pd
430 // CHECK: insertelement <8 x double> {{.*}}, i32 0
431 // CHECK: insertelement <8 x double> {{.*}}, i32 1
432 // CHECK: insertelement <8 x double> {{.*}}, i32 2
433 // CHECK: insertelement <8 x double> {{.*}}, i32 3
434 // CHECK: insertelement <8 x double> {{.*}}, i32 4
435 // CHECK: insertelement <8 x double> {{.*}}, i32 5
436 // CHECK: insertelement <8 x double> {{.*}}, i32 6
437 // CHECK: insertelement <8 x double> {{.*}}, i32 7
438 return _mm512_set1_pd(d);
439 }
440
test_mm512_knot(__mmask16 a)441 __mmask16 test_mm512_knot(__mmask16 a)
442 {
443 // CHECK-LABEL: @test_mm512_knot
444 // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
445 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
446 // CHECK: bitcast <16 x i1> [[NOT]] to i16
447 return _mm512_knot(a);
448 }
449
test_mm512_alignr_epi32(__m512i a,__m512i b)450 __m512i test_mm512_alignr_epi32(__m512i a, __m512i b)
451 {
452 // CHECK-LABEL: @test_mm512_alignr_epi32
453 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
454 return _mm512_alignr_epi32(a, b, 2);
455 }
456
test_mm512_mask_alignr_epi32(__m512i w,__mmask16 u,__m512i a,__m512i b)457 __m512i test_mm512_mask_alignr_epi32(__m512i w, __mmask16 u, __m512i a, __m512i b)
458 {
459 // CHECK-LABEL: @test_mm512_mask_alignr_epi32
460 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
461 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
462 return _mm512_mask_alignr_epi32(w, u, a, b, 2);
463 }
464
test_mm512_maskz_alignr_epi32(__mmask16 u,__m512i a,__m512i b)465 __m512i test_mm512_maskz_alignr_epi32( __mmask16 u, __m512i a, __m512i b)
466 {
467 // CHECK-LABEL: @test_mm512_maskz_alignr_epi32
468 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17>
469 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> {{.*}}
470 return _mm512_maskz_alignr_epi32(u, a, b, 2);
471 }
472
test_mm512_alignr_epi64(__m512i a,__m512i b)473 __m512i test_mm512_alignr_epi64(__m512i a, __m512i b)
474 {
475 // CHECK-LABEL: @test_mm512_alignr_epi64
476 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
477 return _mm512_alignr_epi64(a, b, 2);
478 }
479
test_mm512_mask_alignr_epi64(__m512i w,__mmask8 u,__m512i a,__m512i b)480 __m512i test_mm512_mask_alignr_epi64(__m512i w, __mmask8 u, __m512i a, __m512i b)
481 {
482 // CHECK-LABEL: @test_mm512_mask_alignr_epi64
483 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
484 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
485 return _mm512_mask_alignr_epi64(w, u, a, b, 2);
486 }
487
test_mm512_maskz_alignr_epi64(__mmask8 u,__m512i a,__m512i b)488 __m512i test_mm512_maskz_alignr_epi64( __mmask8 u, __m512i a, __m512i b)
489 {
490 // CHECK-LABEL: @test_mm512_maskz_alignr_epi64
491 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9>
492 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> {{.*}}
493 return _mm512_maskz_alignr_epi64(u, a, b, 2);
494 }
495
test_mm512_fmadd_round_pd(__m512d __A,__m512d __B,__m512d __C)496 __m512d test_mm512_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
497 // CHECK-LABEL: @test_mm512_fmadd_round_pd
498 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
499 return _mm512_fmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
500 }
501
test_mm512_mask_fmadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)502 __m512d test_mm512_mask_fmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
503 // CHECK-LABEL: @test_mm512_mask_fmadd_round_pd
504 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
505 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
506 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
507 return _mm512_mask_fmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
508 }
test_mm512_mask3_fmadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)509 __m512d test_mm512_mask3_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
510 // CHECK-LABEL: @test_mm512_mask3_fmadd_round_pd
511 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
512 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
513 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
514 return _mm512_mask3_fmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
515 }
test_mm512_maskz_fmadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)516 __m512d test_mm512_maskz_fmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
517 // CHECK-LABEL: @test_mm512_maskz_fmadd_round_pd
518 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
519 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
520 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
521 return _mm512_maskz_fmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
522 }
test_mm512_fmsub_round_pd(__m512d __A,__m512d __B,__m512d __C)523 __m512d test_mm512_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
524 // CHECK-LABEL: @test_mm512_fmsub_round_pd
525 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
526 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
527 return _mm512_fmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
528 }
test_mm512_mask_fmsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)529 __m512d test_mm512_mask_fmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
530 // CHECK-LABEL: @test_mm512_mask_fmsub_round_pd
531 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
532 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
533 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
534 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
535 return _mm512_mask_fmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
536 }
test_mm512_maskz_fmsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)537 __m512d test_mm512_maskz_fmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
538 // CHECK-LABEL: @test_mm512_maskz_fmsub_round_pd
539 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
540 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
541 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
542 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
543 return _mm512_maskz_fmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
544 }
test_mm512_fnmadd_round_pd(__m512d __A,__m512d __B,__m512d __C)545 __m512d test_mm512_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
546 // CHECK-LABEL: @test_mm512_fnmadd_round_pd
547 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
548 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
549 return _mm512_fnmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
550 }
test_mm512_mask3_fnmadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)551 __m512d test_mm512_mask3_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
552 // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_pd
553 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
554 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
555 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
556 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
557 return _mm512_mask3_fnmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
558 }
test_mm512_maskz_fnmadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)559 __m512d test_mm512_maskz_fnmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
560 // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_pd
561 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
562 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
563 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
564 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
565 return _mm512_maskz_fnmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
566 }
test_mm512_fnmsub_round_pd(__m512d __A,__m512d __B,__m512d __C)567 __m512d test_mm512_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
568 // CHECK-LABEL: @test_mm512_fnmsub_round_pd
569 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
570 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
571 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
572 return _mm512_fnmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
573 }
test_mm512_maskz_fnmsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)574 __m512d test_mm512_maskz_fnmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
575 // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_pd
576 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
577 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
578 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
579 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
580 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
581 return _mm512_maskz_fnmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
582 }
test_mm512_fmadd_pd(__m512d __A,__m512d __B,__m512d __C)583 __m512d test_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
584 // CHECK-LABEL: @test_mm512_fmadd_pd
585 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
586 return _mm512_fmadd_pd(__A, __B, __C);
587 }
test_mm512_mask_fmadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)588 __m512d test_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
589 // CHECK-LABEL: @test_mm512_mask_fmadd_pd
590 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
591 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
592 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
593 return _mm512_mask_fmadd_pd(__A, __U, __B, __C);
594 }
test_mm512_mask3_fmadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)595 __m512d test_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
596 // CHECK-LABEL: @test_mm512_mask3_fmadd_pd
597 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
598 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
599 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
600 return _mm512_mask3_fmadd_pd(__A, __B, __C, __U);
601 }
test_mm512_maskz_fmadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)602 __m512d test_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
603 // CHECK-LABEL: @test_mm512_maskz_fmadd_pd
604 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
605 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
606 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
607 return _mm512_maskz_fmadd_pd(__U, __A, __B, __C);
608 }
test_mm512_fmsub_pd(__m512d __A,__m512d __B,__m512d __C)609 __m512d test_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
610 // CHECK-LABEL: @test_mm512_fmsub_pd
611 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
612 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
613 return _mm512_fmsub_pd(__A, __B, __C);
614 }
test_mm512_mask_fmsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)615 __m512d test_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
616 // CHECK-LABEL: @test_mm512_mask_fmsub_pd
617 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
618 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
619 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
620 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
621 return _mm512_mask_fmsub_pd(__A, __U, __B, __C);
622 }
test_mm512_maskz_fmsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)623 __m512d test_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
624 // CHECK-LABEL: @test_mm512_maskz_fmsub_pd
625 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
626 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
627 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
628 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
629 return _mm512_maskz_fmsub_pd(__U, __A, __B, __C);
630 }
test_mm512_fnmadd_pd(__m512d __A,__m512d __B,__m512d __C)631 __m512d test_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
632 // CHECK-LABEL: @test_mm512_fnmadd_pd
633 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
634 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
635 return _mm512_fnmadd_pd(__A, __B, __C);
636 }
test_mm512_mask3_fnmadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)637 __m512d test_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
638 // CHECK-LABEL: @test_mm512_mask3_fnmadd_pd
639 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
640 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
641 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
642 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
643 return _mm512_mask3_fnmadd_pd(__A, __B, __C, __U);
644 }
test_mm512_maskz_fnmadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)645 __m512d test_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
646 // CHECK-LABEL: @test_mm512_maskz_fnmadd_pd
647 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
648 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
649 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
650 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
651 return _mm512_maskz_fnmadd_pd(__U, __A, __B, __C);
652 }
test_mm512_fnmsub_pd(__m512d __A,__m512d __B,__m512d __C)653 __m512d test_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C) {
654 // CHECK-LABEL: @test_mm512_fnmsub_pd
655 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
656 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
657 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
658 return _mm512_fnmsub_pd(__A, __B, __C);
659 }
test_mm512_maskz_fnmsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)660 __m512d test_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
661 // CHECK-LABEL: @test_mm512_maskz_fnmsub_pd
662 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
663 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
664 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
665 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
666 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
667 return _mm512_maskz_fnmsub_pd(__U, __A, __B, __C);
668 }
test_mm512_fmadd_round_ps(__m512 __A,__m512 __B,__m512 __C)669 __m512 test_mm512_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
670 // CHECK-LABEL: @test_mm512_fmadd_round_ps
671 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
672 return _mm512_fmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
673 }
test_mm512_mask_fmadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)674 __m512 test_mm512_mask_fmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
675 // CHECK-LABEL: @test_mm512_mask_fmadd_round_ps
676 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
677 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
678 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
679 return _mm512_mask_fmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
680 }
test_mm512_mask3_fmadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)681 __m512 test_mm512_mask3_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
682 // CHECK-LABEL: @test_mm512_mask3_fmadd_round_ps
683 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
684 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
685 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
686 return _mm512_mask3_fmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
687 }
test_mm512_maskz_fmadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)688 __m512 test_mm512_maskz_fmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
689 // CHECK-LABEL: @test_mm512_maskz_fmadd_round_ps
690 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
691 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
692 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
693 return _mm512_maskz_fmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
694 }
test_mm512_fmsub_round_ps(__m512 __A,__m512 __B,__m512 __C)695 __m512 test_mm512_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
696 // CHECK-LABEL: @test_mm512_fmsub_round_ps
697 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
698 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
699 return _mm512_fmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
700 }
test_mm512_mask_fmsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)701 __m512 test_mm512_mask_fmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
702 // CHECK-LABEL: @test_mm512_mask_fmsub_round_ps
703 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
704 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
705 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
706 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
707 return _mm512_mask_fmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
708 }
test_mm512_maskz_fmsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)709 __m512 test_mm512_maskz_fmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
710 // CHECK-LABEL: @test_mm512_maskz_fmsub_round_ps
711 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
712 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
713 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
714 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
715 return _mm512_maskz_fmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
716 }
test_mm512_fnmadd_round_ps(__m512 __A,__m512 __B,__m512 __C)717 __m512 test_mm512_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
718 // CHECK-LABEL: @test_mm512_fnmadd_round_ps
719 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
720 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
721 return _mm512_fnmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
722 }
test_mm512_mask3_fnmadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)723 __m512 test_mm512_mask3_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
724 // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_ps
725 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
726 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
727 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
728 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
729 return _mm512_mask3_fnmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
730 }
test_mm512_maskz_fnmadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)731 __m512 test_mm512_maskz_fnmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
732 // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_ps
733 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
734 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
735 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
736 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
737 return _mm512_maskz_fnmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
738 }
test_mm512_fnmsub_round_ps(__m512 __A,__m512 __B,__m512 __C)739 __m512 test_mm512_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
740 // CHECK-LABEL: @test_mm512_fnmsub_round_ps
741 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
742 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
743 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
744 return _mm512_fnmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
745 }
test_mm512_maskz_fnmsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)746 __m512 test_mm512_maskz_fnmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
747 // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_ps
748 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
749 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
750 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
751 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
752 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
753 return _mm512_maskz_fnmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
754 }
test_mm512_fmadd_ps(__m512 __A,__m512 __B,__m512 __C)755 __m512 test_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
756 // CHECK-LABEL: @test_mm512_fmadd_ps
757 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
758 return _mm512_fmadd_ps(__A, __B, __C);
759 }
test_mm512_mask_fmadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)760 __m512 test_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
761 // CHECK-LABEL: @test_mm512_mask_fmadd_ps
762 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
763 return _mm512_mask_fmadd_ps(__A, __U, __B, __C);
764 }
test_mm512_mask3_fmadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)765 __m512 test_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
766 // CHECK-LABEL: @test_mm512_mask3_fmadd_ps
767 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
768 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
769 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
770 return _mm512_mask3_fmadd_ps(__A, __B, __C, __U);
771 }
test_mm512_maskz_fmadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)772 __m512 test_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
773 // CHECK-LABEL: @test_mm512_maskz_fmadd_ps
774 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
775 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
776 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
777 return _mm512_maskz_fmadd_ps(__U, __A, __B, __C);
778 }
test_mm512_fmsub_ps(__m512 __A,__m512 __B,__m512 __C)779 __m512 test_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
780 // CHECK-LABEL: @test_mm512_fmsub_ps
781 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
782 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
783 return _mm512_fmsub_ps(__A, __B, __C);
784 }
test_mm512_mask_fmsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)785 __m512 test_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
786 // CHECK-LABEL: @test_mm512_mask_fmsub_ps
787 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
788 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
789 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
790 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
791 return _mm512_mask_fmsub_ps(__A, __U, __B, __C);
792 }
test_mm512_maskz_fmsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)793 __m512 test_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
794 // CHECK-LABEL: @test_mm512_maskz_fmsub_ps
795 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
796 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
797 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
798 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
799 return _mm512_maskz_fmsub_ps(__U, __A, __B, __C);
800 }
test_mm512_fnmadd_ps(__m512 __A,__m512 __B,__m512 __C)801 __m512 test_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C) {
802 // CHECK-LABEL: @test_mm512_fnmadd_ps
803 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
804 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
805 return _mm512_fnmadd_ps(__A, __B, __C);
806 }
test_mm512_mask3_fnmadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)807 __m512 test_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
808 // CHECK-LABEL: @test_mm512_mask3_fnmadd_ps
809 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
810 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
811 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
812 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
813 return _mm512_mask3_fnmadd_ps(__A, __B, __C, __U);
814 }
test_mm512_maskz_fnmadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)815 __m512 test_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
816 // CHECK-LABEL: @test_mm512_maskz_fnmadd_ps
817 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
818 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
819 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
820 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
821 return _mm512_maskz_fnmadd_ps(__U, __A, __B, __C);
822 }
test_mm512_fnmsub_ps(__m512 __A,__m512 __B,__m512 __C)823 __m512 test_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C) {
824 // CHECK-LABEL: @test_mm512_fnmsub_ps
825 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
826 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
827 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
828 return _mm512_fnmsub_ps(__A, __B, __C);
829 }
test_mm512_maskz_fnmsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)830 __m512 test_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
831 // CHECK-LABEL: @test_mm512_maskz_fnmsub_ps
832 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
833 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
834 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
835 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
836 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
837 return _mm512_maskz_fnmsub_ps(__U, __A, __B, __C);
838 }
test_mm512_fmaddsub_round_pd(__m512d __A,__m512d __B,__m512d __C)839 __m512d test_mm512_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C) {
840 // CHECK-LABEL: @test_mm512_fmaddsub_round_pd
841 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
842 return _mm512_fmaddsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
843 }
test_mm512_mask_fmaddsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)844 __m512d test_mm512_mask_fmaddsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
845 // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_pd
846 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
847 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
848 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
849 return _mm512_mask_fmaddsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
850 }
test_mm512_mask3_fmaddsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)851 __m512d test_mm512_mask3_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
852 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_pd
853 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
854 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
855 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
856 return _mm512_mask3_fmaddsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
857 }
test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)858 __m512d test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
859 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_pd
860 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
861 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
862 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
863 return _mm512_maskz_fmaddsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
864 }
test_mm512_fmsubadd_round_pd(__m512d __A,__m512d __B,__m512d __C)865 __m512d test_mm512_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C) {
866 // CHECK-LABEL: @test_mm512_fmsubadd_round_pd
867 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
868 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
869 return _mm512_fmsubadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
870 }
test_mm512_mask_fmsubadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)871 __m512d test_mm512_mask_fmsubadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
872 // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_pd
873 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
874 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
875 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
876 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
877 return _mm512_mask_fmsubadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
878 }
test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)879 __m512d test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
880 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_pd
881 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
882 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
883 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
884 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
885 return _mm512_maskz_fmsubadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
886 }
test_mm512_fmaddsub_pd(__m512d __A,__m512d __B,__m512d __C)887 __m512d test_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C) {
888 // CHECK-LABEL: @test_mm512_fmaddsub_pd
889 // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
890 // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
891 // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
892 // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
893 return _mm512_fmaddsub_pd(__A, __B, __C);
894 }
test_mm512_mask_fmaddsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)895 __m512d test_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
896 // CHECK-LABEL: @test_mm512_mask_fmaddsub_pd
897 // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
898 // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
899 // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
900 // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
901 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
902 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
903 return _mm512_mask_fmaddsub_pd(__A, __U, __B, __C);
904 }
test_mm512_mask3_fmaddsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)905 __m512d test_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
906 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_pd
907 // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
908 // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
909 // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
910 // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
911 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
912 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
913 return _mm512_mask3_fmaddsub_pd(__A, __B, __C, __U);
914 }
test_mm512_maskz_fmaddsub_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)915 __m512d test_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
916 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_pd
917 // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
918 // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
919 // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
920 // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
921 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
922 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
923 return _mm512_maskz_fmaddsub_pd(__U, __A, __B, __C);
924 }
test_mm512_fmsubadd_pd(__m512d __A,__m512d __B,__m512d __C)925 __m512d test_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C) {
926 // CHECK-LABEL: @test_mm512_fmsubadd_pd
927 // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
928 // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
929 // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
930 // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
931 return _mm512_fmsubadd_pd(__A, __B, __C);
932 }
test_mm512_mask_fmsubadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)933 __m512d test_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
934 // CHECK-LABEL: @test_mm512_mask_fmsubadd_pd
935 // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
936 // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
937 // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
938 // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
939 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
940 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
941 return _mm512_mask_fmsubadd_pd(__A, __U, __B, __C);
942 }
test_mm512_maskz_fmsubadd_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512d __C)943 __m512d test_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) {
944 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_pd
945 // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
946 // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
947 // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
948 // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
949 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
950 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
951 return _mm512_maskz_fmsubadd_pd(__U, __A, __B, __C);
952 }
test_mm512_fmaddsub_round_ps(__m512 __A,__m512 __B,__m512 __C)953 __m512 test_mm512_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C) {
954 // CHECK-LABEL: @test_mm512_fmaddsub_round_ps
955 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
956 return _mm512_fmaddsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
957 }
test_mm512_mask_fmaddsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)958 __m512 test_mm512_mask_fmaddsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
959 // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_ps
960 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
961 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
962 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
963 return _mm512_mask_fmaddsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
964 }
test_mm512_mask3_fmaddsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)965 __m512 test_mm512_mask3_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
966 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_ps
967 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
968 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
969 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
970 return _mm512_mask3_fmaddsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
971 }
test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)972 __m512 test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
973 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_ps
974 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
975 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
976 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
977 return _mm512_maskz_fmaddsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
978 }
test_mm512_fmsubadd_round_ps(__m512 __A,__m512 __B,__m512 __C)979 __m512 test_mm512_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C) {
980 // CHECK-LABEL: @test_mm512_fmsubadd_round_ps
981 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
982 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
983 return _mm512_fmsubadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
984 }
test_mm512_mask_fmsubadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)985 __m512 test_mm512_mask_fmsubadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
986 // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_ps
987 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
988 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
989 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
990 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
991 return _mm512_mask_fmsubadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
992 }
test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)993 __m512 test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
994 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_ps
995 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
996 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
997 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
998 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
999 return _mm512_maskz_fmsubadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1000 }
test_mm512_fmaddsub_ps(__m512 __A,__m512 __B,__m512 __C)1001 __m512 test_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C) {
1002 // CHECK-LABEL: @test_mm512_fmaddsub_ps
1003 // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1004 // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1005 // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1006 // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1007 return _mm512_fmaddsub_ps(__A, __B, __C);
1008 }
test_mm512_mask_fmaddsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1009 __m512 test_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1010 // CHECK-LABEL: @test_mm512_mask_fmaddsub_ps
1011 // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1012 // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1013 // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1014 // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1015 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1016 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1017 return _mm512_mask_fmaddsub_ps(__A, __U, __B, __C);
1018 }
test_mm512_mask3_fmaddsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1019 __m512 test_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1020 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_ps
1021 // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1022 // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1023 // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1024 // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1025 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1026 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1027 return _mm512_mask3_fmaddsub_ps(__A, __B, __C, __U);
1028 }
test_mm512_maskz_fmaddsub_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)1029 __m512 test_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
1030 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_ps
1031 // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1032 // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1033 // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1034 // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1035 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1036 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1037 return _mm512_maskz_fmaddsub_ps(__U, __A, __B, __C);
1038 }
test_mm512_fmsubadd_ps(__m512 __A,__m512 __B,__m512 __C)1039 __m512 test_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C) {
1040 // CHECK-LABEL: @test_mm512_fmsubadd_ps
1041 // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1042 // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1043 // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1044 // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1045 return _mm512_fmsubadd_ps(__A, __B, __C);
1046 }
test_mm512_mask_fmsubadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1047 __m512 test_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1048 // CHECK-LABEL: @test_mm512_mask_fmsubadd_ps
1049 // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1050 // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1051 // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1052 // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1053 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1054 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1055 return _mm512_mask_fmsubadd_ps(__A, __U, __B, __C);
1056 }
test_mm512_maskz_fmsubadd_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512 __C)1057 __m512 test_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) {
1058 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_ps
1059 // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1060 // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1061 // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1062 // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1063 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1064 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1065 return _mm512_maskz_fmsubadd_ps(__U, __A, __B, __C);
1066 }
test_mm512_mask3_fmsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1067 __m512d test_mm512_mask3_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1068 // CHECK-LABEL: @test_mm512_mask3_fmsub_round_pd
1069 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1070 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1071 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1072 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1073 return _mm512_mask3_fmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1074 }
test_mm512_mask3_fmsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1075 __m512d test_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1076 // CHECK-LABEL: @test_mm512_mask3_fmsub_pd
1077 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1078 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1079 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1080 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1081 return _mm512_mask3_fmsub_pd(__A, __B, __C, __U);
1082 }
test_mm512_mask3_fmsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1083 __m512 test_mm512_mask3_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1084 // CHECK-LABEL: @test_mm512_mask3_fmsub_round_ps
1085 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1086 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1087 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1088 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1089 return _mm512_mask3_fmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1090 }
test_mm512_mask3_fmsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1091 __m512 test_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1092 // CHECK-LABEL: @test_mm512_mask3_fmsub_ps
1093 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1094 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1095 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1096 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1097 return _mm512_mask3_fmsub_ps(__A, __B, __C, __U);
1098 }
test_mm512_mask3_fmsubadd_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1099 __m512d test_mm512_mask3_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1100 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_pd
1101 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1102 // CHECK: @llvm.x86.avx512.vfmaddsub.pd.512
1103 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1104 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1105 return _mm512_mask3_fmsubadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1106 }
test_mm512_mask3_fmsubadd_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1107 __m512d test_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1108 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_pd
1109 // CHECK: [[NEG:%.+]] = fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1110 // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
1111 // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1112 // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
1113 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1114 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1115 return _mm512_mask3_fmsubadd_pd(__A, __B, __C, __U);
1116 }
test_mm512_mask3_fmsubadd_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1117 __m512 test_mm512_mask3_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1118 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_ps
1119 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1120 // CHECK: @llvm.x86.avx512.vfmaddsub.ps.512
1121 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1122 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1123 return _mm512_mask3_fmsubadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1124 }
test_mm512_mask3_fmsubadd_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1125 __m512 test_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1126 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_ps
1127 // CHECK: [[NEG:%.+]] = fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1128 // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1129 // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1130 // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1131 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1132 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1133 return _mm512_mask3_fmsubadd_ps(__A, __B, __C, __U);
1134 }
test_mm512_mask_fnmadd_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1135 __m512d test_mm512_mask_fnmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1136 // CHECK-LABEL: @test_mm512_mask_fnmadd_round_pd
1137 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1138 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1139 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1140 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1141 return _mm512_mask_fnmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1142 }
test_mm512_mask_fnmadd_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1143 __m512d test_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1144 // CHECK-LABEL: @test_mm512_mask_fnmadd_pd
1145 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1146 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1147 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1148 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1149 return _mm512_mask_fnmadd_pd(__A, __U, __B, __C);
1150 }
test_mm512_mask_fnmadd_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1151 __m512 test_mm512_mask_fnmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1152 // CHECK-LABEL: @test_mm512_mask_fnmadd_round_ps
1153 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1154 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1155 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1156 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1157 return _mm512_mask_fnmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1158 }
test_mm512_mask_fnmadd_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1159 __m512 test_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1160 // CHECK-LABEL: @test_mm512_mask_fnmadd_ps
1161 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1162 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1163 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1164 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1165 return _mm512_mask_fnmadd_ps(__A, __U, __B, __C);
1166 }
test_mm512_mask_fnmsub_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1167 __m512d test_mm512_mask_fnmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1168 // CHECK-LABEL: @test_mm512_mask_fnmsub_round_pd
1169 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1170 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1171 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1172 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1173 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1174 return _mm512_mask_fnmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1175 }
test_mm512_mask3_fnmsub_round_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1176 __m512d test_mm512_mask3_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1177 // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_pd
1178 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1179 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>
1180 // CHECK: @llvm.x86.avx512.vfmadd.pd.512
1181 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1182 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1183 return _mm512_mask3_fnmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1184 }
test_mm512_mask_fnmsub_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512d __C)1185 __m512d test_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
1186 // CHECK-LABEL: @test_mm512_mask_fnmsub_pd
1187 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1188 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1189 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1190 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1191 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1192 return _mm512_mask_fnmsub_pd(__A, __U, __B, __C);
1193 }
test_mm512_mask3_fnmsub_pd(__m512d __A,__m512d __B,__m512d __C,__mmask8 __U)1194 __m512d test_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
1195 // CHECK-LABEL: @test_mm512_mask3_fnmsub_pd
1196 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1197 // CHECK: fsub <8 x double> <double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00, double -0.000000e+00>, %{{.*}}
1198 // CHECK: call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1199 // CHECK: bitcast i8 %{{.*}} to <8 x i1>
1200 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1201 return _mm512_mask3_fnmsub_pd(__A, __B, __C, __U);
1202 }
test_mm512_mask_fnmsub_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1203 __m512 test_mm512_mask_fnmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1204 // CHECK-LABEL: @test_mm512_mask_fnmsub_round_ps
1205 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1206 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1207 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1208 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1209 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1210 return _mm512_mask_fnmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1211 }
test_mm512_mask3_fnmsub_round_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1212 __m512 test_mm512_mask3_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1213 // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_ps
1214 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1215 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1216 // CHECK: @llvm.x86.avx512.vfmadd.ps.512
1217 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1218 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1219 return _mm512_mask3_fnmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
1220 }
test_mm512_mask_fnmsub_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512 __C)1221 __m512 test_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) {
1222 // CHECK-LABEL: @test_mm512_mask_fnmsub_ps
1223 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1224 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1225 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1226 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1227 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1228 return _mm512_mask_fnmsub_ps(__A, __U, __B, __C);
1229 }
test_mm512_mask3_fnmsub_ps(__m512 __A,__m512 __B,__m512 __C,__mmask16 __U)1230 __m512 test_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) {
1231 // CHECK-LABEL: @test_mm512_mask3_fnmsub_ps
1232 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1233 // CHECK: fsub <16 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
1234 // CHECK: call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1235 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
1236 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1237 return _mm512_mask3_fnmsub_ps(__A, __B, __C, __U);
1238 }
1239
test_mm512_cmpeq_epi32_mask(__m512i __a,__m512i __b)1240 __mmask16 test_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
1241 // CHECK-LABEL: @test_mm512_cmpeq_epi32_mask
1242 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1243 return (__mmask16)_mm512_cmpeq_epi32_mask(__a, __b);
1244 }
1245
test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)1246 __mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1247 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi32_mask
1248 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
1249 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1250 return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b);
1251 }
1252
test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)1253 __mmask8 test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1254 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi64_mask
1255 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1256 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1257 return (__mmask8)_mm512_mask_cmpeq_epi64_mask(__u, __a, __b);
1258 }
1259
test_mm512_cmpeq_epi64_mask(__m512i __a,__m512i __b)1260 __mmask8 test_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
1261 // CHECK-LABEL: @test_mm512_cmpeq_epi64_mask
1262 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
1263 return (__mmask8)_mm512_cmpeq_epi64_mask(__a, __b);
1264 }
1265
test_mm512_cmpgt_epi32_mask(__m512i __a,__m512i __b)1266 __mmask16 test_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
1267 // CHECK-LABEL: @test_mm512_cmpgt_epi32_mask
1268 // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1269 return (__mmask16)_mm512_cmpgt_epi32_mask(__a, __b);
1270 }
1271
test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)1272 __mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1273 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi32_mask
1274 // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}}
1275 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
1276 return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b);
1277 }
1278
test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)1279 __mmask8 test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1280 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi64_mask
1281 // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1282 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
1283 return (__mmask8)_mm512_mask_cmpgt_epi64_mask(__u, __a, __b);
1284 }
1285
test_mm512_cmpgt_epi64_mask(__m512i __a,__m512i __b)1286 __mmask8 test_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
1287 // CHECK-LABEL: @test_mm512_cmpgt_epi64_mask
1288 // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}}
1289 return (__mmask8)_mm512_cmpgt_epi64_mask(__a, __b);
1290 }
1291
test_mm512_unpackhi_pd(__m512d a,__m512d b)1292 __m512d test_mm512_unpackhi_pd(__m512d a, __m512d b)
1293 {
1294 // CHECK-LABEL: @test_mm512_unpackhi_pd
1295 // CHECK: shufflevector <8 x double> {{.*}} <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
1296 return _mm512_unpackhi_pd(a, b);
1297 }
1298
test_mm512_unpacklo_pd(__m512d a,__m512d b)1299 __m512d test_mm512_unpacklo_pd(__m512d a, __m512d b)
1300 {
1301 // CHECK-LABEL: @test_mm512_unpacklo_pd
1302 // CHECK: shufflevector <8 x double> {{.*}} <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
1303 return _mm512_unpacklo_pd(a, b);
1304 }
1305
test_mm512_unpackhi_ps(__m512 a,__m512 b)1306 __m512 test_mm512_unpackhi_ps(__m512 a, __m512 b)
1307 {
1308 // CHECK-LABEL: @test_mm512_unpackhi_ps
1309 // CHECK: shufflevector <16 x float> {{.*}} <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
1310 return _mm512_unpackhi_ps(a, b);
1311 }
1312
test_mm512_unpacklo_ps(__m512 a,__m512 b)1313 __m512 test_mm512_unpacklo_ps(__m512 a, __m512 b)
1314 {
1315 // CHECK-LABEL: @test_mm512_unpacklo_ps
1316 // CHECK: shufflevector <16 x float> {{.*}} <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
1317 return _mm512_unpacklo_ps(a, b);
1318 }
1319
test_mm512_cmp_round_ps_mask(__m512 a,__m512 b)1320 __mmask16 test_mm512_cmp_round_ps_mask(__m512 a, __m512 b) {
1321 // CHECK-LABEL: @test_mm512_cmp_round_ps_mask
1322 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1323 return _mm512_cmp_round_ps_mask(a, b, 0, _MM_FROUND_CUR_DIRECTION);
1324 }
1325
test_mm512_mask_cmp_round_ps_mask(__mmask16 m,__m512 a,__m512 b)1326 __mmask16 test_mm512_mask_cmp_round_ps_mask(__mmask16 m, __m512 a, __m512 b) {
1327 // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask
1328 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1329 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1330 return _mm512_mask_cmp_round_ps_mask(m, a, b, 0, _MM_FROUND_CUR_DIRECTION);
1331 }
1332
test_mm512_cmp_ps_mask_eq_oq(__m512 a,__m512 b)1333 __mmask16 test_mm512_cmp_ps_mask_eq_oq(__m512 a, __m512 b) {
1334 // CHECK-LABEL: @test_mm512_cmp_ps_mask_eq_oq
1335 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1336 return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OQ);
1337 }
1338
test_mm512_cmp_ps_mask_lt_os(__m512 a,__m512 b)1339 __mmask16 test_mm512_cmp_ps_mask_lt_os(__m512 a, __m512 b) {
1340 // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_os
1341 // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1342 return _mm512_cmp_ps_mask(a, b, _CMP_LT_OS);
1343 }
1344
test_mm512_cmp_ps_mask_le_os(__m512 a,__m512 b)1345 __mmask16 test_mm512_cmp_ps_mask_le_os(__m512 a, __m512 b) {
1346 // CHECK-LABEL: test_mm512_cmp_ps_mask_le_os
1347 // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1348 return _mm512_cmp_ps_mask(a, b, _CMP_LE_OS);
1349 }
1350
test_mm512_cmp_ps_mask_unord_q(__m512 a,__m512 b)1351 __mmask16 test_mm512_cmp_ps_mask_unord_q(__m512 a, __m512 b) {
1352 // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_q
1353 // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1354 return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_Q);
1355 }
1356
test_mm512_cmp_ps_mask_neq_uq(__m512 a,__m512 b)1357 __mmask16 test_mm512_cmp_ps_mask_neq_uq(__m512 a, __m512 b) {
1358 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_uq
1359 // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1360 return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_UQ);
1361 }
1362
test_mm512_cmp_ps_mask_nlt_us(__m512 a,__m512 b)1363 __mmask16 test_mm512_cmp_ps_mask_nlt_us(__m512 a, __m512 b) {
1364 // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_us
1365 // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1366 return _mm512_cmp_ps_mask(a, b, _CMP_NLT_US);
1367 }
1368
test_mm512_cmp_ps_mask_nle_us(__m512 a,__m512 b)1369 __mmask16 test_mm512_cmp_ps_mask_nle_us(__m512 a, __m512 b) {
1370 // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_us
1371 // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1372 return _mm512_cmp_ps_mask(a, b, _CMP_NLE_US);
1373 }
1374
test_mm512_cmp_ps_mask_ord_q(__m512 a,__m512 b)1375 __mmask16 test_mm512_cmp_ps_mask_ord_q(__m512 a, __m512 b) {
1376 // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_q
1377 // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1378 return _mm512_cmp_ps_mask(a, b, _CMP_ORD_Q);
1379 }
1380
test_mm512_cmp_ps_mask_eq_uq(__m512 a,__m512 b)1381 __mmask16 test_mm512_cmp_ps_mask_eq_uq(__m512 a, __m512 b) {
1382 // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_uq
1383 // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1384 return _mm512_cmp_ps_mask(a, b, _CMP_EQ_UQ);
1385 }
1386
test_mm512_cmp_ps_mask_nge_us(__m512 a,__m512 b)1387 __mmask16 test_mm512_cmp_ps_mask_nge_us(__m512 a, __m512 b) {
1388 // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_us
1389 // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1390 return _mm512_cmp_ps_mask(a, b, _CMP_NGE_US);
1391 }
1392
test_mm512_cmp_ps_mask_ngt_us(__m512 a,__m512 b)1393 __mmask16 test_mm512_cmp_ps_mask_ngt_us(__m512 a, __m512 b) {
1394 // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_us
1395 // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1396 return _mm512_cmp_ps_mask(a, b, _CMP_NGT_US);
1397 }
1398
test_mm512_cmp_ps_mask_false_oq(__m512 a,__m512 b)1399 __mmask16 test_mm512_cmp_ps_mask_false_oq(__m512 a, __m512 b) {
1400 // CHECK-LABEL: test_mm512_cmp_ps_mask_false_oq
1401 // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1402 return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OQ);
1403 }
1404
test_mm512_cmp_ps_mask_neq_oq(__m512 a,__m512 b)1405 __mmask16 test_mm512_cmp_ps_mask_neq_oq(__m512 a, __m512 b) {
1406 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_oq
1407 // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1408 return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OQ);
1409 }
1410
test_mm512_cmp_ps_mask_ge_os(__m512 a,__m512 b)1411 __mmask16 test_mm512_cmp_ps_mask_ge_os(__m512 a, __m512 b) {
1412 // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_os
1413 // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1414 return _mm512_cmp_ps_mask(a, b, _CMP_GE_OS);
1415 }
1416
test_mm512_cmp_ps_mask_gt_os(__m512 a,__m512 b)1417 __mmask16 test_mm512_cmp_ps_mask_gt_os(__m512 a, __m512 b) {
1418 // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_os
1419 // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1420 return _mm512_cmp_ps_mask(a, b, _CMP_GT_OS);
1421 }
1422
test_mm512_cmp_ps_mask_true_uq(__m512 a,__m512 b)1423 __mmask16 test_mm512_cmp_ps_mask_true_uq(__m512 a, __m512 b) {
1424 // CHECK-LABEL: test_mm512_cmp_ps_mask_true_uq
1425 // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1426 return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_UQ);
1427 }
1428
test_mm512_cmp_ps_mask_eq_os(__m512 a,__m512 b)1429 __mmask16 test_mm512_cmp_ps_mask_eq_os(__m512 a, __m512 b) {
1430 // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_os
1431 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1432 return _mm512_cmp_ps_mask(a, b, _CMP_EQ_OS);
1433 }
1434
test_mm512_cmp_ps_mask_lt_oq(__m512 a,__m512 b)1435 __mmask16 test_mm512_cmp_ps_mask_lt_oq(__m512 a, __m512 b) {
1436 // CHECK-LABEL: test_mm512_cmp_ps_mask_lt_oq
1437 // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
1438 return _mm512_cmp_ps_mask(a, b, _CMP_LT_OQ);
1439 }
1440
test_mm512_cmp_ps_mask_le_oq(__m512 a,__m512 b)1441 __mmask16 test_mm512_cmp_ps_mask_le_oq(__m512 a, __m512 b) {
1442 // CHECK-LABEL: test_mm512_cmp_ps_mask_le_oq
1443 // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
1444 return _mm512_cmp_ps_mask(a, b, _CMP_LE_OQ);
1445 }
1446
test_mm512_cmp_ps_mask_unord_s(__m512 a,__m512 b)1447 __mmask16 test_mm512_cmp_ps_mask_unord_s(__m512 a, __m512 b) {
1448 // CHECK-LABEL: test_mm512_cmp_ps_mask_unord_s
1449 // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
1450 return _mm512_cmp_ps_mask(a, b, _CMP_UNORD_S);
1451 }
1452
test_mm512_cmp_ps_mask_neq_us(__m512 a,__m512 b)1453 __mmask16 test_mm512_cmp_ps_mask_neq_us(__m512 a, __m512 b) {
1454 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_us
1455 // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
1456 return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_US);
1457 }
1458
test_mm512_cmp_ps_mask_nlt_uq(__m512 a,__m512 b)1459 __mmask16 test_mm512_cmp_ps_mask_nlt_uq(__m512 a, __m512 b) {
1460 // CHECK-LABEL: test_mm512_cmp_ps_mask_nlt_uq
1461 // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
1462 return _mm512_cmp_ps_mask(a, b, _CMP_NLT_UQ);
1463 }
1464
test_mm512_cmp_ps_mask_nle_uq(__m512 a,__m512 b)1465 __mmask16 test_mm512_cmp_ps_mask_nle_uq(__m512 a, __m512 b) {
1466 // CHECK-LABEL: test_mm512_cmp_ps_mask_nle_uq
1467 // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1468 return _mm512_cmp_ps_mask(a, b, _CMP_NLE_UQ);
1469 }
1470
test_mm512_cmp_ps_mask_ord_s(__m512 a,__m512 b)1471 __mmask16 test_mm512_cmp_ps_mask_ord_s(__m512 a, __m512 b) {
1472 // CHECK-LABEL: test_mm512_cmp_ps_mask_ord_s
1473 // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
1474 return _mm512_cmp_ps_mask(a, b, _CMP_ORD_S);
1475 }
1476
test_mm512_cmp_ps_mask_eq_us(__m512 a,__m512 b)1477 __mmask16 test_mm512_cmp_ps_mask_eq_us(__m512 a, __m512 b) {
1478 // CHECK-LABEL: test_mm512_cmp_ps_mask_eq_us
1479 // CHECK: fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1480 return _mm512_cmp_ps_mask(a, b, _CMP_EQ_US);
1481 }
1482
test_mm512_cmp_ps_mask_nge_uq(__m512 a,__m512 b)1483 __mmask16 test_mm512_cmp_ps_mask_nge_uq(__m512 a, __m512 b) {
1484 // CHECK-LABEL: test_mm512_cmp_ps_mask_nge_uq
1485 // CHECK: fcmp ult <16 x float> %{{.*}}, %{{.*}}
1486 return _mm512_cmp_ps_mask(a, b, _CMP_NGE_UQ);
1487 }
1488
test_mm512_cmp_ps_mask_ngt_uq(__m512 a,__m512 b)1489 __mmask16 test_mm512_cmp_ps_mask_ngt_uq(__m512 a, __m512 b) {
1490 // CHECK-LABEL: test_mm512_cmp_ps_mask_ngt_uq
1491 // CHECK: fcmp ule <16 x float> %{{.*}}, %{{.*}}
1492 return _mm512_cmp_ps_mask(a, b, _CMP_NGT_UQ);
1493 }
1494
test_mm512_cmp_ps_mask_false_os(__m512 a,__m512 b)1495 __mmask16 test_mm512_cmp_ps_mask_false_os(__m512 a, __m512 b) {
1496 // CHECK-LABEL: test_mm512_cmp_ps_mask_false_os
1497 // CHECK: fcmp false <16 x float> %{{.*}}, %{{.*}}
1498 return _mm512_cmp_ps_mask(a, b, _CMP_FALSE_OS);
1499 }
1500
test_mm512_cmp_ps_mask_neq_os(__m512 a,__m512 b)1501 __mmask16 test_mm512_cmp_ps_mask_neq_os(__m512 a, __m512 b) {
1502 // CHECK-LABEL: test_mm512_cmp_ps_mask_neq_os
1503 // CHECK: fcmp one <16 x float> %{{.*}}, %{{.*}}
1504 return _mm512_cmp_ps_mask(a, b, _CMP_NEQ_OS);
1505 }
1506
test_mm512_cmp_ps_mask_ge_oq(__m512 a,__m512 b)1507 __mmask16 test_mm512_cmp_ps_mask_ge_oq(__m512 a, __m512 b) {
1508 // CHECK-LABEL: test_mm512_cmp_ps_mask_ge_oq
1509 // CHECK: fcmp oge <16 x float> %{{.*}}, %{{.*}}
1510 return _mm512_cmp_ps_mask(a, b, _CMP_GE_OQ);
1511 }
1512
test_mm512_cmp_ps_mask_gt_oq(__m512 a,__m512 b)1513 __mmask16 test_mm512_cmp_ps_mask_gt_oq(__m512 a, __m512 b) {
1514 // CHECK-LABEL: test_mm512_cmp_ps_mask_gt_oq
1515 // CHECK: fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1516 return _mm512_cmp_ps_mask(a, b, _CMP_GT_OQ);
1517 }
1518
test_mm512_cmp_ps_mask_true_us(__m512 a,__m512 b)1519 __mmask16 test_mm512_cmp_ps_mask_true_us(__m512 a, __m512 b) {
1520 // CHECK-LABEL: test_mm512_cmp_ps_mask_true_us
1521 // CHECK: fcmp true <16 x float> %{{.*}}, %{{.*}}
1522 return _mm512_cmp_ps_mask(a, b, _CMP_TRUE_US);
1523 }
1524
test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m,__m512 a,__m512 b)1525 __mmask16 test_mm512_mask_cmp_ps_mask_eq_oq(__mmask16 m, __m512 a, __m512 b) {
1526 // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask_eq_oq
1527 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1528 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1529 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);
1530 }
1531
test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m,__m512 a,__m512 b)1532 __mmask16 test_mm512_mask_cmp_ps_mask_lt_os(__mmask16 m, __m512 a, __m512 b) {
1533 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_os
1534 // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1535 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1536 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);
1537 }
1538
test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m,__m512 a,__m512 b)1539 __mmask16 test_mm512_mask_cmp_ps_mask_le_os(__mmask16 m, __m512 a, __m512 b) {
1540 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_os
1541 // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1542 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1543 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);
1544 }
1545
test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m,__m512 a,__m512 b)1546 __mmask16 test_mm512_mask_cmp_ps_mask_unord_q(__mmask16 m, __m512 a, __m512 b) {
1547 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_q
1548 // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1549 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1550 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);
1551 }
1552
test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m,__m512 a,__m512 b)1553 __mmask16 test_mm512_mask_cmp_ps_mask_neq_uq(__mmask16 m, __m512 a, __m512 b) {
1554 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_uq
1555 // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1556 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1557 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);
1558 }
1559
test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m,__m512 a,__m512 b)1560 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_us(__mmask16 m, __m512 a, __m512 b) {
1561 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_us
1562 // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1563 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1564 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);
1565 }
1566
test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m,__m512 a,__m512 b)1567 __mmask16 test_mm512_mask_cmp_ps_mask_nle_us(__mmask16 m, __m512 a, __m512 b) {
1568 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_us
1569 // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1570 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1571 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);
1572 }
1573
test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m,__m512 a,__m512 b)1574 __mmask16 test_mm512_mask_cmp_ps_mask_ord_q(__mmask16 m, __m512 a, __m512 b) {
1575 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_q
1576 // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1577 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1578 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);
1579 }
1580
test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m,__m512 a,__m512 b)1581 __mmask16 test_mm512_mask_cmp_ps_mask_eq_uq(__mmask16 m, __m512 a, __m512 b) {
1582 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_uq
1583 // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1584 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1585 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);
1586 }
1587
test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m,__m512 a,__m512 b)1588 __mmask16 test_mm512_mask_cmp_ps_mask_nge_us(__mmask16 m, __m512 a, __m512 b) {
1589 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_us
1590 // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1591 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1592 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);
1593 }
1594
test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m,__m512 a,__m512 b)1595 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_us(__mmask16 m, __m512 a, __m512 b) {
1596 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_us
1597 // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1598 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1599 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);
1600 }
1601
test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m,__m512 a,__m512 b)1602 __mmask16 test_mm512_mask_cmp_ps_mask_false_oq(__mmask16 m, __m512 a, __m512 b) {
1603 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_oq
1604 // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1605 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1606 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);
1607 }
1608
test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m,__m512 a,__m512 b)1609 __mmask16 test_mm512_mask_cmp_ps_mask_neq_oq(__mmask16 m, __m512 a, __m512 b) {
1610 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_oq
1611 // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1612 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1613 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);
1614 }
1615
test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m,__m512 a,__m512 b)1616 __mmask16 test_mm512_mask_cmp_ps_mask_ge_os(__mmask16 m, __m512 a, __m512 b) {
1617 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_os
1618 // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1619 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1620 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);
1621 }
1622
test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m,__m512 a,__m512 b)1623 __mmask16 test_mm512_mask_cmp_ps_mask_gt_os(__mmask16 m, __m512 a, __m512 b) {
1624 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_os
1625 // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1626 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1627 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);
1628 }
1629
test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m,__m512 a,__m512 b)1630 __mmask16 test_mm512_mask_cmp_ps_mask_true_uq(__mmask16 m, __m512 a, __m512 b) {
1631 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_uq
1632 // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1633 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1634 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);
1635 }
1636
test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m,__m512 a,__m512 b)1637 __mmask16 test_mm512_mask_cmp_ps_mask_eq_os(__mmask16 m, __m512 a, __m512 b) {
1638 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_os
1639 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
1640 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1641 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);
1642 }
1643
test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m,__m512 a,__m512 b)1644 __mmask16 test_mm512_mask_cmp_ps_mask_lt_oq(__mmask16 m, __m512 a, __m512 b) {
1645 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_lt_oq
1646 // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
1647 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1648 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);
1649 }
1650
test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m,__m512 a,__m512 b)1651 __mmask16 test_mm512_mask_cmp_ps_mask_le_oq(__mmask16 m, __m512 a, __m512 b) {
1652 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_le_oq
1653 // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
1654 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1655 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);
1656 }
1657
test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m,__m512 a,__m512 b)1658 __mmask16 test_mm512_mask_cmp_ps_mask_unord_s(__mmask16 m, __m512 a, __m512 b) {
1659 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_unord_s
1660 // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
1661 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1662 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);
1663 }
1664
test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m,__m512 a,__m512 b)1665 __mmask16 test_mm512_mask_cmp_ps_mask_neq_us(__mmask16 m, __m512 a, __m512 b) {
1666 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_us
1667 // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
1668 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1669 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);
1670 }
1671
test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m,__m512 a,__m512 b)1672 __mmask16 test_mm512_mask_cmp_ps_mask_nlt_uq(__mmask16 m, __m512 a, __m512 b) {
1673 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nlt_uq
1674 // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
1675 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1676 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);
1677 }
1678
test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m,__m512 a,__m512 b)1679 __mmask16 test_mm512_mask_cmp_ps_mask_nle_uq(__mmask16 m, __m512 a, __m512 b) {
1680 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nle_uq
1681 // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
1682 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1683 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);
1684 }
1685
test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m,__m512 a,__m512 b)1686 __mmask16 test_mm512_mask_cmp_ps_mask_ord_s(__mmask16 m, __m512 a, __m512 b) {
1687 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ord_s
1688 // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
1689 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1690 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);
1691 }
1692
test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m,__m512 a,__m512 b)1693 __mmask16 test_mm512_mask_cmp_ps_mask_eq_us(__mmask16 m, __m512 a, __m512 b) {
1694 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_eq_us
1695 // CHECK: [[CMP:%.*]] = fcmp ueq <16 x float> %{{.*}}, %{{.*}}
1696 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1697 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);
1698 }
1699
test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m,__m512 a,__m512 b)1700 __mmask16 test_mm512_mask_cmp_ps_mask_nge_uq(__mmask16 m, __m512 a, __m512 b) {
1701 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_nge_uq
1702 // CHECK: [[CMP:%.*]] = fcmp ult <16 x float> %{{.*}}, %{{.*}}
1703 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1704 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);
1705 }
1706
test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m,__m512 a,__m512 b)1707 __mmask16 test_mm512_mask_cmp_ps_mask_ngt_uq(__mmask16 m, __m512 a, __m512 b) {
1708 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ngt_uq
1709 // CHECK: [[CMP:%.*]] = fcmp ule <16 x float> %{{.*}}, %{{.*}}
1710 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1711 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);
1712 }
1713
test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m,__m512 a,__m512 b)1714 __mmask16 test_mm512_mask_cmp_ps_mask_false_os(__mmask16 m, __m512 a, __m512 b) {
1715 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_false_os
1716 // CHECK: [[CMP:%.*]] = fcmp false <16 x float> %{{.*}}, %{{.*}}
1717 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1718 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);
1719 }
1720
test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m,__m512 a,__m512 b)1721 __mmask16 test_mm512_mask_cmp_ps_mask_neq_os(__mmask16 m, __m512 a, __m512 b) {
1722 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_neq_os
1723 // CHECK: [[CMP:%.*]] = fcmp one <16 x float> %{{.*}}, %{{.*}}
1724 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1725 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);
1726 }
1727
test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m,__m512 a,__m512 b)1728 __mmask16 test_mm512_mask_cmp_ps_mask_ge_oq(__mmask16 m, __m512 a, __m512 b) {
1729 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_ge_oq
1730 // CHECK: [[CMP:%.*]] = fcmp oge <16 x float> %{{.*}}, %{{.*}}
1731 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1732 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);
1733 }
1734
test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m,__m512 a,__m512 b)1735 __mmask16 test_mm512_mask_cmp_ps_mask_gt_oq(__mmask16 m, __m512 a, __m512 b) {
1736 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_gt_oq
1737 // CHECK: [[CMP:%.*]] = fcmp ogt <16 x float> %{{.*}}, %{{.*}}
1738 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1739 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);
1740 }
1741
test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m,__m512 a,__m512 b)1742 __mmask16 test_mm512_mask_cmp_ps_mask_true_us(__mmask16 m, __m512 a, __m512 b) {
1743 // CHECK-LABEL: test_mm512_mask_cmp_ps_mask_true_us
1744 // CHECK: [[CMP:%.*]] = fcmp true <16 x float> %{{.*}}, %{{.*}}
1745 // CHECK: and <16 x i1> [[CMP]], {{.*}}
1746 return _mm512_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);
1747 }
1748
test_mm512_cmp_round_pd_mask(__m512d a,__m512d b)1749 __mmask8 test_mm512_cmp_round_pd_mask(__m512d a, __m512d b) {
1750 // CHECK-LABEL: @test_mm512_cmp_round_pd_mask
1751 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1752 return _mm512_cmp_round_pd_mask(a, b, 0, _MM_FROUND_CUR_DIRECTION);
1753 }
1754
test_mm512_mask_cmp_round_pd_mask(__mmask8 m,__m512d a,__m512d b)1755 __mmask8 test_mm512_mask_cmp_round_pd_mask(__mmask8 m, __m512d a, __m512d b) {
1756 // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask
1757 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1758 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1759 return _mm512_mask_cmp_round_pd_mask(m, a, b, 0, _MM_FROUND_CUR_DIRECTION);
1760 }
1761
test_mm512_cmp_pd_mask_eq_oq(__m512d a,__m512d b)1762 __mmask8 test_mm512_cmp_pd_mask_eq_oq(__m512d a, __m512d b) {
1763 // CHECK-LABEL: @test_mm512_cmp_pd_mask_eq_oq
1764 // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1765 return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OQ);
1766 }
1767
test_mm512_cmp_pd_mask_lt_os(__m512d a,__m512d b)1768 __mmask8 test_mm512_cmp_pd_mask_lt_os(__m512d a, __m512d b) {
1769 // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_os
1770 // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1771 return _mm512_cmp_pd_mask(a, b, _CMP_LT_OS);
1772 }
1773
test_mm512_cmp_pd_mask_le_os(__m512d a,__m512d b)1774 __mmask8 test_mm512_cmp_pd_mask_le_os(__m512d a, __m512d b) {
1775 // CHECK-LABEL: test_mm512_cmp_pd_mask_le_os
1776 // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1777 return _mm512_cmp_pd_mask(a, b, _CMP_LE_OS);
1778 }
1779
test_mm512_cmp_pd_mask_unord_q(__m512d a,__m512d b)1780 __mmask8 test_mm512_cmp_pd_mask_unord_q(__m512d a, __m512d b) {
1781 // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_q
1782 // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1783 return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_Q);
1784 }
1785
test_mm512_cmp_pd_mask_neq_uq(__m512d a,__m512d b)1786 __mmask8 test_mm512_cmp_pd_mask_neq_uq(__m512d a, __m512d b) {
1787 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_uq
1788 // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1789 return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_UQ);
1790 }
1791
test_mm512_cmp_pd_mask_nlt_us(__m512d a,__m512d b)1792 __mmask8 test_mm512_cmp_pd_mask_nlt_us(__m512d a, __m512d b) {
1793 // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_us
1794 // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1795 return _mm512_cmp_pd_mask(a, b, _CMP_NLT_US);
1796 }
1797
test_mm512_cmp_pd_mask_nle_us(__m512d a,__m512d b)1798 __mmask8 test_mm512_cmp_pd_mask_nle_us(__m512d a, __m512d b) {
1799 // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_us
1800 // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1801 return _mm512_cmp_pd_mask(a, b, _CMP_NLE_US);
1802 }
1803
test_mm512_cmp_pd_mask_ord_q(__m512d a,__m512d b)1804 __mmask8 test_mm512_cmp_pd_mask_ord_q(__m512d a, __m512d b) {
1805 // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_q
1806 // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1807 return _mm512_cmp_pd_mask(a, b, _CMP_ORD_Q);
1808 }
1809
test_mm512_cmp_pd_mask_eq_uq(__m512d a,__m512d b)1810 __mmask8 test_mm512_cmp_pd_mask_eq_uq(__m512d a, __m512d b) {
1811 // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_uq
1812 // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1813 return _mm512_cmp_pd_mask(a, b, _CMP_EQ_UQ);
1814 }
1815
test_mm512_cmp_pd_mask_nge_us(__m512d a,__m512d b)1816 __mmask8 test_mm512_cmp_pd_mask_nge_us(__m512d a, __m512d b) {
1817 // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_us
1818 // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1819 return _mm512_cmp_pd_mask(a, b, _CMP_NGE_US);
1820 }
1821
test_mm512_cmp_pd_mask_ngt_us(__m512d a,__m512d b)1822 __mmask8 test_mm512_cmp_pd_mask_ngt_us(__m512d a, __m512d b) {
1823 // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_us
1824 // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1825 return _mm512_cmp_pd_mask(a, b, _CMP_NGT_US);
1826 }
1827
test_mm512_cmp_pd_mask_false_oq(__m512d a,__m512d b)1828 __mmask8 test_mm512_cmp_pd_mask_false_oq(__m512d a, __m512d b) {
1829 // CHECK-LABEL: test_mm512_cmp_pd_mask_false_oq
1830 // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1831 return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OQ);
1832 }
1833
test_mm512_cmp_pd_mask_neq_oq(__m512d a,__m512d b)1834 __mmask8 test_mm512_cmp_pd_mask_neq_oq(__m512d a, __m512d b) {
1835 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_oq
1836 // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1837 return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OQ);
1838 }
1839
test_mm512_cmp_pd_mask_ge_os(__m512d a,__m512d b)1840 __mmask8 test_mm512_cmp_pd_mask_ge_os(__m512d a, __m512d b) {
1841 // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_os
1842 // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1843 return _mm512_cmp_pd_mask(a, b, _CMP_GE_OS);
1844 }
1845
test_mm512_cmp_pd_mask_gt_os(__m512d a,__m512d b)1846 __mmask8 test_mm512_cmp_pd_mask_gt_os(__m512d a, __m512d b) {
1847 // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_os
1848 // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1849 return _mm512_cmp_pd_mask(a, b, _CMP_GT_OS);
1850 }
1851
test_mm512_cmp_pd_mask_true_uq(__m512d a,__m512d b)1852 __mmask8 test_mm512_cmp_pd_mask_true_uq(__m512d a, __m512d b) {
1853 // CHECK-LABEL: test_mm512_cmp_pd_mask_true_uq
1854 // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1855 return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_UQ);
1856 }
1857
test_mm512_cmp_pd_mask_eq_os(__m512d a,__m512d b)1858 __mmask8 test_mm512_cmp_pd_mask_eq_os(__m512d a, __m512d b) {
1859 // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_os
1860 // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1861 return _mm512_cmp_pd_mask(a, b, _CMP_EQ_OS);
1862 }
1863
test_mm512_cmp_pd_mask_lt_oq(__m512d a,__m512d b)1864 __mmask8 test_mm512_cmp_pd_mask_lt_oq(__m512d a, __m512d b) {
1865 // CHECK-LABEL: test_mm512_cmp_pd_mask_lt_oq
1866 // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
1867 return _mm512_cmp_pd_mask(a, b, _CMP_LT_OQ);
1868 }
1869
test_mm512_cmp_pd_mask_le_oq(__m512d a,__m512d b)1870 __mmask8 test_mm512_cmp_pd_mask_le_oq(__m512d a, __m512d b) {
1871 // CHECK-LABEL: test_mm512_cmp_pd_mask_le_oq
1872 // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
1873 return _mm512_cmp_pd_mask(a, b, _CMP_LE_OQ);
1874 }
1875
test_mm512_cmp_pd_mask_unord_s(__m512d a,__m512d b)1876 __mmask8 test_mm512_cmp_pd_mask_unord_s(__m512d a, __m512d b) {
1877 // CHECK-LABEL: test_mm512_cmp_pd_mask_unord_s
1878 // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
1879 return _mm512_cmp_pd_mask(a, b, _CMP_UNORD_S);
1880 }
1881
test_mm512_cmp_pd_mask_neq_us(__m512d a,__m512d b)1882 __mmask8 test_mm512_cmp_pd_mask_neq_us(__m512d a, __m512d b) {
1883 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_us
1884 // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
1885 return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_US);
1886 }
1887
test_mm512_cmp_pd_mask_nlt_uq(__m512d a,__m512d b)1888 __mmask8 test_mm512_cmp_pd_mask_nlt_uq(__m512d a, __m512d b) {
1889 // CHECK-LABEL: test_mm512_cmp_pd_mask_nlt_uq
1890 // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
1891 return _mm512_cmp_pd_mask(a, b, _CMP_NLT_UQ);
1892 }
1893
test_mm512_cmp_pd_mask_nle_uq(__m512d a,__m512d b)1894 __mmask8 test_mm512_cmp_pd_mask_nle_uq(__m512d a, __m512d b) {
1895 // CHECK-LABEL: test_mm512_cmp_pd_mask_nle_uq
1896 // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1897 return _mm512_cmp_pd_mask(a, b, _CMP_NLE_UQ);
1898 }
1899
test_mm512_cmp_pd_mask_ord_s(__m512d a,__m512d b)1900 __mmask8 test_mm512_cmp_pd_mask_ord_s(__m512d a, __m512d b) {
1901 // CHECK-LABEL: test_mm512_cmp_pd_mask_ord_s
1902 // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
1903 return _mm512_cmp_pd_mask(a, b, _CMP_ORD_S);
1904 }
1905
test_mm512_cmp_pd_mask_eq_us(__m512d a,__m512d b)1906 __mmask8 test_mm512_cmp_pd_mask_eq_us(__m512d a, __m512d b) {
1907 // CHECK-LABEL: test_mm512_cmp_pd_mask_eq_us
1908 // CHECK: fcmp ueq <8 x double> %{{.*}}, %{{.*}}
1909 return _mm512_cmp_pd_mask(a, b, _CMP_EQ_US);
1910 }
1911
test_mm512_cmp_pd_mask_nge_uq(__m512d a,__m512d b)1912 __mmask8 test_mm512_cmp_pd_mask_nge_uq(__m512d a, __m512d b) {
1913 // CHECK-LABEL: test_mm512_cmp_pd_mask_nge_uq
1914 // CHECK: fcmp ult <8 x double> %{{.*}}, %{{.*}}
1915 return _mm512_cmp_pd_mask(a, b, _CMP_NGE_UQ);
1916 }
1917
test_mm512_cmp_pd_mask_ngt_uq(__m512d a,__m512d b)1918 __mmask8 test_mm512_cmp_pd_mask_ngt_uq(__m512d a, __m512d b) {
1919 // CHECK-LABEL: test_mm512_cmp_pd_mask_ngt_uq
1920 // CHECK: fcmp ule <8 x double> %{{.*}}, %{{.*}}
1921 return _mm512_cmp_pd_mask(a, b, _CMP_NGT_UQ);
1922 }
1923
test_mm512_cmp_pd_mask_false_os(__m512d a,__m512d b)1924 __mmask8 test_mm512_cmp_pd_mask_false_os(__m512d a, __m512d b) {
1925 // CHECK-LABEL: test_mm512_cmp_pd_mask_false_os
1926 // CHECK: fcmp false <8 x double> %{{.*}}, %{{.*}}
1927 return _mm512_cmp_pd_mask(a, b, _CMP_FALSE_OS);
1928 }
1929
test_mm512_cmp_pd_mask_neq_os(__m512d a,__m512d b)1930 __mmask8 test_mm512_cmp_pd_mask_neq_os(__m512d a, __m512d b) {
1931 // CHECK-LABEL: test_mm512_cmp_pd_mask_neq_os
1932 // CHECK: fcmp one <8 x double> %{{.*}}, %{{.*}}
1933 return _mm512_cmp_pd_mask(a, b, _CMP_NEQ_OS);
1934 }
1935
test_mm512_cmp_pd_mask_ge_oq(__m512d a,__m512d b)1936 __mmask8 test_mm512_cmp_pd_mask_ge_oq(__m512d a, __m512d b) {
1937 // CHECK-LABEL: test_mm512_cmp_pd_mask_ge_oq
1938 // CHECK: fcmp oge <8 x double> %{{.*}}, %{{.*}}
1939 return _mm512_cmp_pd_mask(a, b, _CMP_GE_OQ);
1940 }
1941
test_mm512_cmp_pd_mask_gt_oq(__m512d a,__m512d b)1942 __mmask8 test_mm512_cmp_pd_mask_gt_oq(__m512d a, __m512d b) {
1943 // CHECK-LABEL: test_mm512_cmp_pd_mask_gt_oq
1944 // CHECK: fcmp ogt <8 x double> %{{.*}}, %{{.*}}
1945 return _mm512_cmp_pd_mask(a, b, _CMP_GT_OQ);
1946 }
1947
test_mm512_cmp_pd_mask_true_us(__m512d a,__m512d b)1948 __mmask8 test_mm512_cmp_pd_mask_true_us(__m512d a, __m512d b) {
1949 // CHECK-LABEL: test_mm512_cmp_pd_mask_true_us
1950 // CHECK: fcmp true <8 x double> %{{.*}}, %{{.*}}
1951 return _mm512_cmp_pd_mask(a, b, _CMP_TRUE_US);
1952 }
1953
test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m,__m512d a,__m512d b)1954 __mmask8 test_mm512_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m512d a, __m512d b) {
1955 // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask_eq_oq
1956 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
1957 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1958 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);
1959 }
1960
test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m,__m512d a,__m512d b)1961 __mmask8 test_mm512_mask_cmp_pd_mask_lt_os(__mmask8 m, __m512d a, __m512d b) {
1962 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_os
1963 // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
1964 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1965 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);
1966 }
1967
test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m,__m512d a,__m512d b)1968 __mmask8 test_mm512_mask_cmp_pd_mask_le_os(__mmask8 m, __m512d a, __m512d b) {
1969 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_os
1970 // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
1971 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1972 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);
1973 }
1974
test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m,__m512d a,__m512d b)1975 __mmask8 test_mm512_mask_cmp_pd_mask_unord_q(__mmask8 m, __m512d a, __m512d b) {
1976 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_q
1977 // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
1978 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1979 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);
1980 }
1981
test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m,__m512d a,__m512d b)1982 __mmask8 test_mm512_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m512d a, __m512d b) {
1983 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_uq
1984 // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
1985 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1986 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);
1987 }
1988
test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m,__m512d a,__m512d b)1989 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m512d a, __m512d b) {
1990 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_us
1991 // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
1992 // CHECK: and <8 x i1> [[CMP]], {{.*}}
1993 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);
1994 }
1995
test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m,__m512d a,__m512d b)1996 __mmask8 test_mm512_mask_cmp_pd_mask_nle_us(__mmask8 m, __m512d a, __m512d b) {
1997 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_us
1998 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
1999 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2000 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);
2001 }
2002
test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m,__m512d a,__m512d b)2003 __mmask8 test_mm512_mask_cmp_pd_mask_ord_q(__mmask8 m, __m512d a, __m512d b) {
2004 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_q
2005 // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2006 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2007 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);
2008 }
2009
test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m,__m512d a,__m512d b)2010 __mmask8 test_mm512_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m512d a, __m512d b) {
2011 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_uq
2012 // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
2013 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2014 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);
2015 }
2016
test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m,__m512d a,__m512d b)2017 __mmask8 test_mm512_mask_cmp_pd_mask_nge_us(__mmask8 m, __m512d a, __m512d b) {
2018 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_us
2019 // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
2020 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2021 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);
2022 }
2023
test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m,__m512d a,__m512d b)2024 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m512d a, __m512d b) {
2025 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_us
2026 // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
2027 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2028 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);
2029 }
2030
test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m,__m512d a,__m512d b)2031 __mmask8 test_mm512_mask_cmp_pd_mask_false_oq(__mmask8 m, __m512d a, __m512d b) {
2032 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_oq
2033 // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
2034 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2035 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);
2036 }
2037
test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m,__m512d a,__m512d b)2038 __mmask8 test_mm512_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m512d a, __m512d b) {
2039 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_oq
2040 // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2041 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2042 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);
2043 }
2044
test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m,__m512d a,__m512d b)2045 __mmask8 test_mm512_mask_cmp_pd_mask_ge_os(__mmask8 m, __m512d a, __m512d b) {
2046 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_os
2047 // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2048 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2049 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);
2050 }
2051
test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m,__m512d a,__m512d b)2052 __mmask8 test_mm512_mask_cmp_pd_mask_gt_os(__mmask8 m, __m512d a, __m512d b) {
2053 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_os
2054 // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2055 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2056 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);
2057 }
2058
test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m,__m512d a,__m512d b)2059 __mmask8 test_mm512_mask_cmp_pd_mask_true_uq(__mmask8 m, __m512d a, __m512d b) {
2060 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_uq
2061 // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2062 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2063 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);
2064 }
2065
test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m,__m512d a,__m512d b)2066 __mmask8 test_mm512_mask_cmp_pd_mask_eq_os(__mmask8 m, __m512d a, __m512d b) {
2067 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_os
2068 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2069 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2070 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);
2071 }
2072
test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m,__m512d a,__m512d b)2073 __mmask8 test_mm512_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m512d a, __m512d b) {
2074 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_lt_oq
2075 // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2076 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2077 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);
2078 }
2079
test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m,__m512d a,__m512d b)2080 __mmask8 test_mm512_mask_cmp_pd_mask_le_oq(__mmask8 m, __m512d a, __m512d b) {
2081 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_le_oq
2082 // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2083 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2084 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);
2085 }
2086
test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m,__m512d a,__m512d b)2087 __mmask8 test_mm512_mask_cmp_pd_mask_unord_s(__mmask8 m, __m512d a, __m512d b) {
2088 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_unord_s
2089 // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2090 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2091 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);
2092 }
2093
test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m,__m512d a,__m512d b)2094 __mmask8 test_mm512_mask_cmp_pd_mask_neq_us(__mmask8 m, __m512d a, __m512d b) {
2095 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_us
2096 // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2097 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2098 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);
2099 }
2100
test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m,__m512d a,__m512d b)2101 __mmask8 test_mm512_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m512d a, __m512d b) {
2102 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nlt_uq
2103 // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2104 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2105 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);
2106 }
2107
test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m,__m512d a,__m512d b)2108 __mmask8 test_mm512_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m512d a, __m512d b) {
2109 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nle_uq
2110 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2111 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2112 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);
2113 }
2114
test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m,__m512d a,__m512d b)2115 __mmask8 test_mm512_mask_cmp_pd_mask_ord_s(__mmask8 m, __m512d a, __m512d b) {
2116 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ord_s
2117 // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2118 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2119 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);
2120 }
2121
test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m,__m512d a,__m512d b)2122 __mmask8 test_mm512_mask_cmp_pd_mask_eq_us(__mmask8 m, __m512d a, __m512d b) {
2123 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_eq_us
2124 // CHECK: [[CMP:%.*]] = fcmp ueq <8 x double> %{{.*}}, %{{.*}}
2125 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2126 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);
2127 }
2128
test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m,__m512d a,__m512d b)2129 __mmask8 test_mm512_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m512d a, __m512d b) {
2130 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_nge_uq
2131 // CHECK: [[CMP:%.*]] = fcmp ult <8 x double> %{{.*}}, %{{.*}}
2132 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2133 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);
2134 }
2135
test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m,__m512d a,__m512d b)2136 __mmask8 test_mm512_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m512d a, __m512d b) {
2137 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ngt_uq
2138 // CHECK: [[CMP:%.*]] = fcmp ule <8 x double> %{{.*}}, %{{.*}}
2139 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2140 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);
2141 }
2142
test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m,__m512d a,__m512d b)2143 __mmask8 test_mm512_mask_cmp_pd_mask_false_os(__mmask8 m, __m512d a, __m512d b) {
2144 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_false_os
2145 // CHECK: [[CMP:%.*]] = fcmp false <8 x double> %{{.*}}, %{{.*}}
2146 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2147 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);
2148 }
2149
test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m,__m512d a,__m512d b)2150 __mmask8 test_mm512_mask_cmp_pd_mask_neq_os(__mmask8 m, __m512d a, __m512d b) {
2151 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_neq_os
2152 // CHECK: [[CMP:%.*]] = fcmp one <8 x double> %{{.*}}, %{{.*}}
2153 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2154 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);
2155 }
2156
test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m,__m512d a,__m512d b)2157 __mmask8 test_mm512_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m512d a, __m512d b) {
2158 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_ge_oq
2159 // CHECK: [[CMP:%.*]] = fcmp oge <8 x double> %{{.*}}, %{{.*}}
2160 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2161 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);
2162 }
2163
test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m,__m512d a,__m512d b)2164 __mmask8 test_mm512_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m512d a, __m512d b) {
2165 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_gt_oq
2166 // CHECK: [[CMP:%.*]] = fcmp ogt <8 x double> %{{.*}}, %{{.*}}
2167 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2168 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);
2169 }
2170
test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m,__m512d a,__m512d b)2171 __mmask8 test_mm512_mask_cmp_pd_mask_true_us(__mmask8 m, __m512d a, __m512d b) {
2172 // CHECK-LABEL: test_mm512_mask_cmp_pd_mask_true_us
2173 // CHECK: [[CMP:%.*]] = fcmp true <8 x double> %{{.*}}, %{{.*}}
2174 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2175 return _mm512_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);
2176 }
2177
test_mm512_mask_cmp_pd_mask(__mmask8 m,__m512d a,__m512d b)2178 __mmask8 test_mm512_mask_cmp_pd_mask(__mmask8 m, __m512d a, __m512d b) {
2179 // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask
2180 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2181 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2182 return _mm512_mask_cmp_pd_mask(m, a, b, 0);
2183 }
2184
test_mm512_cmpeq_pd_mask(__m512d a,__m512d b)2185 __mmask8 test_mm512_cmpeq_pd_mask(__m512d a, __m512d b) {
2186 // CHECK-LABEL: @test_mm512_cmpeq_pd_mask
2187 // CHECK: fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2188 return _mm512_cmpeq_pd_mask(a, b);
2189 }
2190
test_mm512_cmpeq_ps_mask(__m512 a,__m512 b)2191 __mmask16 test_mm512_cmpeq_ps_mask(__m512 a, __m512 b) {
2192 // CHECK-LABEL: @test_mm512_cmpeq_ps_mask
2193 // CHECK: fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2194 return _mm512_cmpeq_ps_mask(a, b);
2195 }
2196
test_mm512_mask_cmpeq_pd_mask(__mmask8 k,__m512d a,__m512d b)2197 __mmask8 test_mm512_mask_cmpeq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2198 // CHECK-LABEL: @test_mm512_mask_cmpeq_pd_mask
2199 // CHECK: [[CMP:%.*]] = fcmp oeq <8 x double> %{{.*}}, %{{.*}}
2200 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2201 return _mm512_mask_cmpeq_pd_mask(k, a, b);
2202 }
2203
test_mm512_mask_cmpeq_ps_mask(__mmask16 k,__m512 a,__m512 b)2204 __mmask16 test_mm512_mask_cmpeq_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2205 // CHECK-LABEL: @test_mm512_mask_cmpeq_ps_mask
2206 // CHECK: [[CMP:%.*]] = fcmp oeq <16 x float> %{{.*}}, %{{.*}}
2207 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2208 return _mm512_mask_cmpeq_ps_mask(k, a, b);
2209 }
2210
test_mm512_cmple_pd_mask(__m512d a,__m512d b)2211 __mmask8 test_mm512_cmple_pd_mask(__m512d a, __m512d b) {
2212 // CHECK-LABEL: @test_mm512_cmple_pd_mask
2213 // CHECK: fcmp ole <8 x double> %{{.*}}, %{{.*}}
2214 return _mm512_cmple_pd_mask(a, b);
2215 }
2216
test_mm512_cmple_ps_mask(__m512 a,__m512 b)2217 __mmask16 test_mm512_cmple_ps_mask(__m512 a, __m512 b) {
2218 // CHECK-LABEL: @test_mm512_cmple_ps_mask
2219 // CHECK: fcmp ole <16 x float> %{{.*}}, %{{.*}}
2220 return _mm512_cmple_ps_mask(a, b);
2221 }
2222
test_mm512_mask_cmple_pd_mask(__mmask8 k,__m512d a,__m512d b)2223 __mmask8 test_mm512_mask_cmple_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2224 // CHECK-LABEL: @test_mm512_mask_cmple_pd_mask
2225 // CHECK: [[CMP:%.*]] = fcmp ole <8 x double> %{{.*}}, %{{.*}}
2226 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2227 return _mm512_mask_cmple_pd_mask(k, a, b);
2228 }
2229
test_mm512_mask_cmple_ps_mask(__mmask16 k,__m512 a,__m512 b)2230 __mmask16 test_mm512_mask_cmple_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2231 // CHECK-LABEL: @test_mm512_mask_cmple_ps_mask
2232 // CHECK: [[CMP:%.*]] = fcmp ole <16 x float> %{{.*}}, %{{.*}}
2233 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2234 return _mm512_mask_cmple_ps_mask(k, a, b);
2235 }
2236
test_mm512_cmplt_pd_mask(__m512d a,__m512d b)2237 __mmask8 test_mm512_cmplt_pd_mask(__m512d a, __m512d b) {
2238 // CHECK-LABEL: @test_mm512_cmplt_pd_mask
2239 // CHECK: fcmp olt <8 x double> %{{.*}}, %{{.*}}
2240 return _mm512_cmplt_pd_mask(a, b);
2241 }
2242
test_mm512_cmplt_ps_mask(__m512 a,__m512 b)2243 __mmask16 test_mm512_cmplt_ps_mask(__m512 a, __m512 b) {
2244 // CHECK-LABEL: @test_mm512_cmplt_ps_mask
2245 // CHECK: fcmp olt <16 x float> %{{.*}}, %{{.*}}
2246 return _mm512_cmplt_ps_mask(a, b);
2247 }
2248
test_mm512_mask_cmplt_pd_mask(__mmask8 k,__m512d a,__m512d b)2249 __mmask8 test_mm512_mask_cmplt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2250 // CHECK-LABEL: @test_mm512_mask_cmplt_pd_mask
2251 // CHECK: [[CMP:%.*]] = fcmp olt <8 x double> %{{.*}}, %{{.*}}
2252 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2253 return _mm512_mask_cmplt_pd_mask(k, a, b);
2254 }
2255
test_mm512_mask_cmplt_ps_mask(__mmask16 k,__m512 a,__m512 b)2256 __mmask16 test_mm512_mask_cmplt_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2257 // CHECK-LABEL: @test_mm512_mask_cmplt_ps_mask
2258 // CHECK: [[CMP:%.*]] = fcmp olt <16 x float> %{{.*}}, %{{.*}}
2259 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2260 return _mm512_mask_cmplt_ps_mask(k, a, b);
2261 }
2262
test_mm512_cmpneq_pd_mask(__m512d a,__m512d b)2263 __mmask8 test_mm512_cmpneq_pd_mask(__m512d a, __m512d b) {
2264 // CHECK-LABEL: @test_mm512_cmpneq_pd_mask
2265 // CHECK: fcmp une <8 x double> %{{.*}}, %{{.*}}
2266 return _mm512_cmpneq_pd_mask(a, b);
2267 }
2268
test_mm512_cmpneq_ps_mask(__m512 a,__m512 b)2269 __mmask16 test_mm512_cmpneq_ps_mask(__m512 a, __m512 b) {
2270 // CHECK-LABEL: @test_mm512_cmpneq_ps_mask
2271 // CHECK: fcmp une <16 x float> %{{.*}}, %{{.*}}
2272 return _mm512_cmpneq_ps_mask(a, b);
2273 }
2274
test_mm512_mask_cmpneq_pd_mask(__mmask8 k,__m512d a,__m512d b)2275 __mmask8 test_mm512_mask_cmpneq_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2276 // CHECK-LABEL: @test_mm512_mask_cmpneq_pd_mask
2277 // CHECK: [[CMP:%.*]] = fcmp une <8 x double> %{{.*}}, %{{.*}}
2278 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2279 return _mm512_mask_cmpneq_pd_mask(k, a, b);
2280 }
2281
test_mm512_mask_cmpneq_ps_mask(__mmask16 k,__m512 a,__m512 b)2282 __mmask16 test_mm512_mask_cmpneq_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2283 // CHECK-LABEL: @test_mm512_mask_cmpneq_ps_mask
2284 // CHECK: [[CMP:%.*]] = fcmp une <16 x float> %{{.*}}, %{{.*}}
2285 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2286 return _mm512_mask_cmpneq_ps_mask(k, a, b);
2287 }
2288
test_mm512_cmpnle_pd_mask(__m512d a,__m512d b)2289 __mmask8 test_mm512_cmpnle_pd_mask(__m512d a, __m512d b) {
2290 // CHECK-LABEL: @test_mm512_cmpnle_pd_mask
2291 // CHECK: fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2292 return _mm512_cmpnle_pd_mask(a, b);
2293 }
2294
test_mm512_cmpnle_ps_mask(__m512 a,__m512 b)2295 __mmask16 test_mm512_cmpnle_ps_mask(__m512 a, __m512 b) {
2296 // CHECK-LABEL: @test_mm512_cmpnle_ps_mask
2297 // CHECK: fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2298 return _mm512_cmpnle_ps_mask(a, b);
2299 }
2300
test_mm512_mask_cmpnle_pd_mask(__mmask8 k,__m512d a,__m512d b)2301 __mmask8 test_mm512_mask_cmpnle_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2302 // CHECK-LABEL: @test_mm512_mask_cmpnle_pd_mask
2303 // CHECK: [[CMP:%.*]] = fcmp ugt <8 x double> %{{.*}}, %{{.*}}
2304 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2305 return _mm512_mask_cmpnle_pd_mask(k, a, b);
2306 }
2307
test_mm512_mask_cmpnle_ps_mask(__mmask16 k,__m512 a,__m512 b)2308 __mmask16 test_mm512_mask_cmpnle_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2309 // CHECK-LABEL: @test_mm512_mask_cmpnle_ps_mask
2310 // CHECK: [[CMP:%.*]] = fcmp ugt <16 x float> %{{.*}}, %{{.*}}
2311 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2312 return _mm512_mask_cmpnle_ps_mask(k, a, b);
2313 }
2314
test_mm512_cmpnlt_pd_mask(__m512d a,__m512d b)2315 __mmask8 test_mm512_cmpnlt_pd_mask(__m512d a, __m512d b) {
2316 // CHECK-LABEL: @test_mm512_cmpnlt_pd_mask
2317 // CHECK: fcmp uge <8 x double> %{{.*}}, %{{.*}}
2318 return _mm512_cmpnlt_pd_mask(a, b);
2319 }
2320
test_mm512_cmpnlt_ps_mask(__m512 a,__m512 b)2321 __mmask16 test_mm512_cmpnlt_ps_mask(__m512 a, __m512 b) {
2322 // CHECK-LABEL: @test_mm512_cmpnlt_ps_mask
2323 // CHECK: fcmp uge <16 x float> %{{.*}}, %{{.*}}
2324 return _mm512_cmpnlt_ps_mask(a, b);
2325 }
2326
test_mm512_mask_cmpnlt_pd_mask(__mmask8 k,__m512d a,__m512d b)2327 __mmask8 test_mm512_mask_cmpnlt_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2328 // CHECK-LABEL: @test_mm512_mask_cmpnlt_pd_mask
2329 // CHECK: [[CMP:%.*]] = fcmp uge <8 x double> %{{.*}}, %{{.*}}
2330 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2331 return _mm512_mask_cmpnlt_pd_mask(k, a, b);
2332 }
2333
test_mm512_mask_cmpnlt_ps_mask(__mmask16 k,__m512 a,__m512 b)2334 __mmask16 test_mm512_mask_cmpnlt_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2335 // CHECK-LABEL: @test_mm512_mask_cmpnlt_ps_mask
2336 // CHECK: [[CMP:%.*]] = fcmp uge <16 x float> %{{.*}}, %{{.*}}
2337 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2338 return _mm512_mask_cmpnlt_ps_mask(k, a, b);
2339 }
2340
test_mm512_cmpord_pd_mask(__m512d a,__m512d b)2341 __mmask8 test_mm512_cmpord_pd_mask(__m512d a, __m512d b) {
2342 // CHECK-LABEL: @test_mm512_cmpord_pd_mask
2343 // CHECK: fcmp ord <8 x double> %{{.*}}, %{{.*}}
2344 return _mm512_cmpord_pd_mask(a, b);
2345 }
2346
test_mm512_cmpord_ps_mask(__m512 a,__m512 b)2347 __mmask16 test_mm512_cmpord_ps_mask(__m512 a, __m512 b) {
2348 // CHECK-LABEL: @test_mm512_cmpord_ps_mask
2349 // CHECK: fcmp ord <16 x float> %{{.*}}, %{{.*}}
2350 return _mm512_cmpord_ps_mask(a, b);
2351 }
2352
test_mm512_mask_cmpord_pd_mask(__mmask8 k,__m512d a,__m512d b)2353 __mmask8 test_mm512_mask_cmpord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2354 // CHECK-LABEL: @test_mm512_mask_cmpord_pd_mask
2355 // CHECK: [[CMP:%.*]] = fcmp ord <8 x double> %{{.*}}, %{{.*}}
2356 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2357 return _mm512_mask_cmpord_pd_mask(k, a, b);
2358 }
2359
test_mm512_mask_cmpord_ps_mask(__mmask16 k,__m512 a,__m512 b)2360 __mmask16 test_mm512_mask_cmpord_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2361 // CHECK-LABEL: @test_mm512_mask_cmpord_ps_mask
2362 // CHECK: [[CMP:%.*]] = fcmp ord <16 x float> %{{.*}}, %{{.*}}
2363 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2364 return _mm512_mask_cmpord_ps_mask(k, a, b);
2365 }
2366
test_mm512_cmpunord_pd_mask(__m512d a,__m512d b)2367 __mmask8 test_mm512_cmpunord_pd_mask(__m512d a, __m512d b) {
2368 // CHECK-LABEL: @test_mm512_cmpunord_pd_mask
2369 // CHECK: fcmp uno <8 x double> %{{.*}}, %{{.*}}
2370 return _mm512_cmpunord_pd_mask(a, b);
2371 }
2372
test_mm512_cmpunord_ps_mask(__m512 a,__m512 b)2373 __mmask16 test_mm512_cmpunord_ps_mask(__m512 a, __m512 b) {
2374 // CHECK-LABEL: @test_mm512_cmpunord_ps_mask
2375 // CHECK: fcmp uno <16 x float> %{{.*}}, %{{.*}}
2376 return _mm512_cmpunord_ps_mask(a, b);
2377 }
2378
test_mm512_mask_cmpunord_pd_mask(__mmask8 k,__m512d a,__m512d b)2379 __mmask8 test_mm512_mask_cmpunord_pd_mask(__mmask8 k, __m512d a, __m512d b) {
2380 // CHECK-LABEL: @test_mm512_mask_cmpunord_pd_mask
2381 // CHECK: [[CMP:%.*]] = fcmp uno <8 x double> %{{.*}}, %{{.*}}
2382 // CHECK: and <8 x i1> [[CMP]], {{.*}}
2383 return _mm512_mask_cmpunord_pd_mask(k, a, b);
2384 }
2385
test_mm512_mask_cmpunord_ps_mask(__mmask16 k,__m512 a,__m512 b)2386 __mmask16 test_mm512_mask_cmpunord_ps_mask(__mmask16 k, __m512 a, __m512 b) {
2387 // CHECK-LABEL: @test_mm512_mask_cmpunord_ps_mask
2388 // CHECK: [[CMP:%.*]] = fcmp uno <16 x float> %{{.*}}, %{{.*}}
2389 // CHECK: and <16 x i1> [[CMP]], {{.*}}
2390 return _mm512_mask_cmpunord_ps_mask(k, a, b);
2391 }
2392
test_mm512_extractf64x4_pd(__m512d a)2393 __m256d test_mm512_extractf64x4_pd(__m512d a)
2394 {
2395 // CHECK-LABEL: @test_mm512_extractf64x4_pd
2396 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2397 return _mm512_extractf64x4_pd(a, 1);
2398 }
2399
test_mm512_mask_extractf64x4_pd(__m256d __W,__mmask8 __U,__m512d __A)2400 __m256d test_mm512_mask_extractf64x4_pd(__m256d __W,__mmask8 __U,__m512d __A){
2401 // CHECK-LABEL:@test_mm512_mask_extractf64x4_pd
2402 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2403 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2404 return _mm512_mask_extractf64x4_pd( __W, __U, __A, 1);
2405 }
2406
test_mm512_maskz_extractf64x4_pd(__mmask8 __U,__m512d __A)2407 __m256d test_mm512_maskz_extractf64x4_pd(__mmask8 __U,__m512d __A){
2408 // CHECK-LABEL:@test_mm512_maskz_extractf64x4_pd
2409 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2410 // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
2411 return _mm512_maskz_extractf64x4_pd( __U, __A, 1);
2412 }
2413
test_mm512_extractf32x4_ps(__m512 a)2414 __m128 test_mm512_extractf32x4_ps(__m512 a)
2415 {
2416 // CHECK-LABEL: @test_mm512_extractf32x4_ps
2417 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2418 return _mm512_extractf32x4_ps(a, 1);
2419 }
2420
test_mm512_mask_extractf32x4_ps(__m128 __W,__mmask8 __U,__m512 __A)2421 __m128 test_mm512_mask_extractf32x4_ps(__m128 __W, __mmask8 __U,__m512 __A){
2422 // CHECK-LABEL:@test_mm512_mask_extractf32x4_ps
2423 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2424 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2425 return _mm512_mask_extractf32x4_ps( __W, __U, __A, 1);
2426 }
2427
test_mm512_maskz_extractf32x4_ps(__mmask8 __U,__m512 __A)2428 __m128 test_mm512_maskz_extractf32x4_ps( __mmask8 __U,__m512 __A){
2429 // CHECK-LABEL:@test_mm512_maskz_extractf32x4_ps
2430 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
2431 // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
2432 return _mm512_maskz_extractf32x4_ps( __U, __A, 1);
2433 }
2434
test_mm512_cmpeq_epu32_mask(__m512i __a,__m512i __b)2435 __mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2436 // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask
2437 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2438 return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b);
2439 }
2440
test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2441 __mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2442 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask
2443 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2444 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2445 return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b);
2446 }
2447
test_mm512_cmpeq_epu64_mask(__m512i __a,__m512i __b)2448 __mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2449 // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask
2450 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2451 return (__mmask8)_mm512_cmpeq_epu64_mask(__a, __b);
2452 }
2453
test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2454 __mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2455 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask
2456 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2457 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2458 return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b);
2459 }
2460
test_mm512_cmpge_epi32_mask(__m512i __a,__m512i __b)2461 __mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2462 // CHECK-LABEL: @test_mm512_cmpge_epi32_mask
2463 // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2464 return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b);
2465 }
2466
test_mm512_mask_cmpge_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2467 __mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2468 // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask
2469 // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}}
2470 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2471 return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b);
2472 }
2473
test_mm512_cmpge_epi64_mask(__m512i __a,__m512i __b)2474 __mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2475 // CHECK-LABEL: @test_mm512_cmpge_epi64_mask
2476 // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2477 return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b);
2478 }
2479
test_mm512_mask_cmpge_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2480 __mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2481 // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask
2482 // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}}
2483 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2484 return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b);
2485 }
2486
test_mm512_cmpge_epu32_mask(__m512i __a,__m512i __b)2487 __mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2488 // CHECK-LABEL: @test_mm512_cmpge_epu32_mask
2489 // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2490 return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b);
2491 }
2492
test_mm512_mask_cmpge_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2493 __mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2494 // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask
2495 // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}}
2496 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2497 return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b);
2498 }
2499
test_mm512_cmpge_epu64_mask(__m512i __a,__m512i __b)2500 __mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
2501 // CHECK-LABEL: @test_mm512_cmpge_epu64_mask
2502 // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2503 return (__mmask8)_mm512_cmpge_epu64_mask(__a, __b);
2504 }
2505
test_mm512_mask_cmpge_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2506 __mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2507 // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask
2508 // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}}
2509 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2510 return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b);
2511 }
2512
test_mm512_cmpgt_epu32_mask(__m512i __a,__m512i __b)2513 __mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
2514 // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask
2515 // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2516 return (__mmask16)_mm512_cmpgt_epu32_mask(__a, __b);
2517 }
2518
test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2519 __mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2520 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask
2521 // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}}
2522 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2523 return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b);
2524 }
2525
test_mm512_cmpgt_epu64_mask(__m512i __a,__m512i __b)2526 __mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
2527 // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask
2528 // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2529 return (__mmask8)_mm512_cmpgt_epu64_mask(__a, __b);
2530 }
2531
test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2532 __mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2533 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask
2534 // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}}
2535 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2536 return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b);
2537 }
2538
test_mm512_cmple_epi32_mask(__m512i __a,__m512i __b)2539 __mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
2540 // CHECK-LABEL: @test_mm512_cmple_epi32_mask
2541 // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2542 return (__mmask16)_mm512_cmple_epi32_mask(__a, __b);
2543 }
2544
test_mm512_mask_cmple_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2545 __mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2546 // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask
2547 // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}}
2548 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2549 return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b);
2550 }
2551
test_mm512_cmple_epi64_mask(__m512i __a,__m512i __b)2552 __mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
2553 // CHECK-LABEL: @test_mm512_cmple_epi64_mask
2554 // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2555 return (__mmask8)_mm512_cmple_epi64_mask(__a, __b);
2556 }
2557
test_mm512_mask_cmple_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2558 __mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2559 // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask
2560 // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}}
2561 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2562 return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b);
2563 }
2564
test_mm512_cmple_epu32_mask(__m512i __a,__m512i __b)2565 __mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
2566 // CHECK-LABEL: @test_mm512_cmple_epu32_mask
2567 // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2568 return (__mmask16)_mm512_cmple_epu32_mask(__a, __b);
2569 }
2570
test_mm512_mask_cmple_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2571 __mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2572 // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask
2573 // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}}
2574 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2575 return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b);
2576 }
2577
test_mm512_cmple_epu64_mask(__m512i __a,__m512i __b)2578 __mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
2579 // CHECK-LABEL: @test_mm512_cmple_epu64_mask
2580 // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2581 return (__mmask8)_mm512_cmple_epu64_mask(__a, __b);
2582 }
2583
test_mm512_mask_cmple_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2584 __mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2585 // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask
2586 // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}}
2587 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2588 return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b);
2589 }
2590
test_mm512_cmplt_epi32_mask(__m512i __a,__m512i __b)2591 __mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
2592 // CHECK-LABEL: @test_mm512_cmplt_epi32_mask
2593 // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2594 return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b);
2595 }
2596
test_mm512_mask_cmplt_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2597 __mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2598 // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask
2599 // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}}
2600 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2601 return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b);
2602 }
2603
test_mm512_cmplt_epi64_mask(__m512i __a,__m512i __b)2604 __mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
2605 // CHECK-LABEL: @test_mm512_cmplt_epi64_mask
2606 // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2607 return (__mmask8)_mm512_cmplt_epi64_mask(__a, __b);
2608 }
2609
test_mm512_mask_cmplt_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2610 __mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2611 // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask
2612 // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}}
2613 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2614 return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b);
2615 }
2616
test_mm512_cmplt_epu32_mask(__m512i __a,__m512i __b)2617 __mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
2618 // CHECK-LABEL: @test_mm512_cmplt_epu32_mask
2619 // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2620 return (__mmask16)_mm512_cmplt_epu32_mask(__a, __b);
2621 }
2622
test_mm512_mask_cmplt_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2623 __mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2624 // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask
2625 // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}}
2626 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2627 return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b);
2628 }
2629
test_mm512_cmplt_epu64_mask(__m512i __a,__m512i __b)2630 __mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
2631 // CHECK-LABEL: @test_mm512_cmplt_epu64_mask
2632 // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2633 return (__mmask8)_mm512_cmplt_epu64_mask(__a, __b);
2634 }
2635
test_mm512_mask_cmplt_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2636 __mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2637 // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask
2638 // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}}
2639 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2640 return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b);
2641 }
2642
test_mm512_cmpneq_epi32_mask(__m512i __a,__m512i __b)2643 __mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
2644 // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask
2645 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2646 return (__mmask16)_mm512_cmpneq_epi32_mask(__a, __b);
2647 }
2648
test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2649 __mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2650 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask
2651 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2652 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2653 return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b);
2654 }
2655
test_mm512_cmpneq_epi64_mask(__m512i __a,__m512i __b)2656 __mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
2657 // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask
2658 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2659 return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b);
2660 }
2661
test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2662 __mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2663 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask
2664 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2665 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2666 return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b);
2667 }
2668
test_mm512_cmpneq_epu32_mask(__m512i __a,__m512i __b)2669 __mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
2670 // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask
2671 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2672 return (__mmask16)_mm512_cmpneq_epu32_mask(__a, __b);
2673 }
2674
test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2675 __mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2676 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask
2677 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
2678 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2679 return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b);
2680 }
2681
test_mm512_cmpneq_epu64_mask(__m512i __a,__m512i __b)2682 __mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
2683 // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask
2684 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2685 return (__mmask8)_mm512_cmpneq_epu64_mask(__a, __b);
2686 }
2687
test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2688 __mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2689 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask
2690 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
2691 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2692 return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b);
2693 }
2694
test_mm512_cmp_eq_epi32_mask(__m512i __a,__m512i __b)2695 __mmask16 test_mm512_cmp_eq_epi32_mask(__m512i __a, __m512i __b) {
2696 // CHECK-LABEL: @test_mm512_cmp_eq_epi32_mask
2697 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2698 return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);
2699 }
2700
test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u,__m512i __a,__m512i __b)2701 __mmask16 test_mm512_mask_cmp_eq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2702 // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi32_mask
2703 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2704 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2705 return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_EQ);
2706 }
2707
test_mm512_cmp_eq_epi64_mask(__m512i __a,__m512i __b)2708 __mmask8 test_mm512_cmp_eq_epi64_mask(__m512i __a, __m512i __b) {
2709 // CHECK-LABEL: @test_mm512_cmp_eq_epi64_mask
2710 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2711 return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, _MM_CMPINT_EQ);
2712 }
2713
test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u,__m512i __a,__m512i __b)2714 __mmask8 test_mm512_mask_cmp_eq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2715 // CHECK-LABEL: @test_mm512_mask_cmp_eq_epi64_mask
2716 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2717 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2718 return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);
2719 }
2720
test_mm512_cmp_epu32_mask(__m512i __a,__m512i __b)2721 __mmask16 test_mm512_cmp_epu32_mask(__m512i __a, __m512i __b) {
2722 // CHECK-LABEL: @test_mm512_cmp_epu32_mask
2723 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2724 return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 0);
2725 }
2726
test_mm512_mask_cmp_epu32_mask(__mmask16 __u,__m512i __a,__m512i __b)2727 __mmask16 test_mm512_mask_cmp_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2728 // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask
2729 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
2730 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
2731 return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 0);
2732 }
2733
test_mm512_cmp_epu64_mask(__m512i __a,__m512i __b)2734 __mmask8 test_mm512_cmp_epu64_mask(__m512i __a, __m512i __b) {
2735 // CHECK-LABEL: @test_mm512_cmp_epu64_mask
2736 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2737 return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 0);
2738 }
2739
test_mm512_mask_cmp_epu64_mask(__mmask8 __u,__m512i __a,__m512i __b)2740 __mmask8 test_mm512_mask_cmp_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2741 // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask
2742 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
2743 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
2744 return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 0);
2745 }
2746
test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2747 __m512i test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2748 // CHECK-LABEL: @test_mm512_mask_and_epi32
2749 // CHECK: and <16 x i32>
2750 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2751 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2752 return _mm512_mask_and_epi32(__src, __k,__a, __b);
2753 }
2754
test_mm512_maskz_and_epi32(__mmask16 __k,__m512i __a,__m512i __b)2755 __m512i test_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2756 // CHECK-LABEL: @test_mm512_maskz_and_epi32
2757 // CHECK: and <16 x i32>
2758 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2759 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2760 return _mm512_maskz_and_epi32(__k,__a, __b);
2761 }
2762
test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2763 __m512i test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2764 // CHECK-LABEL: @test_mm512_mask_and_epi64
2765 // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2766 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2767 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2768 return _mm512_mask_and_epi64(__src, __k,__a, __b);
2769 }
2770
test_mm512_maskz_and_epi64(__mmask8 __k,__m512i __a,__m512i __b)2771 __m512i test_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2772 // CHECK-LABEL: @test_mm512_maskz_and_epi64
2773 // CHECK: %[[AND_RES:.*]] = and <8 x i64>
2774 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2775 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
2776 return _mm512_maskz_and_epi64(__k,__a, __b);
2777 }
2778
test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2779 __m512i test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2780 // CHECK-LABEL: @test_mm512_mask_or_epi32
2781 // CHECK: or <16 x i32>
2782 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2783 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2784 return _mm512_mask_or_epi32(__src, __k,__a, __b);
2785 }
2786
test_mm512_maskz_or_epi32(__mmask16 __k,__m512i __a,__m512i __b)2787 __m512i test_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2788 // CHECK-LABEL: @test_mm512_maskz_or_epi32
2789 // CHECK: or <16 x i32>
2790 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2791 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2792 return _mm512_maskz_or_epi32(__k,__a, __b);
2793 }
2794
test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2795 __m512i test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2796 // CHECK-LABEL: @test_mm512_mask_or_epi64
2797 // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2798 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2799 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2800 return _mm512_mask_or_epi64(__src, __k,__a, __b);
2801 }
2802
test_mm512_maskz_or_epi64(__mmask8 __k,__m512i __a,__m512i __b)2803 __m512i test_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2804 // CHECK-LABEL: @test_mm512_maskz_or_epi64
2805 // CHECK: %[[OR_RES:.*]] = or <8 x i64>
2806 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2807 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}}
2808 return _mm512_maskz_or_epi64(__k,__a, __b);
2809 }
2810
test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2811 __m512i test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2812 // CHECK-LABEL: @test_mm512_mask_xor_epi32
2813 // CHECK: xor <16 x i32>
2814 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2815 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2816 return _mm512_mask_xor_epi32(__src, __k,__a, __b);
2817 }
2818
test_mm512_maskz_xor_epi32(__mmask16 __k,__m512i __a,__m512i __b)2819 __m512i test_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b) {
2820 // CHECK-LABEL: @test_mm512_maskz_xor_epi32
2821 // CHECK: xor <16 x i32>
2822 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
2823 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2824 return _mm512_maskz_xor_epi32(__k,__a, __b);
2825 }
2826
test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2827 __m512i test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2828 // CHECK-LABEL: @test_mm512_mask_xor_epi64
2829 // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2830 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2831 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2832 return _mm512_mask_xor_epi64(__src, __k,__a, __b);
2833 }
2834
test_mm512_maskz_xor_epi64(__mmask8 __k,__m512i __a,__m512i __b)2835 __m512i test_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) {
2836 // CHECK-LABEL: @test_mm512_maskz_xor_epi64
2837 // CHECK: %[[XOR_RES:.*]] = xor <8 x i64>
2838 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
2839 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}}
2840 return _mm512_maskz_xor_epi64(__k,__a, __b);
2841 }
2842
test_mm512_and_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2843 __m512i test_mm512_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2844 // CHECK-LABEL: @test_mm512_and_epi32
2845 // CHECK: and <16 x i32>
2846 return _mm512_and_epi32(__a, __b);
2847 }
2848
test_mm512_and_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2849 __m512i test_mm512_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2850 // CHECK-LABEL: @test_mm512_and_epi64
2851 // CHECK: and <8 x i64>
2852 return _mm512_and_epi64(__a, __b);
2853 }
2854
test_mm512_or_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2855 __m512i test_mm512_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2856 // CHECK-LABEL: @test_mm512_or_epi32
2857 // CHECK: or <16 x i32>
2858 return _mm512_or_epi32(__a, __b);
2859 }
2860
test_mm512_or_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2861 __m512i test_mm512_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2862 // CHECK-LABEL: @test_mm512_or_epi64
2863 // CHECK: or <8 x i64>
2864 return _mm512_or_epi64(__a, __b);
2865 }
2866
test_mm512_xor_epi32(__m512i __src,__mmask16 __k,__m512i __a,__m512i __b)2867 __m512i test_mm512_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) {
2868 // CHECK-LABEL: @test_mm512_xor_epi32
2869 // CHECK: xor <16 x i32>
2870 return _mm512_xor_epi32(__a, __b);
2871 }
2872
test_mm512_xor_epi64(__m512i __src,__mmask8 __k,__m512i __a,__m512i __b)2873 __m512i test_mm512_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) {
2874 // CHECK-LABEL: @test_mm512_xor_epi64
2875 // CHECK: xor <8 x i64>
2876 return _mm512_xor_epi64(__a, __b);
2877 }
2878
test_mm512_maskz_andnot_epi32(__mmask16 __k,__m512i __A,__m512i __B)2879 __m512i test_mm512_maskz_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B){
2880 // CHECK-LABEL: @test_mm512_maskz_andnot_epi32
2881 // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
2882 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2883 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2884 return _mm512_maskz_andnot_epi32(__k,__A,__B);
2885 }
2886
test_mm512_mask_andnot_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2887 __m512i test_mm512_mask_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2888 __m512i __src) {
2889 // CHECK-LABEL: @test_mm512_mask_andnot_epi32
2890 // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
2891 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2892 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2893 return _mm512_mask_andnot_epi32(__src,__k,__A,__B);
2894 }
2895
test_mm512_andnot_si512(__m512i __A,__m512i __B)2896 __m512i test_mm512_andnot_si512(__m512i __A, __m512i __B)
2897 {
2898 //CHECK-LABEL: @test_mm512_andnot_si512
2899 //CHECK: load {{.*}}%__A.addr.i, align 64
2900 //CHECK: %neg.i = xor{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2901 //CHECK: load {{.*}}%__B.addr.i, align 64
2902 //CHECK: and <8 x i64> %neg.i,{{.*}}
2903
2904 return _mm512_andnot_si512(__A, __B);
2905 }
2906
test_mm512_andnot_epi32(__m512i __A,__m512i __B)2907 __m512i test_mm512_andnot_epi32(__m512i __A, __m512i __B) {
2908 // CHECK-LABEL: @test_mm512_andnot_epi32
2909 // CHECK: xor <16 x i32> %{{.*}}, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
2910 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
2911 return _mm512_andnot_epi32(__A,__B);
2912 }
2913
test_mm512_maskz_andnot_epi64(__mmask8 __k,__m512i __A,__m512i __B)2914 __m512i test_mm512_maskz_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2915 // CHECK-LABEL: @test_mm512_maskz_andnot_epi64
2916 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2917 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2918 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2919 return _mm512_maskz_andnot_epi64(__k,__A,__B);
2920 }
2921
test_mm512_mask_andnot_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2922 __m512i test_mm512_mask_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2923 __m512i __src) {
2924 //CHECK-LABEL: @test_mm512_mask_andnot_epi64
2925 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2926 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2927 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2928 return _mm512_mask_andnot_epi64(__src,__k,__A,__B);
2929 }
2930
test_mm512_andnot_epi64(__m512i __A,__m512i __B)2931 __m512i test_mm512_andnot_epi64(__m512i __A, __m512i __B) {
2932 //CHECK-LABEL: @test_mm512_andnot_epi64
2933 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
2934 // CHECK: and <8 x i64> %{{.*}}, %{{.*}}
2935 return _mm512_andnot_epi64(__A,__B);
2936 }
2937
test_mm512_maskz_sub_epi32(__mmask16 __k,__m512i __A,__m512i __B)2938 __m512i test_mm512_maskz_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
2939 //CHECK-LABEL: @test_mm512_maskz_sub_epi32
2940 //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2941 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2942 return _mm512_maskz_sub_epi32(__k,__A,__B);
2943 }
2944
test_mm512_mask_sub_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2945 __m512i test_mm512_mask_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2946 __m512i __src) {
2947 //CHECK-LABEL: @test_mm512_mask_sub_epi32
2948 //CHECK: sub <16 x i32> %{{.*}}, %{{.*}}
2949 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2950 return _mm512_mask_sub_epi32(__src,__k,__A,__B);
2951 }
2952
test_mm512_sub_epi32(__m512i __A,__m512i __B)2953 __m512i test_mm512_sub_epi32(__m512i __A, __m512i __B) {
2954 //CHECK-LABEL: @test_mm512_sub_epi32
2955 //CHECK: sub <16 x i32>
2956 return _mm512_sub_epi32(__A,__B);
2957 }
2958
test_mm512_maskz_sub_epi64(__mmask8 __k,__m512i __A,__m512i __B)2959 __m512i test_mm512_maskz_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
2960 //CHECK-LABEL: @test_mm512_maskz_sub_epi64
2961 //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2962 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2963 return _mm512_maskz_sub_epi64(__k,__A,__B);
2964 }
2965
test_mm512_mask_sub_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)2966 __m512i test_mm512_mask_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
2967 __m512i __src) {
2968 //CHECK-LABEL: @test_mm512_mask_sub_epi64
2969 //CHECK: sub <8 x i64> %{{.*}}, %{{.*}}
2970 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
2971 return _mm512_mask_sub_epi64(__src,__k,__A,__B);
2972 }
2973
test_mm512_sub_epi64(__m512i __A,__m512i __B)2974 __m512i test_mm512_sub_epi64(__m512i __A, __m512i __B) {
2975 //CHECK-LABEL: @test_mm512_sub_epi64
2976 //CHECK: sub <8 x i64>
2977 return _mm512_sub_epi64(__A,__B);
2978 }
2979
test_mm512_maskz_add_epi32(__mmask16 __k,__m512i __A,__m512i __B)2980 __m512i test_mm512_maskz_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
2981 //CHECK-LABEL: @test_mm512_maskz_add_epi32
2982 //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2983 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2984 return _mm512_maskz_add_epi32(__k,__A,__B);
2985 }
2986
test_mm512_mask_add_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)2987 __m512i test_mm512_mask_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B,
2988 __m512i __src) {
2989 //CHECK-LABEL: @test_mm512_mask_add_epi32
2990 //CHECK: add <16 x i32> %{{.*}}, %{{.*}}
2991 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
2992 return _mm512_mask_add_epi32(__src,__k,__A,__B);
2993 }
2994
test_mm512_add_epi32(__m512i __A,__m512i __B)2995 __m512i test_mm512_add_epi32(__m512i __A, __m512i __B) {
2996 //CHECK-LABEL: @test_mm512_add_epi32
2997 //CHECK: add <16 x i32>
2998 return _mm512_add_epi32(__A,__B);
2999 }
3000
test_mm512_maskz_add_epi64(__mmask8 __k,__m512i __A,__m512i __B)3001 __m512i test_mm512_maskz_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B) {
3002 //CHECK-LABEL: @test_mm512_maskz_add_epi64
3003 //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
3004 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3005 return _mm512_maskz_add_epi64(__k,__A,__B);
3006 }
3007
test_mm512_mask_add_epi64(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3008 __m512i test_mm512_mask_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B,
3009 __m512i __src) {
3010 //CHECK-LABEL: @test_mm512_mask_add_epi64
3011 //CHECK: add <8 x i64> %{{.*}}, %{{.*}}
3012 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3013 return _mm512_mask_add_epi64(__src,__k,__A,__B);
3014 }
3015
test_mm512_add_epi64(__m512i __A,__m512i __B)3016 __m512i test_mm512_add_epi64(__m512i __A, __m512i __B) {
3017 //CHECK-LABEL: @test_mm512_add_epi64
3018 //CHECK: add <8 x i64>
3019 return _mm512_add_epi64(__A,__B);
3020 }
3021
test_mm512_mul_epi32(__m512i __A,__m512i __B)3022 __m512i test_mm512_mul_epi32(__m512i __A, __m512i __B) {
3023 //CHECK-LABEL: @test_mm512_mul_epi32
3024 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3025 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3026 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3027 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3028 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3029 return _mm512_mul_epi32(__A,__B);
3030 }
3031
test_mm512_maskz_mul_epi32(__mmask8 __k,__m512i __A,__m512i __B)3032 __m512i test_mm512_maskz_mul_epi32 (__mmask8 __k,__m512i __A, __m512i __B) {
3033 //CHECK-LABEL: @test_mm512_maskz_mul_epi32
3034 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3035 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3036 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3037 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3038 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3039 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3040 return _mm512_maskz_mul_epi32(__k,__A,__B);
3041 }
3042
test_mm512_mask_mul_epi32(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3043 __m512i test_mm512_mask_mul_epi32 (__mmask8 __k,__m512i __A, __m512i __B, __m512i __src) {
3044 //CHECK-LABEL: @test_mm512_mask_mul_epi32
3045 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3046 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3047 //CHECK: shl <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3048 //CHECK: ashr <8 x i64> %{{.*}}, <i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32, i64 32>
3049 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3050 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3051 return _mm512_mask_mul_epi32(__src,__k,__A,__B);
3052 }
3053
test_mm512_mul_epu32(__m512i __A,__m512i __B)3054 __m512i test_mm512_mul_epu32 (__m512i __A, __m512i __B) {
3055 //CHECK-LABEL: @test_mm512_mul_epu32
3056 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3057 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3058 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3059 return _mm512_mul_epu32(__A,__B);
3060 }
3061
test_mm512_maskz_mul_epu32(__mmask8 __k,__m512i __A,__m512i __B)3062 __m512i test_mm512_maskz_mul_epu32 (__mmask8 __k,__m512i __A, __m512i __B) {
3063 //CHECK-LABEL: @test_mm512_maskz_mul_epu32
3064 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3065 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3066 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3067 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3068 return _mm512_maskz_mul_epu32(__k,__A,__B);
3069 }
3070
test_mm512_mask_mul_epu32(__mmask8 __k,__m512i __A,__m512i __B,__m512i __src)3071 __m512i test_mm512_mask_mul_epu32 (__mmask8 __k,__m512i __A, __m512i __B, __m512i __src) {
3072 //CHECK-LABEL: @test_mm512_mask_mul_epu32
3073 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3074 //CHECK: and <8 x i64> %{{.*}}, <i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295, i64 4294967295>
3075 //CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3076 //CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3077 return _mm512_mask_mul_epu32(__src,__k,__A,__B);
3078 }
3079
test_mm512_maskz_mullo_epi32(__mmask16 __k,__m512i __A,__m512i __B)3080 __m512i test_mm512_maskz_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B) {
3081 //CHECK-LABEL: @test_mm512_maskz_mullo_epi32
3082 //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3083 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3084 return _mm512_maskz_mullo_epi32(__k,__A,__B);
3085 }
3086
test_mm512_mask_mullo_epi32(__mmask16 __k,__m512i __A,__m512i __B,__m512i __src)3087 __m512i test_mm512_mask_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B, __m512i __src) {
3088 //CHECK-LABEL: @test_mm512_mask_mullo_epi32
3089 //CHECK: mul <16 x i32> %{{.*}}, %{{.*}}
3090 //CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3091 return _mm512_mask_mullo_epi32(__src,__k,__A,__B);
3092 }
3093
test_mm512_mullo_epi32(__m512i __A,__m512i __B)3094 __m512i test_mm512_mullo_epi32(__m512i __A, __m512i __B) {
3095 //CHECK-LABEL: @test_mm512_mullo_epi32
3096 //CHECK: mul <16 x i32>
3097 return _mm512_mullo_epi32(__A,__B);
3098 }
3099
test_mm512_mullox_epi64(__m512i __A,__m512i __B)3100 __m512i test_mm512_mullox_epi64 (__m512i __A, __m512i __B) {
3101 // CHECK-LABEL: @test_mm512_mullox_epi64
3102 // CHECK: mul <8 x i64>
3103 return (__m512i) _mm512_mullox_epi64(__A, __B);
3104 }
3105
test_mm512_mask_mullox_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)3106 __m512i test_mm512_mask_mullox_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
3107 // CHECK-LABEL: @test_mm512_mask_mullox_epi64
3108 // CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
3109 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3110 return (__m512i) _mm512_mask_mullox_epi64(__W, __U, __A, __B);
3111 }
3112
test_mm512_add_round_pd(__m512d __A,__m512d __B)3113 __m512d test_mm512_add_round_pd(__m512d __A, __m512d __B) {
3114 // CHECK-LABEL: @test_mm512_add_round_pd
3115 // CHECK: @llvm.x86.avx512.add.pd.512
3116 return _mm512_add_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3117 }
test_mm512_mask_add_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3118 __m512d test_mm512_mask_add_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3119 // CHECK-LABEL: @test_mm512_mask_add_round_pd
3120 // CHECK: @llvm.x86.avx512.add.pd.512
3121 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3122 return _mm512_mask_add_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3123 }
test_mm512_maskz_add_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3124 __m512d test_mm512_maskz_add_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3125 // CHECK-LABEL: @test_mm512_maskz_add_round_pd
3126 // CHECK: @llvm.x86.avx512.add.pd.512
3127 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3128 return _mm512_maskz_add_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3129 }
test_mm512_mask_add_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3130 __m512d test_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3131 // CHECK-LABEL: @test_mm512_mask_add_pd
3132 // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3133 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3134 return _mm512_mask_add_pd(__W,__U,__A,__B);
3135 }
test_mm512_maskz_add_pd(__mmask8 __U,__m512d __A,__m512d __B)3136 __m512d test_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3137 // CHECK-LABEL: @test_mm512_maskz_add_pd
3138 // CHECK: fadd <8 x double> %{{.*}}, %{{.*}}
3139 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3140 return _mm512_maskz_add_pd(__U,__A,__B);
3141 }
test_mm512_add_round_ps(__m512 __A,__m512 __B)3142 __m512 test_mm512_add_round_ps(__m512 __A, __m512 __B) {
3143 // CHECK-LABEL: @test_mm512_add_round_ps
3144 // CHECK: @llvm.x86.avx512.add.ps.512
3145 return _mm512_add_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3146 }
test_mm512_mask_add_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3147 __m512 test_mm512_mask_add_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3148 // CHECK-LABEL: @test_mm512_mask_add_round_ps
3149 // CHECK: @llvm.x86.avx512.add.ps.512
3150 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3151 return _mm512_mask_add_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3152 }
test_mm512_maskz_add_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3153 __m512 test_mm512_maskz_add_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3154 // CHECK-LABEL: @test_mm512_maskz_add_round_ps
3155 // CHECK: @llvm.x86.avx512.add.ps.512
3156 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3157 return _mm512_maskz_add_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3158 }
test_mm512_mask_add_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3159 __m512 test_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3160 // CHECK-LABEL: @test_mm512_mask_add_ps
3161 // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3162 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3163 return _mm512_mask_add_ps(__W,__U,__A,__B);
3164 }
test_mm512_maskz_add_ps(__mmask16 __U,__m512 __A,__m512 __B)3165 __m512 test_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3166 // CHECK-LABEL: @test_mm512_maskz_add_ps
3167 // CHECK: fadd <16 x float> %{{.*}}, %{{.*}}
3168 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3169 return _mm512_maskz_add_ps(__U,__A,__B);
3170 }
test_mm_add_round_ss(__m128 __A,__m128 __B)3171 __m128 test_mm_add_round_ss(__m128 __A, __m128 __B) {
3172 // CHECK-LABEL: @test_mm_add_round_ss
3173 // CHECK: @llvm.x86.avx512.mask.add.ss.round
3174 return _mm_add_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3175 }
test_mm_mask_add_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3176 __m128 test_mm_mask_add_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3177 // CHECK-LABEL: @test_mm_mask_add_round_ss
3178 // CHECK: @llvm.x86.avx512.mask.add.ss.round
3179 return _mm_mask_add_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3180 }
test_mm_maskz_add_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3181 __m128 test_mm_maskz_add_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3182 // CHECK-LABEL: @test_mm_maskz_add_round_ss
3183 // CHECK: @llvm.x86.avx512.mask.add.ss.round
3184 return _mm_maskz_add_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3185 }
test_mm_mask_add_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3186 __m128 test_mm_mask_add_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3187 // CHECK-LABEL: @test_mm_mask_add_ss
3188 // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3189 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3190 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3191 // CHECK: fadd float %{{.*}}, %{{.*}}
3192 // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3193 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3194 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3195 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3196 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3197 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3198 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3199 return _mm_mask_add_ss(__W,__U,__A,__B);
3200 }
test_mm_maskz_add_ss(__mmask8 __U,__m128 __A,__m128 __B)3201 __m128 test_mm_maskz_add_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3202 // CHECK-LABEL: @test_mm_maskz_add_ss
3203 // CHECK-NOT: @llvm.x86.avx512.mask.add.ss.round
3204 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3205 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3206 // CHECK: fadd float %{{.*}}, %{{.*}}
3207 // CHECK: insertelement <4 x float> %{{.*}}, i32 0
3208 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3209 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3210 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3211 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3212 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3213 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3214 return _mm_maskz_add_ss(__U,__A,__B);
3215 }
test_mm_add_round_sd(__m128d __A,__m128d __B)3216 __m128d test_mm_add_round_sd(__m128d __A, __m128d __B) {
3217 // CHECK-LABEL: @test_mm_add_round_sd
3218 // CHECK: @llvm.x86.avx512.mask.add.sd.round
3219 return _mm_add_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3220 }
test_mm_mask_add_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3221 __m128d test_mm_mask_add_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3222 // CHECK-LABEL: @test_mm_mask_add_round_sd
3223 // CHECK: @llvm.x86.avx512.mask.add.sd.round
3224 return _mm_mask_add_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3225 }
test_mm_maskz_add_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3226 __m128d test_mm_maskz_add_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3227 // CHECK-LABEL: @test_mm_maskz_add_round_sd
3228 // CHECK: @llvm.x86.avx512.mask.add.sd.round
3229 return _mm_maskz_add_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3230 }
test_mm_mask_add_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3231 __m128d test_mm_mask_add_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3232 // CHECK-LABEL: @test_mm_mask_add_sd
3233 // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3234 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3235 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3236 // CHECK: fadd double %{{.*}}, %{{.*}}
3237 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3238 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3239 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3240 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3241 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3242 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3243 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3244 return _mm_mask_add_sd(__W,__U,__A,__B);
3245 }
test_mm_maskz_add_sd(__mmask8 __U,__m128d __A,__m128d __B)3246 __m128d test_mm_maskz_add_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3247 // CHECK-LABEL: @test_mm_maskz_add_sd
3248 // CHECK-NOT: @llvm.x86.avx512.mask.add.sd.round
3249 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3250 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3251 // CHECK: fadd double %{{.*}}, %{{.*}}
3252 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3253 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3254 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3255 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3256 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3257 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3258 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3259 return _mm_maskz_add_sd(__U,__A,__B);
3260 }
test_mm512_sub_round_pd(__m512d __A,__m512d __B)3261 __m512d test_mm512_sub_round_pd(__m512d __A, __m512d __B) {
3262 // CHECK-LABEL: @test_mm512_sub_round_pd
3263 // CHECK: @llvm.x86.avx512.sub.pd.512
3264 return _mm512_sub_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3265 }
test_mm512_mask_sub_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3266 __m512d test_mm512_mask_sub_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3267 // CHECK-LABEL: @test_mm512_mask_sub_round_pd
3268 // CHECK: @llvm.x86.avx512.sub.pd.512
3269 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3270 return _mm512_mask_sub_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3271 }
test_mm512_maskz_sub_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3272 __m512d test_mm512_maskz_sub_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3273 // CHECK-LABEL: @test_mm512_maskz_sub_round_pd
3274 // CHECK: @llvm.x86.avx512.sub.pd.512
3275 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3276 return _mm512_maskz_sub_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3277 }
test_mm512_mask_sub_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3278 __m512d test_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3279 // CHECK-LABEL: @test_mm512_mask_sub_pd
3280 // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3281 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3282 return _mm512_mask_sub_pd(__W,__U,__A,__B);
3283 }
test_mm512_maskz_sub_pd(__mmask8 __U,__m512d __A,__m512d __B)3284 __m512d test_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3285 // CHECK-LABEL: @test_mm512_maskz_sub_pd
3286 // CHECK: fsub <8 x double> %{{.*}}, %{{.*}}
3287 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3288 return _mm512_maskz_sub_pd(__U,__A,__B);
3289 }
test_mm512_sub_round_ps(__m512 __A,__m512 __B)3290 __m512 test_mm512_sub_round_ps(__m512 __A, __m512 __B) {
3291 // CHECK-LABEL: @test_mm512_sub_round_ps
3292 // CHECK: @llvm.x86.avx512.sub.ps.512
3293 return _mm512_sub_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3294 }
test_mm512_mask_sub_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3295 __m512 test_mm512_mask_sub_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3296 // CHECK-LABEL: @test_mm512_mask_sub_round_ps
3297 // CHECK: @llvm.x86.avx512.sub.ps.512
3298 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3299 return _mm512_mask_sub_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3300 }
test_mm512_maskz_sub_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3301 __m512 test_mm512_maskz_sub_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3302 // CHECK-LABEL: @test_mm512_maskz_sub_round_ps
3303 // CHECK: @llvm.x86.avx512.sub.ps.512
3304 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3305 return _mm512_maskz_sub_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3306 }
test_mm512_mask_sub_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3307 __m512 test_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3308 // CHECK-LABEL: @test_mm512_mask_sub_ps
3309 // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3310 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3311 return _mm512_mask_sub_ps(__W,__U,__A,__B);
3312 }
test_mm512_maskz_sub_ps(__mmask16 __U,__m512 __A,__m512 __B)3313 __m512 test_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3314 // CHECK-LABEL: @test_mm512_maskz_sub_ps
3315 // CHECK: fsub <16 x float> %{{.*}}, %{{.*}}
3316 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3317 return _mm512_maskz_sub_ps(__U,__A,__B);
3318 }
test_mm_sub_round_ss(__m128 __A,__m128 __B)3319 __m128 test_mm_sub_round_ss(__m128 __A, __m128 __B) {
3320 // CHECK-LABEL: @test_mm_sub_round_ss
3321 // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3322 return _mm_sub_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3323 }
test_mm_mask_sub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3324 __m128 test_mm_mask_sub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3325 // CHECK-LABEL: @test_mm_mask_sub_round_ss
3326 // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3327 return _mm_mask_sub_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3328 }
test_mm_maskz_sub_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3329 __m128 test_mm_maskz_sub_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3330 // CHECK-LABEL: @test_mm_maskz_sub_round_ss
3331 // CHECK: @llvm.x86.avx512.mask.sub.ss.round
3332 return _mm_maskz_sub_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3333 }
test_mm_mask_sub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3334 __m128 test_mm_mask_sub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3335 // CHECK-LABEL: @test_mm_mask_sub_ss
3336 // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3337 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3338 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3339 // CHECK: fsub float %{{.*}}, %{{.*}}
3340 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3341 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3342 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3343 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3344 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3345 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3346 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3347 return _mm_mask_sub_ss(__W,__U,__A,__B);
3348 }
test_mm_maskz_sub_ss(__mmask8 __U,__m128 __A,__m128 __B)3349 __m128 test_mm_maskz_sub_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3350 // CHECK-LABEL: @test_mm_maskz_sub_ss
3351 // CHECK-NOT: @llvm.x86.avx512.mask.sub.ss.round
3352 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3353 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3354 // CHECK: fsub float %{{.*}}, %{{.*}}
3355 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3356 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3357 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3358 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3359 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3360 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3361 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3362 return _mm_maskz_sub_ss(__U,__A,__B);
3363 }
test_mm_sub_round_sd(__m128d __A,__m128d __B)3364 __m128d test_mm_sub_round_sd(__m128d __A, __m128d __B) {
3365 // CHECK-LABEL: @test_mm_sub_round_sd
3366 // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3367 return _mm_sub_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3368 }
test_mm_mask_sub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3369 __m128d test_mm_mask_sub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3370 // CHECK-LABEL: @test_mm_mask_sub_round_sd
3371 // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3372 return _mm_mask_sub_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3373 }
test_mm_maskz_sub_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3374 __m128d test_mm_maskz_sub_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3375 // CHECK-LABEL: @test_mm_maskz_sub_round_sd
3376 // CHECK: @llvm.x86.avx512.mask.sub.sd.round
3377 return _mm_maskz_sub_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3378 }
test_mm_mask_sub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3379 __m128d test_mm_mask_sub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3380 // CHECK-LABEL: @test_mm_mask_sub_sd
3381 // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3382 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3383 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3384 // CHECK: fsub double %{{.*}}, %{{.*}}
3385 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3386 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3387 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3388 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3389 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3390 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3391 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3392 return _mm_mask_sub_sd(__W,__U,__A,__B);
3393 }
test_mm_maskz_sub_sd(__mmask8 __U,__m128d __A,__m128d __B)3394 __m128d test_mm_maskz_sub_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3395 // CHECK-LABEL: @test_mm_maskz_sub_sd
3396 // CHECK-NOT: @llvm.x86.avx512.mask.sub.sd.round
3397 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3398 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3399 // CHECK: fsub double %{{.*}}, %{{.*}}
3400 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3401 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3402 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3403 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3404 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3405 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3406 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3407 return _mm_maskz_sub_sd(__U,__A,__B);
3408 }
test_mm512_mul_round_pd(__m512d __A,__m512d __B)3409 __m512d test_mm512_mul_round_pd(__m512d __A, __m512d __B) {
3410 // CHECK-LABEL: @test_mm512_mul_round_pd
3411 // CHECK: @llvm.x86.avx512.mul.pd.512
3412 return _mm512_mul_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3413 }
test_mm512_mask_mul_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3414 __m512d test_mm512_mask_mul_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3415 // CHECK-LABEL: @test_mm512_mask_mul_round_pd
3416 // CHECK: @llvm.x86.avx512.mul.pd.512
3417 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3418 return _mm512_mask_mul_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3419 }
test_mm512_maskz_mul_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3420 __m512d test_mm512_maskz_mul_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3421 // CHECK-LABEL: @test_mm512_maskz_mul_round_pd
3422 // CHECK: @llvm.x86.avx512.mul.pd.512
3423 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3424 return _mm512_maskz_mul_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3425 }
test_mm512_mask_mul_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3426 __m512d test_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3427 // CHECK-LABEL: @test_mm512_mask_mul_pd
3428 // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3429 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3430 return _mm512_mask_mul_pd(__W,__U,__A,__B);
3431 }
test_mm512_maskz_mul_pd(__mmask8 __U,__m512d __A,__m512d __B)3432 __m512d test_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3433 // CHECK-LABEL: @test_mm512_maskz_mul_pd
3434 // CHECK: fmul <8 x double> %{{.*}}, %{{.*}}
3435 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3436 return _mm512_maskz_mul_pd(__U,__A,__B);
3437 }
test_mm512_mul_round_ps(__m512 __A,__m512 __B)3438 __m512 test_mm512_mul_round_ps(__m512 __A, __m512 __B) {
3439 // CHECK-LABEL: @test_mm512_mul_round_ps
3440 // CHECK: @llvm.x86.avx512.mul.ps.512
3441 return _mm512_mul_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3442 }
test_mm512_mask_mul_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3443 __m512 test_mm512_mask_mul_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3444 // CHECK-LABEL: @test_mm512_mask_mul_round_ps
3445 // CHECK: @llvm.x86.avx512.mul.ps.512
3446 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3447 return _mm512_mask_mul_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3448 }
test_mm512_maskz_mul_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3449 __m512 test_mm512_maskz_mul_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3450 // CHECK-LABEL: @test_mm512_maskz_mul_round_ps
3451 // CHECK: @llvm.x86.avx512.mul.ps.512
3452 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3453 return _mm512_maskz_mul_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3454 }
test_mm512_mask_mul_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3455 __m512 test_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3456 // CHECK-LABEL: @test_mm512_mask_mul_ps
3457 // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3458 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3459 return _mm512_mask_mul_ps(__W,__U,__A,__B);
3460 }
test_mm512_maskz_mul_ps(__mmask16 __U,__m512 __A,__m512 __B)3461 __m512 test_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3462 // CHECK-LABEL: @test_mm512_maskz_mul_ps
3463 // CHECK: fmul <16 x float> %{{.*}}, %{{.*}}
3464 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3465 return _mm512_maskz_mul_ps(__U,__A,__B);
3466 }
test_mm_mul_round_ss(__m128 __A,__m128 __B)3467 __m128 test_mm_mul_round_ss(__m128 __A, __m128 __B) {
3468 // CHECK-LABEL: @test_mm_mul_round_ss
3469 // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3470 return _mm_mul_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3471 }
test_mm_mask_mul_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3472 __m128 test_mm_mask_mul_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3473 // CHECK-LABEL: @test_mm_mask_mul_round_ss
3474 // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3475 return _mm_mask_mul_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3476 }
test_mm_maskz_mul_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3477 __m128 test_mm_maskz_mul_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3478 // CHECK-LABEL: @test_mm_maskz_mul_round_ss
3479 // CHECK: @llvm.x86.avx512.mask.mul.ss.round
3480 return _mm_maskz_mul_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3481 }
test_mm_mask_mul_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3482 __m128 test_mm_mask_mul_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3483 // CHECK-LABEL: @test_mm_mask_mul_ss
3484 // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3485 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3486 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3487 // CHECK: fmul float %{{.*}}, %{{.*}}
3488 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3489 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3490 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3491 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3492 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3493 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3494 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3495 return _mm_mask_mul_ss(__W,__U,__A,__B);
3496 }
test_mm_maskz_mul_ss(__mmask8 __U,__m128 __A,__m128 __B)3497 __m128 test_mm_maskz_mul_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3498 // CHECK-LABEL: @test_mm_maskz_mul_ss
3499 // CHECK-NOT: @llvm.x86.avx512.mask.mul.ss.round
3500 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3501 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3502 // CHECK: fmul float %{{.*}}, %{{.*}}
3503 // CHECK: insertelement <4 x float> {{.*}}, i32 0
3504 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3505 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3506 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3507 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3508 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3509 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3510 return _mm_maskz_mul_ss(__U,__A,__B);
3511 }
test_mm_mul_round_sd(__m128d __A,__m128d __B)3512 __m128d test_mm_mul_round_sd(__m128d __A, __m128d __B) {
3513 // CHECK-LABEL: @test_mm_mul_round_sd
3514 // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3515 return _mm_mul_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3516 }
test_mm_mask_mul_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3517 __m128d test_mm_mask_mul_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3518 // CHECK-LABEL: @test_mm_mask_mul_round_sd
3519 // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3520 return _mm_mask_mul_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3521 }
test_mm_maskz_mul_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3522 __m128d test_mm_maskz_mul_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3523 // CHECK-LABEL: @test_mm_maskz_mul_round_sd
3524 // CHECK: @llvm.x86.avx512.mask.mul.sd.round
3525 return _mm_maskz_mul_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3526 }
test_mm_mask_mul_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3527 __m128d test_mm_mask_mul_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3528 // CHECK-LABEL: @test_mm_mask_mul_sd
3529 // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3530 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3531 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3532 // CHECK: fmul double %{{.*}}, %{{.*}}
3533 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3534 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3535 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3536 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3537 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3538 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3539 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3540 return _mm_mask_mul_sd(__W,__U,__A,__B);
3541 }
test_mm_maskz_mul_sd(__mmask8 __U,__m128d __A,__m128d __B)3542 __m128d test_mm_maskz_mul_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3543 // CHECK-LABEL: @test_mm_maskz_mul_sd
3544 // CHECK-NOT: @llvm.x86.avx512.mask.mul.sd.round
3545 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3546 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3547 // CHECK: fmul double %{{.*}}, %{{.*}}
3548 // CHECK: insertelement <2 x double> {{.*}}, i32 0
3549 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3550 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3551 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3552 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3553 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3554 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3555 return _mm_maskz_mul_sd(__U,__A,__B);
3556 }
test_mm512_div_round_pd(__m512d __A,__m512d __B)3557 __m512d test_mm512_div_round_pd(__m512d __A, __m512d __B) {
3558 // CHECK-LABEL: @test_mm512_div_round_pd
3559 // CHECK: @llvm.x86.avx512.div.pd.512
3560 return _mm512_div_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3561 }
test_mm512_mask_div_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)3562 __m512d test_mm512_mask_div_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
3563 // CHECK-LABEL: @test_mm512_mask_div_round_pd
3564 // CHECK: @llvm.x86.avx512.div.pd.512
3565 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3566 return _mm512_mask_div_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3567 }
test_mm512_maskz_div_round_pd(__mmask8 __U,__m512d __A,__m512d __B)3568 __m512d test_mm512_maskz_div_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3569 // CHECK-LABEL: @test_mm512_maskz_div_round_pd
3570 // CHECK: @llvm.x86.avx512.div.pd.512
3571 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3572 return _mm512_maskz_div_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3573 }
test_mm512_div_pd(__m512d __a,__m512d __b)3574 __m512d test_mm512_div_pd(__m512d __a, __m512d __b) {
3575 // CHECK-LABEL: @test_mm512_div_pd
3576 // CHECK: fdiv <8 x double>
3577 return _mm512_div_pd(__a,__b);
3578 }
test_mm512_mask_div_pd(__m512d __w,__mmask8 __u,__m512d __a,__m512d __b)3579 __m512d test_mm512_mask_div_pd(__m512d __w, __mmask8 __u, __m512d __a, __m512d __b) {
3580 // CHECK-LABEL: @test_mm512_mask_div_pd
3581 // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3582 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3583 return _mm512_mask_div_pd(__w,__u,__a,__b);
3584 }
test_mm512_maskz_div_pd(__mmask8 __U,__m512d __A,__m512d __B)3585 __m512d test_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
3586 // CHECK-LABEL: @test_mm512_maskz_div_pd
3587 // CHECK: fdiv <8 x double> %{{.*}}, %{{.*}}
3588 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
3589 return _mm512_maskz_div_pd(__U,__A,__B);
3590 }
test_mm512_div_round_ps(__m512 __A,__m512 __B)3591 __m512 test_mm512_div_round_ps(__m512 __A, __m512 __B) {
3592 // CHECK-LABEL: @test_mm512_div_round_ps
3593 // CHECK: @llvm.x86.avx512.div.ps.512
3594 return _mm512_div_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3595 }
test_mm512_mask_div_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3596 __m512 test_mm512_mask_div_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3597 // CHECK-LABEL: @test_mm512_mask_div_round_ps
3598 // CHECK: @llvm.x86.avx512.div.ps.512
3599 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3600 return _mm512_mask_div_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3601 }
test_mm512_maskz_div_round_ps(__mmask16 __U,__m512 __A,__m512 __B)3602 __m512 test_mm512_maskz_div_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3603 // CHECK-LABEL: @test_mm512_maskz_div_round_ps
3604 // CHECK: @llvm.x86.avx512.div.ps.512
3605 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3606 return _mm512_maskz_div_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3607 }
test_mm512_div_ps(__m512 __A,__m512 __B)3608 __m512 test_mm512_div_ps(__m512 __A, __m512 __B) {
3609 // CHECK-LABEL: @test_mm512_div_ps
3610 // CHECK: fdiv <16 x float>
3611 return _mm512_div_ps(__A,__B);
3612 }
test_mm512_mask_div_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)3613 __m512 test_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
3614 // CHECK-LABEL: @test_mm512_mask_div_ps
3615 // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3616 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3617 return _mm512_mask_div_ps(__W,__U,__A,__B);
3618 }
test_mm512_maskz_div_ps(__mmask16 __U,__m512 __A,__m512 __B)3619 __m512 test_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
3620 // CHECK-LABEL: @test_mm512_maskz_div_ps
3621 // CHECK: fdiv <16 x float> %{{.*}}, %{{.*}}
3622 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
3623 return _mm512_maskz_div_ps(__U,__A,__B);
3624 }
test_mm_div_round_ss(__m128 __A,__m128 __B)3625 __m128 test_mm_div_round_ss(__m128 __A, __m128 __B) {
3626 // CHECK-LABEL: @test_mm_div_round_ss
3627 // CHECK: @llvm.x86.avx512.mask.div.ss.round
3628 return _mm_div_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3629 }
test_mm_mask_div_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3630 __m128 test_mm_mask_div_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3631 // CHECK-LABEL: @test_mm_mask_div_round_ss
3632 // CHECK: @llvm.x86.avx512.mask.div.ss.round
3633 return _mm_mask_div_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3634 }
test_mm_maskz_div_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3635 __m128 test_mm_maskz_div_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3636 // CHECK-LABEL: @test_mm_maskz_div_round_ss
3637 // CHECK: @llvm.x86.avx512.mask.div.ss.round
3638 return _mm_maskz_div_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3639 }
test_mm_mask_div_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3640 __m128 test_mm_mask_div_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3641 // CHECK-LABEL: @test_mm_mask_div_ss
3642 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3643 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3644 // CHECK: fdiv float %{{.*}}, %{{.*}}
3645 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3646 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3647 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3648 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3649 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3650 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3651 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3652 return _mm_mask_div_ss(__W,__U,__A,__B);
3653 }
test_mm_maskz_div_ss(__mmask8 __U,__m128 __A,__m128 __B)3654 __m128 test_mm_maskz_div_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3655 // CHECK-LABEL: @test_mm_maskz_div_ss
3656 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3657 // CHECK: extractelement <4 x float> %{{.*}}, i32 0
3658 // CHECK: fdiv float %{{.*}}, %{{.*}}
3659 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
3660 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
3661 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
3662 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3663 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3664 // CHECK-NEXT: select i1 %{{.*}}, float %{{.*}}, float %{{.*}}
3665 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float %{{.*}}, i64 0
3666 return _mm_maskz_div_ss(__U,__A,__B);
3667 }
test_mm_div_round_sd(__m128d __A,__m128d __B)3668 __m128d test_mm_div_round_sd(__m128d __A, __m128d __B) {
3669 // CHECK-LABEL: @test_mm_div_round_sd
3670 // CHECK: @llvm.x86.avx512.mask.div.sd.round
3671 return _mm_div_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3672 }
test_mm_mask_div_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3673 __m128d test_mm_mask_div_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3674 // CHECK-LABEL: @test_mm_mask_div_round_sd
3675 // CHECK: @llvm.x86.avx512.mask.div.sd.round
3676 return _mm_mask_div_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3677 }
test_mm_maskz_div_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3678 __m128d test_mm_maskz_div_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3679 // CHECK-LABEL: @test_mm_maskz_div_round_sd
3680 // CHECK: @llvm.x86.avx512.mask.div.sd.round
3681 return _mm_maskz_div_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
3682 }
test_mm_mask_div_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3683 __m128d test_mm_mask_div_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3684 // CHECK-LABEL: @test_mm_mask_div_sd
3685 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3686 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3687 // CHECK: fdiv double %{{.*}}, %{{.*}}
3688 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3689 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3690 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3691 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3692 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3693 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3694 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3695 return _mm_mask_div_sd(__W,__U,__A,__B);
3696 }
test_mm_maskz_div_sd(__mmask8 __U,__m128d __A,__m128d __B)3697 __m128d test_mm_maskz_div_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3698 // CHECK-LABEL: @test_mm_maskz_div_sd
3699 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3700 // CHECK: extractelement <2 x double> %{{.*}}, i32 0
3701 // CHECK: fdiv double %{{.*}}, %{{.*}}
3702 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
3703 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
3704 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
3705 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
3706 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
3707 // CHECK-NEXT: select i1 %{{.*}}, double %{{.*}}, double %{{.*}}
3708 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double %{{.*}}, i64 0
3709 return _mm_maskz_div_sd(__U,__A,__B);
3710 }
test_mm_max_round_ss(__m128 __A,__m128 __B)3711 __m128 test_mm_max_round_ss(__m128 __A, __m128 __B) {
3712 // CHECK-LABEL: @test_mm_max_round_ss
3713 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3714 return _mm_max_round_ss(__A,__B,0x08);
3715 }
test_mm_mask_max_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3716 __m128 test_mm_mask_max_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3717 // CHECK-LABEL: @test_mm_mask_max_round_ss
3718 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3719 return _mm_mask_max_round_ss(__W,__U,__A,__B,0x08);
3720 }
test_mm_maskz_max_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3721 __m128 test_mm_maskz_max_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3722 // CHECK-LABEL: @test_mm_maskz_max_round_ss
3723 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3724 return _mm_maskz_max_round_ss(__U,__A,__B,0x08);
3725 }
test_mm_mask_max_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3726 __m128 test_mm_mask_max_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3727 // CHECK-LABEL: @test_mm_mask_max_ss
3728 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3729 return _mm_mask_max_ss(__W,__U,__A,__B);
3730 }
test_mm_maskz_max_ss(__mmask8 __U,__m128 __A,__m128 __B)3731 __m128 test_mm_maskz_max_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3732 // CHECK-LABEL: @test_mm_maskz_max_ss
3733 // CHECK: @llvm.x86.avx512.mask.max.ss.round
3734 return _mm_maskz_max_ss(__U,__A,__B);
3735 }
test_mm_max_round_sd(__m128d __A,__m128d __B)3736 __m128d test_mm_max_round_sd(__m128d __A, __m128d __B) {
3737 // CHECK-LABEL: @test_mm_max_round_sd
3738 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3739 return _mm_max_round_sd(__A,__B,0x08);
3740 }
test_mm_mask_max_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3741 __m128d test_mm_mask_max_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3742 // CHECK-LABEL: @test_mm_mask_max_round_sd
3743 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3744 return _mm_mask_max_round_sd(__W,__U,__A,__B,0x08);
3745 }
test_mm_maskz_max_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3746 __m128d test_mm_maskz_max_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3747 // CHECK-LABEL: @test_mm_maskz_max_round_sd
3748 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3749 return _mm_maskz_max_round_sd(__U,__A,__B,0x08);
3750 }
test_mm_mask_max_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3751 __m128d test_mm_mask_max_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3752 // CHECK-LABEL: @test_mm_mask_max_sd
3753 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3754 return _mm_mask_max_sd(__W,__U,__A,__B);
3755 }
test_mm_maskz_max_sd(__mmask8 __U,__m128d __A,__m128d __B)3756 __m128d test_mm_maskz_max_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3757 // CHECK-LABEL: @test_mm_maskz_max_sd
3758 // CHECK: @llvm.x86.avx512.mask.max.sd.round
3759 return _mm_maskz_max_sd(__U,__A,__B);
3760 }
test_mm_min_round_ss(__m128 __A,__m128 __B)3761 __m128 test_mm_min_round_ss(__m128 __A, __m128 __B) {
3762 // CHECK-LABEL: @test_mm_min_round_ss
3763 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3764 return _mm_min_round_ss(__A,__B,0x08);
3765 }
test_mm_mask_min_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3766 __m128 test_mm_mask_min_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3767 // CHECK-LABEL: @test_mm_mask_min_round_ss
3768 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3769 return _mm_mask_min_round_ss(__W,__U,__A,__B,0x08);
3770 }
test_mm_maskz_min_round_ss(__mmask8 __U,__m128 __A,__m128 __B)3771 __m128 test_mm_maskz_min_round_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3772 // CHECK-LABEL: @test_mm_maskz_min_round_ss
3773 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3774 return _mm_maskz_min_round_ss(__U,__A,__B,0x08);
3775 }
test_mm_mask_min_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3776 __m128 test_mm_mask_min_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3777 // CHECK-LABEL: @test_mm_mask_min_ss
3778 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3779 return _mm_mask_min_ss(__W,__U,__A,__B);
3780 }
test_mm_maskz_min_ss(__mmask8 __U,__m128 __A,__m128 __B)3781 __m128 test_mm_maskz_min_ss(__mmask8 __U, __m128 __A, __m128 __B) {
3782 // CHECK-LABEL: @test_mm_maskz_min_ss
3783 // CHECK: @llvm.x86.avx512.mask.min.ss.round
3784 return _mm_maskz_min_ss(__U,__A,__B);
3785 }
test_mm_min_round_sd(__m128d __A,__m128d __B)3786 __m128d test_mm_min_round_sd(__m128d __A, __m128d __B) {
3787 // CHECK-LABEL: @test_mm_min_round_sd
3788 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3789 return _mm_min_round_sd(__A,__B,0x08);
3790 }
test_mm_mask_min_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3791 __m128d test_mm_mask_min_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3792 // CHECK-LABEL: @test_mm_mask_min_round_sd
3793 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3794 return _mm_mask_min_round_sd(__W,__U,__A,__B,0x08);
3795 }
test_mm_maskz_min_round_sd(__mmask8 __U,__m128d __A,__m128d __B)3796 __m128d test_mm_maskz_min_round_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3797 // CHECK-LABEL: @test_mm_maskz_min_round_sd
3798 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3799 return _mm_maskz_min_round_sd(__U,__A,__B,0x08);
3800 }
test_mm_mask_min_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3801 __m128d test_mm_mask_min_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3802 // CHECK-LABEL: @test_mm_mask_min_sd
3803 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3804 return _mm_mask_min_sd(__W,__U,__A,__B);
3805 }
test_mm_maskz_min_sd(__mmask8 __U,__m128d __A,__m128d __B)3806 __m128d test_mm_maskz_min_sd(__mmask8 __U, __m128d __A, __m128d __B) {
3807 // CHECK-LABEL: @test_mm_maskz_min_sd
3808 // CHECK: @llvm.x86.avx512.mask.min.sd.round
3809 return _mm_maskz_min_sd(__U,__A,__B);
3810 }
3811
test_mm512_undefined()3812 __m512 test_mm512_undefined() {
3813 // CHECK-LABEL: @test_mm512_undefined
3814 // CHECK: ret <16 x float> zeroinitializer
3815 return _mm512_undefined();
3816 }
3817
test_mm512_undefined_ps()3818 __m512 test_mm512_undefined_ps() {
3819 // CHECK-LABEL: @test_mm512_undefined_ps
3820 // CHECK: ret <16 x float> zeroinitializer
3821 return _mm512_undefined_ps();
3822 }
3823
test_mm512_undefined_pd()3824 __m512d test_mm512_undefined_pd() {
3825 // CHECK-LABEL: @test_mm512_undefined_pd
3826 // CHECK: ret <8 x double> zeroinitializer
3827 return _mm512_undefined_pd();
3828 }
3829
test_mm512_undefined_epi32()3830 __m512i test_mm512_undefined_epi32() {
3831 // CHECK-LABEL: @test_mm512_undefined_epi32
3832 // CHECK: ret <8 x i64> zeroinitializer
3833 return _mm512_undefined_epi32();
3834 }
3835
test_mm512_cvtepi8_epi32(__m128i __A)3836 __m512i test_mm512_cvtepi8_epi32(__m128i __A) {
3837 // CHECK-LABEL: @test_mm512_cvtepi8_epi32
3838 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3839 return _mm512_cvtepi8_epi32(__A);
3840 }
3841
test_mm512_mask_cvtepi8_epi32(__m512i __W,__mmask16 __U,__m128i __A)3842 __m512i test_mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
3843 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi32
3844 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3845 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3846 return _mm512_mask_cvtepi8_epi32(__W, __U, __A);
3847 }
3848
test_mm512_maskz_cvtepi8_epi32(__mmask16 __U,__m128i __A)3849 __m512i test_mm512_maskz_cvtepi8_epi32(__mmask16 __U, __m128i __A) {
3850 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi32
3851 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32>
3852 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3853 return _mm512_maskz_cvtepi8_epi32(__U, __A);
3854 }
3855
test_mm512_cvtepi8_epi64(__m128i __A)3856 __m512i test_mm512_cvtepi8_epi64(__m128i __A) {
3857 // CHECK-LABEL: @test_mm512_cvtepi8_epi64
3858 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3859 return _mm512_cvtepi8_epi64(__A);
3860 }
3861
test_mm512_mask_cvtepi8_epi64(__m512i __W,__mmask8 __U,__m128i __A)3862 __m512i test_mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3863 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi64
3864 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3865 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3866 return _mm512_mask_cvtepi8_epi64(__W, __U, __A);
3867 }
3868
test_mm512_maskz_cvtepi8_epi64(__mmask8 __U,__m128i __A)3869 __m512i test_mm512_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {
3870 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi64
3871 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64>
3872 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3873 return _mm512_maskz_cvtepi8_epi64(__U, __A);
3874 }
3875
test_mm512_cvtepi32_epi64(__m256i __X)3876 __m512i test_mm512_cvtepi32_epi64(__m256i __X) {
3877 // CHECK-LABEL: @test_mm512_cvtepi32_epi64
3878 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3879 return _mm512_cvtepi32_epi64(__X);
3880 }
3881
test_mm512_mask_cvtepi32_epi64(__m512i __W,__mmask8 __U,__m256i __X)3882 __m512i test_mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
3883 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi64
3884 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3885 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3886 return _mm512_mask_cvtepi32_epi64(__W, __U, __X);
3887 }
3888
test_mm512_maskz_cvtepi32_epi64(__mmask8 __U,__m256i __X)3889 __m512i test_mm512_maskz_cvtepi32_epi64(__mmask8 __U, __m256i __X) {
3890 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi64
3891 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64>
3892 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3893 return _mm512_maskz_cvtepi32_epi64(__U, __X);
3894 }
3895
test_mm512_cvtepi16_epi32(__m256i __A)3896 __m512i test_mm512_cvtepi16_epi32(__m256i __A) {
3897 // CHECK-LABEL: @test_mm512_cvtepi16_epi32
3898 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3899 return _mm512_cvtepi16_epi32(__A);
3900 }
3901
test_mm512_mask_cvtepi16_epi32(__m512i __W,__mmask16 __U,__m256i __A)3902 __m512i test_mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
3903 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi32
3904 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3905 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3906 return _mm512_mask_cvtepi16_epi32(__W, __U, __A);
3907 }
3908
test_mm512_maskz_cvtepi16_epi32(__mmask16 __U,__m256i __A)3909 __m512i test_mm512_maskz_cvtepi16_epi32(__mmask16 __U, __m256i __A) {
3910 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi32
3911 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32>
3912 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3913 return _mm512_maskz_cvtepi16_epi32(__U, __A);
3914 }
3915
test_mm512_cvtepi16_epi64(__m128i __A)3916 __m512i test_mm512_cvtepi16_epi64(__m128i __A) {
3917 // CHECK-LABEL: @test_mm512_cvtepi16_epi64
3918 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3919 return _mm512_cvtepi16_epi64(__A);
3920 }
3921
test_mm512_mask_cvtepi16_epi64(__m512i __W,__mmask8 __U,__m128i __A)3922 __m512i test_mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3923 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi64
3924 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3925 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3926 return _mm512_mask_cvtepi16_epi64(__W, __U, __A);
3927 }
3928
test_mm512_maskz_cvtepi16_epi64(__mmask8 __U,__m128i __A)3929 __m512i test_mm512_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {
3930 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi64
3931 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64>
3932 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3933 return _mm512_maskz_cvtepi16_epi64(__U, __A);
3934 }
3935
test_mm512_cvtepu8_epi32(__m128i __A)3936 __m512i test_mm512_cvtepu8_epi32(__m128i __A) {
3937 // CHECK-LABEL: @test_mm512_cvtepu8_epi32
3938 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3939 return _mm512_cvtepu8_epi32(__A);
3940 }
3941
test_mm512_mask_cvtepu8_epi32(__m512i __W,__mmask16 __U,__m128i __A)3942 __m512i test_mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A) {
3943 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi32
3944 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3945 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3946 return _mm512_mask_cvtepu8_epi32(__W, __U, __A);
3947 }
3948
test_mm512_maskz_cvtepu8_epi32(__mmask16 __U,__m128i __A)3949 __m512i test_mm512_maskz_cvtepu8_epi32(__mmask16 __U, __m128i __A) {
3950 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi32
3951 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32>
3952 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
3953 return _mm512_maskz_cvtepu8_epi32(__U, __A);
3954 }
3955
test_mm512_cvtepu8_epi64(__m128i __A)3956 __m512i test_mm512_cvtepu8_epi64(__m128i __A) {
3957 // CHECK-LABEL: @test_mm512_cvtepu8_epi64
3958 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3959 return _mm512_cvtepu8_epi64(__A);
3960 }
3961
test_mm512_mask_cvtepu8_epi64(__m512i __W,__mmask8 __U,__m128i __A)3962 __m512i test_mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
3963 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi64
3964 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3965 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3966 return _mm512_mask_cvtepu8_epi64(__W, __U, __A);
3967 }
3968
test_mm512_maskz_cvtepu8_epi64(__mmask8 __U,__m128i __A)3969 __m512i test_mm512_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {
3970 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi64
3971 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64>
3972 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3973 return _mm512_maskz_cvtepu8_epi64(__U, __A);
3974 }
3975
test_mm512_cvtepu32_epi64(__m256i __X)3976 __m512i test_mm512_cvtepu32_epi64(__m256i __X) {
3977 // CHECK-LABEL: @test_mm512_cvtepu32_epi64
3978 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3979 return _mm512_cvtepu32_epi64(__X);
3980 }
3981
test_mm512_mask_cvtepu32_epi64(__m512i __W,__mmask8 __U,__m256i __X)3982 __m512i test_mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X) {
3983 // CHECK-LABEL: @test_mm512_mask_cvtepu32_epi64
3984 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3985 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3986 return _mm512_mask_cvtepu32_epi64(__W, __U, __X);
3987 }
3988
test_mm512_maskz_cvtepu32_epi64(__mmask8 __U,__m256i __X)3989 __m512i test_mm512_maskz_cvtepu32_epi64(__mmask8 __U, __m256i __X) {
3990 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_epi64
3991 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64>
3992 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
3993 return _mm512_maskz_cvtepu32_epi64(__U, __X);
3994 }
3995
test_mm512_cvtepu16_epi32(__m256i __A)3996 __m512i test_mm512_cvtepu16_epi32(__m256i __A) {
3997 // CHECK-LABEL: @test_mm512_cvtepu16_epi32
3998 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
3999 return _mm512_cvtepu16_epi32(__A);
4000 }
4001
test_mm512_mask_cvtepu16_epi32(__m512i __W,__mmask16 __U,__m256i __A)4002 __m512i test_mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A) {
4003 // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi32
4004 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
4005 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4006 return _mm512_mask_cvtepu16_epi32(__W, __U, __A);
4007 }
4008
test_mm512_maskz_cvtepu16_epi32(__mmask16 __U,__m256i __A)4009 __m512i test_mm512_maskz_cvtepu16_epi32(__mmask16 __U, __m256i __A) {
4010 // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi32
4011 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32>
4012 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4013 return _mm512_maskz_cvtepu16_epi32(__U, __A);
4014 }
4015
test_mm512_cvtepu16_epi64(__m128i __A)4016 __m512i test_mm512_cvtepu16_epi64(__m128i __A) {
4017 // CHECK-LABEL: @test_mm512_cvtepu16_epi64
4018 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
4019 return _mm512_cvtepu16_epi64(__A);
4020 }
4021
test_mm512_mask_cvtepu16_epi64(__m512i __W,__mmask8 __U,__m128i __A)4022 __m512i test_mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A) {
4023 // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi64
4024 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
4025 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4026 return _mm512_mask_cvtepu16_epi64(__W, __U, __A);
4027 }
4028
test_mm512_maskz_cvtepu16_epi64(__mmask8 __U,__m128i __A)4029 __m512i test_mm512_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {
4030 // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi64
4031 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64>
4032 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4033 return _mm512_maskz_cvtepu16_epi64(__U, __A);
4034 }
4035
4036
test_mm512_rol_epi32(__m512i __A)4037 __m512i test_mm512_rol_epi32(__m512i __A) {
4038 // CHECK-LABEL: @test_mm512_rol_epi32
4039 // CHECK: @llvm.fshl.v16i32
4040 return _mm512_rol_epi32(__A, 5);
4041 }
4042
test_mm512_mask_rol_epi32(__m512i __W,__mmask16 __U,__m512i __A)4043 __m512i test_mm512_mask_rol_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4044 // CHECK-LABEL: @test_mm512_mask_rol_epi32
4045 // CHECK: @llvm.fshl.v16i32
4046 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4047 return _mm512_mask_rol_epi32(__W, __U, __A, 5);
4048 }
4049
test_mm512_maskz_rol_epi32(__mmask16 __U,__m512i __A)4050 __m512i test_mm512_maskz_rol_epi32(__mmask16 __U, __m512i __A) {
4051 // CHECK-LABEL: @test_mm512_maskz_rol_epi32
4052 // CHECK: @llvm.fshl.v16i32
4053 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4054 return _mm512_maskz_rol_epi32(__U, __A, 5);
4055 }
4056
test_mm512_rol_epi64(__m512i __A)4057 __m512i test_mm512_rol_epi64(__m512i __A) {
4058 // CHECK-LABEL: @test_mm512_rol_epi64
4059 // CHECK: @llvm.fshl.v8i64
4060 return _mm512_rol_epi64(__A, 5);
4061 }
4062
test_mm512_mask_rol_epi64(__m512i __W,__mmask8 __U,__m512i __A)4063 __m512i test_mm512_mask_rol_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4064 // CHECK-LABEL: @test_mm512_mask_rol_epi64
4065 // CHECK: @llvm.fshl.v8i64
4066 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4067 return _mm512_mask_rol_epi64(__W, __U, __A, 5);
4068 }
4069
test_mm512_maskz_rol_epi64(__mmask8 __U,__m512i __A)4070 __m512i test_mm512_maskz_rol_epi64(__mmask8 __U, __m512i __A) {
4071 // CHECK-LABEL: @test_mm512_maskz_rol_epi64
4072 // CHECK: @llvm.fshl.v8i64
4073 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4074 return _mm512_maskz_rol_epi64(__U, __A, 5);
4075 }
4076
test_mm512_rolv_epi32(__m512i __A,__m512i __B)4077 __m512i test_mm512_rolv_epi32(__m512i __A, __m512i __B) {
4078 // CHECK-LABEL: @test_mm512_rolv_epi32
4079 // CHECK: @llvm.fshl.v16i32
4080 return _mm512_rolv_epi32(__A, __B);
4081 }
4082
test_mm512_mask_rolv_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4083 __m512i test_mm512_mask_rolv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4084 // CHECK-LABEL: @test_mm512_mask_rolv_epi32
4085 // CHECK: @llvm.fshl.v16i32
4086 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4087 return _mm512_mask_rolv_epi32(__W, __U, __A, __B);
4088 }
4089
test_mm512_maskz_rolv_epi32(__mmask16 __U,__m512i __A,__m512i __B)4090 __m512i test_mm512_maskz_rolv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
4091 // CHECK-LABEL: @test_mm512_maskz_rolv_epi32
4092 // CHECK: @llvm.fshl.v16i32
4093 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4094 return _mm512_maskz_rolv_epi32(__U, __A, __B);
4095 }
4096
test_mm512_rolv_epi64(__m512i __A,__m512i __B)4097 __m512i test_mm512_rolv_epi64(__m512i __A, __m512i __B) {
4098 // CHECK-LABEL: @test_mm512_rolv_epi64
4099 // CHECK: @llvm.fshl.v8i64
4100 return _mm512_rolv_epi64(__A, __B);
4101 }
4102
test_mm512_mask_rolv_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)4103 __m512i test_mm512_mask_rolv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
4104 // CHECK-LABEL: @test_mm512_mask_rolv_epi64
4105 // CHECK: @llvm.fshl.v8i64
4106 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4107 return _mm512_mask_rolv_epi64(__W, __U, __A, __B);
4108 }
4109
test_mm512_maskz_rolv_epi64(__mmask8 __U,__m512i __A,__m512i __B)4110 __m512i test_mm512_maskz_rolv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
4111 // CHECK-LABEL: @test_mm512_maskz_rolv_epi64
4112 // CHECK: @llvm.fshl.v8i64
4113 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4114 return _mm512_maskz_rolv_epi64(__U, __A, __B);
4115 }
4116
test_mm512_ror_epi32(__m512i __A)4117 __m512i test_mm512_ror_epi32(__m512i __A) {
4118 // CHECK-LABEL: @test_mm512_ror_epi32
4119 // CHECK: @llvm.fshr.v16i32
4120 return _mm512_ror_epi32(__A, 5);
4121 }
4122
test_mm512_mask_ror_epi32(__m512i __W,__mmask16 __U,__m512i __A)4123 __m512i test_mm512_mask_ror_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4124 // CHECK-LABEL: @test_mm512_mask_ror_epi32
4125 // CHECK: @llvm.fshr.v16i32
4126 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4127 return _mm512_mask_ror_epi32(__W, __U, __A, 5);
4128 }
4129
test_mm512_maskz_ror_epi32(__mmask16 __U,__m512i __A)4130 __m512i test_mm512_maskz_ror_epi32(__mmask16 __U, __m512i __A) {
4131 // CHECK-LABEL: @test_mm512_maskz_ror_epi32
4132 // CHECK: @llvm.fshr.v16i32
4133 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4134 return _mm512_maskz_ror_epi32(__U, __A, 5);
4135 }
4136
test_mm512_ror_epi64(__m512i __A)4137 __m512i test_mm512_ror_epi64(__m512i __A) {
4138 // CHECK-LABEL: @test_mm512_ror_epi64
4139 // CHECK: @llvm.fshr.v8i64
4140 return _mm512_ror_epi64(__A, 5);
4141 }
4142
test_mm512_mask_ror_epi64(__m512i __W,__mmask8 __U,__m512i __A)4143 __m512i test_mm512_mask_ror_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4144 // CHECK-LABEL: @test_mm512_mask_ror_epi64
4145 // CHECK: @llvm.fshr.v8i64
4146 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4147 return _mm512_mask_ror_epi64(__W, __U, __A, 5);
4148 }
4149
test_mm512_maskz_ror_epi64(__mmask8 __U,__m512i __A)4150 __m512i test_mm512_maskz_ror_epi64(__mmask8 __U, __m512i __A) {
4151 // CHECK-LABEL: @test_mm512_maskz_ror_epi64
4152 // CHECK: @llvm.fshr.v8i64
4153 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4154 return _mm512_maskz_ror_epi64(__U, __A, 5);
4155 }
4156
4157
test_mm512_rorv_epi32(__m512i __A,__m512i __B)4158 __m512i test_mm512_rorv_epi32(__m512i __A, __m512i __B) {
4159 // CHECK-LABEL: @test_mm512_rorv_epi32
4160 // CHECK: @llvm.fshr.v16i32
4161 return _mm512_rorv_epi32(__A, __B);
4162 }
4163
test_mm512_mask_rorv_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4164 __m512i test_mm512_mask_rorv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4165 // CHECK-LABEL: @test_mm512_mask_rorv_epi32
4166 // CHECK: @llvm.fshr.v16i32
4167 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4168 return _mm512_mask_rorv_epi32(__W, __U, __A, __B);
4169 }
4170
test_mm512_maskz_rorv_epi32(__mmask16 __U,__m512i __A,__m512i __B)4171 __m512i test_mm512_maskz_rorv_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
4172 // CHECK-LABEL: @test_mm512_maskz_rorv_epi32
4173 // CHECK: @llvm.fshr.v16i32
4174 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4175 return _mm512_maskz_rorv_epi32(__U, __A, __B);
4176 }
4177
test_mm512_rorv_epi64(__m512i __A,__m512i __B)4178 __m512i test_mm512_rorv_epi64(__m512i __A, __m512i __B) {
4179 // CHECK-LABEL: @test_mm512_rorv_epi64
4180 // CHECK: @llvm.fshr.v8i64
4181 return _mm512_rorv_epi64(__A, __B);
4182 }
4183
test_mm512_mask_rorv_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)4184 __m512i test_mm512_mask_rorv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
4185 // CHECK-LABEL: @test_mm512_mask_rorv_epi64
4186 // CHECK: @llvm.fshr.v8i64
4187 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4188 return _mm512_mask_rorv_epi64(__W, __U, __A, __B);
4189 }
4190
test_mm512_maskz_rorv_epi64(__mmask8 __U,__m512i __A,__m512i __B)4191 __m512i test_mm512_maskz_rorv_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
4192 // CHECK-LABEL: @test_mm512_maskz_rorv_epi64
4193 // CHECK: @llvm.fshr.v8i64
4194 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4195 return _mm512_maskz_rorv_epi64(__U, __A, __B);
4196 }
4197
test_mm512_slli_epi32(__m512i __A)4198 __m512i test_mm512_slli_epi32(__m512i __A) {
4199 // CHECK-LABEL: @test_mm512_slli_epi32
4200 // CHECK: @llvm.x86.avx512.pslli.d.512
4201 return _mm512_slli_epi32(__A, 5);
4202 }
4203
test_mm512_slli_epi32_2(__m512i __A,int __B)4204 __m512i test_mm512_slli_epi32_2(__m512i __A, int __B) {
4205 // CHECK-LABEL: @test_mm512_slli_epi32_2
4206 // CHECK: @llvm.x86.avx512.pslli.d.512
4207 return _mm512_slli_epi32(__A, __B);
4208 }
4209
test_mm512_mask_slli_epi32(__m512i __W,__mmask16 __U,__m512i __A)4210 __m512i test_mm512_mask_slli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4211 // CHECK-LABEL: @test_mm512_mask_slli_epi32
4212 // CHECK: @llvm.x86.avx512.pslli.d.512
4213 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4214 return _mm512_mask_slli_epi32(__W, __U, __A, 5);
4215 }
4216
test_mm512_mask_slli_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,int __B)4217 __m512i test_mm512_mask_slli_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, int __B) {
4218 // CHECK-LABEL: @test_mm512_mask_slli_epi32_2
4219 // CHECK: @llvm.x86.avx512.pslli.d.512
4220 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4221 return _mm512_mask_slli_epi32(__W, __U, __A, __B);
4222 }
4223
test_mm512_maskz_slli_epi32(__mmask16 __U,__m512i __A)4224 __m512i test_mm512_maskz_slli_epi32(__mmask16 __U, __m512i __A) {
4225 // CHECK-LABEL: @test_mm512_maskz_slli_epi32
4226 // CHECK: @llvm.x86.avx512.pslli.d.512
4227 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4228 return _mm512_maskz_slli_epi32(__U, __A, 5);
4229 }
4230
test_mm512_maskz_slli_epi32_2(__mmask16 __U,__m512i __A,int __B)4231 __m512i test_mm512_maskz_slli_epi32_2(__mmask16 __U, __m512i __A, int __B) {
4232 // CHECK-LABEL: @test_mm512_maskz_slli_epi32_2
4233 // CHECK: @llvm.x86.avx512.pslli.d.512
4234 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4235 return _mm512_maskz_slli_epi32(__U, __A, __B);
4236 }
4237
test_mm512_slli_epi64(__m512i __A)4238 __m512i test_mm512_slli_epi64(__m512i __A) {
4239 // CHECK-LABEL: @test_mm512_slli_epi64
4240 // CHECK: @llvm.x86.avx512.pslli.q.512
4241 return _mm512_slli_epi64(__A, 5);
4242 }
4243
test_mm512_slli_epi64_2(__m512i __A,int __B)4244 __m512i test_mm512_slli_epi64_2(__m512i __A, int __B) {
4245 // CHECK-LABEL: @test_mm512_slli_epi64_2
4246 // CHECK: @llvm.x86.avx512.pslli.q.512
4247 return _mm512_slli_epi64(__A, __B);
4248 }
4249
test_mm512_mask_slli_epi64(__m512i __W,__mmask8 __U,__m512i __A)4250 __m512i test_mm512_mask_slli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4251 // CHECK-LABEL: @test_mm512_mask_slli_epi64
4252 // CHECK: @llvm.x86.avx512.pslli.q.512
4253 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4254 return _mm512_mask_slli_epi64(__W, __U, __A, 5);
4255 }
4256
test_mm512_mask_slli_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,int __B)4257 __m512i test_mm512_mask_slli_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, int __B) {
4258 // CHECK-LABEL: @test_mm512_mask_slli_epi64_2
4259 // CHECK: @llvm.x86.avx512.pslli.q.512
4260 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4261 return _mm512_mask_slli_epi64(__W, __U, __A, __B);
4262 }
4263
test_mm512_maskz_slli_epi64(__mmask8 __U,__m512i __A)4264 __m512i test_mm512_maskz_slli_epi64(__mmask8 __U, __m512i __A) {
4265 // CHECK-LABEL: @test_mm512_maskz_slli_epi64
4266 // CHECK: @llvm.x86.avx512.pslli.q.512
4267 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4268 return _mm512_maskz_slli_epi64(__U, __A, 5);
4269 }
4270
test_mm512_maskz_slli_epi64_2(__mmask8 __U,__m512i __A,int __B)4271 __m512i test_mm512_maskz_slli_epi64_2(__mmask8 __U, __m512i __A, int __B) {
4272 // CHECK-LABEL: @test_mm512_maskz_slli_epi64_2
4273 // CHECK: @llvm.x86.avx512.pslli.q.512
4274 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4275 return _mm512_maskz_slli_epi64(__U, __A, __B);
4276 }
4277
test_mm512_srli_epi32(__m512i __A)4278 __m512i test_mm512_srli_epi32(__m512i __A) {
4279 // CHECK-LABEL: @test_mm512_srli_epi32
4280 // CHECK: @llvm.x86.avx512.psrli.d.512
4281 return _mm512_srli_epi32(__A, 5);
4282 }
4283
test_mm512_srli_epi32_2(__m512i __A,int __B)4284 __m512i test_mm512_srli_epi32_2(__m512i __A, int __B) {
4285 // CHECK-LABEL: @test_mm512_srli_epi32_2
4286 // CHECK: @llvm.x86.avx512.psrli.d.512
4287 return _mm512_srli_epi32(__A, __B);
4288 }
4289
test_mm512_mask_srli_epi32(__m512i __W,__mmask16 __U,__m512i __A)4290 __m512i test_mm512_mask_srli_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4291 // CHECK-LABEL: @test_mm512_mask_srli_epi32
4292 // CHECK: @llvm.x86.avx512.psrli.d.512
4293 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4294 return _mm512_mask_srli_epi32(__W, __U, __A, 5);
4295 }
4296
test_mm512_mask_srli_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,int __B)4297 __m512i test_mm512_mask_srli_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, int __B) {
4298 // CHECK-LABEL: @test_mm512_mask_srli_epi32_2
4299 // CHECK: @llvm.x86.avx512.psrli.d.512
4300 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4301 return _mm512_mask_srli_epi32(__W, __U, __A, __B);
4302 }
4303
test_mm512_maskz_srli_epi32(__mmask16 __U,__m512i __A)4304 __m512i test_mm512_maskz_srli_epi32(__mmask16 __U, __m512i __A) {
4305 // CHECK-LABEL: @test_mm512_maskz_srli_epi32
4306 // CHECK: @llvm.x86.avx512.psrli.d.512
4307 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4308 return _mm512_maskz_srli_epi32(__U, __A, 5);
4309 }
4310
test_mm512_maskz_srli_epi32_2(__mmask16 __U,__m512i __A,int __B)4311 __m512i test_mm512_maskz_srli_epi32_2(__mmask16 __U, __m512i __A, int __B) {
4312 // CHECK-LABEL: @test_mm512_maskz_srli_epi32_2
4313 // CHECK: @llvm.x86.avx512.psrli.d.512
4314 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4315 return _mm512_maskz_srli_epi32(__U, __A, __B);
4316 }
4317
test_mm512_srli_epi64(__m512i __A)4318 __m512i test_mm512_srli_epi64(__m512i __A) {
4319 // CHECK-LABEL: @test_mm512_srli_epi64
4320 // CHECK: @llvm.x86.avx512.psrli.q.512
4321 return _mm512_srli_epi64(__A, 5);
4322 }
4323
test_mm512_srli_epi64_2(__m512i __A,int __B)4324 __m512i test_mm512_srli_epi64_2(__m512i __A, int __B) {
4325 // CHECK-LABEL: @test_mm512_srli_epi64_2
4326 // CHECK: @llvm.x86.avx512.psrli.q.512
4327 return _mm512_srli_epi64(__A, __B);
4328 }
4329
test_mm512_mask_srli_epi64(__m512i __W,__mmask8 __U,__m512i __A)4330 __m512i test_mm512_mask_srli_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4331 // CHECK-LABEL: @test_mm512_mask_srli_epi64
4332 // CHECK: @llvm.x86.avx512.psrli.q.512
4333 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4334 return _mm512_mask_srli_epi64(__W, __U, __A, 5);
4335 }
4336
test_mm512_mask_srli_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,int __B)4337 __m512i test_mm512_mask_srli_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, int __B) {
4338 // CHECK-LABEL: @test_mm512_mask_srli_epi64_2
4339 // CHECK: @llvm.x86.avx512.psrli.q.512
4340 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4341 return _mm512_mask_srli_epi64(__W, __U, __A, __B);
4342 }
4343
test_mm512_maskz_srli_epi64(__mmask8 __U,__m512i __A)4344 __m512i test_mm512_maskz_srli_epi64(__mmask8 __U, __m512i __A) {
4345 // CHECK-LABEL: @test_mm512_maskz_srli_epi64
4346 // CHECK: @llvm.x86.avx512.psrli.q.512
4347 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4348 return _mm512_maskz_srli_epi64(__U, __A, 5);
4349 }
4350
test_mm512_maskz_srli_epi64_2(__mmask8 __U,__m512i __A,int __B)4351 __m512i test_mm512_maskz_srli_epi64_2(__mmask8 __U, __m512i __A, int __B) {
4352 // CHECK-LABEL: @test_mm512_maskz_srli_epi64_2
4353 // CHECK: @llvm.x86.avx512.psrli.q.512
4354 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4355 return _mm512_maskz_srli_epi64(__U, __A, __B);
4356 }
4357
test_mm512_mask_load_epi32(__m512i __W,__mmask16 __U,void const * __P)4358 __m512i test_mm512_mask_load_epi32(__m512i __W, __mmask16 __U, void const *__P) {
4359 // CHECK-LABEL: @test_mm512_mask_load_epi32
4360 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4361 return _mm512_mask_load_epi32(__W, __U, __P);
4362 }
4363
test_mm512_maskz_load_epi32(__mmask16 __U,void const * __P)4364 __m512i test_mm512_maskz_load_epi32(__mmask16 __U, void const *__P) {
4365 // CHECK-LABEL: @test_mm512_maskz_load_epi32
4366 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
4367 return _mm512_maskz_load_epi32(__U, __P);
4368 }
4369
test_mm512_mask_mov_epi32(__m512i __W,__mmask16 __U,__m512i __A)4370 __m512i test_mm512_mask_mov_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
4371 // CHECK-LABEL: @test_mm512_mask_mov_epi32
4372 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4373 return _mm512_mask_mov_epi32(__W, __U, __A);
4374 }
4375
test_mm512_maskz_mov_epi32(__mmask16 __U,__m512i __A)4376 __m512i test_mm512_maskz_mov_epi32(__mmask16 __U, __m512i __A) {
4377 // CHECK-LABEL: @test_mm512_maskz_mov_epi32
4378 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4379 return _mm512_maskz_mov_epi32(__U, __A);
4380 }
4381
test_mm512_mask_mov_epi64(__m512i __W,__mmask8 __U,__m512i __A)4382 __m512i test_mm512_mask_mov_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
4383 // CHECK-LABEL: @test_mm512_mask_mov_epi64
4384 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4385 return _mm512_mask_mov_epi64(__W, __U, __A);
4386 }
4387
test_mm512_maskz_mov_epi64(__mmask8 __U,__m512i __A)4388 __m512i test_mm512_maskz_mov_epi64(__mmask8 __U, __m512i __A) {
4389 // CHECK-LABEL: @test_mm512_maskz_mov_epi64
4390 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
4391 return _mm512_maskz_mov_epi64(__U, __A);
4392 }
4393
test_mm512_mask_load_epi64(__m512i __W,__mmask8 __U,void const * __P)4394 __m512i test_mm512_mask_load_epi64(__m512i __W, __mmask8 __U, void const *__P) {
4395 // CHECK-LABEL: @test_mm512_mask_load_epi64
4396 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4397 return _mm512_mask_load_epi64(__W, __U, __P);
4398 }
4399
test_mm512_maskz_load_epi64(__mmask8 __U,void const * __P)4400 __m512i test_mm512_maskz_load_epi64(__mmask8 __U, void const *__P) {
4401 // CHECK-LABEL: @test_mm512_maskz_load_epi64
4402 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
4403 return _mm512_maskz_load_epi64(__U, __P);
4404 }
4405
test_mm512_mask_store_epi32(void * __P,__mmask16 __U,__m512i __A)4406 void test_mm512_mask_store_epi32(void *__P, __mmask16 __U, __m512i __A) {
4407 // CHECK-LABEL: @test_mm512_mask_store_epi32
4408 // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}})
4409 return _mm512_mask_store_epi32(__P, __U, __A);
4410 }
4411
test_mm512_mask_store_epi64(void * __P,__mmask8 __U,__m512i __A)4412 void test_mm512_mask_store_epi64(void *__P, __mmask8 __U, __m512i __A) {
4413 // CHECK-LABEL: @test_mm512_mask_store_epi64
4414 // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}})
4415 return _mm512_mask_store_epi64(__P, __U, __A);
4416 }
4417
test_mm512_movedup_pd(__m512d __A)4418 __m512d test_mm512_movedup_pd(__m512d __A) {
4419 // CHECK-LABEL: @test_mm512_movedup_pd
4420 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4421 return _mm512_movedup_pd(__A);
4422 }
4423
test_mm512_mask_movedup_pd(__m512d __W,__mmask8 __U,__m512d __A)4424 __m512d test_mm512_mask_movedup_pd(__m512d __W, __mmask8 __U, __m512d __A) {
4425 // CHECK-LABEL: @test_mm512_mask_movedup_pd
4426 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4427 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4428 return _mm512_mask_movedup_pd(__W, __U, __A);
4429 }
4430
test_mm512_maskz_movedup_pd(__mmask8 __U,__m512d __A)4431 __m512d test_mm512_maskz_movedup_pd(__mmask8 __U, __m512d __A) {
4432 // CHECK-LABEL: @test_mm512_maskz_movedup_pd
4433 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
4434 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4435 return _mm512_maskz_movedup_pd(__U, __A);
4436 }
4437
test_mm_comi_round_sd(__m128d __A,__m128d __B)4438 int test_mm_comi_round_sd(__m128d __A, __m128d __B) {
4439 // CHECK-LABEL: @test_mm_comi_round_sd
4440 // CHECK: @llvm.x86.avx512.vcomi.sd
4441 return _mm_comi_round_sd(__A, __B, 5, _MM_FROUND_NO_EXC);
4442 }
4443
test_mm_comi_round_ss(__m128 __A,__m128 __B)4444 int test_mm_comi_round_ss(__m128 __A, __m128 __B) {
4445 // CHECK-LABEL: @test_mm_comi_round_ss
4446 // CHECK: @llvm.x86.avx512.vcomi.ss
4447 return _mm_comi_round_ss(__A, __B, 5, _MM_FROUND_NO_EXC);
4448 }
4449
test_mm512_fixupimm_round_pd(__m512d __A,__m512d __B,__m512i __C)4450 __m512d test_mm512_fixupimm_round_pd(__m512d __A, __m512d __B, __m512i __C) {
4451 // CHECK-LABEL: @test_mm512_fixupimm_round_pd
4452 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4453 return _mm512_fixupimm_round_pd(__A, __B, __C, 5, 8);
4454 }
4455
test_mm512_mask_fixupimm_round_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512i __C)4456 __m512d test_mm512_mask_fixupimm_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
4457 // CHECK-LABEL: @test_mm512_mask_fixupimm_round_pd
4458 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4459 return _mm512_mask_fixupimm_round_pd(__A, __U, __B, __C, 5, 8);
4460 }
4461
test_mm512_fixupimm_pd(__m512d __A,__m512d __B,__m512i __C)4462 __m512d test_mm512_fixupimm_pd(__m512d __A, __m512d __B, __m512i __C) {
4463 // CHECK-LABEL: @test_mm512_fixupimm_pd
4464 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4465 return _mm512_fixupimm_pd(__A, __B, __C, 5);
4466 }
4467
test_mm512_mask_fixupimm_pd(__m512d __A,__mmask8 __U,__m512d __B,__m512i __C)4468 __m512d test_mm512_mask_fixupimm_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) {
4469 // CHECK-LABEL: @test_mm512_mask_fixupimm_pd
4470 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512
4471 return _mm512_mask_fixupimm_pd(__A, __U, __B, __C, 5);
4472 }
4473
test_mm512_maskz_fixupimm_round_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512i __C)4474 __m512d test_mm512_maskz_fixupimm_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
4475 // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_pd
4476 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4477 return _mm512_maskz_fixupimm_round_pd(__U, __A, __B, __C, 5, 8);
4478 }
4479
test_mm512_maskz_fixupimm_pd(__mmask8 __U,__m512d __A,__m512d __B,__m512i __C)4480 __m512d test_mm512_maskz_fixupimm_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) {
4481 // CHECK-LABEL: @test_mm512_maskz_fixupimm_pd
4482 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512
4483 return _mm512_maskz_fixupimm_pd(__U, __A, __B, __C, 5);
4484 }
4485
test_mm512_fixupimm_round_ps(__m512 __A,__m512 __B,__m512i __C)4486 __m512 test_mm512_fixupimm_round_ps(__m512 __A, __m512 __B, __m512i __C) {
4487 // CHECK-LABEL: @test_mm512_fixupimm_round_ps
4488 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4489 return _mm512_fixupimm_round_ps(__A, __B, __C, 5, 8);
4490 }
4491
test_mm512_mask_fixupimm_round_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512i __C)4492 __m512 test_mm512_mask_fixupimm_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
4493 // CHECK-LABEL: @test_mm512_mask_fixupimm_round_ps
4494 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4495 return _mm512_mask_fixupimm_round_ps(__A, __U, __B, __C, 5, 8);
4496 }
4497
test_mm512_fixupimm_ps(__m512 __A,__m512 __B,__m512i __C)4498 __m512 test_mm512_fixupimm_ps(__m512 __A, __m512 __B, __m512i __C) {
4499 // CHECK-LABEL: @test_mm512_fixupimm_ps
4500 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4501 return _mm512_fixupimm_ps(__A, __B, __C, 5);
4502 }
4503
test_mm512_mask_fixupimm_ps(__m512 __A,__mmask16 __U,__m512 __B,__m512i __C)4504 __m512 test_mm512_mask_fixupimm_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) {
4505 // CHECK-LABEL: @test_mm512_mask_fixupimm_ps
4506 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512
4507 return _mm512_mask_fixupimm_ps(__A, __U, __B, __C, 5);
4508 }
4509
test_mm512_maskz_fixupimm_round_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512i __C)4510 __m512 test_mm512_maskz_fixupimm_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
4511 // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_ps
4512 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4513 return _mm512_maskz_fixupimm_round_ps(__U, __A, __B, __C, 5, 8);
4514 }
4515
test_mm512_maskz_fixupimm_ps(__mmask16 __U,__m512 __A,__m512 __B,__m512i __C)4516 __m512 test_mm512_maskz_fixupimm_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) {
4517 // CHECK-LABEL: @test_mm512_maskz_fixupimm_ps
4518 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512
4519 return _mm512_maskz_fixupimm_ps(__U, __A, __B, __C, 5);
4520 }
4521
test_mm_fixupimm_round_sd(__m128d __A,__m128d __B,__m128i __C)4522 __m128d test_mm_fixupimm_round_sd(__m128d __A, __m128d __B, __m128i __C) {
4523 // CHECK-LABEL: @test_mm_fixupimm_round_sd
4524 // CHECK: @llvm.x86.avx512.mask.fixupimm
4525 return _mm_fixupimm_round_sd(__A, __B, __C, 5, 8);
4526 }
4527
test_mm_mask_fixupimm_round_sd(__m128d __A,__mmask8 __U,__m128d __B,__m128i __C)4528 __m128d test_mm_mask_fixupimm_round_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
4529 // CHECK-LABEL: @test_mm_mask_fixupimm_round_sd
4530 // CHECK: @llvm.x86.avx512.mask.fixupimm
4531 return _mm_mask_fixupimm_round_sd(__A, __U, __B, __C, 5, 8);
4532 }
4533
test_mm_fixupimm_sd(__m128d __A,__m128d __B,__m128i __C)4534 __m128d test_mm_fixupimm_sd(__m128d __A, __m128d __B, __m128i __C) {
4535 // CHECK-LABEL: @test_mm_fixupimm_sd
4536 // CHECK: @llvm.x86.avx512.mask.fixupimm
4537 return _mm_fixupimm_sd(__A, __B, __C, 5);
4538 }
4539
test_mm_mask_fixupimm_sd(__m128d __A,__mmask8 __U,__m128d __B,__m128i __C)4540 __m128d test_mm_mask_fixupimm_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {
4541 // CHECK-LABEL: @test_mm_mask_fixupimm_sd
4542 // CHECK: @llvm.x86.avx512.mask.fixupimm
4543 return _mm_mask_fixupimm_sd(__A, __U, __B, __C, 5);
4544 }
4545
test_mm_maskz_fixupimm_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128i __C)4546 __m128d test_mm_maskz_fixupimm_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
4547 // CHECK-LABEL: @test_mm_maskz_fixupimm_round_sd
4548 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4549 return _mm_maskz_fixupimm_round_sd(__U, __A, __B, __C, 5, 8);
4550 }
4551
test_mm_maskz_fixupimm_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128i __C)4552 __m128d test_mm_maskz_fixupimm_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {
4553 // CHECK-LABEL: @test_mm_maskz_fixupimm_sd
4554 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4555 return _mm_maskz_fixupimm_sd(__U, __A, __B, __C, 5);
4556 }
4557
test_mm_fixupimm_round_ss(__m128 __A,__m128 __B,__m128i __C)4558 __m128 test_mm_fixupimm_round_ss(__m128 __A, __m128 __B, __m128i __C) {
4559 // CHECK-LABEL: @test_mm_fixupimm_round_ss
4560 // CHECK: @llvm.x86.avx512.mask.fixupimm
4561 return _mm_fixupimm_round_ss(__A, __B, __C, 5, 8);
4562 }
4563
test_mm_mask_fixupimm_round_ss(__m128 __A,__mmask8 __U,__m128 __B,__m128i __C)4564 __m128 test_mm_mask_fixupimm_round_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
4565 // CHECK-LABEL: @test_mm_mask_fixupimm_round_ss
4566 // CHECK: @llvm.x86.avx512.mask.fixupimm
4567 return _mm_mask_fixupimm_round_ss(__A, __U, __B, __C, 5, 8);
4568 }
4569
test_mm_fixupimm_ss(__m128 __A,__m128 __B,__m128i __C)4570 __m128 test_mm_fixupimm_ss(__m128 __A, __m128 __B, __m128i __C) {
4571 // CHECK-LABEL: @test_mm_fixupimm_ss
4572 // CHECK: @llvm.x86.avx512.mask.fixupimm
4573 return _mm_fixupimm_ss(__A, __B, __C, 5);
4574 }
4575
test_mm_mask_fixupimm_ss(__m128 __A,__mmask8 __U,__m128 __B,__m128i __C)4576 __m128 test_mm_mask_fixupimm_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {
4577 // CHECK-LABEL: @test_mm_mask_fixupimm_ss
4578 // CHECK: @llvm.x86.avx512.mask.fixupimm
4579 return _mm_mask_fixupimm_ss(__A, __U, __B, __C, 5);
4580 }
4581
test_mm_maskz_fixupimm_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128i __C)4582 __m128 test_mm_maskz_fixupimm_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
4583 // CHECK-LABEL: @test_mm_maskz_fixupimm_round_ss
4584 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4585 return _mm_maskz_fixupimm_round_ss(__U, __A, __B, __C, 5, 8);
4586 }
4587
test_mm_maskz_fixupimm_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128i __C)4588 __m128 test_mm_maskz_fixupimm_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {
4589 // CHECK-LABEL: @test_mm_maskz_fixupimm_ss
4590 // CHECK: @llvm.x86.avx512.maskz.fixupimm
4591 return _mm_maskz_fixupimm_ss(__U, __A, __B, __C, 5);
4592 }
4593
test_mm_getexp_round_sd(__m128d __A,__m128d __B)4594 __m128d test_mm_getexp_round_sd(__m128d __A, __m128d __B) {
4595 // CHECK-LABEL: @test_mm_getexp_round_sd
4596 // CHECK: @llvm.x86.avx512.mask.getexp.sd
4597 return _mm_getexp_round_sd(__A, __B, 8);
4598 }
4599
test_mm_getexp_sd(__m128d __A,__m128d __B)4600 __m128d test_mm_getexp_sd(__m128d __A, __m128d __B) {
4601 // CHECK-LABEL: @test_mm_getexp_sd
4602 // CHECK: @llvm.x86.avx512.mask.getexp.sd
4603 return _mm_getexp_sd(__A, __B);
4604 }
4605
test_mm_getexp_round_ss(__m128 __A,__m128 __B)4606 __m128 test_mm_getexp_round_ss(__m128 __A, __m128 __B) {
4607 // CHECK-LABEL: @test_mm_getexp_round_ss
4608 // CHECK: @llvm.x86.avx512.mask.getexp.ss
4609 return _mm_getexp_round_ss(__A, __B, 8);
4610 }
4611
test_mm_getexp_ss(__m128 __A,__m128 __B)4612 __m128 test_mm_getexp_ss(__m128 __A, __m128 __B) {
4613 // CHECK-LABEL: @test_mm_getexp_ss
4614 // CHECK: @llvm.x86.avx512.mask.getexp.ss
4615 return _mm_getexp_ss(__A, __B);
4616 }
4617
test_mm_getmant_round_sd(__m128d __A,__m128d __B)4618 __m128d test_mm_getmant_round_sd(__m128d __A, __m128d __B) {
4619 // CHECK-LABEL: @test_mm_getmant_round_sd
4620 // CHECK: @llvm.x86.avx512.mask.getmant.sd
4621 return _mm_getmant_round_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8);
4622 }
4623
test_mm_getmant_sd(__m128d __A,__m128d __B)4624 __m128d test_mm_getmant_sd(__m128d __A, __m128d __B) {
4625 // CHECK-LABEL: @test_mm_getmant_sd
4626 // CHECK: @llvm.x86.avx512.mask.getmant.sd
4627 return _mm_getmant_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src);
4628 }
4629
test_mm_getmant_round_ss(__m128 __A,__m128 __B)4630 __m128 test_mm_getmant_round_ss(__m128 __A, __m128 __B) {
4631 // CHECK-LABEL: @test_mm_getmant_round_ss
4632 // CHECK: @llvm.x86.avx512.mask.getmant.ss
4633 return _mm_getmant_round_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8);
4634 }
4635
test_mm_getmant_ss(__m128 __A,__m128 __B)4636 __m128 test_mm_getmant_ss(__m128 __A, __m128 __B) {
4637 // CHECK-LABEL: @test_mm_getmant_ss
4638 // CHECK: @llvm.x86.avx512.mask.getmant.ss
4639 return _mm_getmant_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src);
4640 }
4641
test_mm512_kmov(__mmask16 __A)4642 __mmask16 test_mm512_kmov(__mmask16 __A) {
4643 // CHECK-LABEL: @test_mm512_kmov
4644 // CHECK: load i16, i16* %__A.addr.i, align 2
4645 return _mm512_kmov(__A);
4646 }
4647
test_mm512_mask_unpackhi_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)4648 __m512d test_mm512_mask_unpackhi_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4649 // CHECK-LABEL: @test_mm512_mask_unpackhi_pd
4650 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
4651 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4652 return _mm512_mask_unpackhi_pd(__W, __U, __A, __B);
4653 }
4654 #if __x86_64__
test_mm_cvt_roundsd_si64(__m128d __A)4655 unsigned long long test_mm_cvt_roundsd_si64(__m128d __A) {
4656 // CHECK-LABEL: @test_mm_cvt_roundsd_si64
4657 // CHECK: @llvm.x86.avx512.vcvtsd2si64
4658 return _mm_cvt_roundsd_si64(__A, _MM_FROUND_CUR_DIRECTION);
4659 }
4660 #endif
test_mm512_mask2_permutex2var_epi32(__m512i __A,__m512i __I,__mmask16 __U,__m512i __B)4661 __m512i test_mm512_mask2_permutex2var_epi32(__m512i __A, __m512i __I, __mmask16 __U, __m512i __B) {
4662 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi32
4663 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
4664 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4665 return _mm512_mask2_permutex2var_epi32(__A, __I, __U, __B);
4666 }
test_mm512_unpackhi_epi32(__m512i __A,__m512i __B)4667 __m512i test_mm512_unpackhi_epi32(__m512i __A, __m512i __B) {
4668 // CHECK-LABEL: @test_mm512_unpackhi_epi32
4669 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4670 return _mm512_unpackhi_epi32(__A, __B);
4671 }
4672
test_mm512_maskz_unpackhi_pd(__mmask8 __U,__m512d __A,__m512d __B)4673 __m512d test_mm512_maskz_unpackhi_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4674 // CHECK-LABEL: @test_mm512_maskz_unpackhi_pd
4675 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
4676 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4677 return _mm512_maskz_unpackhi_pd(__U, __A, __B);
4678 }
4679 #if __x86_64__
test_mm_cvt_roundsd_i64(__m128d __A)4680 long long test_mm_cvt_roundsd_i64(__m128d __A) {
4681 // CHECK-LABEL: @test_mm_cvt_roundsd_i64
4682 // CHECK: @llvm.x86.avx512.vcvtsd2si64
4683 return _mm_cvt_roundsd_i64(__A, _MM_FROUND_CUR_DIRECTION);
4684 }
4685 #endif
test_mm512_mask2_permutex2var_pd(__m512d __A,__m512i __I,__mmask8 __U,__m512d __B)4686 __m512d test_mm512_mask2_permutex2var_pd(__m512d __A, __m512i __I, __mmask8 __U, __m512d __B) {
4687 // CHECK-LABEL: @test_mm512_mask2_permutex2var_pd
4688 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
4689 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4690 return _mm512_mask2_permutex2var_pd(__A, __I, __U, __B);
4691 }
test_mm512_mask_unpackhi_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)4692 __m512i test_mm512_mask_unpackhi_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
4693 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi32
4694 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4695 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
4696 return _mm512_mask_unpackhi_epi32(__W, __U, __A, __B);
4697 }
4698
test_mm512_mask_unpackhi_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)4699 __m512 test_mm512_mask_unpackhi_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4700 // CHECK-LABEL: @test_mm512_mask_unpackhi_ps
4701 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4702 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4703 return _mm512_mask_unpackhi_ps(__W, __U, __A, __B);
4704 }
4705
test_mm512_maskz_unpackhi_ps(__mmask16 __U,__m512 __A,__m512 __B)4706 __m512 test_mm512_maskz_unpackhi_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4707 // CHECK-LABEL: @test_mm512_maskz_unpackhi_ps
4708 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
4709 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4710 return _mm512_maskz_unpackhi_ps(__U, __A, __B);
4711 }
4712
test_mm512_mask_unpacklo_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)4713 __m512d test_mm512_mask_unpacklo_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
4714 // CHECK-LABEL: @test_mm512_mask_unpacklo_pd
4715 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
4716 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4717 return _mm512_mask_unpacklo_pd(__W, __U, __A, __B);
4718 }
4719
test_mm512_maskz_unpacklo_pd(__mmask8 __U,__m512d __A,__m512d __B)4720 __m512d test_mm512_maskz_unpacklo_pd(__mmask8 __U, __m512d __A, __m512d __B) {
4721 // CHECK-LABEL: @test_mm512_maskz_unpacklo_pd
4722 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
4723 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
4724 return _mm512_maskz_unpacklo_pd(__U, __A, __B);
4725 }
4726
test_mm512_mask_unpacklo_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)4727 __m512 test_mm512_mask_unpacklo_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
4728 // CHECK-LABEL: @test_mm512_mask_unpacklo_ps
4729 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
4730 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4731 return _mm512_mask_unpacklo_ps(__W, __U, __A, __B);
4732 }
4733
test_mm512_maskz_unpacklo_ps(__mmask16 __U,__m512 __A,__m512 __B)4734 __m512 test_mm512_maskz_unpacklo_ps(__mmask16 __U, __m512 __A, __m512 __B) {
4735 // CHECK-LABEL: @test_mm512_maskz_unpacklo_ps
4736 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
4737 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
4738 return _mm512_maskz_unpacklo_ps(__U, __A, __B);
4739 }
test_mm_cvt_roundsd_si32(__m128d __A)4740 int test_mm_cvt_roundsd_si32(__m128d __A) {
4741 // CHECK-LABEL: @test_mm_cvt_roundsd_si32
4742 // CHECK: @llvm.x86.avx512.vcvtsd2si32
4743 return _mm_cvt_roundsd_si32(__A, _MM_FROUND_CUR_DIRECTION);
4744 }
4745
test_mm_cvt_roundsd_i32(__m128d __A)4746 int test_mm_cvt_roundsd_i32(__m128d __A) {
4747 // CHECK-LABEL: @test_mm_cvt_roundsd_i32
4748 // CHECK: @llvm.x86.avx512.vcvtsd2si32
4749 return _mm_cvt_roundsd_i32(__A, _MM_FROUND_CUR_DIRECTION);
4750 }
4751
test_mm_cvt_roundsd_u32(__m128d __A)4752 unsigned test_mm_cvt_roundsd_u32(__m128d __A) {
4753 // CHECK-LABEL: @test_mm_cvt_roundsd_u32
4754 // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4755 return _mm_cvt_roundsd_u32(__A, _MM_FROUND_CUR_DIRECTION);
4756 }
4757
test_mm_cvtsd_u32(__m128d __A)4758 unsigned test_mm_cvtsd_u32(__m128d __A) {
4759 // CHECK-LABEL: @test_mm_cvtsd_u32
4760 // CHECK: @llvm.x86.avx512.vcvtsd2usi32
4761 return _mm_cvtsd_u32(__A);
4762 }
4763
4764 #ifdef __x86_64__
test_mm_cvt_roundsd_u64(__m128d __A)4765 unsigned long long test_mm_cvt_roundsd_u64(__m128d __A) {
4766 // CHECK-LABEL: @test_mm_cvt_roundsd_u64
4767 // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4768 return _mm_cvt_roundsd_u64(__A, _MM_FROUND_CUR_DIRECTION);
4769 }
4770
test_mm_cvtsd_u64(__m128d __A)4771 unsigned long long test_mm_cvtsd_u64(__m128d __A) {
4772 // CHECK-LABEL: @test_mm_cvtsd_u64
4773 // CHECK: @llvm.x86.avx512.vcvtsd2usi64
4774 return _mm_cvtsd_u64(__A);
4775 }
4776 #endif
4777
test_mm_cvt_roundss_si32(__m128 __A)4778 int test_mm_cvt_roundss_si32(__m128 __A) {
4779 // CHECK-LABEL: @test_mm_cvt_roundss_si32
4780 // CHECK: @llvm.x86.avx512.vcvtss2si32
4781 return _mm_cvt_roundss_si32(__A, _MM_FROUND_CUR_DIRECTION);
4782 }
4783
test_mm_cvt_roundss_i32(__m128 __A)4784 int test_mm_cvt_roundss_i32(__m128 __A) {
4785 // CHECK-LABEL: @test_mm_cvt_roundss_i32
4786 // CHECK: @llvm.x86.avx512.vcvtss2si32
4787 return _mm_cvt_roundss_i32(__A, _MM_FROUND_CUR_DIRECTION);
4788 }
4789
4790 #ifdef __x86_64__
test_mm_cvt_roundss_si64(__m128 __A)4791 long long test_mm_cvt_roundss_si64(__m128 __A) {
4792 // CHECK-LABEL: @test_mm_cvt_roundss_si64
4793 // CHECK: @llvm.x86.avx512.vcvtss2si64
4794 return _mm_cvt_roundss_si64(__A, _MM_FROUND_CUR_DIRECTION);
4795 }
4796
test_mm_cvt_roundss_i64(__m128 __A)4797 long long test_mm_cvt_roundss_i64(__m128 __A) {
4798 // CHECK-LABEL: @test_mm_cvt_roundss_i64
4799 // CHECK: @llvm.x86.avx512.vcvtss2si64
4800 return _mm_cvt_roundss_i64(__A, _MM_FROUND_CUR_DIRECTION);
4801 }
4802 #endif
4803
test_mm_cvt_roundss_u32(__m128 __A)4804 unsigned test_mm_cvt_roundss_u32(__m128 __A) {
4805 // CHECK-LABEL: @test_mm_cvt_roundss_u32
4806 // CHECK: @llvm.x86.avx512.vcvtss2usi32
4807 return _mm_cvt_roundss_u32(__A, _MM_FROUND_CUR_DIRECTION);
4808 }
4809
test_mm_cvtss_u32(__m128 __A)4810 unsigned test_mm_cvtss_u32(__m128 __A) {
4811 // CHECK-LABEL: @test_mm_cvtss_u32
4812 // CHECK: @llvm.x86.avx512.vcvtss2usi32
4813 return _mm_cvtss_u32(__A);
4814 }
4815
4816 #ifdef __x86_64__
test_mm_cvt_roundss_u64(__m128 __A)4817 unsigned long long test_mm_cvt_roundss_u64(__m128 __A) {
4818 // CHECK-LABEL: @test_mm_cvt_roundss_u64
4819 // CHECK: @llvm.x86.avx512.vcvtss2usi64
4820 return _mm_cvt_roundss_u64(__A, _MM_FROUND_CUR_DIRECTION);
4821 }
4822
test_mm_cvtss_u64(__m128 __A)4823 unsigned long long test_mm_cvtss_u64(__m128 __A) {
4824 // CHECK-LABEL: @test_mm_cvtss_u64
4825 // CHECK: @llvm.x86.avx512.vcvtss2usi64
4826 return _mm_cvtss_u64(__A);
4827 }
4828 #endif
4829
test_mm_cvtt_roundsd_i32(__m128d __A)4830 int test_mm_cvtt_roundsd_i32(__m128d __A) {
4831 // CHECK-LABEL: @test_mm_cvtt_roundsd_i32
4832 // CHECK: @llvm.x86.avx512.cvttsd2si
4833 return _mm_cvtt_roundsd_i32(__A, _MM_FROUND_CUR_DIRECTION);
4834 }
4835
test_mm_cvtt_roundsd_si32(__m128d __A)4836 int test_mm_cvtt_roundsd_si32(__m128d __A) {
4837 // CHECK-LABEL: @test_mm_cvtt_roundsd_si32
4838 // CHECK: @llvm.x86.avx512.cvttsd2si
4839 return _mm_cvtt_roundsd_si32(__A, _MM_FROUND_CUR_DIRECTION);
4840 }
4841
test_mm_cvttsd_i32(__m128d __A)4842 int test_mm_cvttsd_i32(__m128d __A) {
4843 // CHECK-LABEL: @test_mm_cvttsd_i32
4844 // CHECK: @llvm.x86.avx512.cvttsd2si
4845 return _mm_cvttsd_i32(__A);
4846 }
4847
4848 #ifdef __x86_64__
test_mm_cvtt_roundsd_si64(__m128d __A)4849 unsigned long long test_mm_cvtt_roundsd_si64(__m128d __A) {
4850 // CHECK-LABEL: @test_mm_cvtt_roundsd_si64
4851 // CHECK: @llvm.x86.avx512.cvttsd2si64
4852 return _mm_cvtt_roundsd_si64(__A, _MM_FROUND_CUR_DIRECTION);
4853 }
4854
test_mm_cvtt_roundsd_i64(__m128d __A)4855 long long test_mm_cvtt_roundsd_i64(__m128d __A) {
4856 // CHECK-LABEL: @test_mm_cvtt_roundsd_i64
4857 // CHECK: @llvm.x86.avx512.cvttsd2si64
4858 return _mm_cvtt_roundsd_i64(__A, _MM_FROUND_CUR_DIRECTION);
4859 }
4860
test_mm_cvttsd_i64(__m128d __A)4861 long long test_mm_cvttsd_i64(__m128d __A) {
4862 // CHECK-LABEL: @test_mm_cvttsd_i64
4863 // CHECK: @llvm.x86.avx512.cvttsd2si64
4864 return _mm_cvttsd_i64(__A);
4865 }
4866 #endif
4867
test_mm_cvtt_roundsd_u32(__m128d __A)4868 unsigned test_mm_cvtt_roundsd_u32(__m128d __A) {
4869 // CHECK-LABEL: @test_mm_cvtt_roundsd_u32
4870 // CHECK: @llvm.x86.avx512.cvttsd2usi
4871 return _mm_cvtt_roundsd_u32(__A, _MM_FROUND_CUR_DIRECTION);
4872 }
4873
test_mm_cvttsd_u32(__m128d __A)4874 unsigned test_mm_cvttsd_u32(__m128d __A) {
4875 // CHECK-LABEL: @test_mm_cvttsd_u32
4876 // CHECK: @llvm.x86.avx512.cvttsd2usi
4877 return _mm_cvttsd_u32(__A);
4878 }
4879
4880 #ifdef __x86_64__
test_mm_cvtt_roundsd_u64(__m128d __A)4881 unsigned long long test_mm_cvtt_roundsd_u64(__m128d __A) {
4882 // CHECK-LABEL: @test_mm_cvtt_roundsd_u64
4883 // CHECK: @llvm.x86.avx512.cvttsd2usi64
4884 return _mm_cvtt_roundsd_u64(__A, _MM_FROUND_CUR_DIRECTION);
4885 }
4886
test_mm_cvttsd_u64(__m128d __A)4887 unsigned long long test_mm_cvttsd_u64(__m128d __A) {
4888 // CHECK-LABEL: @test_mm_cvttsd_u64
4889 // CHECK: @llvm.x86.avx512.cvttsd2usi64
4890 return _mm_cvttsd_u64(__A);
4891 }
4892 #endif
4893
test_mm_cvtt_roundss_i32(__m128 __A)4894 int test_mm_cvtt_roundss_i32(__m128 __A) {
4895 // CHECK-LABEL: @test_mm_cvtt_roundss_i32
4896 // CHECK: @llvm.x86.avx512.cvttss2si
4897 return _mm_cvtt_roundss_i32(__A, _MM_FROUND_CUR_DIRECTION);
4898 }
4899
test_mm_cvtt_roundss_si32(__m128 __A)4900 int test_mm_cvtt_roundss_si32(__m128 __A) {
4901 // CHECK-LABEL: @test_mm_cvtt_roundss_si32
4902 // CHECK: @llvm.x86.avx512.cvttss2si
4903 return _mm_cvtt_roundss_si32(__A, _MM_FROUND_CUR_DIRECTION);
4904 }
4905
test_mm_cvttss_i32(__m128 __A)4906 int test_mm_cvttss_i32(__m128 __A) {
4907 // CHECK-LABEL: @test_mm_cvttss_i32
4908 // CHECK: @llvm.x86.avx512.cvttss2si
4909 return _mm_cvttss_i32(__A);
4910 }
4911
4912 #ifdef __x86_64__
test_mm_cvtt_roundss_i64(__m128 __A)4913 float test_mm_cvtt_roundss_i64(__m128 __A) {
4914 // CHECK-LABEL: @test_mm_cvtt_roundss_i64
4915 // CHECK: @llvm.x86.avx512.cvttss2si64
4916 return _mm_cvtt_roundss_i64(__A, _MM_FROUND_CUR_DIRECTION);
4917 }
4918
test_mm_cvtt_roundss_si64(__m128 __A)4919 long long test_mm_cvtt_roundss_si64(__m128 __A) {
4920 // CHECK-LABEL: @test_mm_cvtt_roundss_si64
4921 // CHECK: @llvm.x86.avx512.cvttss2si64
4922 return _mm_cvtt_roundss_si64(__A, _MM_FROUND_CUR_DIRECTION);
4923 }
4924
test_mm_cvttss_i64(__m128 __A)4925 long long test_mm_cvttss_i64(__m128 __A) {
4926 // CHECK-LABEL: @test_mm_cvttss_i64
4927 // CHECK: @llvm.x86.avx512.cvttss2si64
4928 return _mm_cvttss_i64(__A);
4929 }
4930 #endif
4931
test_mm_cvtt_roundss_u32(__m128 __A)4932 unsigned test_mm_cvtt_roundss_u32(__m128 __A) {
4933 // CHECK-LABEL: @test_mm_cvtt_roundss_u32
4934 // CHECK: @llvm.x86.avx512.cvttss2usi
4935 return _mm_cvtt_roundss_u32(__A, _MM_FROUND_CUR_DIRECTION);
4936 }
4937
test_mm_cvttss_u32(__m128 __A)4938 unsigned test_mm_cvttss_u32(__m128 __A) {
4939 // CHECK-LABEL: @test_mm_cvttss_u32
4940 // CHECK: @llvm.x86.avx512.cvttss2usi
4941 return _mm_cvttss_u32(__A);
4942 }
4943
4944 #ifdef __x86_64__
test_mm_cvtt_roundss_u64(__m128 __A)4945 unsigned long long test_mm_cvtt_roundss_u64(__m128 __A) {
4946 // CHECK-LABEL: @test_mm_cvtt_roundss_u64
4947 // CHECK: @llvm.x86.avx512.cvttss2usi64
4948 return _mm_cvtt_roundss_u64(__A, _MM_FROUND_CUR_DIRECTION);
4949 }
4950
test_mm_cvttss_u64(__m128 __A)4951 unsigned long long test_mm_cvttss_u64(__m128 __A) {
4952 // CHECK-LABEL: @test_mm_cvttss_u64
4953 // CHECK: @llvm.x86.avx512.cvttss2usi64
4954 return _mm_cvttss_u64(__A);
4955 }
4956 #endif
4957
test_mm512_cvtt_roundps_epu32(__m512 __A)4958 __m512i test_mm512_cvtt_roundps_epu32(__m512 __A)
4959 {
4960 // CHECK-LABEL: @test_mm512_cvtt_roundps_epu32
4961 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4962 return _mm512_cvtt_roundps_epu32(__A, _MM_FROUND_CUR_DIRECTION);
4963 }
4964
test_mm512_mask_cvtt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)4965 __m512i test_mm512_mask_cvtt_roundps_epu32(__m512i __W, __mmask16 __U, __m512 __A)
4966 {
4967 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu32
4968 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4969 return _mm512_mask_cvtt_roundps_epu32(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
4970 }
4971
test_mm512_maskz_cvtt_roundps_epu32(__mmask16 __U,__m512 __A)4972 __m512i test_mm512_maskz_cvtt_roundps_epu32( __mmask16 __U, __m512 __A)
4973 {
4974 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu32
4975 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
4976
4977 return _mm512_maskz_cvtt_roundps_epu32(__U, __A, _MM_FROUND_CUR_DIRECTION);
4978 }
4979
test_mm512_cvt_roundps_ph(__m512 __A)4980 __m256i test_mm512_cvt_roundps_ph(__m512 __A)
4981 {
4982 // CHECK-LABEL: @test_mm512_cvt_roundps_ph
4983 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4984 return _mm512_cvt_roundps_ph(__A, _MM_FROUND_CUR_DIRECTION);
4985 }
4986
test_mm512_mask_cvt_roundps_ph(__m256i __W,__mmask16 __U,__m512 __A)4987 __m256i test_mm512_mask_cvt_roundps_ph(__m256i __W , __mmask16 __U, __m512 __A)
4988 {
4989 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_ph
4990 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4991 return _mm512_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
4992 }
4993
test_mm512_maskz_cvt_roundps_ph(__mmask16 __U,__m512 __A)4994 __m256i test_mm512_maskz_cvt_roundps_ph(__mmask16 __U, __m512 __A)
4995 {
4996 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_ph
4997 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
4998 return _mm512_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION);
4999 }
5000
test_mm512_cvt_roundph_ps(__m256i __A)5001 __m512 test_mm512_cvt_roundph_ps(__m256i __A)
5002 {
5003 // CHECK-LABEL: @test_mm512_cvt_roundph_ps
5004 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
5005 return _mm512_cvt_roundph_ps(__A, _MM_FROUND_CUR_DIRECTION);
5006 }
5007
test_mm512_mask_cvt_roundph_ps(__m512 __W,__mmask16 __U,__m256i __A)5008 __m512 test_mm512_mask_cvt_roundph_ps(__m512 __W, __mmask16 __U, __m256i __A)
5009 {
5010 // CHECK-LABEL: @test_mm512_mask_cvt_roundph_ps
5011 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
5012 return _mm512_mask_cvt_roundph_ps(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
5013 }
5014
test_mm512_maskz_cvt_roundph_ps(__mmask16 __U,__m256i __A)5015 __m512 test_mm512_maskz_cvt_roundph_ps(__mmask16 __U, __m256i __A)
5016 {
5017 // CHECK-LABEL: @test_mm512_maskz_cvt_roundph_ps
5018 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
5019 return _mm512_maskz_cvt_roundph_ps(__U, __A, _MM_FROUND_CUR_DIRECTION);
5020 }
5021
test_mm512_mask_cvt_roundepi32_ps(__m512 __W,__mmask16 __U,__m512i __A)5022 __m512 test_mm512_mask_cvt_roundepi32_ps(__m512 __W, __mmask16 __U, __m512i __A)
5023 {
5024 // CHECK-LABEL: @test_mm512_mask_cvt_roundepi32_ps
5025 // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512
5026 return _mm512_mask_cvt_roundepi32_ps(__W,__U,__A,4);
5027 }
5028
test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U,__m512i __A)5029 __m512 test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U, __m512i __A)
5030 {
5031 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi32_ps
5032 // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512
5033 return _mm512_maskz_cvt_roundepi32_ps(__U,__A,4);
5034 }
5035
test_mm512_mask_cvt_roundepu32_ps(__m512 __W,__mmask16 __U,__m512i __A)5036 __m512 test_mm512_mask_cvt_roundepu32_ps(__m512 __W, __mmask16 __U,__m512i __A)
5037 {
5038 // CHECK-LABEL: @test_mm512_mask_cvt_roundepu32_ps
5039 // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512
5040 return _mm512_mask_cvt_roundepu32_ps(__W,__U,__A,4);
5041 }
5042
test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A)5043 __m512 test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A)
5044 {
5045 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu32_ps
5046 // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512
5047 return _mm512_maskz_cvt_roundepu32_ps(__U,__A,4);
5048 }
5049
test_mm512_mask_cvt_roundpd_ps(__m256 W,__mmask8 U,__m512d A)5050 __m256 test_mm512_mask_cvt_roundpd_ps(__m256 W, __mmask8 U,__m512d A)
5051 {
5052 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_ps
5053 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5054 return _mm512_mask_cvt_roundpd_ps(W,U,A,4);
5055 }
5056
test_mm512_maskz_cvt_roundpd_ps(__mmask8 U,__m512d A)5057 __m256 test_mm512_maskz_cvt_roundpd_ps(__mmask8 U, __m512d A)
5058 {
5059 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_ps
5060 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
5061 return _mm512_maskz_cvt_roundpd_ps(U,A,4);
5062 }
5063
test_mm512_cvtt_roundpd_epi32(__m512d A)5064 __m256i test_mm512_cvtt_roundpd_epi32(__m512d A)
5065 {
5066 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi32
5067 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5068 return _mm512_cvtt_roundpd_epi32(A,4);
5069 }
5070
test_mm512_mask_cvtt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)5071 __m256i test_mm512_mask_cvtt_roundpd_epi32(__m256i W, __mmask8 U, __m512d A)
5072 {
5073 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi32
5074 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5075 return _mm512_mask_cvtt_roundpd_epi32(W,U,A,4);
5076 }
5077
test_mm512_maskz_cvtt_roundpd_epi32(__mmask8 U,__m512d A)5078 __m256i test_mm512_maskz_cvtt_roundpd_epi32(__mmask8 U, __m512d A)
5079 {
5080 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi32
5081 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
5082 return _mm512_maskz_cvtt_roundpd_epi32(U,A,4);
5083 }
5084
test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U,__m512 A)5085 __m512i test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U, __m512 A)
5086 {
5087 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi32
5088 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5089 return _mm512_mask_cvtt_roundps_epi32(W,U,A,4);
5090 }
5091
test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U,__m512 A)5092 __m512i test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U, __m512 A)
5093 {
5094 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi32
5095 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
5096 return _mm512_maskz_cvtt_roundps_epi32(U,A,4);
5097 }
5098
test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A)5099 __m512i test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A)
5100 {
5101 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi32
5102 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5103 return _mm512_mask_cvt_roundps_epi32(__W,__U,__A,4);
5104 }
5105
test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U,__m512 __A)5106 __m512i test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U, __m512 __A)
5107 {
5108 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi32
5109 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
5110 return _mm512_maskz_cvt_roundps_epi32(__U,__A,4);
5111 }
5112
test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)5113 __m256i test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A)
5114 {
5115 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi32
5116 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5117 return _mm512_mask_cvt_roundpd_epi32(W,U,A,4);
5118 }
5119
test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U,__m512d A)5120 __m256i test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U, __m512d A)
5121 {
5122 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi32
5123 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
5124 return _mm512_maskz_cvt_roundpd_epi32(U,A,4);
5125 }
5126
test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)5127 __m512i test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A)
5128 {
5129 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu32
5130 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5131 return _mm512_mask_cvt_roundps_epu32(__W,__U,__A,4);
5132 }
5133
test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A)5134 __m512i test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A)
5135 {
5136 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu32
5137 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
5138 return _mm512_maskz_cvt_roundps_epu32(__U,__A, 4);
5139 }
5140
test_mm512_mask_cvt_roundpd_epu32(__m256i W,__mmask8 U,__m512d A)5141 __m256i test_mm512_mask_cvt_roundpd_epu32(__m256i W, __mmask8 U, __m512d A)
5142 {
5143 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu32
5144 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5145 return _mm512_mask_cvt_roundpd_epu32(W,U,A,4);
5146 }
5147
test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U,__m512d A)5148 __m256i test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U, __m512d A)
5149 {
5150 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu32
5151 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
5152 return _mm512_maskz_cvt_roundpd_epu32(U, A, 4);
5153 }
5154
test_mm512_mask2_permutex2var_ps(__m512 __A,__m512i __I,__mmask16 __U,__m512 __B)5155 __m512 test_mm512_mask2_permutex2var_ps(__m512 __A, __m512i __I, __mmask16 __U, __m512 __B) {
5156 // CHECK-LABEL: @test_mm512_mask2_permutex2var_ps
5157 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5158 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5159 return _mm512_mask2_permutex2var_ps(__A, __I, __U, __B);
5160 }
5161
test_mm512_mask2_permutex2var_epi64(__m512i __A,__m512i __I,__mmask8 __U,__m512i __B)5162 __m512i test_mm512_mask2_permutex2var_epi64(__m512i __A, __m512i __I, __mmask8 __U, __m512i __B) {
5163 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi64
5164 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5165 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5166 return _mm512_mask2_permutex2var_epi64(__A, __I, __U, __B);
5167 }
5168
test_mm512_permute_pd(__m512d __X)5169 __m512d test_mm512_permute_pd(__m512d __X) {
5170 // CHECK-LABEL: @test_mm512_permute_pd
5171 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5172 return _mm512_permute_pd(__X, 2);
5173 }
5174
test_mm512_mask_permute_pd(__m512d __W,__mmask8 __U,__m512d __X)5175 __m512d test_mm512_mask_permute_pd(__m512d __W, __mmask8 __U, __m512d __X) {
5176 // CHECK-LABEL: @test_mm512_mask_permute_pd
5177 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5178 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5179 return _mm512_mask_permute_pd(__W, __U, __X, 2);
5180 }
5181
test_mm512_maskz_permute_pd(__mmask8 __U,__m512d __X)5182 __m512d test_mm512_maskz_permute_pd(__mmask8 __U, __m512d __X) {
5183 // CHECK-LABEL: @test_mm512_maskz_permute_pd
5184 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>
5185 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5186 return _mm512_maskz_permute_pd(__U, __X, 2);
5187 }
5188
test_mm512_permute_ps(__m512 __X)5189 __m512 test_mm512_permute_ps(__m512 __X) {
5190 // CHECK-LABEL: @test_mm512_permute_ps
5191 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5192 return _mm512_permute_ps(__X, 2);
5193 }
5194
test_mm512_mask_permute_ps(__m512 __W,__mmask16 __U,__m512 __X)5195 __m512 test_mm512_mask_permute_ps(__m512 __W, __mmask16 __U, __m512 __X) {
5196 // CHECK-LABEL: @test_mm512_mask_permute_ps
5197 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5198 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5199 return _mm512_mask_permute_ps(__W, __U, __X, 2);
5200 }
5201
test_mm512_maskz_permute_ps(__mmask16 __U,__m512 __X)5202 __m512 test_mm512_maskz_permute_ps(__mmask16 __U, __m512 __X) {
5203 // CHECK-LABEL: @test_mm512_maskz_permute_ps
5204 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12>
5205 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5206 return _mm512_maskz_permute_ps(__U, __X, 2);
5207 }
5208
test_mm512_permutevar_pd(__m512d __A,__m512i __C)5209 __m512d test_mm512_permutevar_pd(__m512d __A, __m512i __C) {
5210 // CHECK-LABEL: @test_mm512_permutevar_pd
5211 // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5212 return _mm512_permutevar_pd(__A, __C);
5213 }
5214
test_mm512_mask_permutevar_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512i __C)5215 __m512d test_mm512_mask_permutevar_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512i __C) {
5216 // CHECK-LABEL: @test_mm512_mask_permutevar_pd
5217 // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5218 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5219 return _mm512_mask_permutevar_pd(__W, __U, __A, __C);
5220 }
5221
test_mm512_maskz_permutevar_pd(__mmask8 __U,__m512d __A,__m512i __C)5222 __m512d test_mm512_maskz_permutevar_pd(__mmask8 __U, __m512d __A, __m512i __C) {
5223 // CHECK-LABEL: @test_mm512_maskz_permutevar_pd
5224 // CHECK: @llvm.x86.avx512.vpermilvar.pd.512
5225 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5226 return _mm512_maskz_permutevar_pd(__U, __A, __C);
5227 }
5228
test_mm512_permutevar_ps(__m512 __A,__m512i __C)5229 __m512 test_mm512_permutevar_ps(__m512 __A, __m512i __C) {
5230 // CHECK-LABEL: @test_mm512_permutevar_ps
5231 // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5232 return _mm512_permutevar_ps(__A, __C);
5233 }
5234
test_mm512_mask_permutevar_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512i __C)5235 __m512 test_mm512_mask_permutevar_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512i __C) {
5236 // CHECK-LABEL: @test_mm512_mask_permutevar_ps
5237 // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5238 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5239 return _mm512_mask_permutevar_ps(__W, __U, __A, __C);
5240 }
5241
test_mm512_maskz_permutevar_ps(__mmask16 __U,__m512 __A,__m512i __C)5242 __m512 test_mm512_maskz_permutevar_ps(__mmask16 __U, __m512 __A, __m512i __C) {
5243 // CHECK-LABEL: @test_mm512_maskz_permutevar_ps
5244 // CHECK: @llvm.x86.avx512.vpermilvar.ps.512
5245 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5246 return _mm512_maskz_permutevar_ps(__U, __A, __C);
5247 }
5248
test_mm512_permutex2var_epi32(__m512i __A,__m512i __I,__m512i __B)5249 __m512i test_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B) {
5250 // CHECK-LABEL: @test_mm512_permutex2var_epi32
5251 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5252 return _mm512_permutex2var_epi32(__A, __I, __B);
5253 }
5254
test_mm512_maskz_permutex2var_epi32(__mmask16 __U,__m512i __A,__m512i __I,__m512i __B)5255 __m512i test_mm512_maskz_permutex2var_epi32(__mmask16 __U, __m512i __A, __m512i __I, __m512i __B) {
5256 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi32
5257 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5258 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5259 return _mm512_maskz_permutex2var_epi32(__U, __A, __I, __B);
5260 }
5261
test_mm512_mask_permutex2var_epi32(__m512i __A,__mmask16 __U,__m512i __I,__m512i __B)5262 __m512i test_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U, __m512i __I, __m512i __B)
5263 {
5264 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi32
5265 // CHECK: @llvm.x86.avx512.vpermi2var.d.512
5266 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5267 return _mm512_mask_permutex2var_epi32 (__A,__U,__I,__B);
5268 }
5269
test_mm512_permutex2var_pd(__m512d __A,__m512i __I,__m512d __B)5270 __m512d test_mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B)
5271 {
5272 // CHECK-LABEL: @test_mm512_permutex2var_pd
5273 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5274 return _mm512_permutex2var_pd (__A, __I,__B);
5275 }
5276
test_mm512_mask_permutex2var_pd(__m512d __A,__mmask8 __U,__m512i __I,__m512d __B)5277 __m512d test_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
5278 {
5279 // CHECK-LABEL: @test_mm512_mask_permutex2var_pd
5280 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5281 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5282 return _mm512_mask_permutex2var_pd (__A,__U,__I,__B);
5283 }
5284
test_mm512_maskz_permutex2var_pd(__mmask8 __U,__m512d __A,__m512i __I,__m512d __B)5285 __m512d test_mm512_maskz_permutex2var_pd(__mmask8 __U, __m512d __A, __m512i __I, __m512d __B) {
5286 // CHECK-LABEL: @test_mm512_maskz_permutex2var_pd
5287 // CHECK: @llvm.x86.avx512.vpermi2var.pd.512
5288 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
5289 return _mm512_maskz_permutex2var_pd(__U, __A, __I, __B);
5290 }
5291
test_mm512_permutex2var_ps(__m512 __A,__m512i __I,__m512 __B)5292 __m512 test_mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B)
5293 {
5294 // CHECK-LABEL: @test_mm512_permutex2var_ps
5295 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5296 return _mm512_permutex2var_ps (__A, __I, __B);
5297 }
5298
test_mm512_mask_permutex2var_ps(__m512 __A,__mmask16 __U,__m512i __I,__m512 __B)5299 __m512 test_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
5300 {
5301 // CHECK-LABEL: @test_mm512_mask_permutex2var_ps
5302 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5303 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5304 return _mm512_mask_permutex2var_ps (__A,__U,__I,__B);
5305 }
5306
test_mm512_maskz_permutex2var_ps(__mmask16 __U,__m512 __A,__m512i __I,__m512 __B)5307 __m512 test_mm512_maskz_permutex2var_ps(__mmask16 __U, __m512 __A, __m512i __I, __m512 __B) {
5308 // CHECK-LABEL: @test_mm512_maskz_permutex2var_ps
5309 // CHECK: @llvm.x86.avx512.vpermi2var.ps.512
5310 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
5311 return _mm512_maskz_permutex2var_ps(__U, __A, __I, __B);
5312 }
5313
test_mm512_permutex2var_epi64(__m512i __A,__m512i __I,__m512i __B)5314 __m512i test_mm512_permutex2var_epi64 (__m512i __A, __m512i __I, __m512i __B){
5315 // CHECK-LABEL: @test_mm512_permutex2var_epi64
5316 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5317 return _mm512_permutex2var_epi64(__A, __I, __B);
5318 }
5319
test_mm512_mask_permutex2var_epi64(__m512i __A,__mmask8 __U,__m512i __I,__m512i __B)5320 __m512i test_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I, __m512i __B){
5321 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi64
5322 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5323 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5324 return _mm512_mask_permutex2var_epi64(__A, __U, __I, __B);
5325 }
5326
test_mm512_maskz_permutex2var_epi64(__mmask8 __U,__m512i __A,__m512i __I,__m512i __B)5327 __m512i test_mm512_maskz_permutex2var_epi64(__mmask8 __U, __m512i __A, __m512i __I, __m512i __B) {
5328 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi64
5329 // CHECK: @llvm.x86.avx512.vpermi2var.q.512
5330 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5331 return _mm512_maskz_permutex2var_epi64(__U, __A, __I, __B);
5332 }
test_mm512_testn_epi32_mask(__m512i __A,__m512i __B)5333 __mmask16 test_mm512_testn_epi32_mask(__m512i __A, __m512i __B) {
5334 // CHECK-LABEL: @test_mm512_testn_epi32_mask
5335 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5336 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5337 return _mm512_testn_epi32_mask(__A, __B);
5338 }
5339
test_mm512_mask_testn_epi32_mask(__mmask16 __U,__m512i __A,__m512i __B)5340 __mmask16 test_mm512_mask_testn_epi32_mask(__mmask16 __U, __m512i __A, __m512i __B) {
5341 // CHECK-LABEL: @test_mm512_mask_testn_epi32_mask
5342 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5343 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}}
5344 // CHECK: and <16 x i1> %{{.*}}, %{{.*}}
5345 return _mm512_mask_testn_epi32_mask(__U, __A, __B);
5346 }
5347
test_mm512_testn_epi64_mask(__m512i __A,__m512i __B)5348 __mmask8 test_mm512_testn_epi64_mask(__m512i __A, __m512i __B) {
5349 // CHECK-LABEL: @test_mm512_testn_epi64_mask
5350 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5351 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5352 return _mm512_testn_epi64_mask(__A, __B);
5353 }
5354
test_mm512_mask_testn_epi64_mask(__mmask8 __U,__m512i __A,__m512i __B)5355 __mmask8 test_mm512_mask_testn_epi64_mask(__mmask8 __U, __m512i __A, __m512i __B) {
5356 // CHECK-LABEL: @test_mm512_mask_testn_epi64_mask
5357 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5358 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}}
5359 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5360 return _mm512_mask_testn_epi64_mask(__U, __A, __B);
5361 }
5362
test_mm512_mask_test_epi32_mask(__mmask16 __U,__m512i __A,__m512i __B)5363 __mmask16 test_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
5364 {
5365 // CHECK-LABEL: @test_mm512_mask_test_epi32_mask
5366 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5367 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}}
5368 return _mm512_mask_test_epi32_mask (__U,__A,__B);
5369 }
5370
test_mm512_mask_test_epi64_mask(__mmask8 __U,__m512i __A,__m512i __B)5371 __mmask8 test_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
5372 {
5373 // CHECK-LABEL: @test_mm512_mask_test_epi64_mask
5374 // CHECK: and <16 x i32> %{{.*}}, %{{.*}}
5375 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}}
5376 // CHECK: and <8 x i1> %{{.*}}, %{{.*}}
5377 return _mm512_mask_test_epi64_mask (__U,__A,__B);
5378 }
5379
test_mm512_maskz_unpackhi_epi32(__mmask16 __U,__m512i __A,__m512i __B)5380 __m512i test_mm512_maskz_unpackhi_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
5381 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi32
5382 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31>
5383 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5384 return _mm512_maskz_unpackhi_epi32(__U, __A, __B);
5385 }
5386
test_mm512_unpackhi_epi64(__m512i __A,__m512i __B)5387 __m512i test_mm512_unpackhi_epi64(__m512i __A, __m512i __B) {
5388 // CHECK-LABEL: @test_mm512_unpackhi_epi64
5389 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5390 return _mm512_unpackhi_epi64(__A, __B);
5391 }
5392
test_mm512_mask_unpackhi_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)5393 __m512i test_mm512_mask_unpackhi_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
5394 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi64
5395 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5396 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5397 return _mm512_mask_unpackhi_epi64(__W, __U, __A, __B);
5398 }
5399
test_mm512_maskz_unpackhi_epi64(__mmask8 __U,__m512i __A,__m512i __B)5400 __m512i test_mm512_maskz_unpackhi_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
5401 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi64
5402 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15>
5403 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5404 return _mm512_maskz_unpackhi_epi64(__U, __A, __B);
5405 }
5406
test_mm512_unpacklo_epi32(__m512i __A,__m512i __B)5407 __m512i test_mm512_unpacklo_epi32(__m512i __A, __m512i __B) {
5408 // CHECK-LABEL: @test_mm512_unpacklo_epi32
5409 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5410 return _mm512_unpacklo_epi32(__A, __B);
5411 }
5412
test_mm512_mask_unpacklo_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)5413 __m512i test_mm512_mask_unpacklo_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
5414 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi32
5415 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5416 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5417 return _mm512_mask_unpacklo_epi32(__W, __U, __A, __B);
5418 }
5419
test_mm512_maskz_unpacklo_epi32(__mmask16 __U,__m512i __A,__m512i __B)5420 __m512i test_mm512_maskz_unpacklo_epi32(__mmask16 __U, __m512i __A, __m512i __B) {
5421 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi32
5422 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29>
5423 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5424 return _mm512_maskz_unpacklo_epi32(__U, __A, __B);
5425 }
5426
test_mm512_unpacklo_epi64(__m512i __A,__m512i __B)5427 __m512i test_mm512_unpacklo_epi64(__m512i __A, __m512i __B) {
5428 // CHECK-LABEL: @test_mm512_unpacklo_epi64
5429 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5430 return _mm512_unpacklo_epi64(__A, __B);
5431 }
5432
test_mm512_mask_unpacklo_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)5433 __m512i test_mm512_mask_unpacklo_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
5434 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi64
5435 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5436 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5437 return _mm512_mask_unpacklo_epi64(__W, __U, __A, __B);
5438 }
5439
test_mm512_maskz_unpacklo_epi64(__mmask8 __U,__m512i __A,__m512i __B)5440 __m512i test_mm512_maskz_unpacklo_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
5441 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi64
5442 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14>
5443 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5444 return _mm512_maskz_unpacklo_epi64(__U, __A, __B);
5445 }
5446
test_mm_roundscale_round_sd(__m128d __A,__m128d __B)5447 __m128d test_mm_roundscale_round_sd(__m128d __A, __m128d __B) {
5448 // CHECK-LABEL: @test_mm_roundscale_round_sd
5449 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5450 return _mm_roundscale_round_sd(__A, __B, 3, _MM_FROUND_CUR_DIRECTION);
5451 }
5452
test_mm_roundscale_sd(__m128d __A,__m128d __B)5453 __m128d test_mm_roundscale_sd(__m128d __A, __m128d __B) {
5454 // CHECK-LABEL: @test_mm_roundscale_sd
5455 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5456 return _mm_roundscale_sd(__A, __B, 3);
5457 }
5458
test_mm_mask_roundscale_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5459 __m128d test_mm_mask_roundscale_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5460 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5461 return _mm_mask_roundscale_sd(__W,__U,__A,__B,3);
5462 }
5463
test_mm_mask_roundscale_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5464 __m128d test_mm_mask_roundscale_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5465 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5466 return _mm_mask_roundscale_round_sd(__W,__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION);
5467 }
5468
test_mm_maskz_roundscale_sd(__mmask8 __U,__m128d __A,__m128d __B)5469 __m128d test_mm_maskz_roundscale_sd(__mmask8 __U, __m128d __A, __m128d __B){
5470 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5471 return _mm_maskz_roundscale_sd(__U,__A,__B,3);
5472 }
5473
test_mm_maskz_roundscale_round_sd(__mmask8 __U,__m128d __A,__m128d __B)5474 __m128d test_mm_maskz_roundscale_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5475 // CHECK: @llvm.x86.avx512.mask.rndscale.sd
5476 return _mm_maskz_roundscale_round_sd(__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION );
5477 }
5478
test_mm_roundscale_round_ss(__m128 __A,__m128 __B)5479 __m128 test_mm_roundscale_round_ss(__m128 __A, __m128 __B) {
5480 // CHECK-LABEL: @test_mm_roundscale_round_ss
5481 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5482 return _mm_roundscale_round_ss(__A, __B, 3, _MM_FROUND_CUR_DIRECTION);
5483 }
5484
test_mm_roundscale_ss(__m128 __A,__m128 __B)5485 __m128 test_mm_roundscale_ss(__m128 __A, __m128 __B) {
5486 // CHECK-LABEL: @test_mm_roundscale_ss
5487 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5488 return _mm_roundscale_ss(__A, __B, 3);
5489 }
5490
test_mm_mask_roundscale_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5491 __m128 test_mm_mask_roundscale_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5492 // CHECK-LABEL: @test_mm_mask_roundscale_ss
5493 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5494 return _mm_mask_roundscale_ss(__W,__U,__A,__B,3);
5495 }
5496
test_mm_maskz_roundscale_round_ss(__mmask8 __U,__m128 __A,__m128 __B)5497 __m128 test_mm_maskz_roundscale_round_ss( __mmask8 __U, __m128 __A, __m128 __B){
5498 // CHECK-LABEL: @test_mm_maskz_roundscale_round_ss
5499 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5500 return _mm_maskz_roundscale_round_ss(__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION);
5501 }
5502
test_mm_maskz_roundscale_ss(__mmask8 __U,__m128 __A,__m128 __B)5503 __m128 test_mm_maskz_roundscale_ss(__mmask8 __U, __m128 __A, __m128 __B){
5504 // CHECK-LABEL: @test_mm_maskz_roundscale_ss
5505 // CHECK: @llvm.x86.avx512.mask.rndscale.ss
5506 return _mm_maskz_roundscale_ss(__U,__A,__B,3);
5507 }
5508
test_mm512_scalef_round_pd(__m512d __A,__m512d __B)5509 __m512d test_mm512_scalef_round_pd(__m512d __A, __m512d __B) {
5510 // CHECK-LABEL: @test_mm512_scalef_round_pd
5511 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5512 return _mm512_scalef_round_pd(__A, __B, _MM_FROUND_CUR_DIRECTION);
5513 }
5514
test_mm512_mask_scalef_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)5515 __m512d test_mm512_mask_scalef_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
5516 // CHECK-LABEL: @test_mm512_mask_scalef_round_pd
5517 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5518 return _mm512_mask_scalef_round_pd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5519 }
5520
test_mm512_maskz_scalef_round_pd(__mmask8 __U,__m512d __A,__m512d __B)5521 __m512d test_mm512_maskz_scalef_round_pd(__mmask8 __U, __m512d __A, __m512d __B) {
5522 // CHECK-LABEL: @test_mm512_maskz_scalef_round_pd
5523 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5524 return _mm512_maskz_scalef_round_pd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5525 }
5526
test_mm512_scalef_pd(__m512d __A,__m512d __B)5527 __m512d test_mm512_scalef_pd(__m512d __A, __m512d __B) {
5528 // CHECK-LABEL: @test_mm512_scalef_pd
5529 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5530 return _mm512_scalef_pd(__A, __B);
5531 }
5532
test_mm512_mask_scalef_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)5533 __m512d test_mm512_mask_scalef_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
5534 // CHECK-LABEL: @test_mm512_mask_scalef_pd
5535 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5536 return _mm512_mask_scalef_pd(__W, __U, __A, __B);
5537 }
5538
test_mm512_maskz_scalef_pd(__mmask8 __U,__m512d __A,__m512d __B)5539 __m512d test_mm512_maskz_scalef_pd(__mmask8 __U, __m512d __A, __m512d __B) {
5540 // CHECK-LABEL: @test_mm512_maskz_scalef_pd
5541 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512
5542 return _mm512_maskz_scalef_pd(__U, __A, __B);
5543 }
5544
test_mm512_scalef_round_ps(__m512 __A,__m512 __B)5545 __m512 test_mm512_scalef_round_ps(__m512 __A, __m512 __B) {
5546 // CHECK-LABEL: @test_mm512_scalef_round_ps
5547 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5548 return _mm512_scalef_round_ps(__A, __B, _MM_FROUND_CUR_DIRECTION);
5549 }
5550
test_mm512_mask_scalef_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)5551 __m512 test_mm512_mask_scalef_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
5552 // CHECK-LABEL: @test_mm512_mask_scalef_round_ps
5553 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5554 return _mm512_mask_scalef_round_ps(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5555 }
5556
test_mm512_maskz_scalef_round_ps(__mmask16 __U,__m512 __A,__m512 __B)5557 __m512 test_mm512_maskz_scalef_round_ps(__mmask16 __U, __m512 __A, __m512 __B) {
5558 // CHECK-LABEL: @test_mm512_maskz_scalef_round_ps
5559 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5560 return _mm512_maskz_scalef_round_ps(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
5561 }
5562
test_mm512_scalef_ps(__m512 __A,__m512 __B)5563 __m512 test_mm512_scalef_ps(__m512 __A, __m512 __B) {
5564 // CHECK-LABEL: @test_mm512_scalef_ps
5565 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5566 return _mm512_scalef_ps(__A, __B);
5567 }
5568
test_mm512_mask_scalef_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)5569 __m512 test_mm512_mask_scalef_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
5570 // CHECK-LABEL: @test_mm512_mask_scalef_ps
5571 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5572 return _mm512_mask_scalef_ps(__W, __U, __A, __B);
5573 }
5574
test_mm512_maskz_scalef_ps(__mmask16 __U,__m512 __A,__m512 __B)5575 __m512 test_mm512_maskz_scalef_ps(__mmask16 __U, __m512 __A, __m512 __B) {
5576 // CHECK-LABEL: @test_mm512_maskz_scalef_ps
5577 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512
5578 return _mm512_maskz_scalef_ps(__U, __A, __B);
5579 }
5580
test_mm_scalef_round_sd(__m128d __A,__m128d __B)5581 __m128d test_mm_scalef_round_sd(__m128d __A, __m128d __B) {
5582 // CHECK-LABEL: @test_mm_scalef_round_sd
5583 // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %2, i8 -1, i32 8)
5584 return _mm_scalef_round_sd(__A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5585 }
5586
test_mm_scalef_sd(__m128d __A,__m128d __B)5587 __m128d test_mm_scalef_sd(__m128d __A, __m128d __B) {
5588 // CHECK-LABEL: @test_mm_scalef_sd
5589 // CHECK: @llvm.x86.avx512.mask.scalef
5590 return _mm_scalef_sd(__A, __B);
5591 }
5592
test_mm_mask_scalef_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5593 __m128d test_mm_mask_scalef_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5594 // CHECK-LABEL: @test_mm_mask_scalef_sd
5595 // CHECK: @llvm.x86.avx512.mask.scalef.sd
5596 return _mm_mask_scalef_sd(__W, __U, __A, __B);
5597 }
5598
test_mm_mask_scalef_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)5599 __m128d test_mm_mask_scalef_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
5600 // CHECK-LABEL: @test_mm_mask_scalef_round_sd
5601 // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 8)
5602 return _mm_mask_scalef_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5603 }
5604
test_mm_maskz_scalef_sd(__mmask8 __U,__m128d __A,__m128d __B)5605 __m128d test_mm_maskz_scalef_sd(__mmask8 __U, __m128d __A, __m128d __B){
5606 // CHECK-LABEL: @test_mm_maskz_scalef_sd
5607 // CHECK: @llvm.x86.avx512.mask.scalef.sd
5608 return _mm_maskz_scalef_sd(__U, __A, __B);
5609 }
5610
test_mm_maskz_scalef_round_sd(__mmask8 __U,__m128d __A,__m128d __B)5611 __m128d test_mm_maskz_scalef_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
5612 // CHECK-LABEL: @test_mm_maskz_scalef_round_sd
5613 // CHECK: @llvm.x86.avx512.mask.scalef.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 8)
5614 return _mm_maskz_scalef_round_sd(__U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5615 }
5616
test_mm_scalef_round_ss(__m128 __A,__m128 __B)5617 __m128 test_mm_scalef_round_ss(__m128 __A, __m128 __B) {
5618 // CHECK-LABEL: @test_mm_scalef_round_ss
5619 // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 8)
5620 return _mm_scalef_round_ss(__A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5621 }
5622
test_mm_scalef_ss(__m128 __A,__m128 __B)5623 __m128 test_mm_scalef_ss(__m128 __A, __m128 __B) {
5624 // CHECK-LABEL: @test_mm_scalef_ss
5625 // CHECK: @llvm.x86.avx512.mask.scalef.ss
5626 return _mm_scalef_ss(__A, __B);
5627 }
5628
test_mm_mask_scalef_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5629 __m128 test_mm_mask_scalef_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5630 // CHECK-LABEL: @test_mm_mask_scalef_ss
5631 // CHECK: @llvm.x86.avx512.mask.scalef.ss
5632 return _mm_mask_scalef_ss(__W, __U, __A, __B);
5633 }
5634
test_mm_mask_scalef_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)5635 __m128 test_mm_mask_scalef_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
5636 // CHECK-LABEL: @test_mm_mask_scalef_round_ss
5637 // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 8)
5638 return _mm_mask_scalef_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5639 }
5640
test_mm_maskz_scalef_ss(__mmask8 __U,__m128 __A,__m128 __B)5641 __m128 test_mm_maskz_scalef_ss(__mmask8 __U, __m128 __A, __m128 __B){
5642 // CHECK-LABEL: @test_mm_maskz_scalef_ss
5643 // CHECK: @llvm.x86.avx512.mask.scalef.ss
5644 return _mm_maskz_scalef_ss(__U, __A, __B);
5645 }
5646
test_mm_maskz_scalef_round_ss(__mmask8 __U,__m128 __A,__m128 __B)5647 __m128 test_mm_maskz_scalef_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
5648 // CHECK-LABEL: @test_mm_maskz_scalef_round_ss
5649 // CHECK: @llvm.x86.avx512.mask.scalef.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 %{{.*}}, i32 8)
5650 return _mm_maskz_scalef_round_ss(__U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
5651 }
5652
test_mm512_srai_epi32(__m512i __A)5653 __m512i test_mm512_srai_epi32(__m512i __A) {
5654 // CHECK-LABEL: @test_mm512_srai_epi32
5655 // CHECK: @llvm.x86.avx512.psrai.d.512
5656 return _mm512_srai_epi32(__A, 5);
5657 }
5658
test_mm512_srai_epi32_2(__m512i __A,int __B)5659 __m512i test_mm512_srai_epi32_2(__m512i __A, int __B) {
5660 // CHECK-LABEL: @test_mm512_srai_epi32_2
5661 // CHECK: @llvm.x86.avx512.psrai.d.512
5662 return _mm512_srai_epi32(__A, __B);
5663 }
5664
test_mm512_mask_srai_epi32(__m512i __W,__mmask16 __U,__m512i __A)5665 __m512i test_mm512_mask_srai_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
5666 // CHECK-LABEL: @test_mm512_mask_srai_epi32
5667 // CHECK: @llvm.x86.avx512.psrai.d.512
5668 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5669 return _mm512_mask_srai_epi32(__W, __U, __A, 5);
5670 }
5671
test_mm512_mask_srai_epi32_2(__m512i __W,__mmask16 __U,__m512i __A,int __B)5672 __m512i test_mm512_mask_srai_epi32_2(__m512i __W, __mmask16 __U, __m512i __A, int __B) {
5673 // CHECK-LABEL: @test_mm512_mask_srai_epi32_2
5674 // CHECK: @llvm.x86.avx512.psrai.d.512
5675 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5676 return _mm512_mask_srai_epi32(__W, __U, __A, __B);
5677 }
5678
test_mm512_maskz_srai_epi32(__mmask16 __U,__m512i __A)5679 __m512i test_mm512_maskz_srai_epi32(__mmask16 __U, __m512i __A) {
5680 // CHECK-LABEL: @test_mm512_maskz_srai_epi32
5681 // CHECK: @llvm.x86.avx512.psrai.d.512
5682 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5683 return _mm512_maskz_srai_epi32(__U, __A, 5);
5684 }
5685
test_mm512_maskz_srai_epi32_2(__mmask16 __U,__m512i __A,int __B)5686 __m512i test_mm512_maskz_srai_epi32_2(__mmask16 __U, __m512i __A, int __B) {
5687 // CHECK-LABEL: @test_mm512_maskz_srai_epi32_2
5688 // CHECK: @llvm.x86.avx512.psrai.d.512
5689 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5690 return _mm512_maskz_srai_epi32(__U, __A, __B);
5691 }
5692
test_mm512_srai_epi64(__m512i __A)5693 __m512i test_mm512_srai_epi64(__m512i __A) {
5694 // CHECK-LABEL: @test_mm512_srai_epi64
5695 // CHECK: @llvm.x86.avx512.psrai.q.512
5696 return _mm512_srai_epi64(__A, 5);
5697 }
5698
test_mm512_srai_epi64_2(__m512i __A,int __B)5699 __m512i test_mm512_srai_epi64_2(__m512i __A, int __B) {
5700 // CHECK-LABEL: @test_mm512_srai_epi64_2
5701 // CHECK: @llvm.x86.avx512.psrai.q.512
5702 return _mm512_srai_epi64(__A, __B);
5703 }
5704
test_mm512_mask_srai_epi64(__m512i __W,__mmask8 __U,__m512i __A)5705 __m512i test_mm512_mask_srai_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
5706 // CHECK-LABEL: @test_mm512_mask_srai_epi64
5707 // CHECK: @llvm.x86.avx512.psrai.q.512
5708 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5709 return _mm512_mask_srai_epi64(__W, __U, __A, 5);
5710 }
5711
test_mm512_mask_srai_epi64_2(__m512i __W,__mmask8 __U,__m512i __A,int __B)5712 __m512i test_mm512_mask_srai_epi64_2(__m512i __W, __mmask8 __U, __m512i __A, int __B) {
5713 // CHECK-LABEL: @test_mm512_mask_srai_epi64_2
5714 // CHECK: @llvm.x86.avx512.psrai.q.512
5715 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5716 return _mm512_mask_srai_epi64(__W, __U, __A, __B);
5717 }
5718
test_mm512_maskz_srai_epi64(__mmask8 __U,__m512i __A)5719 __m512i test_mm512_maskz_srai_epi64(__mmask8 __U, __m512i __A) {
5720 // CHECK-LABEL: @test_mm512_maskz_srai_epi64
5721 // CHECK: @llvm.x86.avx512.psrai.q.512
5722 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5723 return _mm512_maskz_srai_epi64(__U, __A, 5);
5724 }
5725
test_mm512_maskz_srai_epi64_2(__mmask8 __U,__m512i __A,int __B)5726 __m512i test_mm512_maskz_srai_epi64_2(__mmask8 __U, __m512i __A, int __B) {
5727 // CHECK-LABEL: @test_mm512_maskz_srai_epi64_2
5728 // CHECK: @llvm.x86.avx512.psrai.q.512
5729 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5730 return _mm512_maskz_srai_epi64(__U, __A, __B);
5731 }
5732
test_mm512_sll_epi32(__m512i __A,__m128i __B)5733 __m512i test_mm512_sll_epi32(__m512i __A, __m128i __B) {
5734 // CHECK-LABEL: @test_mm512_sll_epi32
5735 // CHECK: @llvm.x86.avx512.psll.d.512
5736 return _mm512_sll_epi32(__A, __B);
5737 }
5738
test_mm512_mask_sll_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5739 __m512i test_mm512_mask_sll_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5740 // CHECK-LABEL: @test_mm512_mask_sll_epi32
5741 // CHECK: @llvm.x86.avx512.psll.d.512
5742 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5743 return _mm512_mask_sll_epi32(__W, __U, __A, __B);
5744 }
5745
test_mm512_maskz_sll_epi32(__mmask16 __U,__m512i __A,__m128i __B)5746 __m512i test_mm512_maskz_sll_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5747 // CHECK-LABEL: @test_mm512_maskz_sll_epi32
5748 // CHECK: @llvm.x86.avx512.psll.d.512
5749 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5750 return _mm512_maskz_sll_epi32(__U, __A, __B);
5751 }
5752
test_mm512_sll_epi64(__m512i __A,__m128i __B)5753 __m512i test_mm512_sll_epi64(__m512i __A, __m128i __B) {
5754 // CHECK-LABEL: @test_mm512_sll_epi64
5755 // CHECK: @llvm.x86.avx512.psll.q.512
5756 return _mm512_sll_epi64(__A, __B);
5757 }
5758
test_mm512_mask_sll_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5759 __m512i test_mm512_mask_sll_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5760 // CHECK-LABEL: @test_mm512_mask_sll_epi64
5761 // CHECK: @llvm.x86.avx512.psll.q.512
5762 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5763 return _mm512_mask_sll_epi64(__W, __U, __A, __B);
5764 }
5765
test_mm512_maskz_sll_epi64(__mmask8 __U,__m512i __A,__m128i __B)5766 __m512i test_mm512_maskz_sll_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5767 // CHECK-LABEL: @test_mm512_maskz_sll_epi64
5768 // CHECK: @llvm.x86.avx512.psll.q.512
5769 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5770 return _mm512_maskz_sll_epi64(__U, __A, __B);
5771 }
5772
test_mm512_sllv_epi32(__m512i __X,__m512i __Y)5773 __m512i test_mm512_sllv_epi32(__m512i __X, __m512i __Y) {
5774 // CHECK-LABEL: @test_mm512_sllv_epi32
5775 // CHECK: @llvm.x86.avx512.psllv.d.512
5776 return _mm512_sllv_epi32(__X, __Y);
5777 }
5778
test_mm512_mask_sllv_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5779 __m512i test_mm512_mask_sllv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5780 // CHECK-LABEL: @test_mm512_mask_sllv_epi32
5781 // CHECK: @llvm.x86.avx512.psllv.d.512
5782 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5783 return _mm512_mask_sllv_epi32(__W, __U, __X, __Y);
5784 }
5785
test_mm512_maskz_sllv_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5786 __m512i test_mm512_maskz_sllv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5787 // CHECK-LABEL: @test_mm512_maskz_sllv_epi32
5788 // CHECK: @llvm.x86.avx512.psllv.d.512
5789 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5790 return _mm512_maskz_sllv_epi32(__U, __X, __Y);
5791 }
5792
test_mm512_sllv_epi64(__m512i __X,__m512i __Y)5793 __m512i test_mm512_sllv_epi64(__m512i __X, __m512i __Y) {
5794 // CHECK-LABEL: @test_mm512_sllv_epi64
5795 // CHECK: @llvm.x86.avx512.psllv.q.512
5796 return _mm512_sllv_epi64(__X, __Y);
5797 }
5798
test_mm512_mask_sllv_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5799 __m512i test_mm512_mask_sllv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5800 // CHECK-LABEL: @test_mm512_mask_sllv_epi64
5801 // CHECK: @llvm.x86.avx512.psllv.q.512
5802 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5803 return _mm512_mask_sllv_epi64(__W, __U, __X, __Y);
5804 }
5805
test_mm512_maskz_sllv_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5806 __m512i test_mm512_maskz_sllv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5807 // CHECK-LABEL: @test_mm512_maskz_sllv_epi64
5808 // CHECK: @llvm.x86.avx512.psllv.q.512
5809 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5810 return _mm512_maskz_sllv_epi64(__U, __X, __Y);
5811 }
5812
test_mm512_sra_epi32(__m512i __A,__m128i __B)5813 __m512i test_mm512_sra_epi32(__m512i __A, __m128i __B) {
5814 // CHECK-LABEL: @test_mm512_sra_epi32
5815 // CHECK: @llvm.x86.avx512.psra.d.512
5816 return _mm512_sra_epi32(__A, __B);
5817 }
5818
test_mm512_mask_sra_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5819 __m512i test_mm512_mask_sra_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5820 // CHECK-LABEL: @test_mm512_mask_sra_epi32
5821 // CHECK: @llvm.x86.avx512.psra.d.512
5822 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5823 return _mm512_mask_sra_epi32(__W, __U, __A, __B);
5824 }
5825
test_mm512_maskz_sra_epi32(__mmask16 __U,__m512i __A,__m128i __B)5826 __m512i test_mm512_maskz_sra_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5827 // CHECK-LABEL: @test_mm512_maskz_sra_epi32
5828 // CHECK: @llvm.x86.avx512.psra.d.512
5829 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5830 return _mm512_maskz_sra_epi32(__U, __A, __B);
5831 }
5832
test_mm512_sra_epi64(__m512i __A,__m128i __B)5833 __m512i test_mm512_sra_epi64(__m512i __A, __m128i __B) {
5834 // CHECK-LABEL: @test_mm512_sra_epi64
5835 // CHECK: @llvm.x86.avx512.psra.q.512
5836 return _mm512_sra_epi64(__A, __B);
5837 }
5838
test_mm512_mask_sra_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5839 __m512i test_mm512_mask_sra_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5840 // CHECK-LABEL: @test_mm512_mask_sra_epi64
5841 // CHECK: @llvm.x86.avx512.psra.q.512
5842 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5843 return _mm512_mask_sra_epi64(__W, __U, __A, __B);
5844 }
5845
test_mm512_maskz_sra_epi64(__mmask8 __U,__m512i __A,__m128i __B)5846 __m512i test_mm512_maskz_sra_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5847 // CHECK-LABEL: @test_mm512_maskz_sra_epi64
5848 // CHECK: @llvm.x86.avx512.psra.q.512
5849 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5850 return _mm512_maskz_sra_epi64(__U, __A, __B);
5851 }
5852
test_mm512_srav_epi32(__m512i __X,__m512i __Y)5853 __m512i test_mm512_srav_epi32(__m512i __X, __m512i __Y) {
5854 // CHECK-LABEL: @test_mm512_srav_epi32
5855 // CHECK: @llvm.x86.avx512.psrav.d.512
5856 return _mm512_srav_epi32(__X, __Y);
5857 }
5858
test_mm512_mask_srav_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5859 __m512i test_mm512_mask_srav_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5860 // CHECK-LABEL: @test_mm512_mask_srav_epi32
5861 // CHECK: @llvm.x86.avx512.psrav.d.512
5862 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5863 return _mm512_mask_srav_epi32(__W, __U, __X, __Y);
5864 }
5865
test_mm512_maskz_srav_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5866 __m512i test_mm512_maskz_srav_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5867 // CHECK-LABEL: @test_mm512_maskz_srav_epi32
5868 // CHECK: @llvm.x86.avx512.psrav.d.512
5869 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5870 return _mm512_maskz_srav_epi32(__U, __X, __Y);
5871 }
5872
test_mm512_srav_epi64(__m512i __X,__m512i __Y)5873 __m512i test_mm512_srav_epi64(__m512i __X, __m512i __Y) {
5874 // CHECK-LABEL: @test_mm512_srav_epi64
5875 // CHECK: @llvm.x86.avx512.psrav.q.512
5876 return _mm512_srav_epi64(__X, __Y);
5877 }
5878
test_mm512_mask_srav_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5879 __m512i test_mm512_mask_srav_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5880 // CHECK-LABEL: @test_mm512_mask_srav_epi64
5881 // CHECK: @llvm.x86.avx512.psrav.q.512
5882 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5883 return _mm512_mask_srav_epi64(__W, __U, __X, __Y);
5884 }
5885
test_mm512_maskz_srav_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5886 __m512i test_mm512_maskz_srav_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5887 // CHECK-LABEL: @test_mm512_maskz_srav_epi64
5888 // CHECK: @llvm.x86.avx512.psrav.q.512
5889 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5890 return _mm512_maskz_srav_epi64(__U, __X, __Y);
5891 }
5892
test_mm512_srl_epi32(__m512i __A,__m128i __B)5893 __m512i test_mm512_srl_epi32(__m512i __A, __m128i __B) {
5894 // CHECK-LABEL: @test_mm512_srl_epi32
5895 // CHECK: @llvm.x86.avx512.psrl.d.512
5896 return _mm512_srl_epi32(__A, __B);
5897 }
5898
test_mm512_mask_srl_epi32(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)5899 __m512i test_mm512_mask_srl_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
5900 // CHECK-LABEL: @test_mm512_mask_srl_epi32
5901 // CHECK: @llvm.x86.avx512.psrl.d.512
5902 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5903 return _mm512_mask_srl_epi32(__W, __U, __A, __B);
5904 }
5905
test_mm512_maskz_srl_epi32(__mmask16 __U,__m512i __A,__m128i __B)5906 __m512i test_mm512_maskz_srl_epi32(__mmask16 __U, __m512i __A, __m128i __B) {
5907 // CHECK-LABEL: @test_mm512_maskz_srl_epi32
5908 // CHECK: @llvm.x86.avx512.psrl.d.512
5909 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5910 return _mm512_maskz_srl_epi32(__U, __A, __B);
5911 }
5912
test_mm512_srl_epi64(__m512i __A,__m128i __B)5913 __m512i test_mm512_srl_epi64(__m512i __A, __m128i __B) {
5914 // CHECK-LABEL: @test_mm512_srl_epi64
5915 // CHECK: @llvm.x86.avx512.psrl.q.512
5916 return _mm512_srl_epi64(__A, __B);
5917 }
5918
test_mm512_mask_srl_epi64(__m512i __W,__mmask8 __U,__m512i __A,__m128i __B)5919 __m512i test_mm512_mask_srl_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) {
5920 // CHECK-LABEL: @test_mm512_mask_srl_epi64
5921 // CHECK: @llvm.x86.avx512.psrl.q.512
5922 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5923 return _mm512_mask_srl_epi64(__W, __U, __A, __B);
5924 }
5925
test_mm512_maskz_srl_epi64(__mmask8 __U,__m512i __A,__m128i __B)5926 __m512i test_mm512_maskz_srl_epi64(__mmask8 __U, __m512i __A, __m128i __B) {
5927 // CHECK-LABEL: @test_mm512_maskz_srl_epi64
5928 // CHECK: @llvm.x86.avx512.psrl.q.512
5929 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5930 return _mm512_maskz_srl_epi64(__U, __A, __B);
5931 }
5932
test_mm512_srlv_epi32(__m512i __X,__m512i __Y)5933 __m512i test_mm512_srlv_epi32(__m512i __X, __m512i __Y) {
5934 // CHECK-LABEL: @test_mm512_srlv_epi32
5935 // CHECK: @llvm.x86.avx512.psrlv.d.512
5936 return _mm512_srlv_epi32(__X, __Y);
5937 }
5938
test_mm512_mask_srlv_epi32(__m512i __W,__mmask16 __U,__m512i __X,__m512i __Y)5939 __m512i test_mm512_mask_srlv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) {
5940 // CHECK-LABEL: @test_mm512_mask_srlv_epi32
5941 // CHECK: @llvm.x86.avx512.psrlv.d.512
5942 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5943 return _mm512_mask_srlv_epi32(__W, __U, __X, __Y);
5944 }
5945
test_mm512_maskz_srlv_epi32(__mmask16 __U,__m512i __X,__m512i __Y)5946 __m512i test_mm512_maskz_srlv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) {
5947 // CHECK-LABEL: @test_mm512_maskz_srlv_epi32
5948 // CHECK: @llvm.x86.avx512.psrlv.d.512
5949 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5950 return _mm512_maskz_srlv_epi32(__U, __X, __Y);
5951 }
5952
test_mm512_srlv_epi64(__m512i __X,__m512i __Y)5953 __m512i test_mm512_srlv_epi64(__m512i __X, __m512i __Y) {
5954 // CHECK-LABEL: @test_mm512_srlv_epi64
5955 // CHECK: @llvm.x86.avx512.psrlv.q.512
5956 return _mm512_srlv_epi64(__X, __Y);
5957 }
5958
test_mm512_mask_srlv_epi64(__m512i __W,__mmask8 __U,__m512i __X,__m512i __Y)5959 __m512i test_mm512_mask_srlv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) {
5960 // CHECK-LABEL: @test_mm512_mask_srlv_epi64
5961 // CHECK: @llvm.x86.avx512.psrlv.q.512
5962 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5963 return _mm512_mask_srlv_epi64(__W, __U, __X, __Y);
5964 }
5965
test_mm512_maskz_srlv_epi64(__mmask8 __U,__m512i __X,__m512i __Y)5966 __m512i test_mm512_maskz_srlv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) {
5967 // CHECK-LABEL: @test_mm512_maskz_srlv_epi64
5968 // CHECK: @llvm.x86.avx512.psrlv.q.512
5969 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
5970 return _mm512_maskz_srlv_epi64(__U, __X, __Y);
5971 }
5972
test_mm512_ternarylogic_epi32(__m512i __A,__m512i __B,__m512i __C)5973 __m512i test_mm512_ternarylogic_epi32(__m512i __A, __m512i __B, __m512i __C) {
5974 // CHECK-LABEL: @test_mm512_ternarylogic_epi32
5975 // CHECK: @llvm.x86.avx512.pternlog.d.512
5976 return _mm512_ternarylogic_epi32(__A, __B, __C, 4);
5977 }
5978
test_mm512_mask_ternarylogic_epi32(__m512i __A,__mmask16 __U,__m512i __B,__m512i __C)5979 __m512i test_mm512_mask_ternarylogic_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) {
5980 // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi32
5981 // CHECK: @llvm.x86.avx512.pternlog.d.512
5982 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
5983 return _mm512_mask_ternarylogic_epi32(__A, __U, __B, __C, 4);
5984 }
5985
test_mm512_maskz_ternarylogic_epi32(__mmask16 __U,__m512i __A,__m512i __B,__m512i __C)5986 __m512i test_mm512_maskz_ternarylogic_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) {
5987 // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi32
5988 // CHECK: @llvm.x86.avx512.pternlog.d.512
5989 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> zeroinitializer
5990 return _mm512_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4);
5991 }
5992
test_mm512_ternarylogic_epi64(__m512i __A,__m512i __B,__m512i __C)5993 __m512i test_mm512_ternarylogic_epi64(__m512i __A, __m512i __B, __m512i __C) {
5994 // CHECK-LABEL: @test_mm512_ternarylogic_epi64
5995 // CHECK: @llvm.x86.avx512.pternlog.q.512
5996 return _mm512_ternarylogic_epi64(__A, __B, __C, 4);
5997 }
5998
test_mm512_mask_ternarylogic_epi64(__m512i __A,__mmask8 __U,__m512i __B,__m512i __C)5999 __m512i test_mm512_mask_ternarylogic_epi64(__m512i __A, __mmask8 __U, __m512i __B, __m512i __C) {
6000 // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi64
6001 // CHECK: @llvm.x86.avx512.pternlog.q.512
6002 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6003 return _mm512_mask_ternarylogic_epi64(__A, __U, __B, __C, 4);
6004 }
6005
test_mm512_maskz_ternarylogic_epi64(__mmask8 __U,__m512i __A,__m512i __B,__m512i __C)6006 __m512i test_mm512_maskz_ternarylogic_epi64(__mmask8 __U, __m512i __A, __m512i __B, __m512i __C) {
6007 // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi64
6008 // CHECK: @llvm.x86.avx512.pternlog.q.512
6009 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> zeroinitializer
6010 return _mm512_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4);
6011 }
6012
test_mm512_shuffle_f32x4(__m512 __A,__m512 __B)6013 __m512 test_mm512_shuffle_f32x4(__m512 __A, __m512 __B) {
6014 // CHECK-LABEL: @test_mm512_shuffle_f32x4
6015 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6016 return _mm512_shuffle_f32x4(__A, __B, 4);
6017 }
6018
test_mm512_mask_shuffle_f32x4(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)6019 __m512 test_mm512_mask_shuffle_f32x4(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
6020 // CHECK-LABEL: @test_mm512_mask_shuffle_f32x4
6021 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6022 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6023 return _mm512_mask_shuffle_f32x4(__W, __U, __A, __B, 4);
6024 }
6025
test_mm512_maskz_shuffle_f32x4(__mmask16 __U,__m512 __A,__m512 __B)6026 __m512 test_mm512_maskz_shuffle_f32x4(__mmask16 __U, __m512 __A, __m512 __B) {
6027 // CHECK-LABEL: @test_mm512_maskz_shuffle_f32x4
6028 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6029 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6030 return _mm512_maskz_shuffle_f32x4(__U, __A, __B, 4);
6031 }
6032
test_mm512_shuffle_f64x2(__m512d __A,__m512d __B)6033 __m512d test_mm512_shuffle_f64x2(__m512d __A, __m512d __B) {
6034 // CHECK-LABEL: @test_mm512_shuffle_f64x2
6035 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6036 return _mm512_shuffle_f64x2(__A, __B, 4);
6037 }
6038
test_mm512_mask_shuffle_f64x2(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)6039 __m512d test_mm512_mask_shuffle_f64x2(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
6040 // CHECK-LABEL: @test_mm512_mask_shuffle_f64x2
6041 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6042 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6043 return _mm512_mask_shuffle_f64x2(__W, __U, __A, __B, 4);
6044 }
6045
test_mm512_maskz_shuffle_f64x2(__mmask8 __U,__m512d __A,__m512d __B)6046 __m512d test_mm512_maskz_shuffle_f64x2(__mmask8 __U, __m512d __A, __m512d __B) {
6047 // CHECK-LABEL: @test_mm512_maskz_shuffle_f64x2
6048 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6049 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6050 return _mm512_maskz_shuffle_f64x2(__U, __A, __B, 4);
6051 }
6052
test_mm512_shuffle_i32x4(__m512i __A,__m512i __B)6053 __m512i test_mm512_shuffle_i32x4(__m512i __A, __m512i __B) {
6054 // CHECK-LABEL: @test_mm512_shuffle_i32x4
6055 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6056 return _mm512_shuffle_i32x4(__A, __B, 4);
6057 }
6058
test_mm512_mask_shuffle_i32x4(__m512i __W,__mmask16 __U,__m512i __A,__m512i __B)6059 __m512i test_mm512_mask_shuffle_i32x4(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
6060 // CHECK-LABEL: @test_mm512_mask_shuffle_i32x4
6061 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6062 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6063 return _mm512_mask_shuffle_i32x4(__W, __U, __A, __B, 4);
6064 }
6065
test_mm512_maskz_shuffle_i32x4(__mmask16 __U,__m512i __A,__m512i __B)6066 __m512i test_mm512_maskz_shuffle_i32x4(__mmask16 __U, __m512i __A, __m512i __B) {
6067 // CHECK-LABEL: @test_mm512_maskz_shuffle_i32x4
6068 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 16, i32 17, i32 18, i32 19>
6069 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6070 return _mm512_maskz_shuffle_i32x4(__U, __A, __B, 4);
6071 }
6072
test_mm512_shuffle_i64x2(__m512i __A,__m512i __B)6073 __m512i test_mm512_shuffle_i64x2(__m512i __A, __m512i __B) {
6074 // CHECK-LABEL: @test_mm512_shuffle_i64x2
6075 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6076 return _mm512_shuffle_i64x2(__A, __B, 4);
6077 }
6078
test_mm512_mask_shuffle_i64x2(__m512i __W,__mmask8 __U,__m512i __A,__m512i __B)6079 __m512i test_mm512_mask_shuffle_i64x2(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
6080 // CHECK-LABEL: @test_mm512_mask_shuffle_i64x2
6081 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6082 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6083 return _mm512_mask_shuffle_i64x2(__W, __U, __A, __B, 4);
6084 }
6085
test_mm512_maskz_shuffle_i64x2(__mmask8 __U,__m512i __A,__m512i __B)6086 __m512i test_mm512_maskz_shuffle_i64x2(__mmask8 __U, __m512i __A, __m512i __B) {
6087 // CHECK-LABEL: @test_mm512_maskz_shuffle_i64x2
6088 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 8, i32 9>
6089 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6090 return _mm512_maskz_shuffle_i64x2(__U, __A, __B, 4);
6091 }
6092
test_mm512_shuffle_pd(__m512d __M,__m512d __V)6093 __m512d test_mm512_shuffle_pd(__m512d __M, __m512d __V) {
6094 // CHECK-LABEL: @test_mm512_shuffle_pd
6095 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6096 return _mm512_shuffle_pd(__M, __V, 4);
6097 }
6098
test_mm512_mask_shuffle_pd(__m512d __W,__mmask8 __U,__m512d __M,__m512d __V)6099 __m512d test_mm512_mask_shuffle_pd(__m512d __W, __mmask8 __U, __m512d __M, __m512d __V) {
6100 // CHECK-LABEL: @test_mm512_mask_shuffle_pd
6101 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6102 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6103 return _mm512_mask_shuffle_pd(__W, __U, __M, __V, 4);
6104 }
6105
test_mm512_maskz_shuffle_pd(__mmask8 __U,__m512d __M,__m512d __V)6106 __m512d test_mm512_maskz_shuffle_pd(__mmask8 __U, __m512d __M, __m512d __V) {
6107 // CHECK-LABEL: @test_mm512_maskz_shuffle_pd
6108 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14>
6109 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6110 return _mm512_maskz_shuffle_pd(__U, __M, __V, 4);
6111 }
6112
test_mm512_shuffle_ps(__m512 __M,__m512 __V)6113 __m512 test_mm512_shuffle_ps(__m512 __M, __m512 __V) {
6114 // CHECK-LABEL: @test_mm512_shuffle_ps
6115 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6116 return _mm512_shuffle_ps(__M, __V, 4);
6117 }
6118
test_mm512_mask_shuffle_ps(__m512 __W,__mmask16 __U,__m512 __M,__m512 __V)6119 __m512 test_mm512_mask_shuffle_ps(__m512 __W, __mmask16 __U, __m512 __M, __m512 __V) {
6120 // CHECK-LABEL: @test_mm512_mask_shuffle_ps
6121 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6122 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6123 return _mm512_mask_shuffle_ps(__W, __U, __M, __V, 4);
6124 }
6125
test_mm512_maskz_shuffle_ps(__mmask16 __U,__m512 __M,__m512 __V)6126 __m512 test_mm512_maskz_shuffle_ps(__mmask16 __U, __m512 __M, __m512 __V) {
6127 // CHECK-LABEL: @test_mm512_maskz_shuffle_ps
6128 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28>
6129 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6130 return _mm512_maskz_shuffle_ps(__U, __M, __V, 4);
6131 }
6132
test_mm_sqrt_round_sd(__m128d __A,__m128d __B)6133 __m128d test_mm_sqrt_round_sd(__m128d __A, __m128d __B) {
6134 // CHECK-LABEL: @test_mm_sqrt_round_sd
6135 // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 -1, i32 8)
6136 return _mm_sqrt_round_sd(__A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6137 }
6138
test_mm_mask_sqrt_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6139 __m128d test_mm_mask_sqrt_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6140 // CHECK-LABEL: @test_mm_mask_sqrt_sd
6141 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6142 // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6143 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6144 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6145 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6146 // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6147 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6148 return _mm_mask_sqrt_sd(__W,__U,__A,__B);
6149 }
6150
test_mm_mask_sqrt_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6151 __m128d test_mm_mask_sqrt_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
6152 // CHECK-LABEL: @test_mm_mask_sqrt_round_sd
6153 // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 8)
6154 return _mm_mask_sqrt_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6155 }
6156
test_mm_maskz_sqrt_sd(__mmask8 __U,__m128d __A,__m128d __B)6157 __m128d test_mm_maskz_sqrt_sd(__mmask8 __U, __m128d __A, __m128d __B){
6158 // CHECK-LABEL: @test_mm_maskz_sqrt_sd
6159 // CHECK: extractelement <2 x double> %{{.*}}, i64 0
6160 // CHECK-NEXT: call double @llvm.sqrt.f64(double %{{.*}})
6161 // CHECK-NEXT: extractelement <2 x double> %{{.*}}, i64 0
6162 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6163 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6164 // CHECK-NEXT: select i1 {{.*}}, double {{.*}}, double {{.*}}
6165 // CHECK-NEXT: insertelement <2 x double> %{{.*}}, double {{.*}}, i64 0
6166 return _mm_maskz_sqrt_sd(__U,__A,__B);
6167 }
6168
test_mm_maskz_sqrt_round_sd(__mmask8 __U,__m128d __A,__m128d __B)6169 __m128d test_mm_maskz_sqrt_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
6170 // CHECK-LABEL: @test_mm_maskz_sqrt_round_sd
6171 // CHECK: call <2 x double> @llvm.x86.avx512.mask.sqrt.sd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}, i8 %{{.*}}, i32 8)
6172 return _mm_maskz_sqrt_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6173 }
6174
test_mm_sqrt_round_ss(__m128 __A,__m128 __B)6175 __m128 test_mm_sqrt_round_ss(__m128 __A, __m128 __B) {
6176 // CHECK-LABEL: @test_mm_sqrt_round_ss
6177 // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 -1, i32 8)
6178 return _mm_sqrt_round_ss(__A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6179 }
6180
test_mm_mask_sqrt_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6181 __m128 test_mm_mask_sqrt_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
6182 // CHECK-LABEL: @test_mm_mask_sqrt_ss
6183 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6184 // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6185 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6186 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6187 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6188 // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6189 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6190 return _mm_mask_sqrt_ss(__W,__U,__A,__B);
6191 }
6192
test_mm_mask_sqrt_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6193 __m128 test_mm_mask_sqrt_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
6194 // CHECK-LABEL: @test_mm_mask_sqrt_round_ss
6195 // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 8)
6196 return _mm_mask_sqrt_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6197 }
6198
test_mm_maskz_sqrt_ss(__mmask8 __U,__m128 __A,__m128 __B)6199 __m128 test_mm_maskz_sqrt_ss(__mmask8 __U, __m128 __A, __m128 __B){
6200 // CHECK-LABEL: @test_mm_maskz_sqrt_ss
6201 // CHECK: extractelement <4 x float> %{{.*}}, i64 0
6202 // CHECK-NEXT: call float @llvm.sqrt.f32(float %{{.*}})
6203 // CHECK-NEXT: extractelement <4 x float> %{{.*}}, i64 0
6204 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
6205 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
6206 // CHECK-NEXT: select i1 {{.*}}, float {{.*}}, float {{.*}}
6207 // CHECK-NEXT: insertelement <4 x float> %{{.*}}, float {{.*}}, i64 0
6208 return _mm_maskz_sqrt_ss(__U,__A,__B);
6209 }
6210
test_mm_maskz_sqrt_round_ss(__mmask8 __U,__m128 __A,__m128 __B)6211 __m128 test_mm_maskz_sqrt_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
6212 // CHECK-LABEL: @test_mm_maskz_sqrt_round_ss
6213 // CHECK: call <4 x float> @llvm.x86.avx512.mask.sqrt.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}, i8 {{.*}}, i32 8)
6214 return _mm_maskz_sqrt_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
6215 }
6216
test_mm512_broadcast_f32x4(float const * __A)6217 __m512 test_mm512_broadcast_f32x4(float const* __A) {
6218 // CHECK-LABEL: @test_mm512_broadcast_f32x4
6219 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6220 return _mm512_broadcast_f32x4(_mm_loadu_ps(__A));
6221 }
6222
test_mm512_mask_broadcast_f32x4(__m512 __O,__mmask16 __M,float const * __A)6223 __m512 test_mm512_mask_broadcast_f32x4(__m512 __O, __mmask16 __M, float const* __A) {
6224 // CHECK-LABEL: @test_mm512_mask_broadcast_f32x4
6225 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6226 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6227 return _mm512_mask_broadcast_f32x4(__O, __M, _mm_loadu_ps(__A));
6228 }
6229
test_mm512_maskz_broadcast_f32x4(__mmask16 __M,float const * __A)6230 __m512 test_mm512_maskz_broadcast_f32x4(__mmask16 __M, float const* __A) {
6231 // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x4
6232 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6233 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6234 return _mm512_maskz_broadcast_f32x4(__M, _mm_loadu_ps(__A));
6235 }
6236
test_mm512_broadcast_f64x4(double const * __A)6237 __m512d test_mm512_broadcast_f64x4(double const* __A) {
6238 // CHECK-LABEL: @test_mm512_broadcast_f64x4
6239 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6240 return _mm512_broadcast_f64x4(_mm256_loadu_pd(__A));
6241 }
6242
test_mm512_mask_broadcast_f64x4(__m512d __O,__mmask8 __M,double const * __A)6243 __m512d test_mm512_mask_broadcast_f64x4(__m512d __O, __mmask8 __M, double const* __A) {
6244 // CHECK-LABEL: @test_mm512_mask_broadcast_f64x4
6245 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6246 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6247 return _mm512_mask_broadcast_f64x4(__O, __M, _mm256_loadu_pd(__A));
6248 }
6249
test_mm512_maskz_broadcast_f64x4(__mmask8 __M,double const * __A)6250 __m512d test_mm512_maskz_broadcast_f64x4(__mmask8 __M, double const* __A) {
6251 // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x4
6252 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6253 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6254 return _mm512_maskz_broadcast_f64x4(__M, _mm256_loadu_pd(__A));
6255 }
6256
test_mm512_broadcast_i32x4(__m128i const * __A)6257 __m512i test_mm512_broadcast_i32x4(__m128i const* __A) {
6258 // CHECK-LABEL: @test_mm512_broadcast_i32x4
6259 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6260 return _mm512_broadcast_i32x4(_mm_loadu_si128(__A));
6261 }
6262
test_mm512_mask_broadcast_i32x4(__m512i __O,__mmask16 __M,__m128i const * __A)6263 __m512i test_mm512_mask_broadcast_i32x4(__m512i __O, __mmask16 __M, __m128i const* __A) {
6264 // CHECK-LABEL: @test_mm512_mask_broadcast_i32x4
6265 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6266 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6267 return _mm512_mask_broadcast_i32x4(__O, __M, _mm_loadu_si128(__A));
6268 }
6269
test_mm512_maskz_broadcast_i32x4(__mmask16 __M,__m128i const * __A)6270 __m512i test_mm512_maskz_broadcast_i32x4(__mmask16 __M, __m128i const* __A) {
6271 // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x4
6272 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6273 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6274 return _mm512_maskz_broadcast_i32x4(__M, _mm_loadu_si128(__A));
6275 }
6276
test_mm512_broadcast_i64x4(__m256i const * __A)6277 __m512i test_mm512_broadcast_i64x4(__m256i const* __A) {
6278 // CHECK-LABEL: @test_mm512_broadcast_i64x4
6279 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6280 return _mm512_broadcast_i64x4(_mm256_loadu_si256(__A));
6281 }
6282
test_mm512_mask_broadcast_i64x4(__m512i __O,__mmask8 __M,__m256i const * __A)6283 __m512i test_mm512_mask_broadcast_i64x4(__m512i __O, __mmask8 __M, __m256i const* __A) {
6284 // CHECK-LABEL: @test_mm512_mask_broadcast_i64x4
6285 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6286 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6287 return _mm512_mask_broadcast_i64x4(__O, __M, _mm256_loadu_si256(__A));
6288 }
6289
test_mm512_maskz_broadcast_i64x4(__mmask8 __M,__m256i const * __A)6290 __m512i test_mm512_maskz_broadcast_i64x4(__mmask8 __M, __m256i const* __A) {
6291 // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x4
6292 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
6293 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6294 return _mm512_maskz_broadcast_i64x4(__M, _mm256_loadu_si256(__A));
6295 }
6296
test_mm512_broadcastsd_pd(__m128d __A)6297 __m512d test_mm512_broadcastsd_pd(__m128d __A) {
6298 // CHECK-LABEL: @test_mm512_broadcastsd_pd
6299 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6300 return _mm512_broadcastsd_pd(__A);
6301 }
6302
test_mm512_mask_broadcastsd_pd(__m512d __O,__mmask8 __M,__m128d __A)6303 __m512d test_mm512_mask_broadcastsd_pd(__m512d __O, __mmask8 __M, __m128d __A) {
6304 // CHECK-LABEL: @test_mm512_mask_broadcastsd_pd
6305 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6306 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6307 return _mm512_mask_broadcastsd_pd(__O, __M, __A);
6308 }
6309
test_mm512_maskz_broadcastsd_pd(__mmask8 __M,__m128d __A)6310 __m512d test_mm512_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {
6311 // CHECK-LABEL: @test_mm512_maskz_broadcastsd_pd
6312 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> zeroinitializer
6313 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6314 return _mm512_maskz_broadcastsd_pd(__M, __A);
6315 }
6316
test_mm512_broadcastss_ps(__m128 __A)6317 __m512 test_mm512_broadcastss_ps(__m128 __A) {
6318 // CHECK-LABEL: @test_mm512_broadcastss_ps
6319 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6320 return _mm512_broadcastss_ps(__A);
6321 }
6322
test_mm512_mask_broadcastss_ps(__m512 __O,__mmask16 __M,__m128 __A)6323 __m512 test_mm512_mask_broadcastss_ps(__m512 __O, __mmask16 __M, __m128 __A) {
6324 // CHECK-LABEL: @test_mm512_mask_broadcastss_ps
6325 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6326 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6327 return _mm512_mask_broadcastss_ps(__O, __M, __A);
6328 }
6329
test_mm512_maskz_broadcastss_ps(__mmask16 __M,__m128 __A)6330 __m512 test_mm512_maskz_broadcastss_ps(__mmask16 __M, __m128 __A) {
6331 // CHECK-LABEL: @test_mm512_maskz_broadcastss_ps
6332 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> zeroinitializer
6333 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6334 return _mm512_maskz_broadcastss_ps(__M, __A);
6335 }
6336
test_mm512_broadcastd_epi32(__m128i __A)6337 __m512i test_mm512_broadcastd_epi32(__m128i __A) {
6338 // CHECK-LABEL: @test_mm512_broadcastd_epi32
6339 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6340 return _mm512_broadcastd_epi32(__A);
6341 }
6342
test_mm512_mask_broadcastd_epi32(__m512i __O,__mmask16 __M,__m128i __A)6343 __m512i test_mm512_mask_broadcastd_epi32(__m512i __O, __mmask16 __M, __m128i __A) {
6344 // CHECK-LABEL: @test_mm512_mask_broadcastd_epi32
6345 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6346 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6347 return _mm512_mask_broadcastd_epi32(__O, __M, __A);
6348 }
6349
test_mm512_maskz_broadcastd_epi32(__mmask16 __M,__m128i __A)6350 __m512i test_mm512_maskz_broadcastd_epi32(__mmask16 __M, __m128i __A) {
6351 // CHECK-LABEL: @test_mm512_maskz_broadcastd_epi32
6352 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <16 x i32> zeroinitializer
6353 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6354 return _mm512_maskz_broadcastd_epi32(__M, __A);
6355 }
6356
test_mm512_broadcastq_epi64(__m128i __A)6357 __m512i test_mm512_broadcastq_epi64(__m128i __A) {
6358 // CHECK-LABEL: @test_mm512_broadcastq_epi64
6359 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6360 return _mm512_broadcastq_epi64(__A);
6361 }
6362
test_mm512_mask_broadcastq_epi64(__m512i __O,__mmask8 __M,__m128i __A)6363 __m512i test_mm512_mask_broadcastq_epi64(__m512i __O, __mmask8 __M, __m128i __A) {
6364 // CHECK-LABEL: @test_mm512_mask_broadcastq_epi64
6365 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6366 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6367 return _mm512_mask_broadcastq_epi64(__O, __M, __A);
6368 }
6369
test_mm512_maskz_broadcastq_epi64(__mmask8 __M,__m128i __A)6370 __m512i test_mm512_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {
6371 // CHECK-LABEL: @test_mm512_maskz_broadcastq_epi64
6372 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> zeroinitializer
6373 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6374 return _mm512_maskz_broadcastq_epi64(__M, __A);
6375 }
6376
test_mm512_cvtsepi32_epi8(__m512i __A)6377 __m128i test_mm512_cvtsepi32_epi8(__m512i __A) {
6378 // CHECK-LABEL: @test_mm512_cvtsepi32_epi8
6379 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6380 return _mm512_cvtsepi32_epi8(__A);
6381 }
6382
test_mm512_mask_cvtsepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6383 __m128i test_mm512_mask_cvtsepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6384 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi8
6385 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6386 return _mm512_mask_cvtsepi32_epi8(__O, __M, __A);
6387 }
6388
test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M,__m512i __A)6389 __m128i test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M, __m512i __A) {
6390 // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi8
6391 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512
6392 return _mm512_maskz_cvtsepi32_epi8(__M, __A);
6393 }
6394
test_mm512_mask_cvtsepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6395 void test_mm512_mask_cvtsepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6396 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi8
6397 // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.512
6398 return _mm512_mask_cvtsepi32_storeu_epi8(__P, __M, __A);
6399 }
6400
test_mm512_cvtsepi32_epi16(__m512i __A)6401 __m256i test_mm512_cvtsepi32_epi16(__m512i __A) {
6402 // CHECK-LABEL: @test_mm512_cvtsepi32_epi16
6403 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6404 return _mm512_cvtsepi32_epi16(__A);
6405 }
6406
test_mm512_mask_cvtsepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6407 __m256i test_mm512_mask_cvtsepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6408 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi16
6409 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6410 return _mm512_mask_cvtsepi32_epi16(__O, __M, __A);
6411 }
6412
test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M,__m512i __A)6413 __m256i test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M, __m512i __A) {
6414 // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi16
6415 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512
6416 return _mm512_maskz_cvtsepi32_epi16(__M, __A);
6417 }
6418
test_mm512_mask_cvtsepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6419 void test_mm512_mask_cvtsepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
6420 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi16
6421 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.512
6422 return _mm512_mask_cvtsepi32_storeu_epi16(__P, __M, __A);
6423 }
6424
test_mm512_cvtsepi64_epi8(__m512i __A)6425 __m128i test_mm512_cvtsepi64_epi8(__m512i __A) {
6426 // CHECK-LABEL: @test_mm512_cvtsepi64_epi8
6427 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6428 return _mm512_cvtsepi64_epi8(__A);
6429 }
6430
test_mm512_mask_cvtsepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6431 __m128i test_mm512_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6432 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi8
6433 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6434 return _mm512_mask_cvtsepi64_epi8(__O, __M, __A);
6435 }
6436
test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M,__m512i __A)6437 __m128i test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M, __m512i __A) {
6438 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi8
6439 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512
6440 return _mm512_maskz_cvtsepi64_epi8(__M, __A);
6441 }
6442
test_mm512_mask_cvtsepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6443 void test_mm512_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6444 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi8
6445 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.512
6446 return _mm512_mask_cvtsepi64_storeu_epi8(__P, __M, __A);
6447 }
6448
test_mm512_cvtsepi64_epi32(__m512i __A)6449 __m256i test_mm512_cvtsepi64_epi32(__m512i __A) {
6450 // CHECK-LABEL: @test_mm512_cvtsepi64_epi32
6451 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6452 return _mm512_cvtsepi64_epi32(__A);
6453 }
6454
test_mm512_mask_cvtsepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6455 __m256i test_mm512_mask_cvtsepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6456 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi32
6457 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6458 return _mm512_mask_cvtsepi64_epi32(__O, __M, __A);
6459 }
6460
test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M,__m512i __A)6461 __m256i test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M, __m512i __A) {
6462 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi32
6463 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512
6464 return _mm512_maskz_cvtsepi64_epi32(__M, __A);
6465 }
6466
test_mm512_mask_cvtsepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6467 void test_mm512_mask_cvtsepi64_storeu_epi32(void *__P, __mmask8 __M, __m512i __A) {
6468 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi32
6469 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.512
6470 return _mm512_mask_cvtsepi64_storeu_epi32(__P, __M, __A);
6471 }
6472
test_mm512_cvtsepi64_epi16(__m512i __A)6473 __m128i test_mm512_cvtsepi64_epi16(__m512i __A) {
6474 // CHECK-LABEL: @test_mm512_cvtsepi64_epi16
6475 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6476 return _mm512_cvtsepi64_epi16(__A);
6477 }
6478
test_mm512_mask_cvtsepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6479 __m128i test_mm512_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6480 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi16
6481 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6482 return _mm512_mask_cvtsepi64_epi16(__O, __M, __A);
6483 }
6484
test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M,__m512i __A)6485 __m128i test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M, __m512i __A) {
6486 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi16
6487 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512
6488 return _mm512_maskz_cvtsepi64_epi16(__M, __A);
6489 }
6490
test_mm512_mask_cvtsepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6491 void test_mm512_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m512i __A) {
6492 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi16
6493 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.512
6494 return _mm512_mask_cvtsepi64_storeu_epi16(__P, __M, __A);
6495 }
6496
test_mm512_cvtusepi32_epi8(__m512i __A)6497 __m128i test_mm512_cvtusepi32_epi8(__m512i __A) {
6498 // CHECK-LABEL: @test_mm512_cvtusepi32_epi8
6499 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6500 return _mm512_cvtusepi32_epi8(__A);
6501 }
6502
test_mm512_mask_cvtusepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6503 __m128i test_mm512_mask_cvtusepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6504 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi8
6505 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6506 return _mm512_mask_cvtusepi32_epi8(__O, __M, __A);
6507 }
6508
test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M,__m512i __A)6509 __m128i test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M, __m512i __A) {
6510 // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi8
6511 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512
6512 return _mm512_maskz_cvtusepi32_epi8(__M, __A);
6513 }
6514
test_mm512_mask_cvtusepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6515 void test_mm512_mask_cvtusepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6516 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi8
6517 // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.512
6518 return _mm512_mask_cvtusepi32_storeu_epi8(__P, __M, __A);
6519 }
6520
test_mm512_cvtusepi32_epi16(__m512i __A)6521 __m256i test_mm512_cvtusepi32_epi16(__m512i __A) {
6522 // CHECK-LABEL: @test_mm512_cvtusepi32_epi16
6523 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6524 return _mm512_cvtusepi32_epi16(__A);
6525 }
6526
test_mm512_mask_cvtusepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6527 __m256i test_mm512_mask_cvtusepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6528 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi16
6529 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6530 return _mm512_mask_cvtusepi32_epi16(__O, __M, __A);
6531 }
6532
test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M,__m512i __A)6533 __m256i test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M, __m512i __A) {
6534 // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi16
6535 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512
6536 return _mm512_maskz_cvtusepi32_epi16(__M, __A);
6537 }
6538
test_mm512_mask_cvtusepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6539 void test_mm512_mask_cvtusepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) {
6540 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi16
6541 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.512
6542 return _mm512_mask_cvtusepi32_storeu_epi16(__P, __M, __A);
6543 }
6544
test_mm512_cvtusepi64_epi8(__m512i __A)6545 __m128i test_mm512_cvtusepi64_epi8(__m512i __A) {
6546 // CHECK-LABEL: @test_mm512_cvtusepi64_epi8
6547 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6548 return _mm512_cvtusepi64_epi8(__A);
6549 }
6550
test_mm512_mask_cvtusepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6551 __m128i test_mm512_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6552 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi8
6553 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6554 return _mm512_mask_cvtusepi64_epi8(__O, __M, __A);
6555 }
6556
test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M,__m512i __A)6557 __m128i test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M, __m512i __A) {
6558 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi8
6559 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512
6560 return _mm512_maskz_cvtusepi64_epi8(__M, __A);
6561 }
6562
test_mm512_mask_cvtusepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6563 void test_mm512_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6564 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi8
6565 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.512
6566 return _mm512_mask_cvtusepi64_storeu_epi8(__P, __M, __A);
6567 }
6568
test_mm512_cvtusepi64_epi32(__m512i __A)6569 __m256i test_mm512_cvtusepi64_epi32(__m512i __A) {
6570 // CHECK-LABEL: @test_mm512_cvtusepi64_epi32
6571 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6572 return _mm512_cvtusepi64_epi32(__A);
6573 }
6574
test_mm512_mask_cvtusepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6575 __m256i test_mm512_mask_cvtusepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6576 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi32
6577 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6578 return _mm512_mask_cvtusepi64_epi32(__O, __M, __A);
6579 }
6580
test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M,__m512i __A)6581 __m256i test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M, __m512i __A) {
6582 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi32
6583 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512
6584 return _mm512_maskz_cvtusepi64_epi32(__M, __A);
6585 }
6586
test_mm512_mask_cvtusepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6587 void test_mm512_mask_cvtusepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
6588 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi32
6589 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.512
6590 return _mm512_mask_cvtusepi64_storeu_epi32(__P, __M, __A);
6591 }
6592
test_mm512_cvtusepi64_epi16(__m512i __A)6593 __m128i test_mm512_cvtusepi64_epi16(__m512i __A) {
6594 // CHECK-LABEL: @test_mm512_cvtusepi64_epi16
6595 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6596 return _mm512_cvtusepi64_epi16(__A);
6597 }
6598
test_mm512_mask_cvtusepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6599 __m128i test_mm512_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6600 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi16
6601 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6602 return _mm512_mask_cvtusepi64_epi16(__O, __M, __A);
6603 }
6604
test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M,__m512i __A)6605 __m128i test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M, __m512i __A) {
6606 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi16
6607 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512
6608 return _mm512_maskz_cvtusepi64_epi16(__M, __A);
6609 }
6610
test_mm512_mask_cvtusepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6611 void test_mm512_mask_cvtusepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
6612 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi16
6613 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.512
6614 return _mm512_mask_cvtusepi64_storeu_epi16(__P, __M, __A);
6615 }
6616
test_mm512_cvtepi32_epi8(__m512i __A)6617 __m128i test_mm512_cvtepi32_epi8(__m512i __A) {
6618 // CHECK-LABEL: @test_mm512_cvtepi32_epi8
6619 // CHECK: trunc <16 x i32> %{{.*}} to <16 x i8>
6620 return _mm512_cvtepi32_epi8(__A);
6621 }
6622
test_mm512_mask_cvtepi32_epi8(__m128i __O,__mmask16 __M,__m512i __A)6623 __m128i test_mm512_mask_cvtepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) {
6624 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi8
6625 // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6626 return _mm512_mask_cvtepi32_epi8(__O, __M, __A);
6627 }
6628
test_mm512_maskz_cvtepi32_epi8(__mmask16 __M,__m512i __A)6629 __m128i test_mm512_maskz_cvtepi32_epi8(__mmask16 __M, __m512i __A) {
6630 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi8
6631 // CHECK: @llvm.x86.avx512.mask.pmov.db.512
6632 return _mm512_maskz_cvtepi32_epi8(__M, __A);
6633 }
6634
test_mm512_mask_cvtepi32_storeu_epi8(void * __P,__mmask16 __M,__m512i __A)6635 void test_mm512_mask_cvtepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) {
6636 // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi8
6637 // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.512
6638 return _mm512_mask_cvtepi32_storeu_epi8(__P, __M, __A);
6639 }
6640
test_mm512_cvtepi32_epi16(__m512i __A)6641 __m256i test_mm512_cvtepi32_epi16(__m512i __A) {
6642 // CHECK-LABEL: @test_mm512_cvtepi32_epi16
6643 // CHECK: trunc <16 x i32> %{{.*}} to <16 x i16>
6644 return _mm512_cvtepi32_epi16(__A);
6645 }
6646
test_mm512_mask_cvtepi32_epi16(__m256i __O,__mmask16 __M,__m512i __A)6647 __m256i test_mm512_mask_cvtepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) {
6648 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi16
6649 // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6650 return _mm512_mask_cvtepi32_epi16(__O, __M, __A);
6651 }
6652
test_mm512_maskz_cvtepi32_epi16(__mmask16 __M,__m512i __A)6653 __m256i test_mm512_maskz_cvtepi32_epi16(__mmask16 __M, __m512i __A) {
6654 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi16
6655 // CHECK: @llvm.x86.avx512.mask.pmov.dw.512
6656 return _mm512_maskz_cvtepi32_epi16(__M, __A);
6657 }
6658
test_mm512_mask_cvtepi32_storeu_epi16(void * __P,__mmask16 __M,__m512i __A)6659 void test_mm512_mask_cvtepi32_storeu_epi16(void * __P, __mmask16 __M, __m512i __A) {
6660 // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi16
6661 // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.512
6662 return _mm512_mask_cvtepi32_storeu_epi16(__P, __M, __A);
6663 }
6664
test_mm512_cvtepi64_epi8(__m512i __A)6665 __m128i test_mm512_cvtepi64_epi8(__m512i __A) {
6666 // CHECK-LABEL: @test_mm512_cvtepi64_epi8
6667 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6668 return _mm512_cvtepi64_epi8(__A);
6669 }
6670
test_mm512_mask_cvtepi64_epi8(__m128i __O,__mmask8 __M,__m512i __A)6671 __m128i test_mm512_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) {
6672 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi8
6673 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6674 return _mm512_mask_cvtepi64_epi8(__O, __M, __A);
6675 }
6676
test_mm512_maskz_cvtepi64_epi8(__mmask8 __M,__m512i __A)6677 __m128i test_mm512_maskz_cvtepi64_epi8(__mmask8 __M, __m512i __A) {
6678 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi8
6679 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512
6680 return _mm512_maskz_cvtepi64_epi8(__M, __A);
6681 }
6682
test_mm512_mask_cvtepi64_storeu_epi8(void * __P,__mmask8 __M,__m512i __A)6683 void test_mm512_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) {
6684 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi8
6685 // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.512
6686 return _mm512_mask_cvtepi64_storeu_epi8(__P, __M, __A);
6687 }
6688
test_mm512_cvtepi64_epi32(__m512i __A)6689 __m256i test_mm512_cvtepi64_epi32(__m512i __A) {
6690 // CHECK-LABEL: @test_mm512_cvtepi64_epi32
6691 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6692 return _mm512_cvtepi64_epi32(__A);
6693 }
6694
test_mm512_mask_cvtepi64_epi32(__m256i __O,__mmask8 __M,__m512i __A)6695 __m256i test_mm512_mask_cvtepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) {
6696 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi32
6697 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6698 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6699 return _mm512_mask_cvtepi64_epi32(__O, __M, __A);
6700 }
6701
test_mm512_maskz_cvtepi64_epi32(__mmask8 __M,__m512i __A)6702 __m256i test_mm512_maskz_cvtepi64_epi32(__mmask8 __M, __m512i __A) {
6703 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi32
6704 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i32>
6705 // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
6706 return _mm512_maskz_cvtepi64_epi32(__M, __A);
6707 }
6708
test_mm512_mask_cvtepi64_storeu_epi32(void * __P,__mmask8 __M,__m512i __A)6709 void test_mm512_mask_cvtepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) {
6710 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi32
6711 // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.512
6712 return _mm512_mask_cvtepi64_storeu_epi32(__P, __M, __A);
6713 }
6714
test_mm512_cvtepi64_epi16(__m512i __A)6715 __m128i test_mm512_cvtepi64_epi16(__m512i __A) {
6716 // CHECK-LABEL: @test_mm512_cvtepi64_epi16
6717 // CHECK: trunc <8 x i64> %{{.*}} to <8 x i16>
6718 return _mm512_cvtepi64_epi16(__A);
6719 }
6720
test_mm512_mask_cvtepi64_epi16(__m128i __O,__mmask8 __M,__m512i __A)6721 __m128i test_mm512_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) {
6722 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi16
6723 // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6724 return _mm512_mask_cvtepi64_epi16(__O, __M, __A);
6725 }
6726
test_mm512_maskz_cvtepi64_epi16(__mmask8 __M,__m512i __A)6727 __m128i test_mm512_maskz_cvtepi64_epi16(__mmask8 __M, __m512i __A) {
6728 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi16
6729 // CHECK: @llvm.x86.avx512.mask.pmov.qw.512
6730 return _mm512_maskz_cvtepi64_epi16(__M, __A);
6731 }
6732
test_mm512_mask_cvtepi64_storeu_epi16(void * __P,__mmask8 __M,__m512i __A)6733 void test_mm512_mask_cvtepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) {
6734 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi16
6735 // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.512
6736 return _mm512_mask_cvtepi64_storeu_epi16(__P, __M, __A);
6737 }
6738
test_mm512_extracti32x4_epi32(__m512i __A)6739 __m128i test_mm512_extracti32x4_epi32(__m512i __A) {
6740 // CHECK-LABEL: @test_mm512_extracti32x4_epi32
6741 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6742 return _mm512_extracti32x4_epi32(__A, 3);
6743 }
6744
test_mm512_mask_extracti32x4_epi32(__m128i __W,__mmask8 __U,__m512i __A)6745 __m128i test_mm512_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m512i __A) {
6746 // CHECK-LABEL: @test_mm512_mask_extracti32x4_epi32
6747 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6748 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6749 return _mm512_mask_extracti32x4_epi32(__W, __U, __A, 3);
6750 }
6751
test_mm512_maskz_extracti32x4_epi32(__mmask8 __U,__m512i __A)6752 __m128i test_mm512_maskz_extracti32x4_epi32(__mmask8 __U, __m512i __A) {
6753 // CHECK-LABEL: @test_mm512_maskz_extracti32x4_epi32
6754 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <4 x i32> <i32 12, i32 13, i32 14, i32 15>
6755 // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
6756 return _mm512_maskz_extracti32x4_epi32(__U, __A, 3);
6757 }
6758
test_mm512_extracti64x4_epi64(__m512i __A)6759 __m256i test_mm512_extracti64x4_epi64(__m512i __A) {
6760 // CHECK-LABEL: @test_mm512_extracti64x4_epi64
6761 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6762 return _mm512_extracti64x4_epi64(__A, 1);
6763 }
6764
test_mm512_mask_extracti64x4_epi64(__m256i __W,__mmask8 __U,__m512i __A)6765 __m256i test_mm512_mask_extracti64x4_epi64(__m256i __W, __mmask8 __U, __m512i __A) {
6766 // CHECK-LABEL: @test_mm512_mask_extracti64x4_epi64
6767 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6768 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6769 return _mm512_mask_extracti64x4_epi64(__W, __U, __A, 1);
6770 }
6771
test_mm512_maskz_extracti64x4_epi64(__mmask8 __U,__m512i __A)6772 __m256i test_mm512_maskz_extracti64x4_epi64(__mmask8 __U, __m512i __A) {
6773 // CHECK-LABEL: @test_mm512_maskz_extracti64x4_epi64
6774 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
6775 // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
6776 return _mm512_maskz_extracti64x4_epi64(__U, __A, 1);
6777 }
6778
test_mm512_insertf64x4(__m512d __A,__m256d __B)6779 __m512d test_mm512_insertf64x4(__m512d __A, __m256d __B) {
6780 // CHECK-LABEL: @test_mm512_insertf64x4
6781 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6782 return _mm512_insertf64x4(__A, __B, 1);
6783 }
6784
test_mm512_mask_insertf64x4(__m512d __W,__mmask8 __U,__m512d __A,__m256d __B)6785 __m512d test_mm512_mask_insertf64x4(__m512d __W, __mmask8 __U, __m512d __A, __m256d __B) {
6786 // CHECK-LABEL: @test_mm512_mask_insertf64x4
6787 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6788 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6789 return _mm512_mask_insertf64x4(__W, __U, __A, __B, 1);
6790 }
6791
test_mm512_maskz_insertf64x4(__mmask8 __U,__m512d __A,__m256d __B)6792 __m512d test_mm512_maskz_insertf64x4(__mmask8 __U, __m512d __A, __m256d __B) {
6793 // CHECK-LABEL: @test_mm512_maskz_insertf64x4
6794 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6795 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
6796 return _mm512_maskz_insertf64x4(__U, __A, __B, 1);
6797 }
6798
test_mm512_inserti64x4(__m512i __A,__m256i __B)6799 __m512i test_mm512_inserti64x4(__m512i __A, __m256i __B) {
6800 // CHECK-LABEL: @test_mm512_inserti64x4
6801 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6802 return _mm512_inserti64x4(__A, __B, 1);
6803 }
6804
test_mm512_mask_inserti64x4(__m512i __W,__mmask8 __U,__m512i __A,__m256i __B)6805 __m512i test_mm512_mask_inserti64x4(__m512i __W, __mmask8 __U, __m512i __A, __m256i __B) {
6806 // CHECK-LABEL: @test_mm512_mask_inserti64x4
6807 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6808 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6809 return _mm512_mask_inserti64x4(__W, __U, __A, __B, 1);
6810 }
6811
test_mm512_maskz_inserti64x4(__mmask8 __U,__m512i __A,__m256i __B)6812 __m512i test_mm512_maskz_inserti64x4(__mmask8 __U, __m512i __A, __m256i __B) {
6813 // CHECK-LABEL: @test_mm512_maskz_inserti64x4
6814 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>
6815 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
6816 return _mm512_maskz_inserti64x4(__U, __A, __B, 1);
6817 }
6818
test_mm512_insertf32x4(__m512 __A,__m128 __B)6819 __m512 test_mm512_insertf32x4(__m512 __A, __m128 __B) {
6820 // CHECK-LABEL: @test_mm512_insertf32x4
6821 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6822 return _mm512_insertf32x4(__A, __B, 1);
6823 }
6824
test_mm512_mask_insertf32x4(__m512 __W,__mmask16 __U,__m512 __A,__m128 __B)6825 __m512 test_mm512_mask_insertf32x4(__m512 __W, __mmask16 __U, __m512 __A, __m128 __B) {
6826 // CHECK-LABEL: @test_mm512_mask_insertf32x4
6827 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6828 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6829 return _mm512_mask_insertf32x4(__W, __U, __A, __B, 1);
6830 }
6831
test_mm512_maskz_insertf32x4(__mmask16 __U,__m512 __A,__m128 __B)6832 __m512 test_mm512_maskz_insertf32x4(__mmask16 __U, __m512 __A, __m128 __B) {
6833 // CHECK-LABEL: @test_mm512_maskz_insertf32x4
6834 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6835 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
6836 return _mm512_maskz_insertf32x4(__U, __A, __B, 1);
6837 }
6838
test_mm512_inserti32x4(__m512i __A,__m128i __B)6839 __m512i test_mm512_inserti32x4(__m512i __A, __m128i __B) {
6840 // CHECK-LABEL: @test_mm512_inserti32x4
6841 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6842 return _mm512_inserti32x4(__A, __B, 1);
6843 }
6844
test_mm512_mask_inserti32x4(__m512i __W,__mmask16 __U,__m512i __A,__m128i __B)6845 __m512i test_mm512_mask_inserti32x4(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) {
6846 // CHECK-LABEL: @test_mm512_mask_inserti32x4
6847 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6848 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6849 return _mm512_mask_inserti32x4(__W, __U, __A, __B, 1);
6850 }
6851
test_mm512_maskz_inserti32x4(__mmask16 __U,__m512i __A,__m128i __B)6852 __m512i test_mm512_maskz_inserti32x4(__mmask16 __U, __m512i __A, __m128i __B) {
6853 // CHECK-LABEL: @test_mm512_maskz_inserti32x4
6854 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 16, i32 17, i32 18, i32 19, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
6855 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
6856 return _mm512_maskz_inserti32x4(__U, __A, __B, 1);
6857 }
6858
test_mm512_getmant_round_pd(__m512d __A)6859 __m512d test_mm512_getmant_round_pd(__m512d __A) {
6860 // CHECK-LABEL: @test_mm512_getmant_round_pd
6861 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6862 return _mm512_getmant_round_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6863 }
6864
test_mm512_mask_getmant_round_pd(__m512d __W,__mmask8 __U,__m512d __A)6865 __m512d test_mm512_mask_getmant_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6866 // CHECK-LABEL: @test_mm512_mask_getmant_round_pd
6867 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6868 return _mm512_mask_getmant_round_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6869 }
6870
test_mm512_maskz_getmant_round_pd(__mmask8 __U,__m512d __A)6871 __m512d test_mm512_maskz_getmant_round_pd(__mmask8 __U, __m512d __A) {
6872 // CHECK-LABEL: @test_mm512_maskz_getmant_round_pd
6873 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6874 return _mm512_maskz_getmant_round_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6875 }
6876
test_mm512_getmant_pd(__m512d __A)6877 __m512d test_mm512_getmant_pd(__m512d __A) {
6878 // CHECK-LABEL: @test_mm512_getmant_pd
6879 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6880 return _mm512_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6881 }
6882
test_mm512_mask_getmant_pd(__m512d __W,__mmask8 __U,__m512d __A)6883 __m512d test_mm512_mask_getmant_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6884 // CHECK-LABEL: @test_mm512_mask_getmant_pd
6885 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6886 return _mm512_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6887 }
6888
test_mm512_maskz_getmant_pd(__mmask8 __U,__m512d __A)6889 __m512d test_mm512_maskz_getmant_pd(__mmask8 __U, __m512d __A) {
6890 // CHECK-LABEL: @test_mm512_maskz_getmant_pd
6891 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512
6892 return _mm512_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6893 }
6894
test_mm512_getmant_round_ps(__m512 __A)6895 __m512 test_mm512_getmant_round_ps(__m512 __A) {
6896 // CHECK-LABEL: @test_mm512_getmant_round_ps
6897 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6898 return _mm512_getmant_round_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6899 }
6900
test_mm512_mask_getmant_round_ps(__m512 __W,__mmask16 __U,__m512 __A)6901 __m512 test_mm512_mask_getmant_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6902 // CHECK-LABEL: @test_mm512_mask_getmant_round_ps
6903 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6904 return _mm512_mask_getmant_round_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6905 }
6906
test_mm512_maskz_getmant_round_ps(__mmask16 __U,__m512 __A)6907 __m512 test_mm512_maskz_getmant_round_ps(__mmask16 __U, __m512 __A) {
6908 // CHECK-LABEL: @test_mm512_maskz_getmant_round_ps
6909 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6910 return _mm512_maskz_getmant_round_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION);
6911 }
6912
test_mm512_getmant_ps(__m512 __A)6913 __m512 test_mm512_getmant_ps(__m512 __A) {
6914 // CHECK-LABEL: @test_mm512_getmant_ps
6915 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6916 return _mm512_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6917 }
6918
test_mm512_mask_getmant_ps(__m512 __W,__mmask16 __U,__m512 __A)6919 __m512 test_mm512_mask_getmant_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6920 // CHECK-LABEL: @test_mm512_mask_getmant_ps
6921 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6922 return _mm512_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6923 }
6924
test_mm512_maskz_getmant_ps(__mmask16 __U,__m512 __A)6925 __m512 test_mm512_maskz_getmant_ps(__mmask16 __U, __m512 __A) {
6926 // CHECK-LABEL: @test_mm512_maskz_getmant_ps
6927 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512
6928 return _mm512_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan);
6929 }
6930
test_mm512_getexp_round_pd(__m512d __A)6931 __m512d test_mm512_getexp_round_pd(__m512d __A) {
6932 // CHECK-LABEL: @test_mm512_getexp_round_pd
6933 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6934 return _mm512_getexp_round_pd(__A, _MM_FROUND_CUR_DIRECTION);
6935 }
6936
test_mm512_mask_getexp_round_pd(__m512d __W,__mmask8 __U,__m512d __A)6937 __m512d test_mm512_mask_getexp_round_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6938 // CHECK-LABEL: @test_mm512_mask_getexp_round_pd
6939 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6940 return _mm512_mask_getexp_round_pd(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
6941 }
6942
test_mm512_maskz_getexp_round_pd(__mmask8 __U,__m512d __A)6943 __m512d test_mm512_maskz_getexp_round_pd(__mmask8 __U, __m512d __A) {
6944 // CHECK-LABEL: @test_mm512_maskz_getexp_round_pd
6945 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6946 return _mm512_maskz_getexp_round_pd(__U, __A, _MM_FROUND_CUR_DIRECTION);
6947 }
6948
test_mm512_getexp_pd(__m512d __A)6949 __m512d test_mm512_getexp_pd(__m512d __A) {
6950 // CHECK-LABEL: @test_mm512_getexp_pd
6951 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6952 return _mm512_getexp_pd(__A);
6953 }
6954
test_mm512_mask_getexp_pd(__m512d __W,__mmask8 __U,__m512d __A)6955 __m512d test_mm512_mask_getexp_pd(__m512d __W, __mmask8 __U, __m512d __A) {
6956 // CHECK-LABEL: @test_mm512_mask_getexp_pd
6957 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6958 return _mm512_mask_getexp_pd(__W, __U, __A);
6959 }
6960
test_mm512_maskz_getexp_pd(__mmask8 __U,__m512d __A)6961 __m512d test_mm512_maskz_getexp_pd(__mmask8 __U, __m512d __A) {
6962 // CHECK-LABEL: @test_mm512_maskz_getexp_pd
6963 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512
6964 return _mm512_maskz_getexp_pd(__U, __A);
6965 }
6966
test_mm512_getexp_round_ps(__m512 __A)6967 __m512 test_mm512_getexp_round_ps(__m512 __A) {
6968 // CHECK-LABEL: @test_mm512_getexp_round_ps
6969 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6970 return _mm512_getexp_round_ps(__A, _MM_FROUND_CUR_DIRECTION);
6971 }
6972
test_mm512_mask_getexp_round_ps(__m512 __W,__mmask16 __U,__m512 __A)6973 __m512 test_mm512_mask_getexp_round_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6974 // CHECK-LABEL: @test_mm512_mask_getexp_round_ps
6975 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6976 return _mm512_mask_getexp_round_ps(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
6977 }
6978
test_mm512_maskz_getexp_round_ps(__mmask16 __U,__m512 __A)6979 __m512 test_mm512_maskz_getexp_round_ps(__mmask16 __U, __m512 __A) {
6980 // CHECK-LABEL: @test_mm512_maskz_getexp_round_ps
6981 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6982 return _mm512_maskz_getexp_round_ps(__U, __A, _MM_FROUND_CUR_DIRECTION);
6983 }
6984
test_mm512_getexp_ps(__m512 __A)6985 __m512 test_mm512_getexp_ps(__m512 __A) {
6986 // CHECK-LABEL: @test_mm512_getexp_ps
6987 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6988 return _mm512_getexp_ps(__A);
6989 }
6990
test_mm512_mask_getexp_ps(__m512 __W,__mmask16 __U,__m512 __A)6991 __m512 test_mm512_mask_getexp_ps(__m512 __W, __mmask16 __U, __m512 __A) {
6992 // CHECK-LABEL: @test_mm512_mask_getexp_ps
6993 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
6994 return _mm512_mask_getexp_ps(__W, __U, __A);
6995 }
6996
test_mm512_maskz_getexp_ps(__mmask16 __U,__m512 __A)6997 __m512 test_mm512_maskz_getexp_ps(__mmask16 __U, __m512 __A) {
6998 // CHECK-LABEL: @test_mm512_maskz_getexp_ps
6999 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512
7000 return _mm512_maskz_getexp_ps(__U, __A);
7001 }
7002
test_mm512_i64gather_ps(__m512i __index,void const * __addr)7003 __m256 test_mm512_i64gather_ps(__m512i __index, void const *__addr) {
7004 // CHECK-LABEL: @test_mm512_i64gather_ps
7005 // CHECK: @llvm.x86.avx512.gather.qps.512
7006 return _mm512_i64gather_ps(__index, __addr, 2);
7007 }
7008
test_mm512_mask_i64gather_ps(__m256 __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7009 __m256 test_mm512_mask_i64gather_ps(__m256 __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7010 // CHECK-LABEL: @test_mm512_mask_i64gather_ps
7011 // CHECK: @llvm.x86.avx512.gather.qps.512
7012 return _mm512_mask_i64gather_ps(__v1_old, __mask, __index, __addr, 2);
7013 }
7014
test_mm512_i64gather_epi32(__m512i __index,void const * __addr)7015 __m256i test_mm512_i64gather_epi32(__m512i __index, void const *__addr) {
7016 // CHECK-LABEL: @test_mm512_i64gather_epi32
7017 // CHECK: @llvm.x86.avx512.gather.qpi.512
7018 return _mm512_i64gather_epi32(__index, __addr, 2);
7019 }
7020
test_mm512_mask_i64gather_epi32(__m256i __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7021 __m256i test_mm512_mask_i64gather_epi32(__m256i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7022 // CHECK-LABEL: @test_mm512_mask_i64gather_epi32
7023 // CHECK: @llvm.x86.avx512.gather.qpi.512
7024 return _mm512_mask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2);
7025 }
7026
test_mm512_i64gather_pd(__m512i __index,void const * __addr)7027 __m512d test_mm512_i64gather_pd(__m512i __index, void const *__addr) {
7028 // CHECK-LABEL: @test_mm512_i64gather_pd
7029 // CHECK: @llvm.x86.avx512.gather.qpd.512
7030 return _mm512_i64gather_pd(__index, __addr, 2);
7031 }
7032
test_mm512_mask_i64gather_pd(__m512d __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7033 __m512d test_mm512_mask_i64gather_pd(__m512d __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7034 // CHECK-LABEL: @test_mm512_mask_i64gather_pd
7035 // CHECK: @llvm.x86.avx512.gather.qpd.512
7036 return _mm512_mask_i64gather_pd(__v1_old, __mask, __index, __addr, 2);
7037 }
7038
test_mm512_i64gather_epi64(__m512i __index,void const * __addr)7039 __m512i test_mm512_i64gather_epi64(__m512i __index, void const *__addr) {
7040 // CHECK-LABEL: @test_mm512_i64gather_epi64
7041 // CHECK: @llvm.x86.avx512.gather.qpq.512
7042 return _mm512_i64gather_epi64(__index, __addr, 2);
7043 }
7044
test_mm512_mask_i64gather_epi64(__m512i __v1_old,__mmask8 __mask,__m512i __index,void const * __addr)7045 __m512i test_mm512_mask_i64gather_epi64(__m512i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) {
7046 // CHECK-LABEL: @test_mm512_mask_i64gather_epi64
7047 // CHECK: @llvm.x86.avx512.gather.qpq.512
7048 return _mm512_mask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2);
7049 }
7050
test_mm512_i32gather_ps(__m512i __index,void const * __addr)7051 __m512 test_mm512_i32gather_ps(__m512i __index, void const *__addr) {
7052 // CHECK-LABEL: @test_mm512_i32gather_ps
7053 // CHECK: @llvm.x86.avx512.gather.dps.512
7054 return _mm512_i32gather_ps(__index, __addr, 2);
7055 }
7056
test_mm512_mask_i32gather_ps(__m512 v1_old,__mmask16 __mask,__m512i __index,void const * __addr)7057 __m512 test_mm512_mask_i32gather_ps(__m512 v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
7058 // CHECK-LABEL: @test_mm512_mask_i32gather_ps
7059 // CHECK: @llvm.x86.avx512.gather.dps.512
7060 return _mm512_mask_i32gather_ps(v1_old, __mask, __index, __addr, 2);
7061 }
7062
test_mm512_i32gather_epi32(__m512i __index,void const * __addr)7063 __m512i test_mm512_i32gather_epi32(__m512i __index, void const *__addr) {
7064 // CHECK-LABEL: @test_mm512_i32gather_epi32
7065 // CHECK: @llvm.x86.avx512.gather.dpi.512
7066 return _mm512_i32gather_epi32(__index, __addr, 2);
7067 }
7068
test_mm512_mask_i32gather_epi32(__m512i __v1_old,__mmask16 __mask,__m512i __index,void const * __addr)7069 __m512i test_mm512_mask_i32gather_epi32(__m512i __v1_old, __mmask16 __mask, __m512i __index, void const *__addr) {
7070 // CHECK-LABEL: @test_mm512_mask_i32gather_epi32
7071 // CHECK: @llvm.x86.avx512.gather.dpi.512
7072 return _mm512_mask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2);
7073 }
7074
test_mm512_i32gather_pd(__m256i __index,void const * __addr)7075 __m512d test_mm512_i32gather_pd(__m256i __index, void const *__addr) {
7076 // CHECK-LABEL: @test_mm512_i32gather_pd
7077 // CHECK: @llvm.x86.avx512.gather.dpd.512
7078 return _mm512_i32gather_pd(__index, __addr, 2);
7079 }
7080
test_mm512_mask_i32gather_pd(__m512d __v1_old,__mmask8 __mask,__m256i __index,void const * __addr)7081 __m512d test_mm512_mask_i32gather_pd(__m512d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
7082 // CHECK-LABEL: @test_mm512_mask_i32gather_pd
7083 // CHECK: @llvm.x86.avx512.gather.dpd.512
7084 return _mm512_mask_i32gather_pd(__v1_old, __mask, __index, __addr, 2);
7085 }
7086
test_mm512_i32gather_epi64(__m256i __index,void const * __addr)7087 __m512i test_mm512_i32gather_epi64(__m256i __index, void const *__addr) {
7088 // CHECK-LABEL: @test_mm512_i32gather_epi64
7089 // CHECK: @llvm.x86.avx512.gather.dpq.512
7090 return _mm512_i32gather_epi64(__index, __addr, 2);
7091 }
7092
test_mm512_mask_i32gather_epi64(__m512i __v1_old,__mmask8 __mask,__m256i __index,void const * __addr)7093 __m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {
7094 // CHECK-LABEL: @test_mm512_mask_i32gather_epi64
7095 // CHECK: @llvm.x86.avx512.gather.dpq.512
7096 return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2);
7097 }
7098
test_mm512_i64scatter_ps(void * __addr,__m512i __index,__m256 __v1)7099 void test_mm512_i64scatter_ps(void *__addr, __m512i __index, __m256 __v1) {
7100 // CHECK-LABEL: @test_mm512_i64scatter_ps
7101 // CHECK: @llvm.x86.avx512.scatter.qps.512
7102 return _mm512_i64scatter_ps(__addr, __index, __v1, 2);
7103 }
7104
test_mm512_mask_i64scatter_ps(void * __addr,__mmask8 __mask,__m512i __index,__m256 __v1)7105 void test_mm512_mask_i64scatter_ps(void *__addr, __mmask8 __mask, __m512i __index, __m256 __v1) {
7106 // CHECK-LABEL: @test_mm512_mask_i64scatter_ps
7107 // CHECK: @llvm.x86.avx512.scatter.qps.512
7108 return _mm512_mask_i64scatter_ps(__addr, __mask, __index, __v1, 2);
7109 }
7110
test_mm512_i64scatter_epi32(void * __addr,__m512i __index,__m256i __v1)7111 void test_mm512_i64scatter_epi32(void *__addr, __m512i __index, __m256i __v1) {
7112 // CHECK-LABEL: @test_mm512_i64scatter_epi32
7113 // CHECK: @llvm.x86.avx512.scatter.qpi.512
7114 return _mm512_i64scatter_epi32(__addr, __index, __v1, 2);
7115 }
7116
test_mm512_mask_i64scatter_epi32(void * __addr,__mmask8 __mask,__m512i __index,__m256i __v1)7117 void test_mm512_mask_i64scatter_epi32(void *__addr, __mmask8 __mask, __m512i __index, __m256i __v1) {
7118 // CHECK-LABEL: @test_mm512_mask_i64scatter_epi32
7119 // CHECK: @llvm.x86.avx512.scatter.qpi.512
7120 return _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, 2);
7121 }
7122
test_mm512_i64scatter_pd(void * __addr,__m512i __index,__m512d __v1)7123 void test_mm512_i64scatter_pd(void *__addr, __m512i __index, __m512d __v1) {
7124 // CHECK-LABEL: @test_mm512_i64scatter_pd
7125 // CHECK: @llvm.x86.avx512.scatter.qpd.512
7126 return _mm512_i64scatter_pd(__addr, __index, __v1, 2);
7127 }
7128
test_mm512_mask_i64scatter_pd(void * __addr,__mmask8 __mask,__m512i __index,__m512d __v1)7129 void test_mm512_mask_i64scatter_pd(void *__addr, __mmask8 __mask, __m512i __index, __m512d __v1) {
7130 // CHECK-LABEL: @test_mm512_mask_i64scatter_pd
7131 // CHECK: @llvm.x86.avx512.scatter.qpd.512
7132 return _mm512_mask_i64scatter_pd(__addr, __mask, __index, __v1, 2);
7133 }
7134
test_mm512_i64scatter_epi64(void * __addr,__m512i __index,__m512i __v1)7135 void test_mm512_i64scatter_epi64(void *__addr, __m512i __index, __m512i __v1) {
7136 // CHECK-LABEL: @test_mm512_i64scatter_epi64
7137 // CHECK: @llvm.x86.avx512.scatter.qpq.512
7138 return _mm512_i64scatter_epi64(__addr, __index, __v1, 2);
7139 }
7140
test_mm512_mask_i64scatter_epi64(void * __addr,__mmask8 __mask,__m512i __index,__m512i __v1)7141 void test_mm512_mask_i64scatter_epi64(void *__addr, __mmask8 __mask, __m512i __index, __m512i __v1) {
7142 // CHECK-LABEL: @test_mm512_mask_i64scatter_epi64
7143 // CHECK: @llvm.x86.avx512.scatter.qpq.512
7144 return _mm512_mask_i64scatter_epi64(__addr, __mask, __index, __v1, 2);
7145 }
7146
test_mm512_i32scatter_ps(void * __addr,__m512i __index,__m512 __v1)7147 void test_mm512_i32scatter_ps(void *__addr, __m512i __index, __m512 __v1) {
7148 // CHECK-LABEL: @test_mm512_i32scatter_ps
7149 // CHECK: @llvm.x86.avx512.scatter.dps.512
7150 return _mm512_i32scatter_ps(__addr, __index, __v1, 2);
7151 }
7152
test_mm512_mask_i32scatter_ps(void * __addr,__mmask16 __mask,__m512i __index,__m512 __v1)7153 void test_mm512_mask_i32scatter_ps(void *__addr, __mmask16 __mask, __m512i __index, __m512 __v1) {
7154 // CHECK-LABEL: @test_mm512_mask_i32scatter_ps
7155 // CHECK: @llvm.x86.avx512.scatter.dps.512
7156 return _mm512_mask_i32scatter_ps(__addr, __mask, __index, __v1, 2);
7157 }
7158
test_mm512_i32scatter_epi32(void * __addr,__m512i __index,__m512i __v1)7159 void test_mm512_i32scatter_epi32(void *__addr, __m512i __index, __m512i __v1) {
7160 // CHECK-LABEL: @test_mm512_i32scatter_epi32
7161 // CHECK: @llvm.x86.avx512.scatter.dpi.512
7162 return _mm512_i32scatter_epi32(__addr, __index, __v1, 2);
7163 }
7164
test_mm512_mask_i32scatter_epi32(void * __addr,__mmask16 __mask,__m512i __index,__m512i __v1)7165 void test_mm512_mask_i32scatter_epi32(void *__addr, __mmask16 __mask, __m512i __index, __m512i __v1) {
7166 // CHECK-LABEL: @test_mm512_mask_i32scatter_epi32
7167 // CHECK: @llvm.x86.avx512.scatter.dpi.512
7168 return _mm512_mask_i32scatter_epi32(__addr, __mask, __index, __v1, 2);
7169 }
7170
test_mm512_i32scatter_pd(void * __addr,__m256i __index,__m512d __v1)7171 void test_mm512_i32scatter_pd(void *__addr, __m256i __index, __m512d __v1) {
7172 // CHECK-LABEL: @test_mm512_i32scatter_pd
7173 // CHECK: @llvm.x86.avx512.scatter.dpd.512
7174 return _mm512_i32scatter_pd(__addr, __index, __v1, 2);
7175 }
7176
test_mm512_mask_i32scatter_pd(void * __addr,__mmask8 __mask,__m256i __index,__m512d __v1)7177 void test_mm512_mask_i32scatter_pd(void *__addr, __mmask8 __mask, __m256i __index, __m512d __v1) {
7178 // CHECK-LABEL: @test_mm512_mask_i32scatter_pd
7179 // CHECK: @llvm.x86.avx512.scatter.dpd.512
7180 return _mm512_mask_i32scatter_pd(__addr, __mask, __index, __v1, 2);
7181 }
7182
test_mm512_i32scatter_epi64(void * __addr,__m256i __index,__m512i __v1)7183 void test_mm512_i32scatter_epi64(void *__addr, __m256i __index, __m512i __v1) {
7184 // CHECK-LABEL: @test_mm512_i32scatter_epi64
7185 // CHECK: @llvm.x86.avx512.scatter.dpq.512
7186 return _mm512_i32scatter_epi64(__addr, __index, __v1, 2);
7187 }
7188
test_mm512_mask_i32scatter_epi64(void * __addr,__mmask8 __mask,__m256i __index,__m512i __v1)7189 void test_mm512_mask_i32scatter_epi64(void *__addr, __mmask8 __mask, __m256i __index, __m512i __v1) {
7190 // CHECK-LABEL: @test_mm512_mask_i32scatter_epi64
7191 // CHECK: @llvm.x86.avx512.scatter.dpq.512
7192 return _mm512_mask_i32scatter_epi64(__addr, __mask, __index, __v1, 2);
7193 }
7194
test_mm_mask_rsqrt14_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7195 __m128d test_mm_mask_rsqrt14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7196 // CHECK-LABEL: @test_mm_mask_rsqrt14_sd
7197 // CHECK: @llvm.x86.avx512.rsqrt14.sd
7198 return _mm_mask_rsqrt14_sd(__W, __U, __A, __B);
7199 }
7200
test_mm_maskz_rsqrt14_sd(__mmask8 __U,__m128d __A,__m128d __B)7201 __m128d test_mm_maskz_rsqrt14_sd(__mmask8 __U, __m128d __A, __m128d __B){
7202 // CHECK-LABEL: @test_mm_maskz_rsqrt14_sd
7203 // CHECK: @llvm.x86.avx512.rsqrt14.sd
7204 return _mm_maskz_rsqrt14_sd(__U, __A, __B);
7205 }
7206
test_mm_mask_rsqrt14_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7207 __m128 test_mm_mask_rsqrt14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7208 // CHECK-LABEL: @test_mm_mask_rsqrt14_ss
7209 // CHECK: @llvm.x86.avx512.rsqrt14.ss
7210 return _mm_mask_rsqrt14_ss(__W, __U, __A, __B);
7211 }
7212
test_mm_maskz_rsqrt14_ss(__mmask8 __U,__m128 __A,__m128 __B)7213 __m128 test_mm_maskz_rsqrt14_ss(__mmask8 __U, __m128 __A, __m128 __B){
7214 // CHECK-LABEL: @test_mm_maskz_rsqrt14_ss
7215 // CHECK: @llvm.x86.avx512.rsqrt14.ss
7216 return _mm_maskz_rsqrt14_ss(__U, __A, __B);
7217 }
7218
test_mm512_mask_rcp14_pd(__m512d __W,__mmask8 __U,__m512d __A)7219 __m512d test_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
7220 {
7221 // CHECK-LABEL: @test_mm512_mask_rcp14_pd
7222 // CHECK: @llvm.x86.avx512.rcp14.pd.512
7223 return _mm512_mask_rcp14_pd (__W,__U,__A);
7224 }
7225
test_mm512_maskz_rcp14_pd(__mmask8 __U,__m512d __A)7226 __m512d test_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
7227 {
7228 // CHECK-LABEL: @test_mm512_maskz_rcp14_pd
7229 // CHECK: @llvm.x86.avx512.rcp14.pd.512
7230 return _mm512_maskz_rcp14_pd (__U,__A);
7231 }
7232
test_mm512_mask_rcp14_ps(__m512 __W,__mmask16 __U,__m512 __A)7233 __m512 test_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
7234 {
7235 // CHECK-LABEL: @test_mm512_mask_rcp14_ps
7236 // CHECK: @llvm.x86.avx512.rcp14.ps.512
7237 return _mm512_mask_rcp14_ps (__W,__U,__A);
7238 }
7239
test_mm512_maskz_rcp14_ps(__mmask16 __U,__m512 __A)7240 __m512 test_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
7241 {
7242 // CHECK-LABEL: @test_mm512_maskz_rcp14_ps
7243 // CHECK: @llvm.x86.avx512.rcp14.ps.512
7244 return _mm512_maskz_rcp14_ps (__U,__A);
7245 }
7246
test_mm_mask_rcp14_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7247 __m128d test_mm_mask_rcp14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7248 // CHECK-LABEL: @test_mm_mask_rcp14_sd
7249 // CHECK: @llvm.x86.avx512.rcp14.sd
7250 return _mm_mask_rcp14_sd(__W, __U, __A, __B);
7251 }
7252
test_mm_maskz_rcp14_sd(__mmask8 __U,__m128d __A,__m128d __B)7253 __m128d test_mm_maskz_rcp14_sd(__mmask8 __U, __m128d __A, __m128d __B){
7254 // CHECK-LABEL: @test_mm_maskz_rcp14_sd
7255 // CHECK: @llvm.x86.avx512.rcp14.sd
7256 return _mm_maskz_rcp14_sd(__U, __A, __B);
7257 }
7258
test_mm_mask_rcp14_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7259 __m128 test_mm_mask_rcp14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7260 // CHECK-LABEL: @test_mm_mask_rcp14_ss
7261 // CHECK: @llvm.x86.avx512.rcp14.ss
7262 return _mm_mask_rcp14_ss(__W, __U, __A, __B);
7263 }
7264
test_mm_maskz_rcp14_ss(__mmask8 __U,__m128 __A,__m128 __B)7265 __m128 test_mm_maskz_rcp14_ss(__mmask8 __U, __m128 __A, __m128 __B){
7266 // CHECK-LABEL: @test_mm_maskz_rcp14_ss
7267 // CHECK: @llvm.x86.avx512.rcp14.ss
7268 return _mm_maskz_rcp14_ss(__U, __A, __B);
7269 }
7270
test_mm_mask_getexp_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7271 __m128d test_mm_mask_getexp_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7272 // CHECK-LABEL: @test_mm_mask_getexp_sd
7273 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7274 return _mm_mask_getexp_sd(__W, __U, __A, __B);
7275 }
7276
test_mm_mask_getexp_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7277 __m128d test_mm_mask_getexp_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7278 // CHECK-LABEL: @test_mm_mask_getexp_round_sd
7279 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7280 return _mm_mask_getexp_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
7281 }
7282
test_mm_maskz_getexp_sd(__mmask8 __U,__m128d __A,__m128d __B)7283 __m128d test_mm_maskz_getexp_sd(__mmask8 __U, __m128d __A, __m128d __B){
7284 // CHECK-LABEL: @test_mm_maskz_getexp_sd
7285 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7286 return _mm_maskz_getexp_sd(__U, __A, __B);
7287 }
7288
test_mm_maskz_getexp_round_sd(__mmask8 __U,__m128d __A,__m128d __B)7289 __m128d test_mm_maskz_getexp_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
7290 // CHECK-LABEL: @test_mm_maskz_getexp_round_sd
7291 // CHECK: @llvm.x86.avx512.mask.getexp.sd
7292 return _mm_maskz_getexp_round_sd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
7293 }
7294
test_mm_mask_getexp_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7295 __m128 test_mm_mask_getexp_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7296 // CHECK-LABEL: @test_mm_mask_getexp_ss
7297 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7298 return _mm_mask_getexp_ss(__W, __U, __A, __B);
7299 }
7300
test_mm_mask_getexp_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7301 __m128 test_mm_mask_getexp_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7302 // CHECK-LABEL: @test_mm_mask_getexp_round_ss
7303 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7304 return _mm_mask_getexp_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
7305 }
7306
test_mm_maskz_getexp_ss(__mmask8 __U,__m128 __A,__m128 __B)7307 __m128 test_mm_maskz_getexp_ss(__mmask8 __U, __m128 __A, __m128 __B){
7308 // CHECK-LABEL: @test_mm_maskz_getexp_ss
7309 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7310 return _mm_maskz_getexp_ss(__U, __A, __B);
7311 }
7312
test_mm_maskz_getexp_round_ss(__mmask8 __U,__m128 __A,__m128 __B)7313 __m128 test_mm_maskz_getexp_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
7314 // CHECK-LABEL: @test_mm_maskz_getexp_round_ss
7315 // CHECK: @llvm.x86.avx512.mask.getexp.ss
7316 return _mm_maskz_getexp_round_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
7317 }
7318
test_mm_mask_getmant_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7319 __m128d test_mm_mask_getmant_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7320 // CHECK-LABEL: @test_mm_mask_getmant_sd
7321 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7322 return _mm_mask_getmant_sd(__W, __U, __A, __B, 1, 2);
7323 }
7324
test_mm_mask_getmant_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7325 __m128d test_mm_mask_getmant_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7326 // CHECK-LABEL: @test_mm_mask_getmant_round_sd
7327 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7328 return _mm_mask_getmant_round_sd(__W, __U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
7329 }
7330
test_mm_maskz_getmant_sd(__mmask8 __U,__m128d __A,__m128d __B)7331 __m128d test_mm_maskz_getmant_sd(__mmask8 __U, __m128d __A, __m128d __B){
7332 // CHECK-LABEL: @test_mm_maskz_getmant_sd
7333 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7334 return _mm_maskz_getmant_sd(__U, __A, __B, 1, 2);
7335 }
7336
test_mm_maskz_getmant_round_sd(__mmask8 __U,__m128d __A,__m128d __B)7337 __m128d test_mm_maskz_getmant_round_sd(__mmask8 __U, __m128d __A, __m128d __B){
7338 // CHECK-LABEL: @test_mm_maskz_getmant_round_sd
7339 // CHECK: @llvm.x86.avx512.mask.getmant.sd
7340 return _mm_maskz_getmant_round_sd(__U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
7341 }
7342
test_mm_mask_getmant_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7343 __m128 test_mm_mask_getmant_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7344 // CHECK-LABEL: @test_mm_mask_getmant_ss
7345 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7346 return _mm_mask_getmant_ss(__W, __U, __A, __B, 1, 2);
7347 }
7348
test_mm_mask_getmant_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7349 __m128 test_mm_mask_getmant_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7350 // CHECK-LABEL: @test_mm_mask_getmant_round_ss
7351 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7352 return _mm_mask_getmant_round_ss(__W, __U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
7353 }
7354
test_mm_maskz_getmant_ss(__mmask8 __U,__m128 __A,__m128 __B)7355 __m128 test_mm_maskz_getmant_ss(__mmask8 __U, __m128 __A, __m128 __B){
7356 // CHECK-LABEL: @test_mm_maskz_getmant_ss
7357 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7358 return _mm_maskz_getmant_ss(__U, __A, __B, 1, 2);
7359 }
7360
test_mm_maskz_getmant_round_ss(__mmask8 __U,__m128 __A,__m128 __B)7361 __m128 test_mm_maskz_getmant_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
7362 // CHECK-LABEL: @test_mm_maskz_getmant_round_ss
7363 // CHECK: @llvm.x86.avx512.mask.getmant.ss
7364 return _mm_maskz_getmant_round_ss(__U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION);
7365 }
7366
test_mm_mask_fmadd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7367 __m128 test_mm_mask_fmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7368 // CHECK-LABEL: @test_mm_mask_fmadd_ss
7369 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7370 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7371 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7372 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7373 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7374 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7375 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7376 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7377 return _mm_mask_fmadd_ss(__W, __U, __A, __B);
7378 }
7379
test_mm_fmadd_round_ss(__m128 __A,__m128 __B,__m128 __C)7380 __m128 test_mm_fmadd_round_ss(__m128 __A, __m128 __B, __m128 __C){
7381 // CHECK-LABEL: @test_mm_fmadd_round_ss
7382 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7383 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7384 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7385 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7386 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7387 return _mm_fmadd_round_ss(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7388 }
7389
test_mm_mask_fmadd_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7390 __m128 test_mm_mask_fmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7391 // CHECK-LABEL: @test_mm_mask_fmadd_round_ss
7392 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7393 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7394 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7395 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7396 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7397 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7398 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7399 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7400 return _mm_mask_fmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7401 }
7402
test_mm_maskz_fmadd_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7403 __m128 test_mm_maskz_fmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7404 // CHECK-LABEL: @test_mm_maskz_fmadd_ss
7405 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7406 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7407 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7408 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7409 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7410 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7411 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7412 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7413 return _mm_maskz_fmadd_ss(__U, __A, __B, __C);
7414 }
7415
test_mm_maskz_fmadd_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7416 __m128 test_mm_maskz_fmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7417 // CHECK-LABEL: @test_mm_maskz_fmadd_round_ss
7418 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7419 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7420 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7421 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7422 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7423 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7424 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7425 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7426 return _mm_maskz_fmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7427 }
7428
test_mm_mask3_fmadd_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7429 __m128 test_mm_mask3_fmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7430 // CHECK-LABEL: @test_mm_mask3_fmadd_ss
7431 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7432 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7433 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7434 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7435 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7436 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7437 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7438 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7439 return _mm_mask3_fmadd_ss(__W, __X, __Y, __U);
7440 }
7441
test_mm_mask3_fmadd_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7442 __m128 test_mm_mask3_fmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7443 // CHECK-LABEL: @test_mm_mask3_fmadd_round_ss
7444 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7445 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7446 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7447 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7448 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7449 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7450 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7451 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7452 return _mm_mask3_fmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7453 }
7454
test_mm_mask_fmsub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7455 __m128 test_mm_mask_fmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7456 // CHECK-LABEL: @test_mm_mask_fmsub_ss
7457 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7458 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7459 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7460 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7461 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7462 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7463 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7464 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7465 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7466 return _mm_mask_fmsub_ss(__W, __U, __A, __B);
7467 }
7468
test_mm_fmsub_round_ss(__m128 __A,__m128 __B,__m128 __C)7469 __m128 test_mm_fmsub_round_ss(__m128 __A, __m128 __B, __m128 __C){
7470 // CHECK-LABEL: @test_mm_fmsub_round_ss
7471 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7472 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7473 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7474 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7475 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7476 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7477 return _mm_fmsub_round_ss(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7478 }
7479
test_mm_mask_fmsub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7480 __m128 test_mm_mask_fmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7481 // CHECK-LABEL: @test_mm_mask_fmsub_round_ss
7482 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7483 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7484 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7485 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7486 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7487 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7488 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7489 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7490 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7491 return _mm_mask_fmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7492 }
7493
test_mm_maskz_fmsub_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7494 __m128 test_mm_maskz_fmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7495 // CHECK-LABEL: @test_mm_maskz_fmsub_ss
7496 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7497 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7498 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7499 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7500 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7501 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7502 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7503 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7504 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7505 return _mm_maskz_fmsub_ss(__U, __A, __B, __C);
7506 }
7507
test_mm_maskz_fmsub_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7508 __m128 test_mm_maskz_fmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7509 // CHECK-LABEL: @test_mm_maskz_fmsub_round_ss
7510 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7511 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7512 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7513 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7514 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7515 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7516 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7517 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7518 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7519 return _mm_maskz_fmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7520 }
7521
test_mm_mask3_fmsub_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7522 __m128 test_mm_mask3_fmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7523 // CHECK-LABEL: @test_mm_mask3_fmsub_ss
7524 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, [[ORIGC:%.+]]
7525 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7526 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7527 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7528 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7529 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7530 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7531 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7532 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7533 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7534 return _mm_mask3_fmsub_ss(__W, __X, __Y, __U);
7535 }
7536
test_mm_mask3_fmsub_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7537 __m128 test_mm_mask3_fmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7538 // CHECK-LABEL: @test_mm_mask3_fmsub_round_ss
7539 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, [[ORIGC:%.+]]
7540 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7541 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7542 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7543 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7544 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7545 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7546 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7547 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7548 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7549 return _mm_mask3_fmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7550 }
7551
test_mm_mask_fnmadd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7552 __m128 test_mm_mask_fnmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7553 // CHECK-LABEL: @test_mm_mask_fnmadd_ss
7554 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7555 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7556 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7557 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7558 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7559 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7560 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7561 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7562 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7563 return _mm_mask_fnmadd_ss(__W, __U, __A, __B);
7564 }
7565
test_mm_fnmadd_round_ss(__m128 __A,__m128 __B,__m128 __C)7566 __m128 test_mm_fnmadd_round_ss(__m128 __A, __m128 __B, __m128 __C){
7567 // CHECK-LABEL: @test_mm_fnmadd_round_ss
7568 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7569 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7570 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7571 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7572 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7573 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7574 return _mm_fnmadd_round_ss(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7575 }
7576
test_mm_mask_fnmadd_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7577 __m128 test_mm_mask_fnmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7578 // CHECK-LABEL: @test_mm_mask_fnmadd_round_ss
7579 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7580 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7581 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7582 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7583 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7584 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7585 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7586 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7587 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7588 return _mm_mask_fnmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7589 }
7590
test_mm_maskz_fnmadd_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7591 __m128 test_mm_maskz_fnmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7592 // CHECK-LABEL: @test_mm_maskz_fnmadd_ss
7593 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7594 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7595 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7596 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7597 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7598 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7599 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7600 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7601 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7602 return _mm_maskz_fnmadd_ss(__U, __A, __B, __C);
7603 }
7604
test_mm_maskz_fnmadd_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7605 __m128 test_mm_maskz_fnmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7606 // CHECK-LABEL: @test_mm_maskz_fnmadd_round_ss
7607 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7608 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7609 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7610 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7611 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7612 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7613 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7614 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7615 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7616 return _mm_maskz_fnmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7617 }
7618
test_mm_mask3_fnmadd_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7619 __m128 test_mm_mask3_fnmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7620 // CHECK-LABEL: @test_mm_mask3_fnmadd_ss
7621 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7622 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7623 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7624 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7625 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7626 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7627 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7628 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7629 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7630 return _mm_mask3_fnmadd_ss(__W, __X, __Y, __U);
7631 }
7632
test_mm_mask3_fnmadd_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7633 __m128 test_mm_mask3_fnmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7634 // CHECK-LABEL: @test_mm_mask3_fnmadd_round_ss
7635 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7636 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7637 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7638 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[ORIGC:%.+]], i64 0
7639 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7640 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7641 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7642 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C]]
7643 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7644 return _mm_mask3_fnmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7645 }
7646
test_mm_mask_fnmsub_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7647 __m128 test_mm_mask_fnmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7648 // CHECK-LABEL: @test_mm_mask_fnmsub_ss
7649 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7650 // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7651 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7652 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7653 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7654 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7655 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7656 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7657 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7658 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7659 return _mm_mask_fnmsub_ss(__W, __U, __A, __B);
7660 }
7661
test_mm_fnmsub_round_ss(__m128 __A,__m128 __B,__m128 __C)7662 __m128 test_mm_fnmsub_round_ss(__m128 __A, __m128 __B, __m128 __C){
7663 // CHECK-LABEL: @test_mm_fnmsub_round_ss
7664 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7665 // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7666 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7667 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7668 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7669 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7670 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[FMA]], i64 0
7671 return _mm_fnmsub_round_ss(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7672 }
7673
test_mm_mask_fnmsub_round_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)7674 __m128 test_mm_mask_fnmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){
7675 // CHECK-LABEL: @test_mm_mask_fnmsub_round_ss
7676 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7677 // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7678 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7679 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7680 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7681 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7682 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7683 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7684 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[A]]
7685 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7686 return _mm_mask_fnmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7687 }
7688
test_mm_maskz_fnmsub_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7689 __m128 test_mm_maskz_fnmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7690 // CHECK-LABEL: @test_mm_maskz_fnmsub_ss
7691 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7692 // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7693 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7694 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7695 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7696 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7697 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7698 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7699 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7700 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7701 return _mm_maskz_fnmsub_ss(__U, __A, __B, __C);
7702 }
7703
test_mm_maskz_fnmsub_round_ss(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)7704 __m128 test_mm_maskz_fnmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){
7705 // CHECK-LABEL: @test_mm_maskz_fnmsub_round_ss
7706 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7707 // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7708 // CHECK: [[A:%.+]] = extractelement <4 x float> [[ORIGA:%.+]], i64 0
7709 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7710 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7711 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7712 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7713 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7714 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float 0.000000e+00
7715 // CHECK-NEXT: insertelement <4 x float> [[ORIGA]], float [[SEL]], i64 0
7716 return _mm_maskz_fnmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7717 }
7718
test_mm_mask3_fnmsub_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7719 __m128 test_mm_mask3_fnmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7720 // CHECK-LABEL: @test_mm_mask3_fnmsub_ss
7721 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7722 // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, [[ORIGC:%.+]]
7723 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7724 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7725 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7726 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.fma.f32(float [[A]], float [[B]], float [[C]])
7727 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7728 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7729 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7730 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7731 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7732 return _mm_mask3_fnmsub_ss(__W, __X, __Y, __U);
7733 }
7734
test_mm_mask3_fnmsub_round_ss(__m128 __W,__m128 __X,__m128 __Y,__mmask8 __U)7735 __m128 test_mm_mask3_fnmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){
7736 // CHECK-LABEL: @test_mm_mask3_fnmsub_round_ss
7737 // CHECK: [[NEG:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, %{{.*}}
7738 // CHECK: [[NEG2:%.+]] = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float -0.000000e+00, float -0.000000e+00>, [[ORIGC:%.+]]
7739 // CHECK: [[A:%.+]] = extractelement <4 x float> %{{.*}}, i64 0
7740 // CHECK-NEXT: [[B:%.+]] = extractelement <4 x float> [[NEG]], i64 0
7741 // CHECK-NEXT: [[C:%.+]] = extractelement <4 x float> [[NEG2]], i64 0
7742 // CHECK-NEXT: [[FMA:%.+]] = call float @llvm.x86.avx512.vfmadd.f32(float [[A]], float [[B]], float [[C]], i32 8)
7743 // CHECK-NEXT: [[C2:%.+]] = extractelement <4 x float> [[ORIGC]], i64 0
7744 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7745 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7746 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, float [[FMA]], float [[C2]]
7747 // CHECK-NEXT: insertelement <4 x float> [[ORIGC]], float [[SEL]], i64 0
7748 return _mm_mask3_fnmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7749 }
7750
test_mm_mask_fmadd_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7751 __m128d test_mm_mask_fmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7752 // CHECK-LABEL: @test_mm_mask_fmadd_sd
7753 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7754 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7755 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7756 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7757 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7758 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7759 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7760 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7761 return _mm_mask_fmadd_sd(__W, __U, __A, __B);
7762 }
7763
test_mm_fmadd_round_sd(__m128d __A,__m128d __B,__m128d __C)7764 __m128d test_mm_fmadd_round_sd(__m128d __A, __m128d __B, __m128d __C){
7765 // CHECK-LABEL: @test_mm_fmadd_round_sd
7766 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7767 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7768 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7769 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7770 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7771 return _mm_fmadd_round_sd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7772 }
7773
test_mm_mask_fmadd_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7774 __m128d test_mm_mask_fmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7775 // CHECK-LABEL: @test_mm_mask_fmadd_round_sd
7776 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7777 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7778 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7779 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7780 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7781 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7782 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7783 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7784 return _mm_mask_fmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7785 }
7786
test_mm_maskz_fmadd_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7787 __m128d test_mm_maskz_fmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7788 // CHECK-LABEL: @test_mm_maskz_fmadd_sd
7789 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7790 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7791 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7792 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7793 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7794 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7795 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7796 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7797 return _mm_maskz_fmadd_sd(__U, __A, __B, __C);
7798 }
7799
test_mm_maskz_fmadd_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7800 __m128d test_mm_maskz_fmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7801 // CHECK-LABEL: @test_mm_maskz_fmadd_round_sd
7802 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7803 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7804 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7805 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7806 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7807 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7808 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7809 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7810 return _mm_maskz_fmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7811 }
7812
test_mm_mask3_fmadd_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7813 __m128d test_mm_mask3_fmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7814 // CHECK-LABEL: @test_mm_mask3_fmadd_sd
7815 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7816 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7817 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7818 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7819 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7820 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7821 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7822 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7823 return _mm_mask3_fmadd_sd(__W, __X, __Y, __U);
7824 }
7825
test_mm_mask3_fmadd_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7826 __m128d test_mm_mask3_fmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7827 // CHECK-LABEL: @test_mm_mask3_fmadd_round_sd
7828 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7829 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7830 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
7831 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7832 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7833 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7834 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
7835 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7836 return _mm_mask3_fmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7837 }
7838
test_mm_mask_fmsub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7839 __m128d test_mm_mask_fmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7840 // CHECK-LABEL: @test_mm_mask_fmsub_sd
7841 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7842 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7843 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7844 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7845 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7846 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7847 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7848 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7849 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7850 return _mm_mask_fmsub_sd(__W, __U, __A, __B);
7851 }
7852
test_mm_fmsub_round_sd(__m128d __A,__m128d __B,__m128d __C)7853 __m128d test_mm_fmsub_round_sd(__m128d __A, __m128d __B, __m128d __C){
7854 // CHECK-LABEL: @test_mm_fmsub_round_sd
7855 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7856 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7857 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7858 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7859 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7860 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7861 return _mm_fmsub_round_sd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7862 }
7863
test_mm_mask_fmsub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7864 __m128d test_mm_mask_fmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7865 // CHECK-LABEL: @test_mm_mask_fmsub_round_sd
7866 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7867 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7868 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7869 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7870 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7871 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7872 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7873 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7874 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7875 return _mm_mask_fmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7876 }
7877
test_mm_maskz_fmsub_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7878 __m128d test_mm_maskz_fmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7879 // CHECK-LABEL: @test_mm_maskz_fmsub_sd
7880 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7881 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7882 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7883 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7884 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7885 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7886 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7887 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7888 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7889 return _mm_maskz_fmsub_sd(__U, __A, __B, __C);
7890 }
7891
test_mm_maskz_fmsub_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7892 __m128d test_mm_maskz_fmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7893 // CHECK-LABEL: @test_mm_maskz_fmsub_round_sd
7894 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7895 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7896 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7897 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7898 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7899 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7900 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7901 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7902 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7903 return _mm_maskz_fmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7904 }
7905
test_mm_mask3_fmsub_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7906 __m128d test_mm_mask3_fmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7907 // CHECK-LABEL: @test_mm_mask3_fmsub_sd
7908 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ORIGC:%.+]]
7909 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7910 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7911 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7912 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7913 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
7914 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7915 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7916 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
7917 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7918 return _mm_mask3_fmsub_sd(__W, __X, __Y, __U);
7919 }
7920
test_mm_mask3_fmsub_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)7921 __m128d test_mm_mask3_fmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
7922 // CHECK-LABEL: @test_mm_mask3_fmsub_round_sd
7923 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ORIGC:%.+]]
7924 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7925 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7926 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7927 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7928 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
7929 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7930 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7931 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
7932 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
7933 return _mm_mask3_fmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7934 }
7935
test_mm_mask_fnmadd_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7936 __m128d test_mm_mask_fnmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7937 // CHECK-LABEL: @test_mm_mask_fnmadd_sd
7938 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7939 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7940 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7941 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7942 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7943 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7944 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7945 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7946 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7947 return _mm_mask_fnmadd_sd(__W, __U, __A, __B);
7948 }
7949
test_mm_fnmadd_round_sd(__m128d __A,__m128d __B,__m128d __C)7950 __m128d test_mm_fnmadd_round_sd(__m128d __A, __m128d __B, __m128d __C){
7951 // CHECK-LABEL: @test_mm_fnmadd_round_sd
7952 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7953 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7954 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7955 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7956 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7957 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
7958 return _mm_fnmadd_round_sd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7959 }
7960
test_mm_mask_fnmadd_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)7961 __m128d test_mm_mask_fnmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
7962 // CHECK-LABEL: @test_mm_mask_fnmadd_round_sd
7963 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7964 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7965 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7966 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7967 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7968 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7969 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7970 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
7971 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7972 return _mm_mask_fnmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
7973 }
7974
test_mm_maskz_fnmadd_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7975 __m128d test_mm_maskz_fnmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7976 // CHECK-LABEL: @test_mm_maskz_fnmadd_sd
7977 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7978 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7979 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7980 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7981 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
7982 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7983 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7984 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7985 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
7986 return _mm_maskz_fnmadd_sd(__U, __A, __B, __C);
7987 }
7988
test_mm_maskz_fnmadd_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)7989 __m128d test_mm_maskz_fnmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
7990 // CHECK-LABEL: @test_mm_maskz_fnmadd_round_sd
7991 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
7992 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.+]], i64 0
7993 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
7994 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
7995 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
7996 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
7997 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
7998 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
7999 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8000 return _mm_maskz_fnmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8001 }
8002
test_mm_mask3_fnmadd_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8003 __m128d test_mm_mask3_fnmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8004 // CHECK-LABEL: @test_mm_mask3_fnmadd_sd
8005 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8006 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8007 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8008 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
8009 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8010 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8011 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8012 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
8013 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8014 return _mm_mask3_fnmadd_sd(__W, __X, __Y, __U);
8015 }
8016
test_mm_mask3_fnmadd_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8017 __m128d test_mm_mask3_fnmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8018 // CHECK-LABEL: @test_mm_mask3_fnmadd_round_sd
8019 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8020 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8021 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8022 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[ORIGC:%.+]], i64 0
8023 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8024 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8025 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8026 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C]]
8027 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8028 return _mm_mask3_fnmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8029 }
8030
test_mm_mask_fnmsub_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)8031 __m128d test_mm_mask_fnmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
8032 // CHECK-LABEL: @test_mm_mask_fnmsub_sd
8033 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8034 // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8035 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8036 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8037 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8038 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8039 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8040 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8041 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8042 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8043 return _mm_mask_fnmsub_sd(__W, __U, __A, __B);
8044 }
8045
test_mm_fnmsub_round_sd(__m128d __A,__m128d __B,__m128d __C)8046 __m128d test_mm_fnmsub_round_sd(__m128d __A, __m128d __B, __m128d __C){
8047 // CHECK-LABEL: @test_mm_fnmsub_round_sd
8048 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8049 // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8050 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8051 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8052 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8053 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8054 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[FMA]], i64 0
8055 return _mm_fnmsub_round_sd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8056 }
8057
test_mm_mask_fnmsub_round_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)8058 __m128d test_mm_mask_fnmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){
8059 // CHECK-LABEL: @test_mm_mask_fnmsub_round_sd
8060 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8061 // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8062 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8063 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8064 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8065 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8066 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8067 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8068 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[A]]
8069 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8070 return _mm_mask_fnmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8071 }
8072
test_mm_maskz_fnmsub_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8073 __m128d test_mm_maskz_fnmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8074 // CHECK-LABEL: @test_mm_maskz_fnmsub_sd
8075 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8076 // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8077 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8078 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8079 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8080 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8081 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8082 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8083 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8084 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8085 return _mm_maskz_fnmsub_sd(__U, __A, __B, __C);
8086 }
8087
test_mm_maskz_fnmsub_round_sd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)8088 __m128d test_mm_maskz_fnmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){
8089 // CHECK-LABEL: @test_mm_maskz_fnmsub_round_sd
8090 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8091 // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8092 // CHECK: [[A:%.+]] = extractelement <2 x double> [[ORIGA:%.]], i64 0
8093 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8094 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8095 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8096 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8097 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8098 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double 0.000000e+00
8099 // CHECK-NEXT: insertelement <2 x double> [[ORIGA]], double [[SEL]], i64 0
8100 return _mm_maskz_fnmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8101 }
8102
test_mm_mask3_fnmsub_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8103 __m128d test_mm_mask3_fnmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8104 // CHECK-LABEL: @test_mm_mask3_fnmsub_sd
8105 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8106 // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ORIGC:%.+]]
8107 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8108 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8109 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8110 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.fma.f64(double [[A]], double [[B]], double [[C]])
8111 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8112 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8113 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8114 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8115 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8116 return _mm_mask3_fnmsub_sd(__W, __X, __Y, __U);
8117 }
8118
test_mm_mask3_fnmsub_round_sd(__m128d __W,__m128d __X,__m128d __Y,__mmask8 __U)8119 __m128d test_mm_mask3_fnmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){
8120 // CHECK-LABEL: @test_mm_mask3_fnmsub_round_sd
8121 // CHECK: [[NEG:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
8122 // CHECK: [[NEG2:%.+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ORIGC:%.+]]
8123 // CHECK: [[A:%.+]] = extractelement <2 x double> %{{.*}}, i64 0
8124 // CHECK-NEXT: [[B:%.+]] = extractelement <2 x double> [[NEG]], i64 0
8125 // CHECK-NEXT: [[C:%.+]] = extractelement <2 x double> [[NEG2]], i64 0
8126 // CHECK-NEXT: [[FMA:%.+]] = call double @llvm.x86.avx512.vfmadd.f64(double [[A]], double [[B]], double [[C]], i32 8)
8127 // CHECK-NEXT: [[C2:%.+]] = extractelement <2 x double> [[ORIGC]], i64 0
8128 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
8129 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
8130 // CHECK-NEXT: [[SEL:%.+]] = select i1 %{{.*}}, double [[FMA]], double [[C2]]
8131 // CHECK-NEXT: insertelement <2 x double> [[ORIGC]], double [[SEL]], i64 0
8132 return _mm_mask3_fnmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
8133 }
8134
test_mm512_permutex_pd(__m512d __X)8135 __m512d test_mm512_permutex_pd(__m512d __X) {
8136 // CHECK-LABEL: @test_mm512_permutex_pd
8137 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8138 return _mm512_permutex_pd(__X, 0);
8139 }
8140
test_mm512_mask_permutex_pd(__m512d __W,__mmask8 __U,__m512d __X)8141 __m512d test_mm512_mask_permutex_pd(__m512d __W, __mmask8 __U, __m512d __X) {
8142 // CHECK-LABEL: @test_mm512_mask_permutex_pd
8143 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8144 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8145 return _mm512_mask_permutex_pd(__W, __U, __X, 0);
8146 }
8147
test_mm512_maskz_permutex_pd(__mmask8 __U,__m512d __X)8148 __m512d test_mm512_maskz_permutex_pd(__mmask8 __U, __m512d __X) {
8149 // CHECK-LABEL: @test_mm512_maskz_permutex_pd
8150 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8151 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8152 return _mm512_maskz_permutex_pd(__U, __X, 0);
8153 }
8154
test_mm512_permutex_epi64(__m512i __X)8155 __m512i test_mm512_permutex_epi64(__m512i __X) {
8156 // CHECK-LABEL: @test_mm512_permutex_epi64
8157 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8158 return _mm512_permutex_epi64(__X, 0);
8159 }
8160
test_mm512_mask_permutex_epi64(__m512i __W,__mmask8 __M,__m512i __X)8161 __m512i test_mm512_mask_permutex_epi64(__m512i __W, __mmask8 __M, __m512i __X) {
8162 // CHECK-LABEL: @test_mm512_mask_permutex_epi64
8163 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8164 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8165 return _mm512_mask_permutex_epi64(__W, __M, __X, 0);
8166 }
8167
test_mm512_maskz_permutex_epi64(__mmask8 __M,__m512i __X)8168 __m512i test_mm512_maskz_permutex_epi64(__mmask8 __M, __m512i __X) {
8169 // CHECK-LABEL: @test_mm512_maskz_permutex_epi64
8170 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4>
8171 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8172 return _mm512_maskz_permutex_epi64(__M, __X, 0);
8173 }
8174
test_mm512_permutexvar_pd(__m512i __X,__m512d __Y)8175 __m512d test_mm512_permutexvar_pd(__m512i __X, __m512d __Y) {
8176 // CHECK-LABEL: @test_mm512_permutexvar_pd
8177 // CHECK: @llvm.x86.avx512.permvar.df.512
8178 return _mm512_permutexvar_pd(__X, __Y);
8179 }
8180
test_mm512_mask_permutexvar_pd(__m512d __W,__mmask8 __U,__m512i __X,__m512d __Y)8181 __m512d test_mm512_mask_permutexvar_pd(__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y) {
8182 // CHECK-LABEL: @test_mm512_mask_permutexvar_pd
8183 // CHECK: @llvm.x86.avx512.permvar.df.512
8184 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8185 return _mm512_mask_permutexvar_pd(__W, __U, __X, __Y);
8186 }
8187
test_mm512_maskz_permutexvar_pd(__mmask8 __U,__m512i __X,__m512d __Y)8188 __m512d test_mm512_maskz_permutexvar_pd(__mmask8 __U, __m512i __X, __m512d __Y) {
8189 // CHECK-LABEL: @test_mm512_maskz_permutexvar_pd
8190 // CHECK: @llvm.x86.avx512.permvar.df.512
8191 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8192 return _mm512_maskz_permutexvar_pd(__U, __X, __Y);
8193 }
8194
test_mm512_maskz_permutexvar_epi64(__mmask8 __M,__m512i __X,__m512i __Y)8195 __m512i test_mm512_maskz_permutexvar_epi64(__mmask8 __M, __m512i __X, __m512i __Y) {
8196 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi64
8197 // CHECK: @llvm.x86.avx512.permvar.di.512
8198 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8199 return _mm512_maskz_permutexvar_epi64(__M, __X, __Y);
8200 }
8201
test_mm512_permutexvar_epi64(__m512i __X,__m512i __Y)8202 __m512i test_mm512_permutexvar_epi64(__m512i __X, __m512i __Y) {
8203 // CHECK-LABEL: @test_mm512_permutexvar_epi64
8204 // CHECK: @llvm.x86.avx512.permvar.di.512
8205 return _mm512_permutexvar_epi64(__X, __Y);
8206 }
8207
test_mm512_mask_permutexvar_epi64(__m512i __W,__mmask8 __M,__m512i __X,__m512i __Y)8208 __m512i test_mm512_mask_permutexvar_epi64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
8209 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi64
8210 // CHECK: @llvm.x86.avx512.permvar.di.512
8211 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
8212 return _mm512_mask_permutexvar_epi64(__W, __M, __X, __Y);
8213 }
8214
test_mm512_permutexvar_ps(__m512i __X,__m512 __Y)8215 __m512 test_mm512_permutexvar_ps(__m512i __X, __m512 __Y) {
8216 // CHECK-LABEL: @test_mm512_permutexvar_ps
8217 // CHECK: @llvm.x86.avx512.permvar.sf.512
8218 return _mm512_permutexvar_ps(__X, __Y);
8219 }
8220
test_mm512_mask_permutexvar_ps(__m512 __W,__mmask16 __U,__m512i __X,__m512 __Y)8221 __m512 test_mm512_mask_permutexvar_ps(__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y) {
8222 // CHECK-LABEL: @test_mm512_mask_permutexvar_ps
8223 // CHECK: @llvm.x86.avx512.permvar.sf.512
8224 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8225 return _mm512_mask_permutexvar_ps(__W, __U, __X, __Y);
8226 }
8227
test_mm512_maskz_permutexvar_ps(__mmask16 __U,__m512i __X,__m512 __Y)8228 __m512 test_mm512_maskz_permutexvar_ps(__mmask16 __U, __m512i __X, __m512 __Y) {
8229 // CHECK-LABEL: @test_mm512_maskz_permutexvar_ps
8230 // CHECK: @llvm.x86.avx512.permvar.sf.512
8231 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8232 return _mm512_maskz_permutexvar_ps(__U, __X, __Y);
8233 }
8234
test_mm512_maskz_permutexvar_epi32(__mmask16 __M,__m512i __X,__m512i __Y)8235 __m512i test_mm512_maskz_permutexvar_epi32(__mmask16 __M, __m512i __X, __m512i __Y) {
8236 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi32
8237 // CHECK: @llvm.x86.avx512.permvar.si.512
8238 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8239 return _mm512_maskz_permutexvar_epi32(__M, __X, __Y);
8240 }
8241
test_mm512_permutexvar_epi32(__m512i __X,__m512i __Y)8242 __m512i test_mm512_permutexvar_epi32(__m512i __X, __m512i __Y) {
8243 // CHECK-LABEL: @test_mm512_permutexvar_epi32
8244 // CHECK: @llvm.x86.avx512.permvar.si.512
8245 return _mm512_permutexvar_epi32(__X, __Y);
8246 }
8247
test_mm512_mask_permutexvar_epi32(__m512i __W,__mmask16 __M,__m512i __X,__m512i __Y)8248 __m512i test_mm512_mask_permutexvar_epi32(__m512i __W, __mmask16 __M, __m512i __X, __m512i __Y) {
8249 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi32
8250 // CHECK: @llvm.x86.avx512.permvar.si.512
8251 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8252 return _mm512_mask_permutexvar_epi32(__W, __M, __X, __Y);
8253 }
8254
test_mm512_kand(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8255 __mmask16 test_mm512_kand(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8256 // CHECK-LABEL: @test_mm512_kand
8257 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8258 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8259 // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8260 // CHECK: bitcast <16 x i1> [[RES]] to i16
8261 return _mm512_mask_cmpneq_epu32_mask(_mm512_kand(_mm512_cmpneq_epu32_mask(__A, __B),
8262 _mm512_cmpneq_epu32_mask(__C, __D)),
8263 __E, __F);
8264 }
8265
test_mm512_kandn(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8266 __mmask16 test_mm512_kandn(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8267 // CHECK-LABEL: @test_mm512_kandn
8268 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8269 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8270 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8271 // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8272 // CHECK: bitcast <16 x i1> [[RES]] to i16
8273 return _mm512_mask_cmpneq_epu32_mask(_mm512_kandn(_mm512_cmpneq_epu32_mask(__A, __B),
8274 _mm512_cmpneq_epu32_mask(__C, __D)),
8275 __E, __F);
8276 }
8277
test_mm512_kor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8278 __mmask16 test_mm512_kor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8279 // CHECK-LABEL: @test_mm512_kor
8280 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8281 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8282 // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8283 // CHECK: bitcast <16 x i1> [[RES]] to i16
8284 return _mm512_mask_cmpneq_epu32_mask(_mm512_kor(_mm512_cmpneq_epu32_mask(__A, __B),
8285 _mm512_cmpneq_epu32_mask(__C, __D)),
8286 __E, __F);
8287 }
8288
test_mm512_kortestc(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8289 int test_mm512_kortestc(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8290 // CHECK-LABEL: @test_mm512_kortestc
8291 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8292 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8293 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8294 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8295 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8296 // CHECK: zext i1 [[CMP]] to i32
8297 return _mm512_kortestc(_mm512_cmpneq_epu32_mask(__A, __B),
8298 _mm512_cmpneq_epu32_mask(__C, __D));
8299 }
8300
test_mm512_kortestz(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8301 int test_mm512_kortestz(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8302 // CHECK-LABEL: @test_mm512_kortestz
8303 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8304 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8305 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8306 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8307 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8308 // CHECK: zext i1 [[CMP]] to i32
8309 return _mm512_kortestz(_mm512_cmpneq_epu32_mask(__A, __B),
8310 _mm512_cmpneq_epu32_mask(__C, __D));
8311 }
8312
test_kortestz_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8313 unsigned char test_kortestz_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8314 // CHECK-LABEL: @test_kortestz_mask16_u8
8315 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8316 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8317 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8318 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8319 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], 0
8320 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8321 // CHECK: trunc i32 [[ZEXT]] to i8
8322 return _kortestz_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8323 _mm512_cmpneq_epu32_mask(__C, __D));
8324 }
8325
test_kortestc_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D)8326 unsigned char test_kortestc_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D) {
8327 // CHECK-LABEL: @test_kortestc_mask16_u8
8328 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8329 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8330 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8331 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8332 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8333 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8334 // CHECK: trunc i32 [[ZEXT]] to i8
8335 return _kortestc_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8336 _mm512_cmpneq_epu32_mask(__C, __D));
8337 }
8338
test_kortest_mask16_u8(__m512i __A,__m512i __B,__m512i __C,__m512i __D,unsigned char * CF)8339 unsigned char test_kortest_mask16_u8(__m512i __A, __m512i __B, __m512i __C, __m512i __D, unsigned char *CF) {
8340 // CHECK-LABEL: @test_kortest_mask16_u8
8341 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8342 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8343 // CHECK: [[OR:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8344 // CHECK: [[CAST:%.*]] = bitcast <16 x i1> [[OR]] to i16
8345 // CHECK: [[CMP:%.*]] = icmp eq i16 [[CAST]], -1
8346 // CHECK: [[ZEXT:%.*]] = zext i1 [[CMP]] to i32
8347 // CHECK: trunc i32 [[ZEXT]] to i8
8348 // CHECK: [[LHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8349 // CHECK: [[RHS2:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8350 // CHECK: [[OR2:%.*]] = or <16 x i1> [[LHS2]], [[RHS2]]
8351 // CHECK: [[CAST2:%.*]] = bitcast <16 x i1> [[OR2]] to i16
8352 // CHECK: [[CMP2:%.*]] = icmp eq i16 [[CAST2]], 0
8353 // CHECK: [[ZEXT2:%.*]] = zext i1 [[CMP2]] to i32
8354 // CHECK: trunc i32 [[ZEXT2]] to i8
8355 return _kortest_mask16_u8(_mm512_cmpneq_epu32_mask(__A, __B),
8356 _mm512_cmpneq_epu32_mask(__C, __D), CF);
8357 }
8358
test_mm512_kunpackb(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8359 __mmask16 test_mm512_kunpackb(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8360 // CHECK-LABEL: @test_mm512_kunpackb
8361 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8362 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8363 // CHECK: [[LHS2:%.*]] = shufflevector <16 x i1> [[LHS]], <16 x i1> [[LHS]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8364 // CHECK: [[RHS2:%.*]] = shufflevector <16 x i1> [[RHS]], <16 x i1> [[RHS]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8365 // CHECK: [[CONCAT:%.*]] = shufflevector <8 x i1> [[RHS2]], <8 x i1> [[LHS2]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
8366 // CHECK: bitcast <16 x i1> [[CONCAT]] to i16
8367 return _mm512_mask_cmpneq_epu32_mask(_mm512_kunpackb(_mm512_cmpneq_epu32_mask(__A, __B),
8368 _mm512_cmpneq_epu32_mask(__C, __D)),
8369 __E, __F);
8370 }
8371
test_mm512_kxnor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8372 __mmask16 test_mm512_kxnor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8373 // CHECK-LABEL: @test_mm512_kxnor
8374 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8375 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8376 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8377 // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8378 // CHECK: bitcast <16 x i1> [[RES]] to i16
8379 return _mm512_mask_cmpneq_epu32_mask(_mm512_kxnor(_mm512_cmpneq_epu32_mask(__A, __B),
8380 _mm512_cmpneq_epu32_mask(__C, __D)),
8381 __E, __F);
8382 }
8383
test_mm512_kxor(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8384 __mmask16 test_mm512_kxor(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8385 // CHECK-LABEL: @test_mm512_kxor
8386 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8387 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8388 // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8389 // CHECK: bitcast <16 x i1> [[RES]] to i16
8390 return _mm512_mask_cmpneq_epu32_mask(_mm512_kxor(_mm512_cmpneq_epu32_mask(__A, __B),
8391 _mm512_cmpneq_epu32_mask(__C, __D)),
8392 __E, __F);
8393 }
8394
test_knot_mask16(__mmask16 a)8395 __mmask16 test_knot_mask16(__mmask16 a) {
8396 // CHECK-LABEL: @test_knot_mask16
8397 // CHECK: [[IN:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8398 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[IN]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8399 // CHECK: bitcast <16 x i1> [[NOT]] to i16
8400 return _knot_mask16(a);
8401 }
8402
test_kand_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8403 __mmask16 test_kand_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8404 // CHECK-LABEL: @test_kand_mask16
8405 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8406 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8407 // CHECK: [[RES:%.*]] = and <16 x i1> [[LHS]], [[RHS]]
8408 // CHECK: bitcast <16 x i1> [[RES]] to i16
8409 return _mm512_mask_cmpneq_epu32_mask(_kand_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8410 _mm512_cmpneq_epu32_mask(__C, __D)),
8411 __E, __F);
8412 }
8413
test_kandn_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8414 __mmask16 test_kandn_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8415 // CHECK-LABEL: @test_kandn_mask16
8416 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8417 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8418 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8419 // CHECK: [[RES:%.*]] = and <16 x i1> [[NOT]], [[RHS]]
8420 // CHECK: bitcast <16 x i1> [[RES]] to i16
8421 return _mm512_mask_cmpneq_epu32_mask(_kandn_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8422 _mm512_cmpneq_epu32_mask(__C, __D)),
8423 __E, __F);
8424 }
8425
test_kor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8426 __mmask16 test_kor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8427 // CHECK-LABEL: @test_kor_mask16
8428 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8429 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8430 // CHECK: [[RES:%.*]] = or <16 x i1> [[LHS]], [[RHS]]
8431 // CHECK: bitcast <16 x i1> [[RES]] to i16
8432 return _mm512_mask_cmpneq_epu32_mask(_kor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8433 _mm512_cmpneq_epu32_mask(__C, __D)),
8434 __E, __F);
8435 }
8436
test_kxnor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8437 __mmask16 test_kxnor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8438 // CHECK-LABEL: @test_kxnor_mask16
8439 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8440 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8441 // CHECK: [[NOT:%.*]] = xor <16 x i1> [[LHS]], <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
8442 // CHECK: [[RES:%.*]] = xor <16 x i1> [[NOT]], [[RHS]]
8443 // CHECK: bitcast <16 x i1> [[RES]] to i16
8444 return _mm512_mask_cmpneq_epu32_mask(_kxnor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8445 _mm512_cmpneq_epu32_mask(__C, __D)),
8446 __E, __F);
8447 }
8448
test_kxor_mask16(__m512i __A,__m512i __B,__m512i __C,__m512i __D,__m512i __E,__m512i __F)8449 __mmask16 test_kxor_mask16(__m512i __A, __m512i __B, __m512i __C, __m512i __D, __m512i __E, __m512i __F) {
8450 // CHECK-LABEL: @test_kxor_mask16
8451 // CHECK: [[LHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8452 // CHECK: [[RHS:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8453 // CHECK: [[RES:%.*]] = xor <16 x i1> [[LHS]], [[RHS]]
8454 // CHECK: bitcast <16 x i1> [[RES]] to i16
8455 return _mm512_mask_cmpneq_epu32_mask(_kxor_mask16(_mm512_cmpneq_epu32_mask(__A, __B),
8456 _mm512_cmpneq_epu32_mask(__C, __D)),
8457 __E, __F);
8458 }
8459
test_kshiftli_mask16(__m512i A,__m512i B,__m512i C,__m512i D)8460 __mmask16 test_kshiftli_mask16(__m512i A, __m512i B, __m512i C, __m512i D) {
8461 // CHECK-LABEL: @test_kshiftli_mask16
8462 // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8463 // CHECK: [[RES:%.*]] = shufflevector <16 x i1> zeroinitializer, <16 x i1> [[VAL]], <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
8464 // CHECK: bitcast <16 x i1> [[RES]] to i16
8465 return _mm512_mask_cmpneq_epu32_mask(_kshiftli_mask16(_mm512_cmpneq_epu32_mask(A, B), 1), C, D);
8466 }
8467
test_kshiftri_mask16(__m512i A,__m512i B,__m512i C,__m512i D)8468 __mmask16 test_kshiftri_mask16(__m512i A, __m512i B, __m512i C, __m512i D) {
8469 // CHECK-LABEL: @test_kshiftri_mask16
8470 // CHECK: [[VAL:%.*]] = bitcast i16 %{{.*}} to <16 x i1>
8471 // CHECK: [[RES:%.*]] = shufflevector <16 x i1> [[VAL]], <16 x i1> zeroinitializer, <16 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16>
8472 // CHECK: bitcast <16 x i1> [[RES]] to i16
8473 return _mm512_mask_cmpneq_epu32_mask(_kshiftri_mask16(_mm512_cmpneq_epu32_mask(A, B), 1), C, D);
8474 }
8475
test_cvtmask16_u32(__m512i A,__m512i B)8476 unsigned int test_cvtmask16_u32(__m512i A, __m512i B) {
8477 // CHECK-LABEL: @test_cvtmask16_u32
8478 // CHECK: bitcast <16 x i1> %{{.*}} to i16
8479 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8480 // CHECK: zext i16 %{{.*}} to i32
8481 return _cvtmask16_u32(_mm512_cmpneq_epu32_mask(A, B));
8482 }
8483
test_cvtu32_mask16(__m512i A,__m512i B,unsigned int C)8484 __mmask16 test_cvtu32_mask16(__m512i A, __m512i B, unsigned int C) {
8485 // CHECK-LABEL: @test_cvtu32_mask16
8486 // CHECK: trunc i32 %{{.*}} to i16
8487 // CHECK: bitcast i16 %{{.*}} to <16 x i1>
8488 return _mm512_mask_cmpneq_epu32_mask(_cvtu32_mask16(C), A, B);
8489 }
8490
test_load_mask16(__mmask16 * A,__m512i B,__m512i C)8491 __mmask16 test_load_mask16(__mmask16 *A, __m512i B, __m512i C) {
8492 // CHECK-LABEL: @test_load_mask16
8493 // CHECK: [[LOAD:%.*]] = load i16, i16* %{{.*}}
8494 // CHECK: bitcast i16 [[LOAD]] to <16 x i1>
8495 return _mm512_mask_cmpneq_epu32_mask(_load_mask16(A), B, C);
8496 }
8497
test_store_mask16(__mmask16 * A,__m512i B,__m512i C)8498 void test_store_mask16(__mmask16 *A, __m512i B, __m512i C) {
8499 // CHECK-LABEL: @test_store_mask16
8500 // CHECK: bitcast <16 x i1> %{{.*}} to i16
8501 // CHECK: store i16 %{{.*}}, i16* %{{.*}}
8502 _store_mask16(A, _mm512_cmpneq_epu32_mask(B, C));
8503 }
8504
test_mm512_stream_si512(__m512i * __P,__m512i __A)8505 void test_mm512_stream_si512(__m512i * __P, __m512i __A) {
8506 // CHECK-LABEL: @test_mm512_stream_si512
8507 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 64, !nontemporal
8508 _mm512_stream_si512(__P, __A);
8509 }
8510
test_mm512_stream_load_si512(void * __P)8511 __m512i test_mm512_stream_load_si512(void *__P) {
8512 // CHECK-LABEL: @test_mm512_stream_load_si512
8513 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal
8514 return _mm512_stream_load_si512(__P);
8515 }
8516
test_mm512_stream_load_si512_const(void const * __P)8517 __m512i test_mm512_stream_load_si512_const(void const *__P) {
8518 // CHECK-LABEL: @test_mm512_stream_load_si512_const
8519 // CHECK: load <8 x i64>, <8 x i64>* %{{.*}}, align 64, !nontemporal
8520 return _mm512_stream_load_si512(__P);
8521 }
8522
test_mm512_stream_pd(double * __P,__m512d __A)8523 void test_mm512_stream_pd(double *__P, __m512d __A) {
8524 // CHECK-LABEL: @test_mm512_stream_pd
8525 // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 64, !nontemporal
8526 return _mm512_stream_pd(__P, __A);
8527 }
8528
test_mm512_stream_ps(float * __P,__m512 __A)8529 void test_mm512_stream_ps(float *__P, __m512 __A) {
8530 // CHECK-LABEL: @test_mm512_stream_ps
8531 // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal
8532 _mm512_stream_ps(__P, __A);
8533 }
8534
test_mm512_mask_compress_pd(__m512d __W,__mmask8 __U,__m512d __A)8535 __m512d test_mm512_mask_compress_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8536 // CHECK-LABEL: @test_mm512_mask_compress_pd
8537 // CHECK: @llvm.x86.avx512.mask.compress.pd.512
8538 return _mm512_mask_compress_pd(__W, __U, __A);
8539 }
8540
test_mm512_maskz_compress_pd(__mmask8 __U,__m512d __A)8541 __m512d test_mm512_maskz_compress_pd(__mmask8 __U, __m512d __A) {
8542 // CHECK-LABEL: @test_mm512_maskz_compress_pd
8543 // CHECK: @llvm.x86.avx512.mask.compress.pd.512
8544 return _mm512_maskz_compress_pd(__U, __A);
8545 }
8546
test_mm512_mask_compress_epi64(__m512i __W,__mmask8 __U,__m512i __A)8547 __m512i test_mm512_mask_compress_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
8548 // CHECK-LABEL: @test_mm512_mask_compress_epi64
8549 // CHECK: @llvm.x86.avx512.mask.compress.q.512
8550 return _mm512_mask_compress_epi64(__W, __U, __A);
8551 }
8552
test_mm512_maskz_compress_epi64(__mmask8 __U,__m512i __A)8553 __m512i test_mm512_maskz_compress_epi64(__mmask8 __U, __m512i __A) {
8554 // CHECK-LABEL: @test_mm512_maskz_compress_epi64
8555 // CHECK: @llvm.x86.avx512.mask.compress.q.512
8556 return _mm512_maskz_compress_epi64(__U, __A);
8557 }
8558
test_mm512_mask_compress_ps(__m512 __W,__mmask16 __U,__m512 __A)8559 __m512 test_mm512_mask_compress_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8560 // CHECK-LABEL: @test_mm512_mask_compress_ps
8561 // CHECK: @llvm.x86.avx512.mask.compress.ps.512
8562 return _mm512_mask_compress_ps(__W, __U, __A);
8563 }
8564
test_mm512_maskz_compress_ps(__mmask16 __U,__m512 __A)8565 __m512 test_mm512_maskz_compress_ps(__mmask16 __U, __m512 __A) {
8566 // CHECK-LABEL: @test_mm512_maskz_compress_ps
8567 // CHECK: @llvm.x86.avx512.mask.compress.ps.512
8568 return _mm512_maskz_compress_ps(__U, __A);
8569 }
8570
test_mm512_mask_compress_epi32(__m512i __W,__mmask16 __U,__m512i __A)8571 __m512i test_mm512_mask_compress_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8572 // CHECK-LABEL: @test_mm512_mask_compress_epi32
8573 // CHECK: @llvm.x86.avx512.mask.compress.d.512
8574 return _mm512_mask_compress_epi32(__W, __U, __A);
8575 }
8576
test_mm512_maskz_compress_epi32(__mmask16 __U,__m512i __A)8577 __m512i test_mm512_maskz_compress_epi32(__mmask16 __U, __m512i __A) {
8578 // CHECK-LABEL: @test_mm512_maskz_compress_epi32
8579 // CHECK: @llvm.x86.avx512.mask.compress.d.512
8580 return _mm512_maskz_compress_epi32(__U, __A);
8581 }
8582
test_mm_cmp_round_ss_mask(__m128 __X,__m128 __Y)8583 __mmask8 test_mm_cmp_round_ss_mask(__m128 __X, __m128 __Y) {
8584 // CHECK-LABEL: @test_mm_cmp_round_ss_mask
8585 // CHECK: @llvm.x86.avx512.mask.cmp
8586 return _mm_cmp_round_ss_mask(__X, __Y, 5, _MM_FROUND_CUR_DIRECTION);
8587 }
8588
test_mm_mask_cmp_round_ss_mask(__mmask8 __M,__m128 __X,__m128 __Y)8589 __mmask8 test_mm_mask_cmp_round_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
8590 // CHECK-LABEL: @test_mm_mask_cmp_round_ss_mask
8591 // CHECK: @llvm.x86.avx512.mask.cmp
8592 return _mm_mask_cmp_round_ss_mask(__M, __X, __Y, 5, _MM_FROUND_CUR_DIRECTION);
8593 }
8594
test_mm_cmp_ss_mask(__m128 __X,__m128 __Y)8595 __mmask8 test_mm_cmp_ss_mask(__m128 __X, __m128 __Y) {
8596 // CHECK-LABEL: @test_mm_cmp_ss_mask
8597 // CHECK: @llvm.x86.avx512.mask.cmp
8598 return _mm_cmp_ss_mask(__X, __Y, 5);
8599 }
8600
test_mm_mask_cmp_ss_mask(__mmask8 __M,__m128 __X,__m128 __Y)8601 __mmask8 test_mm_mask_cmp_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) {
8602 // CHECK-LABEL: @test_mm_mask_cmp_ss_mask
8603 // CHECK: @llvm.x86.avx512.mask.cmp
8604 return _mm_mask_cmp_ss_mask(__M, __X, __Y, 5);
8605 }
8606
test_mm_cmp_round_sd_mask(__m128d __X,__m128d __Y)8607 __mmask8 test_mm_cmp_round_sd_mask(__m128d __X, __m128d __Y) {
8608 // CHECK-LABEL: @test_mm_cmp_round_sd_mask
8609 // CHECK: @llvm.x86.avx512.mask.cmp
8610 return _mm_cmp_round_sd_mask(__X, __Y, 5, _MM_FROUND_CUR_DIRECTION);
8611 }
8612
test_mm_mask_cmp_round_sd_mask(__mmask8 __M,__m128d __X,__m128d __Y)8613 __mmask8 test_mm_mask_cmp_round_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
8614 // CHECK-LABEL: @test_mm_mask_cmp_round_sd_mask
8615 // CHECK: @llvm.x86.avx512.mask.cmp
8616 return _mm_mask_cmp_round_sd_mask(__M, __X, __Y, 5, _MM_FROUND_CUR_DIRECTION);
8617 }
8618
test_mm_cmp_sd_mask(__m128d __X,__m128d __Y)8619 __mmask8 test_mm_cmp_sd_mask(__m128d __X, __m128d __Y) {
8620 // CHECK-LABEL: @test_mm_cmp_sd_mask
8621 // CHECK: @llvm.x86.avx512.mask.cmp
8622 return _mm_cmp_sd_mask(__X, __Y, 5);
8623 }
8624
test_mm_mask_cmp_sd_mask(__mmask8 __M,__m128d __X,__m128d __Y)8625 __mmask8 test_mm_mask_cmp_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) {
8626 // CHECK-LABEL: @test_mm_mask_cmp_sd_mask
8627 // CHECK: @llvm.x86.avx512.mask.cmp
8628 return _mm_mask_cmp_sd_mask(__M, __X, __Y, 5);
8629 }
8630
test_mm512_movehdup_ps(__m512 __A)8631 __m512 test_mm512_movehdup_ps(__m512 __A) {
8632 // CHECK-LABEL: @test_mm512_movehdup_ps
8633 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8634 return _mm512_movehdup_ps(__A);
8635 }
8636
test_mm512_mask_movehdup_ps(__m512 __W,__mmask16 __U,__m512 __A)8637 __m512 test_mm512_mask_movehdup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8638 // CHECK-LABEL: @test_mm512_mask_movehdup_ps
8639 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8640 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8641 return _mm512_mask_movehdup_ps(__W, __U, __A);
8642 }
8643
test_mm512_maskz_movehdup_ps(__mmask16 __U,__m512 __A)8644 __m512 test_mm512_maskz_movehdup_ps(__mmask16 __U, __m512 __A) {
8645 // CHECK-LABEL: @test_mm512_maskz_movehdup_ps
8646 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15>
8647 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8648 return _mm512_maskz_movehdup_ps(__U, __A);
8649 }
8650
test_mm512_moveldup_ps(__m512 __A)8651 __m512 test_mm512_moveldup_ps(__m512 __A) {
8652 // CHECK-LABEL: @test_mm512_moveldup_ps
8653 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8654 return _mm512_moveldup_ps(__A);
8655 }
8656
test_mm512_mask_moveldup_ps(__m512 __W,__mmask16 __U,__m512 __A)8657 __m512 test_mm512_mask_moveldup_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8658 // CHECK-LABEL: @test_mm512_mask_moveldup_ps
8659 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8660 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8661 return _mm512_mask_moveldup_ps(__W, __U, __A);
8662 }
8663
test_mm512_maskz_moveldup_ps(__mmask16 __U,__m512 __A)8664 __m512 test_mm512_maskz_moveldup_ps(__mmask16 __U, __m512 __A) {
8665 // CHECK-LABEL: @test_mm512_maskz_moveldup_ps
8666 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14>
8667 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8668 return _mm512_maskz_moveldup_ps(__U, __A);
8669 }
8670
test_mm512_shuffle_epi32(__m512i __A)8671 __m512i test_mm512_shuffle_epi32(__m512i __A) {
8672 // CHECK-LABEL: @test_mm512_shuffle_epi32
8673 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8674 return _mm512_shuffle_epi32(__A, 1);
8675 }
8676
test_mm512_mask_shuffle_epi32(__m512i __W,__mmask16 __U,__m512i __A)8677 __m512i test_mm512_mask_shuffle_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8678 // CHECK-LABEL: @test_mm512_mask_shuffle_epi32
8679 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8680 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8681 return _mm512_mask_shuffle_epi32(__W, __U, __A, 1);
8682 }
8683
test_mm512_maskz_shuffle_epi32(__mmask16 __U,__m512i __A)8684 __m512i test_mm512_maskz_shuffle_epi32(__mmask16 __U, __m512i __A) {
8685 // CHECK-LABEL: @test_mm512_maskz_shuffle_epi32
8686 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> undef, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12>
8687 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
8688 return _mm512_maskz_shuffle_epi32(__U, __A, 1);
8689 }
8690
test_mm512_mask_expand_pd(__m512d __W,__mmask8 __U,__m512d __A)8691 __m512d test_mm512_mask_expand_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8692 // CHECK-LABEL: @test_mm512_mask_expand_pd
8693 // CHECK: @llvm.x86.avx512.mask.expand.pd.512
8694 return _mm512_mask_expand_pd(__W, __U, __A);
8695 }
8696
test_mm512_maskz_expand_pd(__mmask8 __U,__m512d __A)8697 __m512d test_mm512_maskz_expand_pd(__mmask8 __U, __m512d __A) {
8698 // CHECK-LABEL: @test_mm512_maskz_expand_pd
8699 // CHECK: @llvm.x86.avx512.mask.expand.pd.512
8700 return _mm512_maskz_expand_pd(__U, __A);
8701 }
8702
test_mm512_mask_expand_epi64(__m512i __W,__mmask8 __U,__m512i __A)8703 __m512i test_mm512_mask_expand_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
8704 // CHECK-LABEL: @test_mm512_mask_expand_epi64
8705 // CHECK: @llvm.x86.avx512.mask.expand.q.512
8706 return _mm512_mask_expand_epi64(__W, __U, __A);
8707 }
8708
test_mm512_maskz_expand_epi64(__mmask8 __U,__m512i __A)8709 __m512i test_mm512_maskz_expand_epi64(__mmask8 __U, __m512i __A) {
8710 // CHECK-LABEL: @test_mm512_maskz_expand_epi64
8711 // CHECK: @llvm.x86.avx512.mask.expand.q.512
8712 return _mm512_maskz_expand_epi64(__U, __A);
8713 }
test_mm512_mask_expandloadu_epi64(__m512i __W,__mmask8 __U,void const * __P)8714 __m512i test_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P) {
8715 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi64
8716 // CHECK: @llvm.masked.expandload.v8i64(i64* %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8717 return _mm512_mask_expandloadu_epi64(__W, __U, __P);
8718 }
8719
test_mm512_maskz_expandloadu_epi64(__mmask8 __U,void const * __P)8720 __m512i test_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {
8721 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi64
8722 // CHECK: @llvm.masked.expandload.v8i64(i64* %{{.*}}, <8 x i1> %{{.*}}, <8 x i64> %{{.*}})
8723 return _mm512_maskz_expandloadu_epi64(__U, __P);
8724 }
8725
test_mm512_mask_expandloadu_pd(__m512d __W,__mmask8 __U,void const * __P)8726 __m512d test_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P) {
8727 // CHECK-LABEL: @test_mm512_mask_expandloadu_pd
8728 // CHECK: @llvm.masked.expandload.v8f64(double* %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8729 return _mm512_mask_expandloadu_pd(__W, __U, __P);
8730 }
8731
test_mm512_maskz_expandloadu_pd(__mmask8 __U,void const * __P)8732 __m512d test_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {
8733 // CHECK-LABEL: @test_mm512_maskz_expandloadu_pd
8734 // CHECK: @llvm.masked.expandload.v8f64(double* %{{.*}}, <8 x i1> %{{.*}}, <8 x double> %{{.*}})
8735 return _mm512_maskz_expandloadu_pd(__U, __P);
8736 }
8737
test_mm512_mask_expandloadu_epi32(__m512i __W,__mmask16 __U,void const * __P)8738 __m512i test_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P) {
8739 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi32
8740 // CHECK: @llvm.masked.expandload.v16i32(i32* %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8741 return _mm512_mask_expandloadu_epi32(__W, __U, __P);
8742 }
8743
test_mm512_maskz_expandloadu_epi32(__mmask16 __U,void const * __P)8744 __m512i test_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P) {
8745 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi32
8746 // CHECK: @llvm.masked.expandload.v16i32(i32* %{{.*}}, <16 x i1> %{{.*}}, <16 x i32> %{{.*}})
8747 return _mm512_maskz_expandloadu_epi32(__U, __P);
8748 }
8749
test_mm512_mask_expandloadu_ps(__m512 __W,__mmask16 __U,void const * __P)8750 __m512 test_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P) {
8751 // CHECK-LABEL: @test_mm512_mask_expandloadu_ps
8752 // CHECK: @llvm.masked.expandload.v16f32(float* %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8753 return _mm512_mask_expandloadu_ps(__W, __U, __P);
8754 }
8755
test_mm512_maskz_expandloadu_ps(__mmask16 __U,void const * __P)8756 __m512 test_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P) {
8757 // CHECK-LABEL: @test_mm512_maskz_expandloadu_ps
8758 // CHECK: @llvm.masked.expandload.v16f32(float* %{{.*}}, <16 x i1> %{{.*}}, <16 x float> %{{.*}})
8759 return _mm512_maskz_expandloadu_ps(__U, __P);
8760 }
8761
test_mm512_mask_expand_ps(__m512 __W,__mmask16 __U,__m512 __A)8762 __m512 test_mm512_mask_expand_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8763 // CHECK-LABEL: @test_mm512_mask_expand_ps
8764 // CHECK: @llvm.x86.avx512.mask.expand.ps.512
8765 return _mm512_mask_expand_ps(__W, __U, __A);
8766 }
8767
test_mm512_maskz_expand_ps(__mmask16 __U,__m512 __A)8768 __m512 test_mm512_maskz_expand_ps(__mmask16 __U, __m512 __A) {
8769 // CHECK-LABEL: @test_mm512_maskz_expand_ps
8770 // CHECK: @llvm.x86.avx512.mask.expand.ps.512
8771 return _mm512_maskz_expand_ps(__U, __A);
8772 }
8773
test_mm512_mask_expand_epi32(__m512i __W,__mmask16 __U,__m512i __A)8774 __m512i test_mm512_mask_expand_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
8775 // CHECK-LABEL: @test_mm512_mask_expand_epi32
8776 // CHECK: @llvm.x86.avx512.mask.expand.d.512
8777 return _mm512_mask_expand_epi32(__W, __U, __A);
8778 }
8779
test_mm512_maskz_expand_epi32(__mmask16 __U,__m512i __A)8780 __m512i test_mm512_maskz_expand_epi32(__mmask16 __U, __m512i __A) {
8781 // CHECK-LABEL: @test_mm512_maskz_expand_epi32
8782 // CHECK: @llvm.x86.avx512.mask.expand.d.512
8783 return _mm512_maskz_expand_epi32(__U, __A);
8784 }
test_mm512_cvt_roundps_pd(__m256 __A)8785 __m512d test_mm512_cvt_roundps_pd(__m256 __A) {
8786 // CHECK-LABEL: @test_mm512_cvt_roundps_pd
8787 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8788 return _mm512_cvt_roundps_pd(__A, _MM_FROUND_CUR_DIRECTION);
8789 }
8790
test_mm512_mask_cvt_roundps_pd(__m512d __W,__mmask8 __U,__m256 __A)8791 __m512d test_mm512_mask_cvt_roundps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
8792 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_pd
8793 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8794 return _mm512_mask_cvt_roundps_pd(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
8795 }
8796
test_mm512_maskz_cvt_roundps_pd(__mmask8 __U,__m256 __A)8797 __m512d test_mm512_maskz_cvt_roundps_pd(__mmask8 __U, __m256 __A) {
8798 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_pd
8799 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512
8800 return _mm512_maskz_cvt_roundps_pd(__U, __A, _MM_FROUND_CUR_DIRECTION);
8801 }
8802
test_mm512_cvtps_pd(__m256 __A)8803 __m512d test_mm512_cvtps_pd(__m256 __A) {
8804 // CHECK-LABEL: @test_mm512_cvtps_pd
8805 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8806 return _mm512_cvtps_pd(__A);
8807 }
8808
test_mm512_cvtpslo_pd(__m512 __A)8809 __m512d test_mm512_cvtpslo_pd(__m512 __A) {
8810 // CHECK-LABEL: @test_mm512_cvtpslo_pd
8811 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8812 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8813 return _mm512_cvtpslo_pd(__A);
8814 }
8815
test_mm512_mask_cvtps_pd(__m512d __W,__mmask8 __U,__m256 __A)8816 __m512d test_mm512_mask_cvtps_pd(__m512d __W, __mmask8 __U, __m256 __A) {
8817 // CHECK-LABEL: @test_mm512_mask_cvtps_pd
8818 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8819 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8820 return _mm512_mask_cvtps_pd(__W, __U, __A);
8821 }
8822
test_mm512_mask_cvtpslo_pd(__m512d __W,__mmask8 __U,__m512 __A)8823 __m512d test_mm512_mask_cvtpslo_pd(__m512d __W, __mmask8 __U, __m512 __A) {
8824 // CHECK-LABEL: @test_mm512_mask_cvtpslo_pd
8825 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
8826 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8827 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8828 return _mm512_mask_cvtpslo_pd(__W, __U, __A);
8829 }
8830
test_mm512_maskz_cvtps_pd(__mmask8 __U,__m256 __A)8831 __m512d test_mm512_maskz_cvtps_pd(__mmask8 __U, __m256 __A) {
8832 // CHECK-LABEL: @test_mm512_maskz_cvtps_pd
8833 // CHECK: fpext <8 x float> %{{.*}} to <8 x double>
8834 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8835 return _mm512_maskz_cvtps_pd(__U, __A);
8836 }
test_mm512_mask_mov_pd(__m512d __W,__mmask8 __U,__m512d __A)8837 __m512d test_mm512_mask_mov_pd(__m512d __W, __mmask8 __U, __m512d __A) {
8838 // CHECK-LABEL: @test_mm512_mask_mov_pd
8839 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8840 return _mm512_mask_mov_pd(__W, __U, __A);
8841 }
8842
test_mm512_maskz_mov_pd(__mmask8 __U,__m512d __A)8843 __m512d test_mm512_maskz_mov_pd(__mmask8 __U, __m512d __A) {
8844 // CHECK-LABEL: @test_mm512_maskz_mov_pd
8845 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
8846 return _mm512_maskz_mov_pd(__U, __A);
8847 }
8848
test_mm512_mask_mov_ps(__m512 __W,__mmask16 __U,__m512 __A)8849 __m512 test_mm512_mask_mov_ps(__m512 __W, __mmask16 __U, __m512 __A) {
8850 // CHECK-LABEL: @test_mm512_mask_mov_ps
8851 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8852 return _mm512_mask_mov_ps(__W, __U, __A);
8853 }
8854
test_mm512_maskz_mov_ps(__mmask16 __U,__m512 __A)8855 __m512 test_mm512_maskz_mov_ps(__mmask16 __U, __m512 __A) {
8856 // CHECK-LABEL: @test_mm512_maskz_mov_ps
8857 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
8858 return _mm512_maskz_mov_ps(__U, __A);
8859 }
8860
test_mm512_mask_compressstoreu_pd(void * __P,__mmask8 __U,__m512d __A)8861 void test_mm512_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m512d __A) {
8862 // CHECK-LABEL: @test_mm512_mask_compressstoreu_pd
8863 // CHECK: @llvm.masked.compressstore.v8f64(<8 x double> %{{.*}}, double* %{{.*}}, <8 x i1> %{{.*}})
8864 return _mm512_mask_compressstoreu_pd(__P, __U, __A);
8865 }
8866
test_mm512_mask_compressstoreu_epi64(void * __P,__mmask8 __U,__m512i __A)8867 void test_mm512_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m512i __A) {
8868 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi64
8869 // CHECK: @llvm.masked.compressstore.v8i64(<8 x i64> %{{.*}}, i64* %{{.*}}, <8 x i1> %{{.*}})
8870 return _mm512_mask_compressstoreu_epi64(__P, __U, __A);
8871 }
8872
test_mm512_mask_compressstoreu_ps(void * __P,__mmask16 __U,__m512 __A)8873 void test_mm512_mask_compressstoreu_ps(void *__P, __mmask16 __U, __m512 __A) {
8874 // CHECK-LABEL: @test_mm512_mask_compressstoreu_ps
8875 // CHECK: @llvm.masked.compressstore.v16f32(<16 x float> %{{.*}}, float* %{{.*}}, <16 x i1> %{{.*}})
8876 return _mm512_mask_compressstoreu_ps(__P, __U, __A);
8877 }
8878
test_mm512_mask_compressstoreu_epi32(void * __P,__mmask16 __U,__m512i __A)8879 void test_mm512_mask_compressstoreu_epi32(void *__P, __mmask16 __U, __m512i __A) {
8880 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi32
8881 // CHECK: @llvm.masked.compressstore.v16i32(<16 x i32> %{{.*}}, i32* %{{.*}}, <16 x i1> %{{.*}})
8882 return _mm512_mask_compressstoreu_epi32(__P, __U, __A);
8883 }
8884
test_mm512_cvtt_roundpd_epu32(__m512d __A)8885 __m256i test_mm512_cvtt_roundpd_epu32(__m512d __A) {
8886 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu32
8887 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8888 return _mm512_cvtt_roundpd_epu32(__A, _MM_FROUND_CUR_DIRECTION);
8889 }
8890
test_mm512_mask_cvtt_roundpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)8891 __m256i test_mm512_mask_cvtt_roundpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
8892 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu32
8893 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8894 return _mm512_mask_cvtt_roundpd_epu32(__W, __U, __A, _MM_FROUND_CUR_DIRECTION);
8895 }
8896
test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U,__m512d __A)8897 __m256i test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U, __m512d __A) {
8898 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu32
8899 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8900 return _mm512_maskz_cvtt_roundpd_epu32(__U, __A, _MM_FROUND_CUR_DIRECTION);
8901 }
8902
test_mm512_cvttpd_epu32(__m512d __A)8903 __m256i test_mm512_cvttpd_epu32(__m512d __A) {
8904 // CHECK-LABEL: @test_mm512_cvttpd_epu32
8905 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8906 return _mm512_cvttpd_epu32(__A);
8907 }
8908
test_mm512_mask_cvttpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)8909 __m256i test_mm512_mask_cvttpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {
8910 // CHECK-LABEL: @test_mm512_mask_cvttpd_epu32
8911 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8912 return _mm512_mask_cvttpd_epu32(__W, __U, __A);
8913 }
8914
test_mm512_maskz_cvttpd_epu32(__mmask8 __U,__m512d __A)8915 __m256i test_mm512_maskz_cvttpd_epu32(__mmask8 __U, __m512d __A) {
8916 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu32
8917 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512
8918 return _mm512_maskz_cvttpd_epu32(__U, __A);
8919 }
8920
test_mm512_castpd_ps(__m512d __A)8921 __m512 test_mm512_castpd_ps (__m512d __A)
8922 {
8923 // CHECK-LABEL: @test_mm512_castpd_ps
8924 // CHECK: bitcast <8 x double> %{{.}} to <16 x float>
8925 return _mm512_castpd_ps (__A);
8926 }
8927
test_mm512_castps_pd(__m512 __A)8928 __m512d test_mm512_castps_pd (__m512 __A)
8929 {
8930 // CHECK-LABEL: @test_mm512_castps_pd
8931 // CHECK: bitcast <16 x float> %{{.}} to <8 x double>
8932 return _mm512_castps_pd (__A);
8933 }
8934
test_mm512_castpd_si512(__m512d __A)8935 __m512i test_mm512_castpd_si512 (__m512d __A)
8936 {
8937 // CHECK-LABEL: @test_mm512_castpd_si512
8938 // CHECK: bitcast <8 x double> %{{.}} to <8 x i64>
8939 return _mm512_castpd_si512 (__A);
8940 }
8941
test_mm512_castps128_ps512(__m128 __A)8942 __m512 test_mm512_castps128_ps512(__m128 __A) {
8943 // CHECK-LABEL: @test_mm512_castps128_ps512
8944 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
8945 return _mm512_castps128_ps512(__A);
8946 }
8947
test_mm512_castpd128_pd512(__m128d __A)8948 __m512d test_mm512_castpd128_pd512(__m128d __A) {
8949 // CHECK-LABEL: @test_mm512_castpd128_pd512
8950 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
8951 return _mm512_castpd128_pd512(__A);
8952 }
8953
test_mm512_set1_epi8(char d)8954 __m512i test_mm512_set1_epi8(char d)
8955 {
8956 // CHECK-LABEL: @test_mm512_set1_epi8
8957 // CHECK: insertelement <64 x i8> {{.*}}, i32 0
8958 // CHECK: insertelement <64 x i8> {{.*}}, i32 1
8959 // CHECK: insertelement <64 x i8> {{.*}}, i32 2
8960 // CHECK: insertelement <64 x i8> {{.*}}, i32 3
8961 // CHECK: insertelement <64 x i8> {{.*}}, i32 4
8962 // CHECK: insertelement <64 x i8> {{.*}}, i32 5
8963 // CHECK: insertelement <64 x i8> {{.*}}, i32 6
8964 // CHECK: insertelement <64 x i8> {{.*}}, i32 7
8965 // CHECK: insertelement <64 x i8> {{.*}}, i32 63
8966 return _mm512_set1_epi8(d);
8967 }
8968
test_mm512_set1_epi16(short d)8969 __m512i test_mm512_set1_epi16(short d)
8970 {
8971 // CHECK-LABEL: @test_mm512_set1_epi16
8972 // CHECK: insertelement <32 x i16> {{.*}}, i32 0
8973 // CHECK: insertelement <32 x i16> {{.*}}, i32 1
8974 // CHECK: insertelement <32 x i16> {{.*}}, i32 2
8975 // CHECK: insertelement <32 x i16> {{.*}}, i32 3
8976 // CHECK: insertelement <32 x i16> {{.*}}, i32 4
8977 // CHECK: insertelement <32 x i16> {{.*}}, i32 5
8978 // CHECK: insertelement <32 x i16> {{.*}}, i32 6
8979 // CHECK: insertelement <32 x i16> {{.*}}, i32 7
8980 // CHECK: insertelement <32 x i16> {{.*}}, i32 31
8981 return _mm512_set1_epi16(d);
8982 }
8983
test_mm512_set4_epi32(int __A,int __B,int __C,int __D)8984 __m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
8985 {
8986 // CHECK-LABEL: @test_mm512_set4_epi32
8987 // CHECK: insertelement <16 x i32> {{.*}}, i32 15
8988 return _mm512_set4_epi32 (__A,__B,__C,__D);
8989 }
8990
test_mm512_set4_epi64(long long __A,long long __B,long long __C,long long __D)8991 __m512i test_mm512_set4_epi64 (long long __A, long long __B, long long __C, long long __D)
8992 {
8993 // CHECK-LABEL: @test_mm512_set4_epi64
8994 // CHECK: insertelement <8 x i64> {{.*}}, i32 7
8995 return _mm512_set4_epi64 (__A,__B,__C,__D);
8996 }
8997
test_mm512_set4_pd(double __A,double __B,double __C,double __D)8998 __m512d test_mm512_set4_pd (double __A, double __B, double __C, double __D)
8999 {
9000 // CHECK-LABEL: @test_mm512_set4_pd
9001 // CHECK: insertelement <8 x double> {{.*}}, i32 7
9002 return _mm512_set4_pd (__A,__B,__C,__D);
9003 }
9004
test_mm512_set4_ps(float __A,float __B,float __C,float __D)9005 __m512 test_mm512_set4_ps (float __A, float __B, float __C, float __D)
9006 {
9007 // CHECK-LABEL: @test_mm512_set4_ps
9008 // CHECK: insertelement <16 x float> {{.*}}, i32 15
9009 return _mm512_set4_ps (__A,__B,__C,__D);
9010 }
9011
test_mm512_setr4_epi32(int e0,int e1,int e2,int e3)9012 __m512i test_mm512_setr4_epi32(int e0, int e1, int e2, int e3)
9013 {
9014 // CHECK-LABEL: @test_mm512_setr4_epi32
9015 // CHECK: insertelement <16 x i32> {{.*}}, i32 15
9016 return _mm512_setr4_epi32(e0, e1, e2, e3);
9017 }
9018
test_mm512_setr4_epi64(long long e0,long long e1,long long e2,long long e3)9019 __m512i test_mm512_setr4_epi64(long long e0, long long e1, long long e2, long long e3)
9020 {
9021 // CHECK-LABEL: @test_mm512_setr4_epi64
9022 // CHECK: insertelement <8 x i64> {{.*}}, i32 7
9023 return _mm512_setr4_epi64(e0, e1, e2, e3);
9024 }
9025
test_mm512_setr4_pd(double e0,double e1,double e2,double e3)9026 __m512d test_mm512_setr4_pd(double e0, double e1, double e2, double e3)
9027 {
9028 // CHECK-LABEL: @test_mm512_setr4_pd
9029 // CHECK: insertelement <8 x double> {{.*}}, i32 7
9030 return _mm512_setr4_pd(e0,e1,e2,e3);
9031 }
9032
test_mm512_setr4_ps(float e0,float e1,float e2,float e3)9033 __m512 test_mm512_setr4_ps(float e0, float e1, float e2, float e3)
9034 {
9035 // CHECK-LABEL: @test_mm512_setr4_ps
9036 // CHECK: insertelement <16 x float> {{.*}}, i32 15
9037 return _mm512_setr4_ps(e0,e1,e2,e3);
9038 }
9039
test_mm512_castpd256_pd512(__m256d a)9040 __m512d test_mm512_castpd256_pd512(__m256d a)
9041 {
9042 // CHECK-LABEL: @test_mm512_castpd256_pd512
9043 // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
9044 return _mm512_castpd256_pd512(a);
9045 }
9046
test_mm512_castpd512_pd256(__m512d __A)9047 __m256d test_mm512_castpd512_pd256 (__m512d __A)
9048 {
9049 // CHECK-LABEL: @test_mm512_castpd512_pd256
9050 // CHECK: shufflevector <8 x double> %{{.}}, <8 x double> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9051 return _mm512_castpd512_pd256 (__A);
9052 }
9053
test_mm512_castps512_ps256(__m512 __A)9054 __m256 test_mm512_castps512_ps256 (__m512 __A)
9055 {
9056 // CHECK-LABEL: @test_mm512_castps512_ps256
9057 // CHECK: shufflevector <16 x float> %{{.}}, <16 x float> %{{.}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
9058 return _mm512_castps512_ps256 (__A);
9059 }
9060
test_mm512_castps_si512(__m512 __A)9061 __m512i test_mm512_castps_si512 (__m512 __A)
9062 {
9063 // CHECK-LABEL: @test_mm512_castps_si512
9064 // CHECK: bitcast <16 x float> %{{.}} to <8 x i64>
9065 return _mm512_castps_si512 (__A);
9066 }
test_mm512_castsi128_si512(__m128i __A)9067 __m512i test_mm512_castsi128_si512(__m128i __A) {
9068 // CHECK-LABEL: @test_mm512_castsi128_si512
9069 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
9070 return _mm512_castsi128_si512(__A);
9071 }
9072
test_mm512_castsi256_si512(__m256i __A)9073 __m512i test_mm512_castsi256_si512(__m256i __A) {
9074 // CHECK-LABEL: @test_mm512_castsi256_si512
9075 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
9076 return _mm512_castsi256_si512(__A);
9077 }
9078
test_mm512_castsi512_ps(__m512i __A)9079 __m512 test_mm512_castsi512_ps (__m512i __A)
9080 {
9081 // CHECK-LABEL: @test_mm512_castsi512_ps
9082 // CHECK: bitcast <8 x i64> %{{.}} to <16 x float>
9083 return _mm512_castsi512_ps (__A);
9084 }
9085
test_mm512_castsi512_pd(__m512i __A)9086 __m512d test_mm512_castsi512_pd (__m512i __A)
9087 {
9088 // CHECK-LABEL: @test_mm512_castsi512_pd
9089 // CHECK: bitcast <8 x i64> %{{.}} to <8 x double>
9090 return _mm512_castsi512_pd (__A);
9091 }
9092
test_mm512_castsi512_si128(__m512i __A)9093 __m128i test_mm512_castsi512_si128 (__m512i __A)
9094 {
9095 // CHECK-LABEL: @test_mm512_castsi512_si128
9096 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <2 x i32> <i32 0, i32 1>
9097 return _mm512_castsi512_si128 (__A);
9098 }
9099
test_mm512_castsi512_si256(__m512i __A)9100 __m256i test_mm512_castsi512_si256 (__m512i __A)
9101 {
9102 // CHECK-LABEL: @test_mm512_castsi512_si256
9103 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9104 return _mm512_castsi512_si256 (__A);
9105 }
9106
test_mm_cvt_roundsd_ss(__m128 __A,__m128d __B)9107 __m128 test_mm_cvt_roundsd_ss(__m128 __A, __m128d __B) {
9108 // CHECK-LABEL: @test_mm_cvt_roundsd_ss
9109 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9110 return _mm_cvt_roundsd_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9111 }
9112
test_mm_mask_cvt_roundsd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128d __B)9113 __m128 test_mm_mask_cvt_roundsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
9114 // CHECK-LABEL: @test_mm_mask_cvt_roundsd_ss
9115 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9116 return _mm_mask_cvt_roundsd_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
9117 }
9118
test_mm_maskz_cvt_roundsd_ss(__mmask8 __U,__m128 __A,__m128d __B)9119 __m128 test_mm_maskz_cvt_roundsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
9120 // CHECK-LABEL: @test_mm_maskz_cvt_roundsd_ss
9121 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
9122 return _mm_maskz_cvt_roundsd_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION);
9123 }
9124
9125 #ifdef __x86_64__
test_mm_cvt_roundi64_sd(__m128d __A,long long __B)9126 __m128d test_mm_cvt_roundi64_sd(__m128d __A, long long __B) {
9127 // CHECK-LABEL: @test_mm_cvt_roundi64_sd
9128 // CHECK: @llvm.x86.avx512.cvtsi2sd64
9129 return _mm_cvt_roundi64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION);
9130 }
9131
test_mm_cvt_roundsi64_sd(__m128d __A,long long __B)9132 __m128d test_mm_cvt_roundsi64_sd(__m128d __A, long long __B) {
9133 // CHECK-LABEL: @test_mm_cvt_roundsi64_sd
9134 // CHECK: @llvm.x86.avx512.cvtsi2sd64
9135 return _mm_cvt_roundsi64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION);
9136 }
9137 #endif
9138
test_mm_cvt_roundsi32_ss(__m128 __A,int __B)9139 __m128 test_mm_cvt_roundsi32_ss(__m128 __A, int __B) {
9140 // CHECK-LABEL: @test_mm_cvt_roundsi32_ss
9141 // CHECK: @llvm.x86.avx512.cvtsi2ss32
9142 return _mm_cvt_roundsi32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9143 }
9144
test_mm_cvt_roundi32_ss(__m128 __A,int __B)9145 __m128 test_mm_cvt_roundi32_ss(__m128 __A, int __B) {
9146 // CHECK-LABEL: @test_mm_cvt_roundi32_ss
9147 // CHECK: @llvm.x86.avx512.cvtsi2ss32
9148 return _mm_cvt_roundi32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9149 }
9150
9151 #ifdef __x86_64__
test_mm_cvt_roundsi64_ss(__m128 __A,long long __B)9152 __m128 test_mm_cvt_roundsi64_ss(__m128 __A, long long __B) {
9153 // CHECK-LABEL: @test_mm_cvt_roundsi64_ss
9154 // CHECK: @llvm.x86.avx512.cvtsi2ss64
9155 return _mm_cvt_roundsi64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9156 }
9157
test_mm_cvt_roundi64_ss(__m128 __A,long long __B)9158 __m128 test_mm_cvt_roundi64_ss(__m128 __A, long long __B) {
9159 // CHECK-LABEL: @test_mm_cvt_roundi64_ss
9160 // CHECK: @llvm.x86.avx512.cvtsi2ss64
9161 return _mm_cvt_roundi64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9162 }
9163 #endif
9164
test_mm_cvt_roundss_sd(__m128d __A,__m128 __B)9165 __m128d test_mm_cvt_roundss_sd(__m128d __A, __m128 __B) {
9166 // CHECK-LABEL: @test_mm_cvt_roundss_sd
9167 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9168 return _mm_cvt_roundss_sd(__A, __B, _MM_FROUND_CUR_DIRECTION);
9169 }
9170
test_mm_mask_cvt_roundss_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128 __B)9171 __m128d test_mm_mask_cvt_roundss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
9172 // CHECK-LABEL: @test_mm_mask_cvt_roundss_sd
9173 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9174 return _mm_mask_cvt_roundss_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
9175 }
9176
test_mm_maskz_cvt_roundss_sd(__mmask8 __U,__m128d __A,__m128 __B)9177 __m128d test_mm_maskz_cvt_roundss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
9178 // CHECK-LABEL: @test_mm_maskz_cvt_roundss_sd
9179 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
9180 return _mm_maskz_cvt_roundss_sd( __U, __A, __B, _MM_FROUND_CUR_DIRECTION);
9181 }
9182
test_mm_cvtu32_sd(__m128d __A,unsigned __B)9183 __m128d test_mm_cvtu32_sd(__m128d __A, unsigned __B) {
9184 // CHECK-LABEL: @test_mm_cvtu32_sd
9185 // CHECK: uitofp i32 %{{.*}} to double
9186 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9187 return _mm_cvtu32_sd(__A, __B);
9188 }
9189
9190 #ifdef __x86_64__
test_mm_cvt_roundu64_sd(__m128d __A,unsigned long long __B)9191 __m128d test_mm_cvt_roundu64_sd(__m128d __A, unsigned long long __B) {
9192 // CHECK-LABEL: @test_mm_cvt_roundu64_sd
9193 // CHECK: @llvm.x86.avx512.cvtusi642sd
9194 return _mm_cvt_roundu64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION);
9195 }
9196
test_mm_cvtu64_sd(__m128d __A,unsigned long long __B)9197 __m128d test_mm_cvtu64_sd(__m128d __A, unsigned long long __B) {
9198 // CHECK-LABEL: @test_mm_cvtu64_sd
9199 // CHECK: uitofp i64 %{{.*}} to double
9200 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
9201 return _mm_cvtu64_sd(__A, __B);
9202 }
9203 #endif
9204
test_mm_cvt_roundu32_ss(__m128 __A,unsigned __B)9205 __m128 test_mm_cvt_roundu32_ss(__m128 __A, unsigned __B) {
9206 // CHECK-LABEL: @test_mm_cvt_roundu32_ss
9207 // CHECK: @llvm.x86.avx512.cvtusi2ss
9208 return _mm_cvt_roundu32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9209 }
9210
test_mm_cvtu32_ss(__m128 __A,unsigned __B)9211 __m128 test_mm_cvtu32_ss(__m128 __A, unsigned __B) {
9212 // CHECK-LABEL: @test_mm_cvtu32_ss
9213 // CHECK: uitofp i32 %{{.*}} to float
9214 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9215 return _mm_cvtu32_ss(__A, __B);
9216 }
9217
9218 #ifdef __x86_64__
test_mm_cvt_roundu64_ss(__m128 __A,unsigned long long __B)9219 __m128 test_mm_cvt_roundu64_ss(__m128 __A, unsigned long long __B) {
9220 // CHECK-LABEL: @test_mm_cvt_roundu64_ss
9221 // CHECK: @llvm.x86.avx512.cvtusi642ss
9222 return _mm_cvt_roundu64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION);
9223 }
9224
test_mm_cvtu64_ss(__m128 __A,unsigned long long __B)9225 __m128 test_mm_cvtu64_ss(__m128 __A, unsigned long long __B) {
9226 // CHECK-LABEL: @test_mm_cvtu64_ss
9227 // CHECK: uitofp i64 %{{.*}} to float
9228 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
9229 return _mm_cvtu64_ss(__A, __B);
9230 }
9231 #endif
9232
test_mm512_mask_cvttps_epu32(__m512i __W,__mmask16 __U,__m512 __A)9233 __m512i test_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
9234 {
9235 // CHECK-LABEL: @test_mm512_mask_cvttps_epu32
9236 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9237 return _mm512_mask_cvttps_epu32 (__W,__U,__A);
9238 }
9239
test_mm512_maskz_cvttps_epu32(__mmask16 __U,__m512 __A)9240 __m512i test_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
9241 {
9242 // CHECK-LABEL: @test_mm512_maskz_cvttps_epu32
9243 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512
9244 return _mm512_maskz_cvttps_epu32 (__U,__A);
9245 }
9246
test_mm512_cvtepu32_ps(__m512i __A)9247 __m512 test_mm512_cvtepu32_ps (__m512i __A)
9248 {
9249 // CHECK-LABEL: @test_mm512_cvtepu32_ps
9250 // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9251 return _mm512_cvtepu32_ps (__A);
9252 }
9253
test_mm512_mask_cvtepu32_ps(__m512 __W,__mmask16 __U,__m512i __A)9254 __m512 test_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
9255 {
9256 // CHECK-LABEL: @test_mm512_mask_cvtepu32_ps
9257 // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9258 // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9259 return _mm512_mask_cvtepu32_ps (__W,__U,__A);
9260 }
9261
test_mm512_maskz_cvtepu32_ps(__mmask16 __U,__m512i __A)9262 __m512 test_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
9263 {
9264 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_ps
9265 // CHECK: uitofp <16 x i32> %{{.*}} to <16 x float>
9266 // CHECK: select <16 x i1> {{.*}}, <16 x float> {{.*}}, <16 x float> {{.*}}
9267 return _mm512_maskz_cvtepu32_ps (__U,__A);
9268 }
9269
test_mm512_cvtepi32_pd(__m256i __A)9270 __m512d test_mm512_cvtepi32_pd (__m256i __A)
9271 {
9272 // CHECK-LABEL: @test_mm512_cvtepi32_pd
9273 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9274 return _mm512_cvtepi32_pd (__A);
9275 }
9276
test_mm512_mask_cvtepi32_pd(__m512d __W,__mmask8 __U,__m256i __A)9277 __m512d test_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
9278 {
9279 // CHECK-LABEL: @test_mm512_mask_cvtepi32_pd
9280 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9281 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9282 return _mm512_mask_cvtepi32_pd (__W,__U,__A);
9283 }
9284
test_mm512_maskz_cvtepi32_pd(__mmask8 __U,__m256i __A)9285 __m512d test_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
9286 {
9287 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_pd
9288 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9289 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9290 return _mm512_maskz_cvtepi32_pd (__U,__A);
9291 }
9292
test_mm512_cvtepi32lo_pd(__m512i __A)9293 __m512d test_mm512_cvtepi32lo_pd (__m512i __A)
9294 {
9295 // CHECK-LABEL: @test_mm512_cvtepi32lo_pd
9296 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9297 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9298 return _mm512_cvtepi32lo_pd (__A);
9299 }
9300
test_mm512_mask_cvtepi32lo_pd(__m512d __W,__mmask8 __U,__m512i __A)9301 __m512d test_mm512_mask_cvtepi32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
9302 {
9303 // CHECK-LABEL: @test_mm512_mask_cvtepi32lo_pd
9304 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9305 // CHECK: sitofp <8 x i32> %{{.*}} to <8 x double>
9306 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9307 return _mm512_mask_cvtepi32lo_pd (__W, __U, __A);
9308 }
9309
test_mm512_cvtepi32_ps(__m512i __A)9310 __m512 test_mm512_cvtepi32_ps (__m512i __A)
9311 {
9312 // CHECK-LABEL: @test_mm512_cvtepi32_ps
9313 // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9314 return _mm512_cvtepi32_ps (__A);
9315 }
9316
test_mm512_mask_cvtepi32_ps(__m512 __W,__mmask16 __U,__m512i __A)9317 __m512 test_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
9318 {
9319 // CHECK-LABEL: @test_mm512_mask_cvtepi32_ps
9320 // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9321 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9322 return _mm512_mask_cvtepi32_ps (__W,__U,__A);
9323 }
9324
test_mm512_maskz_cvtepi32_ps(__mmask16 __U,__m512i __A)9325 __m512 test_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
9326 {
9327 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_ps
9328 // CHECK: sitofp <16 x i32> %{{.*}} to <16 x float>
9329 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9330 return _mm512_maskz_cvtepi32_ps (__U,__A);
9331 }
9332
test_mm512_cvtepu32_pd(__m256i __A)9333 __m512d test_mm512_cvtepu32_pd(__m256i __A)
9334 {
9335 // CHECK-LABEL: @test_mm512_cvtepu32_pd
9336 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9337 return _mm512_cvtepu32_pd(__A);
9338 }
9339
test_mm512_mask_cvtepu32_pd(__m512d __W,__mmask8 __U,__m256i __A)9340 __m512d test_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
9341 {
9342 // CHECK-LABEL: @test_mm512_mask_cvtepu32_pd
9343 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9344 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9345 return _mm512_mask_cvtepu32_pd (__W,__U,__A);
9346 }
9347
test_mm512_maskz_cvtepu32_pd(__mmask8 __U,__m256i __A)9348 __m512d test_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
9349 {
9350 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_pd
9351 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9352 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9353 return _mm512_maskz_cvtepu32_pd (__U,__A);
9354 }
9355
test_mm512_cvtepu32lo_pd(__m512i __A)9356 __m512d test_mm512_cvtepu32lo_pd (__m512i __A)
9357 {
9358 // CHECK-LABEL: @test_mm512_cvtepu32lo_pd
9359 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9360 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9361 return _mm512_cvtepu32lo_pd (__A);
9362 }
9363
test_mm512_mask_cvtepu32lo_pd(__m512d __W,__mmask8 __U,__m512i __A)9364 __m512d test_mm512_mask_cvtepu32lo_pd (__m512d __W, __mmask8 __U, __m512i __A)
9365 {
9366 // CHECK-LABEL: @test_mm512_mask_cvtepu32lo_pd
9367 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
9368 // CHECK: uitofp <8 x i32> %{{.*}} to <8 x double>
9369 // CHECK: select <8 x i1> {{.*}}, <8 x double> {{.*}}, <8 x double> {{.*}}
9370 return _mm512_mask_cvtepu32lo_pd (__W, __U, __A);
9371 }
9372
test_mm512_cvtpd_ps(__m512d __A)9373 __m256 test_mm512_cvtpd_ps (__m512d __A)
9374 {
9375 // CHECK-LABEL: @test_mm512_cvtpd_ps
9376 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9377 return _mm512_cvtpd_ps (__A);
9378 }
9379
test_mm512_mask_cvtpd_ps(__m256 __W,__mmask8 __U,__m512d __A)9380 __m256 test_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
9381 {
9382 // CHECK-LABEL: @test_mm512_mask_cvtpd_ps
9383 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9384 return _mm512_mask_cvtpd_ps (__W,__U,__A);
9385 }
9386
test_mm512_cvtpd_pslo(__m512 __A)9387 __m512d test_mm512_cvtpd_pslo(__m512 __A)
9388 {
9389 // CHECK-LABEL: @test_mm512_cvtpd_pslo
9390 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9391 // CHECK: zeroinitializer
9392 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9393 return _mm512_cvtpd_pslo(__A);
9394 }
9395
test_mm512_mask_cvtpd_pslo(__m512 __W,__mmask8 __U,__m512d __A)9396 __m512d test_mm512_mask_cvtpd_pslo(__m512 __W, __mmask8 __U, __m512d __A) {
9397 // CHECK-LABEL: @test_mm512_mask_cvtpd_pslo
9398 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9399 // CHECK: zeroinitializer
9400 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
9401 return _mm512_mask_cvtpd_pslo(__W, __U, __A);
9402 }
9403
test_mm512_maskz_cvtpd_ps(__mmask8 __U,__m512d __A)9404 __m256 test_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
9405 {
9406 // CHECK-LABEL: @test_mm512_maskz_cvtpd_ps
9407 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512
9408 return _mm512_maskz_cvtpd_ps (__U,__A);
9409 }
9410
test_mm512_mask_cvtph_ps(__m512 __W,__mmask16 __U,__m256i __A)9411 __m512 test_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
9412 {
9413 // CHECK-LABEL: @test_mm512_mask_cvtph_ps
9414 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
9415 return _mm512_mask_cvtph_ps (__W,__U,__A);
9416 }
9417
test_mm512_maskz_cvtph_ps(__mmask16 __U,__m256i __A)9418 __m512 test_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
9419 {
9420 // CHECK-LABEL: @test_mm512_maskz_cvtph_ps
9421 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512
9422 return _mm512_maskz_cvtph_ps (__U,__A);
9423 }
9424
test_mm512_mask_cvttpd_epi32(__m256i __W,__mmask8 __U,__m512d __A)9425 __m256i test_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
9426 {
9427 // CHECK-LABEL: @test_mm512_mask_cvttpd_epi32
9428 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9429 return _mm512_mask_cvttpd_epi32 (__W,__U,__A);
9430 }
9431
test_mm512_maskz_cvttpd_epi32(__mmask8 __U,__m512d __A)9432 __m256i test_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
9433 {
9434 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi32
9435 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512
9436 return _mm512_maskz_cvttpd_epi32 (__U,__A);
9437 }
9438
test_mm512_mask_cvttps_epi32(__m512i __W,__mmask16 __U,__m512 __A)9439 __m512i test_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
9440 {
9441 // CHECK-LABEL: @test_mm512_mask_cvttps_epi32
9442 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9443 return _mm512_mask_cvttps_epi32 (__W,__U,__A);
9444 }
9445
test_mm512_maskz_cvttps_epi32(__mmask16 __U,__m512 __A)9446 __m512i test_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
9447 {
9448 // CHECK-LABEL: @test_mm512_maskz_cvttps_epi32
9449 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512
9450 return _mm512_maskz_cvttps_epi32 (__U,__A);
9451 }
9452
test_mm512_cvtps_epi32(__m512 __A)9453 __m512i test_mm512_cvtps_epi32 (__m512 __A)
9454 {
9455 // CHECK-LABEL: @test_mm512_cvtps_epi32
9456 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9457 return _mm512_cvtps_epi32 (__A);
9458 }
9459
test_mm512_mask_cvtps_epi32(__m512i __W,__mmask16 __U,__m512 __A)9460 __m512i test_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
9461 {
9462 // CHECK-LABEL: @test_mm512_mask_cvtps_epi32
9463 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9464 return _mm512_mask_cvtps_epi32 (__W,__U,__A);
9465 }
9466
test_mm512_maskz_cvtps_epi32(__mmask16 __U,__m512 __A)9467 __m512i test_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
9468 {
9469 // CHECK-LABEL: @test_mm512_maskz_cvtps_epi32
9470 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512
9471 return _mm512_maskz_cvtps_epi32 (__U,__A);
9472 }
9473
test_mm512_cvtpd_epi32(__m512d __A)9474 __m256i test_mm512_cvtpd_epi32 (__m512d __A)
9475 {
9476 // CHECK-LABEL: @test_mm512_cvtpd_epi32
9477 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9478 return _mm512_cvtpd_epi32 (__A);
9479 }
9480
test_mm512_mask_cvtpd_epi32(__m256i __W,__mmask8 __U,__m512d __A)9481 __m256i test_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
9482 {
9483 // CHECK-LABEL: @test_mm512_mask_cvtpd_epi32
9484 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9485 return _mm512_mask_cvtpd_epi32 (__W,__U,__A);
9486 }
9487
test_mm512_maskz_cvtpd_epi32(__mmask8 __U,__m512d __A)9488 __m256i test_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
9489 {
9490 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi32
9491 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512
9492 return _mm512_maskz_cvtpd_epi32 (__U,__A);
9493 }
9494
test_mm512_cvtpd_epu32(__m512d __A)9495 __m256i test_mm512_cvtpd_epu32 (__m512d __A)
9496 {
9497 // CHECK-LABEL: @test_mm512_cvtpd_epu32
9498 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9499 return _mm512_cvtpd_epu32 (__A);
9500 }
9501
test_mm512_mask_cvtpd_epu32(__m256i __W,__mmask8 __U,__m512d __A)9502 __m256i test_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
9503 {
9504 // CHECK-LABEL: @test_mm512_mask_cvtpd_epu32
9505 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9506 return _mm512_mask_cvtpd_epu32 (__W,__U,__A);
9507 }
9508
test_mm512_maskz_cvtpd_epu32(__mmask8 __U,__m512d __A)9509 __m256i test_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
9510 {
9511 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu32
9512 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512
9513 return _mm512_maskz_cvtpd_epu32 (__U,__A);
9514 }
9515
test_mm512_mask_cvtps_ph(__m256i src,__mmask16 k,__m512 a)9516 __m256i test_mm512_mask_cvtps_ph(__m256i src, __mmask16 k, __m512 a)
9517 {
9518 // CHECK-LABEL: @test_mm512_mask_cvtps_ph
9519 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9520 return _mm512_mask_cvtps_ph(src, k, a,_MM_FROUND_CUR_DIRECTION);
9521 }
9522
test_mm512_maskz_cvtps_ph(__mmask16 k,__m512 a)9523 __m256i test_mm512_maskz_cvtps_ph (__mmask16 k, __m512 a)
9524 {
9525 // CHECK-LABEL: @test_mm512_maskz_cvtps_ph
9526 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512
9527 return _mm512_maskz_cvtps_ph( k, a,_MM_FROUND_CUR_DIRECTION);
9528 }
9529
test_mm512_cvtps_epu32(__m512 __A)9530 __m512i test_mm512_cvtps_epu32 ( __m512 __A)
9531 {
9532 // CHECK-LABEL: @test_mm512_cvtps_epu32
9533 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9534 return _mm512_cvtps_epu32(__A);
9535 }
9536
test_mm512_mask_cvtps_epu32(__m512i __W,__mmask16 __U,__m512 __A)9537 __m512i test_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
9538 {
9539 // CHECK-LABEL: @test_mm512_mask_cvtps_epu32
9540 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9541 return _mm512_mask_cvtps_epu32( __W, __U, __A);
9542 }
test_mm512_maskz_cvtps_epu32(__mmask16 __U,__m512 __A)9543 __m512i test_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A)
9544 {
9545 // CHECK-LABEL: @test_mm512_maskz_cvtps_epu32
9546 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512
9547 return _mm512_maskz_cvtps_epu32( __U, __A);
9548 }
9549
test_mm512_cvtsd_f64(__m512d A)9550 double test_mm512_cvtsd_f64(__m512d A) {
9551 // CHECK-LABEL: test_mm512_cvtsd_f64
9552 // CHECK: extractelement <8 x double> %{{.*}}, i32 0
9553 return _mm512_cvtsd_f64(A);
9554 }
9555
test_mm512_cvtss_f32(__m512 A)9556 float test_mm512_cvtss_f32(__m512 A) {
9557 // CHECK-LABEL: test_mm512_cvtss_f32
9558 // CHECK: extractelement <16 x float> %{{.*}}, i32 0
9559 return _mm512_cvtss_f32(A);
9560 }
9561
test_mm512_mask_max_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9562 __m512d test_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
9563 {
9564 // CHECK-LABEL: @test_mm512_mask_max_pd
9565 // CHECK: @llvm.x86.avx512.max.pd.512
9566 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9567 return _mm512_mask_max_pd (__W,__U,__A,__B);
9568 }
9569
test_mm512_maskz_max_pd(__mmask8 __U,__m512d __A,__m512d __B)9570 __m512d test_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
9571 {
9572 // CHECK-LABEL: @test_mm512_maskz_max_pd
9573 // CHECK: @llvm.x86.avx512.max.pd.512
9574 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9575 return _mm512_maskz_max_pd (__U,__A,__B);
9576 }
9577
test_mm512_mask_max_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9578 __m512 test_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
9579 {
9580 // CHECK-LABEL: @test_mm512_mask_max_ps
9581 // CHECK: @llvm.x86.avx512.max.ps.512
9582 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9583 return _mm512_mask_max_ps (__W,__U,__A,__B);
9584 }
9585
test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9586 __m512d test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
9587 {
9588 // CHECK-LABEL: @test_mm512_mask_max_round_pd
9589 // CHECK: @llvm.x86.avx512.max.pd.512
9590 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9591 return _mm512_mask_max_round_pd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9592 }
9593
test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B)9594 __m512d test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
9595 {
9596 // CHECK-LABEL: @test_mm512_maskz_max_round_pd
9597 // CHECK: @llvm.x86.avx512.max.pd.512
9598 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9599 return _mm512_maskz_max_round_pd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9600 }
9601
test_mm512_max_round_pd(__m512d __A,__m512d __B)9602 __m512d test_mm512_max_round_pd(__m512d __A,__m512d __B)
9603 {
9604 // CHECK-LABEL: @test_mm512_max_round_pd
9605 // CHECK: @llvm.x86.avx512.max.pd.512
9606 return _mm512_max_round_pd(__A,__B,_MM_FROUND_CUR_DIRECTION);
9607 }
9608
test_mm512_maskz_max_ps(__mmask16 __U,__m512 __A,__m512 __B)9609 __m512 test_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
9610 {
9611 // CHECK-LABEL: @test_mm512_maskz_max_ps
9612 // CHECK: @llvm.x86.avx512.max.ps.512
9613 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9614 return _mm512_maskz_max_ps (__U,__A,__B);
9615 }
9616
test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9617 __m512 test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
9618 {
9619 // CHECK-LABEL: @test_mm512_mask_max_round_ps
9620 // CHECK: @llvm.x86.avx512.max.ps.512
9621 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9622 return _mm512_mask_max_round_ps(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9623 }
9624
test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B)9625 __m512 test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
9626 {
9627 // CHECK-LABEL: @test_mm512_maskz_max_round_ps
9628 // CHECK: @llvm.x86.avx512.max.ps.512
9629 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9630 return _mm512_maskz_max_round_ps(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9631 }
9632
test_mm512_max_round_ps(__m512 __A,__m512 __B)9633 __m512 test_mm512_max_round_ps(__m512 __A,__m512 __B)
9634 {
9635 // CHECK-LABEL: @test_mm512_max_round_ps
9636 // CHECK: @llvm.x86.avx512.max.ps.512
9637 return _mm512_max_round_ps(__A,__B,_MM_FROUND_CUR_DIRECTION);
9638 }
9639
test_mm512_mask_min_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9640 __m512d test_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
9641 {
9642 // CHECK-LABEL: @test_mm512_mask_min_pd
9643 // CHECK: @llvm.x86.avx512.min.pd.512
9644 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9645 return _mm512_mask_min_pd (__W,__U,__A,__B);
9646 }
9647
test_mm512_maskz_min_pd(__mmask8 __U,__m512d __A,__m512d __B)9648 __m512d test_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
9649 {
9650 // CHECK-LABEL: @test_mm512_maskz_min_pd
9651 // CHECK: @llvm.x86.avx512.min.pd.512
9652 return _mm512_maskz_min_pd (__U,__A,__B);
9653 }
9654
test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)9655 __m512d test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B)
9656 {
9657 // CHECK-LABEL: @test_mm512_mask_min_round_pd
9658 // CHECK: @llvm.x86.avx512.min.pd.512
9659 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9660 return _mm512_mask_min_round_pd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9661 }
9662
test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B)9663 __m512d test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B)
9664 {
9665 // CHECK-LABEL: @test_mm512_maskz_min_round_pd
9666 // CHECK: @llvm.x86.avx512.min.pd.512
9667 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
9668 return _mm512_maskz_min_round_pd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9669 }
9670
test_mm512_min_round_pd(__m512d __A,__m512d __B)9671 __m512d test_mm512_min_round_pd( __m512d __A,__m512d __B)
9672 {
9673 // CHECK-LABEL: @test_mm512_min_round_pd
9674 // CHECK: @llvm.x86.avx512.min.pd.512
9675 return _mm512_min_round_pd(__A,__B,_MM_FROUND_CUR_DIRECTION);
9676 }
9677
test_mm512_mask_min_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9678 __m512 test_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
9679 {
9680 // CHECK-LABEL: @test_mm512_mask_min_ps
9681 // CHECK: @llvm.x86.avx512.min.ps.512
9682 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9683 return _mm512_mask_min_ps (__W,__U,__A,__B);
9684 }
9685
test_mm512_maskz_min_ps(__mmask16 __U,__m512 __A,__m512 __B)9686 __m512 test_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
9687 {
9688 // CHECK-LABEL: @test_mm512_maskz_min_ps
9689 // CHECK: @llvm.x86.avx512.min.ps.512
9690 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9691 return _mm512_maskz_min_ps (__U,__A,__B);
9692 }
9693
test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)9694 __m512 test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B)
9695 {
9696 // CHECK-LABEL: @test_mm512_mask_min_round_ps
9697 // CHECK: @llvm.x86.avx512.min.ps.512
9698 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9699 return _mm512_mask_min_round_ps(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9700 }
9701
test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B)9702 __m512 test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B)
9703 {
9704 // CHECK-LABEL: @test_mm512_maskz_min_round_ps
9705 // CHECK: @llvm.x86.avx512.min.ps.512
9706 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
9707 return _mm512_maskz_min_round_ps(__U,__A,__B,_MM_FROUND_CUR_DIRECTION);
9708 }
9709
test_mm512_min_round_ps(__m512 __A,__m512 __B)9710 __m512 test_mm512_min_round_ps(__m512 __A,__m512 __B)
9711 {
9712 // CHECK-LABEL: @test_mm512_min_round_ps
9713 // CHECK: @llvm.x86.avx512.min.ps.512
9714 return _mm512_min_round_ps(__A,__B,_MM_FROUND_CUR_DIRECTION);
9715 }
9716
test_mm512_mask_floor_ps(__m512 __W,__mmask16 __U,__m512 __A)9717 __m512 test_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
9718 {
9719 // CHECK-LABEL: @test_mm512_mask_floor_ps
9720 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9721 return _mm512_mask_floor_ps (__W,__U,__A);
9722 }
9723
test_mm512_mask_floor_pd(__m512d __W,__mmask8 __U,__m512d __A)9724 __m512d test_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
9725 {
9726 // CHECK-LABEL: @test_mm512_mask_floor_pd
9727 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9728 return _mm512_mask_floor_pd (__W,__U,__A);
9729 }
9730
test_mm512_mask_ceil_ps(__m512 __W,__mmask16 __U,__m512 __A)9731 __m512 test_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
9732 {
9733 // CHECK-LABEL: @test_mm512_mask_ceil_ps
9734 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9735 return _mm512_mask_ceil_ps (__W,__U,__A);
9736 }
9737
test_mm512_mask_ceil_pd(__m512d __W,__mmask8 __U,__m512d __A)9738 __m512d test_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
9739 {
9740 // CHECK-LABEL: @test_mm512_mask_ceil_pd
9741 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9742 return _mm512_mask_ceil_pd (__W,__U,__A);
9743 }
9744
test_mm512_mask_roundscale_ps(__m512 __W,__mmask16 __U,__m512 __A)9745 __m512 test_mm512_mask_roundscale_ps(__m512 __W, __mmask16 __U, __m512 __A)
9746 {
9747 // CHECK-LABEL: @test_mm512_mask_roundscale_ps
9748 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9749 return _mm512_mask_roundscale_ps(__W,__U,__A, 1);
9750 }
9751
test_mm512_maskz_roundscale_ps(__mmask16 __U,__m512 __A)9752 __m512 test_mm512_maskz_roundscale_ps(__mmask16 __U, __m512 __A)
9753 {
9754 // CHECK-LABEL: @test_mm512_maskz_roundscale_ps
9755 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9756 return _mm512_maskz_roundscale_ps(__U,__A, 1);
9757 }
9758
test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C)9759 __m512 test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C)
9760 {
9761 // CHECK-LABEL: @test_mm512_mask_roundscale_round_ps
9762 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9763 return _mm512_mask_roundscale_round_ps(__A,__U,__C,3,_MM_FROUND_CUR_DIRECTION);
9764 }
9765
test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U)9766 __m512 test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U)
9767 {
9768 // CHECK-LABEL: @test_mm512_maskz_roundscale_round_ps
9769 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9770 return _mm512_maskz_roundscale_round_ps(__U,__A,3,_MM_FROUND_CUR_DIRECTION);
9771 }
9772
test_mm512_roundscale_round_ps(__m512 __A)9773 __m512 test_mm512_roundscale_round_ps(__m512 __A)
9774 {
9775 // CHECK-LABEL: @test_mm512_roundscale_round_ps
9776 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512
9777 return _mm512_roundscale_round_ps(__A,3,_MM_FROUND_CUR_DIRECTION);
9778 }
9779
test_mm512_mask_roundscale_pd(__m512d __W,__mmask8 __U,__m512d __A)9780 __m512d test_mm512_mask_roundscale_pd(__m512d __W, __mmask8 __U, __m512d __A)
9781 {
9782 // CHECK-LABEL: @test_mm512_mask_roundscale_pd
9783 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9784 return _mm512_mask_roundscale_pd(__W,__U,__A, 1);
9785 }
9786
test_mm512_maskz_roundscale_pd(__mmask8 __U,__m512d __A)9787 __m512d test_mm512_maskz_roundscale_pd(__mmask8 __U, __m512d __A)
9788 {
9789 // CHECK-LABEL: @test_mm512_maskz_roundscale_pd
9790 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9791 return _mm512_maskz_roundscale_pd(__U,__A, 1);
9792 }
9793
test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C)9794 __m512d test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C)
9795 {
9796 // CHECK-LABEL: @test_mm512_mask_roundscale_round_pd
9797 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9798 return _mm512_mask_roundscale_round_pd(__A,__U,__C,3,_MM_FROUND_CUR_DIRECTION);
9799 }
9800
test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U)9801 __m512d test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U)
9802 {
9803 // CHECK-LABEL: @test_mm512_maskz_roundscale_round_pd
9804 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9805 return _mm512_maskz_roundscale_round_pd(__U,__A,3,_MM_FROUND_CUR_DIRECTION);
9806 }
9807
test_mm512_roundscale_round_pd(__m512d __A)9808 __m512d test_mm512_roundscale_round_pd(__m512d __A)
9809 {
9810 // CHECK-LABEL: @test_mm512_roundscale_round_pd
9811 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512
9812 return _mm512_roundscale_round_pd(__A,3,_MM_FROUND_CUR_DIRECTION);
9813 }
9814
test_mm512_max_epi32(__m512i __A,__m512i __B)9815 __m512i test_mm512_max_epi32 (__m512i __A, __m512i __B)
9816 {
9817 // CHECK-LABEL: @test_mm512_max_epi32
9818 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9819 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9820 return _mm512_max_epi32 (__A,__B);
9821 }
9822
test_mm512_mask_max_epi32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9823 __m512i test_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9824 {
9825 // CHECK-LABEL: @test_mm512_mask_max_epi32
9826 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9827 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9828 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9829 return _mm512_mask_max_epi32 (__W,__M,__A,__B);
9830 }
9831
test_mm512_maskz_max_epi32(__mmask16 __M,__m512i __A,__m512i __B)9832 __m512i test_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
9833 {
9834 // CHECK-LABEL: @test_mm512_maskz_max_epi32
9835 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[X:%.*]], [[Y:%.*]]
9836 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9837 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9838 return _mm512_maskz_max_epi32 (__M,__A,__B);
9839 }
9840
test_mm512_max_epi64(__m512i __A,__m512i __B)9841 __m512i test_mm512_max_epi64 (__m512i __A, __m512i __B)
9842 {
9843 // CHECK-LABEL: @test_mm512_max_epi64
9844 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9845 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9846 return _mm512_max_epi64 (__A,__B);
9847 }
9848
test_mm512_mask_max_epi64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9849 __m512i test_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9850 {
9851 // CHECK-LABEL: @test_mm512_mask_max_epi64
9852 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9853 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9854 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9855 return _mm512_mask_max_epi64 (__W,__M,__A,__B);
9856 }
9857
test_mm512_maskz_max_epi64(__mmask8 __M,__m512i __A,__m512i __B)9858 __m512i test_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
9859 {
9860 // CHECK-LABEL: @test_mm512_maskz_max_epi64
9861 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[X:%.*]], [[Y:%.*]]
9862 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9863 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9864 return _mm512_maskz_max_epi64 (__M,__A,__B);
9865 }
9866
test_mm512_max_epu64(__m512i __A,__m512i __B)9867 __m512i test_mm512_max_epu64 (__m512i __A, __m512i __B)
9868 {
9869 // CHECK-LABEL: @test_mm512_max_epu64
9870 // CHECK: [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9871 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9872 return _mm512_max_epu64 (__A,__B);
9873 }
9874
test_mm512_mask_max_epu64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9875 __m512i test_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9876 {
9877 // CHECK-LABEL: @test_mm512_mask_max_epu64
9878 // CHECK: [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9879 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9880 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9881 return _mm512_mask_max_epu64 (__W,__M,__A,__B);
9882 }
9883
test_mm512_maskz_max_epu64(__mmask8 __M,__m512i __A,__m512i __B)9884 __m512i test_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
9885 {
9886 // CHECK-LABEL: @test_mm512_maskz_max_epu64
9887 // CHECK: [[CMP:%.*]] = icmp ugt <8 x i64> [[X:%.*]], [[Y:%.*]]
9888 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9889 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9890 return _mm512_maskz_max_epu64 (__M,__A,__B);
9891 }
9892
test_mm512_max_epu32(__m512i __A,__m512i __B)9893 __m512i test_mm512_max_epu32 (__m512i __A, __m512i __B)
9894 {
9895 // CHECK-LABEL: @test_mm512_max_epu32
9896 // CHECK: [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9897 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9898 return _mm512_max_epu32 (__A,__B);
9899 }
9900
test_mm512_mask_max_epu32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9901 __m512i test_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9902 {
9903 // CHECK-LABEL: @test_mm512_mask_max_epu32
9904 // CHECK: [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9905 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9906 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9907 return _mm512_mask_max_epu32 (__W,__M,__A,__B);
9908 }
9909
test_mm512_maskz_max_epu32(__mmask16 __M,__m512i __A,__m512i __B)9910 __m512i test_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
9911 {
9912 // CHECK-LABEL: @test_mm512_maskz_max_epu32
9913 // CHECK: [[CMP:%.*]] = icmp ugt <16 x i32> [[X:%.*]], [[Y:%.*]]
9914 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9915 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9916 return _mm512_maskz_max_epu32 (__M,__A,__B);
9917 }
9918
test_mm512_min_epi32(__m512i __A,__m512i __B)9919 __m512i test_mm512_min_epi32 (__m512i __A, __m512i __B)
9920 {
9921 // CHECK-LABEL: @test_mm512_min_epi32
9922 // CHECK: [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9923 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9924 return _mm512_min_epi32 (__A,__B);
9925 }
9926
test_mm512_mask_min_epi32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9927 __m512i test_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9928 {
9929 // CHECK-LABEL: @test_mm512_mask_min_epi32
9930 // CHECK: [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9931 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9932 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9933 return _mm512_mask_min_epi32 (__W,__M,__A,__B);
9934 }
9935
test_mm512_maskz_min_epi32(__mmask16 __M,__m512i __A,__m512i __B)9936 __m512i test_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
9937 {
9938 // CHECK-LABEL: @test_mm512_maskz_min_epi32
9939 // CHECK: [[CMP:%.*]] = icmp slt <16 x i32> [[X:%.*]], [[Y:%.*]]
9940 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9941 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9942 return _mm512_maskz_min_epi32 (__M,__A,__B);
9943 }
9944
test_mm512_min_epu32(__m512i __A,__m512i __B)9945 __m512i test_mm512_min_epu32 (__m512i __A, __m512i __B)
9946 {
9947 // CHECK-LABEL: @test_mm512_min_epu32
9948 // CHECK: [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
9949 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9950 return _mm512_min_epu32 (__A,__B);
9951 }
9952
test_mm512_mask_min_epu32(__m512i __W,__mmask16 __M,__m512i __A,__m512i __B)9953 __m512i test_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
9954 {
9955 // CHECK-LABEL: @test_mm512_mask_min_epu32
9956 // CHECK: [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
9957 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9958 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9959 return _mm512_mask_min_epu32 (__W,__M,__A,__B);
9960 }
9961
test_mm512_maskz_min_epu32(__mmask16 __M,__m512i __A,__m512i __B)9962 __m512i test_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
9963 {
9964 // CHECK-LABEL: @test_mm512_maskz_min_epu32
9965 // CHECK: [[CMP:%.*]] = icmp ult <16 x i32> [[X:%.*]], [[Y:%.*]]
9966 // CHECK-NEXT: [[RES:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[X]], <16 x i32> [[Y]]
9967 // CHECK: select <16 x i1> {{.*}}, <16 x i32> [[RES]], <16 x i32> {{.*}}
9968 return _mm512_maskz_min_epu32 (__M,__A,__B);
9969 }
9970
test_mm512_min_epi64(__m512i __A,__m512i __B)9971 __m512i test_mm512_min_epi64 (__m512i __A, __m512i __B)
9972 {
9973 // CHECK-LABEL: @test_mm512_min_epi64
9974 // CHECK: [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
9975 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9976 return _mm512_min_epi64 (__A,__B);
9977 }
9978
test_mm512_mask_min_epi64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)9979 __m512i test_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
9980 {
9981 // CHECK-LABEL: @test_mm512_mask_min_epi64
9982 // CHECK: [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
9983 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9984 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9985 return _mm512_mask_min_epi64 (__W,__M,__A,__B);
9986 }
9987
test_mm512_maskz_min_epi64(__mmask8 __M,__m512i __A,__m512i __B)9988 __m512i test_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
9989 {
9990 // CHECK-LABEL: @test_mm512_maskz_min_epi64
9991 // CHECK: [[CMP:%.*]] = icmp slt <8 x i64> [[X:%.*]], [[Y:%.*]]
9992 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
9993 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
9994 return _mm512_maskz_min_epi64 (__M,__A,__B);
9995 }
9996
test_mm512_min_epu64(__m512i __A,__m512i __B)9997 __m512i test_mm512_min_epu64 (__m512i __A, __m512i __B)
9998 {
9999 // CHECK-LABEL: @test_mm512_min_epu64
10000 // CHECK: [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10001 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10002 return _mm512_min_epu64 (__A,__B);
10003 }
10004
test_mm512_mask_min_epu64(__m512i __W,__mmask8 __M,__m512i __A,__m512i __B)10005 __m512i test_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
10006 {
10007 // CHECK-LABEL: @test_mm512_mask_min_epu64
10008 // CHECK: [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10009 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10010 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10011 return _mm512_mask_min_epu64 (__W,__M,__A,__B);
10012 }
10013
test_mm512_maskz_min_epu64(__mmask8 __M,__m512i __A,__m512i __B)10014 __m512i test_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
10015 {
10016 // CHECK-LABEL: @test_mm512_maskz_min_epu64
10017 // CHECK: [[CMP:%.*]] = icmp ult <8 x i64> [[X:%.*]], [[Y:%.*]]
10018 // CHECK-NEXT: [[RES:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[X]], <8 x i64> [[Y]]
10019 // CHECK: select <8 x i1> {{.*}}, <8 x i64> [[RES]], <8 x i64> {{.*}}
10020 return _mm512_maskz_min_epu64 (__M,__A,__B);
10021 }
10022
test_mm512_mask_set1_epi32(__m512i __O,__mmask16 __M,int __A)10023 __m512i test_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
10024 {
10025 // CHECK-LABEL: @test_mm512_mask_set1_epi32
10026 // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10027 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10028 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10029 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10030 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10031 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10032 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10033 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10034 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10035 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10036 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10037 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10038 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10039 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10040 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10041 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10042 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10043 return _mm512_mask_set1_epi32 ( __O, __M, __A);
10044 }
10045
test_mm512_maskz_set1_epi32(__mmask16 __M,int __A)10046 __m512i test_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
10047 {
10048 // CHECK-LABEL: @test_mm512_maskz_set1_epi32
10049 // CHECK: insertelement <16 x i32> undef, i32 %{{.*}}, i32 0
10050 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 1
10051 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 2
10052 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 3
10053 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 4
10054 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 5
10055 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 6
10056 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 7
10057 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 8
10058 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 9
10059 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 10
10060 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 11
10061 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 12
10062 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 13
10063 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 14
10064 // CHECK: insertelement <16 x i32> %{{.*}}, i32 %{{.*}}, i32 15
10065 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10066 return _mm512_maskz_set1_epi32(__M, __A);
10067 }
10068
10069
test_mm512_set_epi8(char e63,char e62,char e61,char e60,char e59,char e58,char e57,char e56,char e55,char e54,char e53,char e52,char e51,char e50,char e49,char e48,char e47,char e46,char e45,char e44,char e43,char e42,char e41,char e40,char e39,char e38,char e37,char e36,char e35,char e34,char e33,char e32,char e31,char e30,char e29,char e28,char e27,char e26,char e25,char e24,char e23,char e22,char e21,char e20,char e19,char e18,char e17,char e16,char e15,char e14,char e13,char e12,char e11,char e10,char e9,char e8,char e7,char e6,char e5,char e4,char e3,char e2,char e1,char e0)10070 __m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59,
10071 char e58, char e57, char e56, char e55, char e54, char e53, char e52,
10072 char e51, char e50, char e49, char e48, char e47, char e46, char e45,
10073 char e44, char e43, char e42, char e41, char e40, char e39, char e38,
10074 char e37, char e36, char e35, char e34, char e33, char e32, char e31,
10075 char e30, char e29, char e28, char e27, char e26, char e25, char e24,
10076 char e23, char e22, char e21, char e20, char e19, char e18, char e17,
10077 char e16, char e15, char e14, char e13, char e12, char e11, char e10,
10078 char e9, char e8, char e7, char e6, char e5, char e4, char e3, char e2,
10079 char e1, char e0) {
10080
10081 //CHECK-LABEL: @test_mm512_set_epi8
10082 //CHECK: load i8, i8* %e63.addr, align 1
10083 //CHECK: load i8, i8* %e62.addr, align 1
10084 //CHECK: load i8, i8* %e61.addr, align 1
10085 //CHECK: load i8, i8* %e60.addr, align 1
10086 //CHECK: load i8, i8* %e59.addr, align 1
10087 //CHECK: load i8, i8* %e58.addr, align 1
10088 //CHECK: load i8, i8* %e57.addr, align 1
10089 //CHECK: load i8, i8* %e56.addr, align 1
10090 //CHECK: load i8, i8* %e55.addr, align 1
10091 //CHECK: load i8, i8* %e54.addr, align 1
10092 //CHECK: load i8, i8* %e53.addr, align 1
10093 //CHECK: load i8, i8* %e52.addr, align 1
10094 //CHECK: load i8, i8* %e51.addr, align 1
10095 //CHECK: load i8, i8* %e50.addr, align 1
10096 //CHECK: load i8, i8* %e49.addr, align 1
10097 //CHECK: load i8, i8* %e48.addr, align 1
10098 //CHECK: load i8, i8* %e47.addr, align 1
10099 //CHECK: load i8, i8* %e46.addr, align 1
10100 //CHECK: load i8, i8* %e45.addr, align 1
10101 //CHECK: load i8, i8* %e44.addr, align 1
10102 //CHECK: load i8, i8* %e43.addr, align 1
10103 //CHECK: load i8, i8* %e42.addr, align 1
10104 //CHECK: load i8, i8* %e41.addr, align 1
10105 //CHECK: load i8, i8* %e40.addr, align 1
10106 //CHECK: load i8, i8* %e39.addr, align 1
10107 //CHECK: load i8, i8* %e38.addr, align 1
10108 //CHECK: load i8, i8* %e37.addr, align 1
10109 //CHECK: load i8, i8* %e36.addr, align 1
10110 //CHECK: load i8, i8* %e35.addr, align 1
10111 //CHECK: load i8, i8* %e34.addr, align 1
10112 //CHECK: load i8, i8* %e33.addr, align 1
10113 //CHECK: load i8, i8* %e32.addr, align 1
10114 //CHECK: load i8, i8* %e31.addr, align 1
10115 //CHECK: load i8, i8* %e30.addr, align 1
10116 //CHECK: load i8, i8* %e29.addr, align 1
10117 //CHECK: load i8, i8* %e28.addr, align 1
10118 //CHECK: load i8, i8* %e27.addr, align 1
10119 //CHECK: load i8, i8* %e26.addr, align 1
10120 //CHECK: load i8, i8* %e25.addr, align 1
10121 //CHECK: load i8, i8* %e24.addr, align 1
10122 //CHECK: load i8, i8* %e23.addr, align 1
10123 //CHECK: load i8, i8* %e22.addr, align 1
10124 //CHECK: load i8, i8* %e21.addr, align 1
10125 //CHECK: load i8, i8* %e20.addr, align 1
10126 //CHECK: load i8, i8* %e19.addr, align 1
10127 //CHECK: load i8, i8* %e18.addr, align 1
10128 //CHECK: load i8, i8* %e17.addr, align 1
10129 //CHECK: load i8, i8* %e16.addr, align 1
10130 //CHECK: load i8, i8* %e15.addr, align 1
10131 //CHECK: load i8, i8* %e14.addr, align 1
10132 //CHECK: load i8, i8* %e13.addr, align 1
10133 //CHECK: load i8, i8* %e12.addr, align 1
10134 //CHECK: load i8, i8* %e11.addr, align 1
10135 //CHECK: load i8, i8* %e10.addr, align 1
10136 //CHECK: load i8, i8* %e9.addr, align 1
10137 //CHECK: load i8, i8* %e8.addr, align 1
10138 //CHECK: load i8, i8* %e7.addr, align 1
10139 //CHECK: load i8, i8* %e6.addr, align 1
10140 //CHECK: load i8, i8* %e5.addr, align 1
10141 //CHECK: load i8, i8* %e4.addr, align 1
10142 //CHECK: load i8, i8* %e3.addr, align 1
10143 //CHECK: load i8, i8* %e2.addr, align 1
10144 //CHECK: load i8, i8* %e1.addr, align 1
10145 //CHECK: load i8, i8* %e0.addr, align 1
10146 return _mm512_set_epi8(e63, e62, e61, e60, e59, e58, e57, e56, e55, e54,
10147 e53, e52, e51, e50, e49, e48,e47, e46, e45, e44, e43, e42, e41, e40,
10148 e39, e38, e37, e36, e35, e34, e33, e32,e31, e30, e29, e28, e27, e26,
10149 e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12,
10150 e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0);
10151 }
10152
test_mm512_set_epi16(short e31,short e30,short e29,short e28,short e27,short e26,short e25,short e24,short e23,short e22,short e21,short e20,short e19,short e18,short e17,short e16,short e15,short e14,short e13,short e12,short e11,short e10,short e9,short e8,short e7,short e6,short e5,short e4,short e3,short e2,short e1,short e0)10153 __m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28,
10154 short e27, short e26, short e25, short e24, short e23, short e22,
10155 short e21, short e20, short e19, short e18, short e17,
10156 short e16, short e15, short e14, short e13, short e12,
10157 short e11, short e10, short e9, short e8, short e7,
10158 short e6, short e5, short e4, short e3, short e2, short e1, short e0) {
10159 //CHECK-LABEL: @test_mm512_set_epi16
10160 //CHECK: insertelement{{.*}}i32 0
10161 //CHECK: insertelement{{.*}}i32 1
10162 //CHECK: insertelement{{.*}}i32 2
10163 //CHECK: insertelement{{.*}}i32 3
10164 //CHECK: insertelement{{.*}}i32 4
10165 //CHECK: insertelement{{.*}}i32 5
10166 //CHECK: insertelement{{.*}}i32 6
10167 //CHECK: insertelement{{.*}}i32 7
10168 //CHECK: insertelement{{.*}}i32 8
10169 //CHECK: insertelement{{.*}}i32 9
10170 //CHECK: insertelement{{.*}}i32 10
10171 //CHECK: insertelement{{.*}}i32 11
10172 //CHECK: insertelement{{.*}}i32 12
10173 //CHECK: insertelement{{.*}}i32 13
10174 //CHECK: insertelement{{.*}}i32 14
10175 //CHECK: insertelement{{.*}}i32 15
10176 //CHECK: insertelement{{.*}}i32 16
10177 //CHECK: insertelement{{.*}}i32 17
10178 //CHECK: insertelement{{.*}}i32 18
10179 //CHECK: insertelement{{.*}}i32 19
10180 //CHECK: insertelement{{.*}}i32 20
10181 //CHECK: insertelement{{.*}}i32 21
10182 //CHECK: insertelement{{.*}}i32 22
10183 //CHECK: insertelement{{.*}}i32 23
10184 //CHECK: insertelement{{.*}}i32 24
10185 //CHECK: insertelement{{.*}}i32 25
10186 //CHECK: insertelement{{.*}}i32 26
10187 //CHECK: insertelement{{.*}}i32 27
10188 //CHECK: insertelement{{.*}}i32 28
10189 //CHECK: insertelement{{.*}}i32 29
10190 //CHECK: insertelement{{.*}}i32 30
10191 //CHECK: insertelement{{.*}}i32 31
10192 return _mm512_set_epi16(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22,
10193 e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7,
10194 e6, e5, e4, e3, e2, e1, e0);
10195
10196 }
test_mm512_set_epi32(int __A,int __B,int __C,int __D,int __E,int __F,int __G,int __H,int __I,int __J,int __K,int __L,int __M,int __N,int __O,int __P)10197 __m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D,
10198 int __E, int __F, int __G, int __H,
10199 int __I, int __J, int __K, int __L,
10200 int __M, int __N, int __O, int __P)
10201 {
10202 //CHECK-LABEL: @test_mm512_set_epi32
10203 //CHECK: insertelement{{.*}}i32 0
10204 //CHECK: insertelement{{.*}}i32 1
10205 //CHECK: insertelement{{.*}}i32 2
10206 //CHECK: insertelement{{.*}}i32 3
10207 //CHECK: insertelement{{.*}}i32 4
10208 //CHECK: insertelement{{.*}}i32 5
10209 //CHECK: insertelement{{.*}}i32 6
10210 //CHECK: insertelement{{.*}}i32 7
10211 //CHECK: insertelement{{.*}}i32 8
10212 //CHECK: insertelement{{.*}}i32 9
10213 //CHECK: insertelement{{.*}}i32 10
10214 //CHECK: insertelement{{.*}}i32 11
10215 //CHECK: insertelement{{.*}}i32 12
10216 //CHECK: insertelement{{.*}}i32 13
10217 //CHECK: insertelement{{.*}}i32 14
10218 //CHECK: insertelement{{.*}}i32 15
10219 return _mm512_set_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
10220 __I, __J, __K, __L,__M, __N, __O, __P);
10221 }
10222
test_mm512_setr_epi32(int __A,int __B,int __C,int __D,int __E,int __F,int __G,int __H,int __I,int __J,int __K,int __L,int __M,int __N,int __O,int __P)10223 __m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D,
10224 int __E, int __F, int __G, int __H,
10225 int __I, int __J, int __K, int __L,
10226 int __M, int __N, int __O, int __P)
10227 {
10228 //CHECK-LABEL: @test_mm512_setr_epi32
10229 //CHECK: load{{.*}}%__P.addr, align 4
10230 //CHECK: load{{.*}}%__O.addr, align 4
10231 //CHECK: load{{.*}}%__N.addr, align 4
10232 //CHECK: load{{.*}}%__M.addr, align 4
10233 //CHECK: load{{.*}}%__L.addr, align 4
10234 //CHECK: load{{.*}}%__K.addr, align 4
10235 //CHECK: load{{.*}}%__J.addr, align 4
10236 //CHECK: load{{.*}}%__I.addr, align 4
10237 //CHECK: load{{.*}}%__H.addr, align 4
10238 //CHECK: load{{.*}}%__G.addr, align 4
10239 //CHECK: load{{.*}}%__F.addr, align 4
10240 //CHECK: load{{.*}}%__E.addr, align 4
10241 //CHECK: load{{.*}}%__D.addr, align 4
10242 //CHECK: load{{.*}}%__C.addr, align 4
10243 //CHECK: load{{.*}}%__B.addr, align 4
10244 //CHECK: load{{.*}}%__A.addr, align 4
10245 //CHECK: insertelement{{.*}}i32 0
10246 //CHECK: insertelement{{.*}}i32 1
10247 //CHECK: insertelement{{.*}}i32 2
10248 //CHECK: insertelement{{.*}}i32 3
10249 //CHECK: insertelement{{.*}}i32 4
10250 //CHECK: insertelement{{.*}}i32 5
10251 //CHECK: insertelement{{.*}}i32 6
10252 //CHECK: insertelement{{.*}}i32 7
10253 //CHECK: insertelement{{.*}}i32 8
10254 //CHECK: insertelement{{.*}}i32 9
10255 //CHECK: insertelement{{.*}}i32 10
10256 //CHECK: insertelement{{.*}}i32 11
10257 //CHECK: insertelement{{.*}}i32 12
10258 //CHECK: insertelement{{.*}}i32 13
10259 //CHECK: insertelement{{.*}}i32 14
10260 //CHECK: insertelement{{.*}}i32 15
10261 return _mm512_setr_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
10262 __I, __J, __K, __L,__M, __N, __O, __P);
10263 }
10264
test_mm512_mask_set1_epi64(__m512i __O,__mmask8 __M,long long __A)10265 __m512i test_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
10266 {
10267 // CHECK-LABEL: @test_mm512_mask_set1_epi64
10268 // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10269 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10270 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10271 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10272 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10273 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10274 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10275 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10276 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10277 return _mm512_mask_set1_epi64 (__O, __M, __A);
10278 }
10279
test_mm512_maskz_set1_epi64(__mmask8 __M,long long __A)10280 __m512i test_mm512_maskz_set1_epi64 (__mmask8 __M, long long __A)
10281 {
10282 // CHECK-LABEL: @test_mm512_maskz_set1_epi64
10283 // CHECK: insertelement <8 x i64> undef, i64 %{{.*}}, i32 0
10284 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 1
10285 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 2
10286 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 3
10287 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 4
10288 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 5
10289 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 6
10290 // CHECK: insertelement <8 x i64> %{{.*}}, i64 %{{.*}}, i32 7
10291 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
10292 return _mm512_maskz_set1_epi64 (__M, __A);
10293 }
10294
10295
test_mm512_set_epi64(long long __A,long long __B,long long __C,long long __D,long long __E,long long __F,long long __G,long long __H)10296 __m512i test_mm512_set_epi64 (long long __A, long long __B, long long __C,
10297 long long __D, long long __E, long long __F,
10298 long long __G, long long __H)
10299 {
10300 //CHECK-LABEL: @test_mm512_set_epi64
10301 //CHECK: insertelement{{.*}}i32 0
10302 //CHECK: insertelement{{.*}}i32 1
10303 //CHECK: insertelement{{.*}}i32 2
10304 //CHECK: insertelement{{.*}}i32 3
10305 //CHECK: insertelement{{.*}}i32 4
10306 //CHECK: insertelement{{.*}}i32 5
10307 //CHECK: insertelement{{.*}}i32 6
10308 //CHECK: insertelement{{.*}}i32 7
10309 return _mm512_set_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
10310 }
10311
test_mm512_setr_epi64(long long __A,long long __B,long long __C,long long __D,long long __E,long long __F,long long __G,long long __H)10312 __m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C,
10313 long long __D, long long __E, long long __F,
10314 long long __G, long long __H)
10315 {
10316 //CHECK-LABEL: @test_mm512_setr_epi64
10317 //CHECK: load{{.*}}%__H.addr, align 8
10318 //CHECK: load{{.*}}%__G.addr, align 8
10319 //CHECK: load{{.*}}%__F.addr, align 8
10320 //CHECK: load{{.*}}%__E.addr, align 8
10321 //CHECK: load{{.*}}%__D.addr, align 8
10322 //CHECK: load{{.*}}%__C.addr, align 8
10323 //CHECK: load{{.*}}%__B.addr, align 8
10324 //CHECK: load{{.*}}%__A.addr, align 8
10325 //CHECK: insertelement{{.*}}i32 0
10326 //CHECK: insertelement{{.*}}i32 1
10327 //CHECK: insertelement{{.*}}i32 2
10328 //CHECK: insertelement{{.*}}i32 3
10329 //CHECK: insertelement{{.*}}i32 4
10330 //CHECK: insertelement{{.*}}i32 5
10331 //CHECK: insertelement{{.*}}i32 6
10332 //CHECK: insertelement{{.*}}i32 7
10333 return _mm512_setr_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
10334 }
10335
test_mm512_set_pd(double __A,double __B,double __C,double __D,double __E,double __F,double __G,double __H)10336 __m512d test_mm512_set_pd (double __A, double __B, double __C, double __D,
10337 double __E, double __F, double __G, double __H)
10338 {
10339 //CHECK-LABEL: @test_mm512_set_pd
10340 //CHECK: insertelement{{.*}}i32 0
10341 //CHECK: insertelement{{.*}}i32 1
10342 //CHECK: insertelement{{.*}}i32 2
10343 //CHECK: insertelement{{.*}}i32 3
10344 //CHECK: insertelement{{.*}}i32 4
10345 //CHECK: insertelement{{.*}}i32 5
10346 //CHECK: insertelement{{.*}}i32 6
10347 //CHECK: insertelement{{.*}}i32 7
10348 return _mm512_set_pd( __A, __B, __C, __D, __E, __F, __G, __H);
10349 }
10350
test_mm512_setr_pd(double __A,double __B,double __C,double __D,double __E,double __F,double __G,double __H)10351 __m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D,
10352 double __E, double __F, double __G, double __H)
10353 {
10354 //CHECK-LABEL: @test_mm512_setr_pd
10355 //CHECK: load{{.*}}%__H.addr, align 8
10356 //CHECK: load{{.*}}%__G.addr, align 8
10357 //CHECK: load{{.*}}%__F.addr, align 8
10358 //CHECK: load{{.*}}%__E.addr, align 8
10359 //CHECK: load{{.*}}%__D.addr, align 8
10360 //CHECK: load{{.*}}%__C.addr, align 8
10361 //CHECK: load{{.*}}%__B.addr, align 8
10362 //CHECK: load{{.*}}%__A.addr, align 8
10363 //CHECK: insertelement{{.*}}i32 0
10364 //CHECK: insertelement{{.*}}i32 1
10365 //CHECK: insertelement{{.*}}i32 2
10366 //CHECK: insertelement{{.*}}i32 3
10367 //CHECK: insertelement{{.*}}i32 4
10368 //CHECK: insertelement{{.*}}i32 5
10369 //CHECK: insertelement{{.*}}i32 6
10370 //CHECK: insertelement{{.*}}i32 7
10371 return _mm512_setr_pd( __A, __B, __C, __D, __E, __F, __G, __H);
10372 }
10373
test_mm512_set_ps(float __A,float __B,float __C,float __D,float __E,float __F,float __G,float __H,float __I,float __J,float __K,float __L,float __M,float __N,float __O,float __P)10374 __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D,
10375 float __E, float __F, float __G, float __H,
10376 float __I, float __J, float __K, float __L,
10377 float __M, float __N, float __O, float __P)
10378 {
10379 //CHECK-LABEL: @test_mm512_set_ps
10380 //CHECK: insertelement{{.*}}i32 0
10381 //CHECK: insertelement{{.*}}i32 1
10382 //CHECK: insertelement{{.*}}i32 2
10383 //CHECK: insertelement{{.*}}i32 3
10384 //CHECK: insertelement{{.*}}i32 4
10385 //CHECK: insertelement{{.*}}i32 5
10386 //CHECK: insertelement{{.*}}i32 6
10387 //CHECK: insertelement{{.*}}i32 7
10388 //CHECK: insertelement{{.*}}i32 8
10389 //CHECK: insertelement{{.*}}i32 9
10390 //CHECK: insertelement{{.*}}i32 10
10391 //CHECK: insertelement{{.*}}i32 11
10392 //CHECK: insertelement{{.*}}i32 12
10393 //CHECK: insertelement{{.*}}i32 13
10394 //CHECK: insertelement{{.*}}i32 14
10395 //CHECK: insertelement{{.*}}i32 15
10396 return _mm512_set_ps( __A, __B, __C, __D, __E, __F, __G, __H,
10397 __I, __J, __K, __L, __M, __N, __O, __P);
10398 }
10399
test_mm512_mask_abs_epi64(__m512i __W,__mmask8 __U,__m512i __A)10400 __m512i test_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
10401 {
10402 // CHECK-LABEL: @test_mm512_mask_abs_epi64
10403 // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]]
10404 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer
10405 // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]]
10406 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}}
10407 return _mm512_mask_abs_epi64 (__W,__U,__A);
10408 }
10409
test_mm512_maskz_abs_epi64(__mmask8 __U,__m512i __A)10410 __m512i test_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
10411 {
10412 // CHECK-LABEL: @test_mm512_maskz_abs_epi64
10413 // CHECK: [[SUB:%.*]] = sub <8 x i64> zeroinitializer, [[A:%.*]]
10414 // CHECK: [[CMP:%.*]] = icmp sgt <8 x i64> [[A]], zeroinitializer
10415 // CHECK: [[SEL:%.*]] = select <8 x i1> [[CMP]], <8 x i64> [[A]], <8 x i64> [[SUB]]
10416 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> [[SEL]], <8 x i64> %{{.*}}
10417 return _mm512_maskz_abs_epi64 (__U,__A);
10418 }
10419
test_mm512_mask_abs_epi32(__m512i __W,__mmask16 __U,__m512i __A)10420 __m512i test_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
10421 {
10422 // CHECK-LABEL: @test_mm512_mask_abs_epi32
10423 // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]]
10424 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer
10425 // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]]
10426 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}}
10427 return _mm512_mask_abs_epi32 (__W,__U,__A);
10428 }
10429
test_mm512_maskz_abs_epi32(__mmask16 __U,__m512i __A)10430 __m512i test_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
10431 {
10432 // CHECK-LABEL: @test_mm512_maskz_abs_epi32
10433 // CHECK: [[SUB:%.*]] = sub <16 x i32> zeroinitializer, [[A:%.*]]
10434 // CHECK: [[CMP:%.*]] = icmp sgt <16 x i32> [[A]], zeroinitializer
10435 // CHECK: [[SEL:%.*]] = select <16 x i1> [[CMP]], <16 x i32> [[A]], <16 x i32> [[SUB]]
10436 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> [[SEL]], <16 x i32> %{{.*}}
10437 return _mm512_maskz_abs_epi32 (__U,__A);
10438 }
10439
test_mm512_setr_ps(float __A,float __B,float __C,float __D,float __E,float __F,float __G,float __H,float __I,float __J,float __K,float __L,float __M,float __N,float __O,float __P)10440 __m512 test_mm512_setr_ps (float __A, float __B, float __C, float __D,
10441 float __E, float __F, float __G, float __H,
10442 float __I, float __J, float __K, float __L,
10443 float __M, float __N, float __O, float __P)
10444 {
10445 //CHECK-LABEL: @test_mm512_setr_ps
10446 //CHECK: load{{.*}}%__P.addr, align 4
10447 //CHECK: load{{.*}}%__O.addr, align 4
10448 //CHECK: load{{.*}}%__N.addr, align 4
10449 //CHECK: load{{.*}}%__M.addr, align 4
10450 //CHECK: load{{.*}}%__L.addr, align 4
10451 //CHECK: load{{.*}}%__K.addr, align 4
10452 //CHECK: load{{.*}}%__J.addr, align 4
10453 //CHECK: load{{.*}}%__I.addr, align 4
10454 //CHECK: load{{.*}}%__H.addr, align 4
10455 //CHECK: load{{.*}}%__G.addr, align 4
10456 //CHECK: load{{.*}}%__F.addr, align 4
10457 //CHECK: load{{.*}}%__E.addr, align 4
10458 //CHECK: load{{.*}}%__D.addr, align 4
10459 //CHECK: load{{.*}}%__C.addr, align 4
10460 //CHECK: load{{.*}}%__B.addr, align 4
10461 //CHECK: load{{.*}}%__A.addr, align 4
10462 //CHECK: insertelement{{.*}}i32 0
10463 //CHECK: insertelement{{.*}}i32 1
10464 //CHECK: insertelement{{.*}}i32 2
10465 //CHECK: insertelement{{.*}}i32 3
10466 //CHECK: insertelement{{.*}}i32 4
10467 //CHECK: insertelement{{.*}}i32 5
10468 //CHECK: insertelement{{.*}}i32 6
10469 //CHECK: insertelement{{.*}}i32 7
10470 //CHECK: insertelement{{.*}}i32 8
10471 //CHECK: insertelement{{.*}}i32 9
10472 //CHECK: insertelement{{.*}}i32 10
10473 //CHECK: insertelement{{.*}}i32 11
10474 //CHECK: insertelement{{.*}}i32 12
10475 //CHECK: insertelement{{.*}}i32 13
10476 //CHECK: insertelement{{.*}}i32 14
10477 //CHECK: insertelement{{.*}}i32 15
10478 return _mm512_setr_ps( __A, __B, __C, __D, __E, __F, __G, __H,
10479 __I, __J, __K, __L, __M, __N, __O, __P);
10480 }
10481
test_mm_cvtss_i32(__m128 A)10482 int test_mm_cvtss_i32(__m128 A) {
10483 // CHECK-LABEL: test_mm_cvtss_i32
10484 // CHECK: call i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}})
10485 return _mm_cvtss_i32(A);
10486 }
10487
10488 #ifdef __x86_64__
test_mm_cvtss_i64(__m128 A)10489 long long test_mm_cvtss_i64(__m128 A) {
10490 // CHECK-LABEL: test_mm_cvtss_i64
10491 // CHECK: call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %{{.*}})
10492 return _mm_cvtss_i64(A);
10493 }
10494 #endif
10495
test_mm_cvti32_sd(__m128d A,int B)10496 __m128d test_mm_cvti32_sd(__m128d A, int B) {
10497 // CHECK-LABEL: test_mm_cvti32_sd
10498 // CHECK: sitofp i32 %{{.*}} to double
10499 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10500 return _mm_cvti32_sd(A, B);
10501 }
10502
10503 #ifdef __x86_64__
test_mm_cvti64_sd(__m128d A,long long B)10504 __m128d test_mm_cvti64_sd(__m128d A, long long B) {
10505 // CHECK-LABEL: test_mm_cvti64_sd
10506 // CHECK: sitofp i64 %{{.*}} to double
10507 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0
10508 return _mm_cvti64_sd(A, B);
10509 }
10510 #endif
10511
test_mm_cvti32_ss(__m128 A,int B)10512 __m128 test_mm_cvti32_ss(__m128 A, int B) {
10513 // CHECK-LABEL: test_mm_cvti32_ss
10514 // CHECK: sitofp i32 %{{.*}} to float
10515 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10516 return _mm_cvti32_ss(A, B);
10517 }
10518
10519 #ifdef __x86_64__
test_mm_cvti64_ss(__m128 A,long long B)10520 __m128 test_mm_cvti64_ss(__m128 A, long long B) {
10521 // CHECK-LABEL: test_mm_cvti64_ss
10522 // CHECK: sitofp i64 %{{.*}} to float
10523 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0
10524 return _mm_cvti64_ss(A, B);
10525 }
10526 #endif
10527
test_mm_cvtsd_i32(__m128d A)10528 int test_mm_cvtsd_i32(__m128d A) {
10529 // CHECK-LABEL: test_mm_cvtsd_i32
10530 // CHECK: call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %{{.*}})
10531 return _mm_cvtsd_i32(A);
10532 }
10533
10534 #ifdef __x86_64__
test_mm_cvtsd_i64(__m128d A)10535 long long test_mm_cvtsd_i64(__m128d A) {
10536 // CHECK-LABEL: test_mm_cvtsd_i64
10537 // CHECK: call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %{{.*}})
10538 return _mm_cvtsd_i64(A);
10539 }
10540 #endif
10541
test_mm_mask_cvtss_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128 __B)10542 __m128d test_mm_mask_cvtss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) {
10543 // CHECK-LABEL: @test_mm_mask_cvtss_sd
10544 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10545 return _mm_mask_cvtss_sd(__W, __U, __A, __B);
10546 }
10547
test_mm_maskz_cvtss_sd(__mmask8 __U,__m128d __A,__m128 __B)10548 __m128d test_mm_maskz_cvtss_sd( __mmask8 __U, __m128d __A, __m128 __B) {
10549 // CHECK-LABEL: @test_mm_maskz_cvtss_sd
10550 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round
10551 return _mm_maskz_cvtss_sd( __U, __A, __B);
10552 }
10553
test_mm_mask_cvtsd_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128d __B)10554 __m128 test_mm_mask_cvtsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) {
10555 // CHECK-LABEL: @test_mm_mask_cvtsd_ss
10556 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10557 return _mm_mask_cvtsd_ss(__W, __U, __A, __B);
10558 }
10559
test_mm_maskz_cvtsd_ss(__mmask8 __U,__m128 __A,__m128d __B)10560 __m128 test_mm_maskz_cvtsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
10561 // CHECK-LABEL: @test_mm_maskz_cvtsd_ss
10562 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round
10563 return _mm_maskz_cvtsd_ss(__U, __A, __B);
10564 }
10565
10566
test_mm512_setzero_epi32()10567 __m512i test_mm512_setzero_epi32()
10568 {
10569 // CHECK-LABEL: @test_mm512_setzero_epi32
10570 // CHECK: zeroinitializer
10571 return _mm512_setzero_epi32();
10572 }
10573
test_mm512_setzero()10574 __m512i test_mm512_setzero()
10575 {
10576 // CHECK-LABEL: @test_mm512_setzero
10577 // CHECK: zeroinitializer
10578 return _mm512_setzero();
10579 }
10580
test_mm512_setzero_si512()10581 __m512i test_mm512_setzero_si512()
10582 {
10583 // CHECK-LABEL: @test_mm512_setzero_si512
10584 // CHECK: zeroinitializer
10585 return _mm512_setzero_si512();
10586 }
10587
test_mm512_setzero_ps()10588 __m512i test_mm512_setzero_ps()
10589 {
10590 // CHECK-LABEL: @test_mm512_setzero_ps
10591 // CHECK: zeroinitializer
10592 return _mm512_setzero_ps();
10593 }
10594
test_mm512_setzero_pd()10595 __m512d test_mm512_setzero_pd()
10596 {
10597 // CHECK-LABEL: @test_mm512_setzero_pd
10598 // CHECK: zeroinitializer
10599 return _mm512_setzero_pd();
10600 }
10601
test_mm512_int2mask(int __a)10602 __mmask16 test_mm512_int2mask(int __a)
10603 {
10604 // CHECK-LABEL: test_mm512_int2mask
10605 // CHECK: trunc i32 %{{.*}} to i16
10606 return _mm512_int2mask(__a);
10607 }
10608
test_mm512_mask2int(__mmask16 __a)10609 int test_mm512_mask2int(__mmask16 __a)
10610 {
10611 // CHECK-LABEL: test_mm512_mask2int
10612 // CHECK: zext i16 %{{.*}} to i32
10613 return _mm512_mask2int(__a);
10614 }
10615
test_mm_mask_move_ss(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)10616 __m128 test_mm_mask_move_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
10617 {
10618 // CHECK-LABEL: @test_mm_mask_move_ss
10619 // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10620 // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10621 // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10622 // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10623 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10624 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10625 // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10626 // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10627 return _mm_mask_move_ss ( __W, __U, __A, __B);
10628 }
10629
test_mm_maskz_move_ss(__mmask8 __U,__m128 __A,__m128 __B)10630 __m128 test_mm_maskz_move_ss (__mmask8 __U, __m128 __A, __m128 __B)
10631 {
10632 // CHECK-LABEL: @test_mm_maskz_move_ss
10633 // CHECK: [[EXT:%.*]] = extractelement <4 x float> %{{.*}}, i32 0
10634 // CHECK: insertelement <4 x float> %{{.*}}, float [[EXT]], i32 0
10635 // CHECK: [[A:%.*]] = extractelement <4 x float> [[VEC:%.*]], i64 0
10636 // CHECK-NEXT: [[B:%.*]] = extractelement <4 x float> %{{.*}}, i64 0
10637 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10638 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10639 // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, float [[A]], float [[B]]
10640 // CHECK-NEXT: insertelement <4 x float> [[VEC]], float [[SEL]], i64 0
10641 return _mm_maskz_move_ss (__U, __A, __B);
10642 }
10643
test_mm_mask_move_sd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)10644 __m128d test_mm_mask_move_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
10645 {
10646 // CHECK-LABEL: @test_mm_mask_move_sd
10647 // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10648 // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10649 // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10650 // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10651 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10652 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10653 // CHECK-NEXT: [[SEL:%.*]] = select i1 %{{.*}}, double [[A]], double [[B]]
10654 // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10655 return _mm_mask_move_sd ( __W, __U, __A, __B);
10656 }
10657
test_mm_maskz_move_sd(__mmask8 __U,__m128d __A,__m128d __B)10658 __m128d test_mm_maskz_move_sd (__mmask8 __U, __m128d __A, __m128d __B)
10659 {
10660 // CHECK-LABEL: @test_mm_maskz_move_sd
10661 // CHECK: [[EXT:%.*]] = extractelement <2 x double> %{{.*}}, i32 0
10662 // CHECK: insertelement <2 x double> %{{.*}}, double [[EXT]], i32 0
10663 // CHECK: [[A:%.*]] = extractelement <2 x double> [[VEC:%.*]], i64 0
10664 // CHECK-NEXT: [[B:%.*]] = extractelement <2 x double> %{{.*}}, i64 0
10665 // CHECK-NEXT: bitcast i8 %{{.*}} to <8 x i1>
10666 // CHECK-NEXT: extractelement <8 x i1> %{{.*}}, i64 0
10667 // CHECK-NEXT: [[SEL:%.*]] = select i1 %13, double [[A]], double [[B]]
10668 // CHECK-NEXT: insertelement <2 x double> [[VEC]], double [[SEL]], i64 0
10669 return _mm_maskz_move_sd (__U, __A, __B);
10670 }
10671
test_mm_mask_store_ss(float * __P,__mmask8 __U,__m128 __A)10672 void test_mm_mask_store_ss(float * __P, __mmask8 __U, __m128 __A)
10673 {
10674 // CHECK-LABEL: @test_mm_mask_store_ss
10675 // CHECK: call void @llvm.masked.store.v4f32.p0v4f32(
10676 _mm_mask_store_ss(__P, __U, __A);
10677 }
10678
test_mm_mask_store_sd(double * __P,__mmask8 __U,__m128d __A)10679 void test_mm_mask_store_sd(double * __P, __mmask8 __U, __m128d __A)
10680 {
10681 // CHECK-LABEL: @test_mm_mask_store_sd
10682 // CHECK: call void @llvm.masked.store.v2f64.p0v2f64(
10683 _mm_mask_store_sd(__P, __U, __A);
10684 }
10685
test_mm_mask_load_ss(__m128 __A,__mmask8 __U,const float * __W)10686 __m128 test_mm_mask_load_ss(__m128 __A, __mmask8 __U, const float* __W)
10687 {
10688 // CHECK-LABEL: @test_mm_mask_load_ss
10689 // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0v4f32(
10690 return _mm_mask_load_ss(__A, __U, __W);
10691 }
10692
test_mm_maskz_load_ss(__mmask8 __U,const float * __W)10693 __m128 test_mm_maskz_load_ss (__mmask8 __U, const float * __W)
10694 {
10695 // CHECK-LABEL: @test_mm_maskz_load_ss
10696 // CHECK: call <4 x float> @llvm.masked.load.v4f32.p0v4f32(
10697 return _mm_maskz_load_ss (__U, __W);
10698 }
10699
test_mm_mask_load_sd(__m128d __A,__mmask8 __U,const double * __W)10700 __m128d test_mm_mask_load_sd (__m128d __A, __mmask8 __U, const double * __W)
10701 {
10702 // CHECK-LABEL: @test_mm_mask_load_sd
10703 // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0v2f64(
10704 return _mm_mask_load_sd (__A, __U, __W);
10705 }
10706
test_mm_maskz_load_sd(__mmask8 __U,const double * __W)10707 __m128d test_mm_maskz_load_sd (__mmask8 __U, const double * __W)
10708 {
10709 // CHECK-LABEL: @test_mm_maskz_load_sd
10710 // CHECK: call <2 x double> @llvm.masked.load.v2f64.p0v2f64(
10711 return _mm_maskz_load_sd (__U, __W);
10712 }
10713
test_mm512_abs_pd(__m512d a)10714 __m512d test_mm512_abs_pd(__m512d a){
10715 // CHECK-LABEL: @test_mm512_abs_pd
10716 // CHECK: and <8 x i64>
10717 return _mm512_abs_pd(a);
10718 }
10719
test_mm512_mask_abs_pd(__m512d __W,__mmask8 __U,__m512d __A)10720 __m512d test_mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512d __A){
10721 // CHECK-LABEL: @test_mm512_mask_abs_pd
10722 // CHECK: %[[AND_RES:.*]] = and <8 x i64>
10723 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1>
10724 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}}
10725 return _mm512_mask_abs_pd (__W,__U,__A);
10726 }
10727
test_mm512_abs_ps(__m512 a)10728 __m512 test_mm512_abs_ps(__m512 a){
10729 // CHECK-LABEL: @test_mm512_abs_ps
10730 // CHECK: and <16 x i32>
10731 return _mm512_abs_ps(a);
10732 }
10733
test_mm512_mask_abs_ps(__m512 __W,__mmask16 __U,__m512 __A)10734 __m512 test_mm512_mask_abs_ps(__m512 __W, __mmask16 __U, __m512 __A){
10735 // CHECK-LABEL: @test_mm512_mask_abs_ps
10736 // CHECK: and <16 x i32>
10737 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1>
10738 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
10739 return _mm512_mask_abs_ps( __W, __U, __A);
10740 }
10741
test_mm512_zextpd128_pd512(__m128d A)10742 __m512d test_mm512_zextpd128_pd512(__m128d A) {
10743 // CHECK-LABEL: test_mm512_zextpd128_pd512
10744 // CHECK: store <2 x double> zeroinitializer
10745 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
10746 return _mm512_zextpd128_pd512(A);
10747 }
10748
test_mm512_zextpd256_pd512(__m256d A)10749 __m512d test_mm512_zextpd256_pd512(__m256d A) {
10750 // CHECK-LABEL: test_mm512_zextpd256_pd512
10751 // CHECK: store <4 x double> zeroinitializer
10752 // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
10753 return _mm512_zextpd256_pd512(A);
10754 }
10755
test_mm512_zextps128_ps512(__m128 A)10756 __m512 test_mm512_zextps128_ps512(__m128 A) {
10757 // CHECK-LABEL: test_mm512_zextps128_ps512
10758 // CHECK: store <4 x float> zeroinitializer
10759 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7>
10760 return _mm512_zextps128_ps512(A);
10761 }
10762
test_mm512_zextps256_ps512(__m256 A)10763 __m512 test_mm512_zextps256_ps512(__m256 A) {
10764 // CHECK-LABEL: test_mm512_zextps256_ps512
10765 // CHECK: store <8 x float> zeroinitializer
10766 // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
10767 return _mm512_zextps256_ps512(A);
10768 }
10769
test_mm512_zextsi128_si512(__m128i A)10770 __m512i test_mm512_zextsi128_si512(__m128i A) {
10771 // CHECK-LABEL: test_mm512_zextsi128_si512
10772 // CHECK: store <2 x i64> zeroinitializer
10773 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>
10774 return _mm512_zextsi128_si512(A);
10775 }
10776
test_mm512_zextsi256_si512(__m256i A)10777 __m512i test_mm512_zextsi256_si512(__m256i A) {
10778 // CHECK-LABEL: test_mm512_zextsi256_si512
10779 // CHECK: store <4 x i64> zeroinitializer
10780 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
10781 return _mm512_zextsi256_si512(A);
10782 }
10783